银行外包一面

记录一下八股文

1:先介绍一下项目:主要说了自己主导或者参与开发的项目,已经使用的相关技术?


2.什么是双亲委派机制?

答:双亲委派模型是 Java 类加载器的一种工作模式,通过这种工作模式,Java 虚拟机将类文件加载到内存中,这样就保证了 Java 程序能够正常的运行起来。(补充:工作原理:子类加载器收到请求时,现委托父类,三个加载器:bootstrap->Extension->Application.优点:防止自定义类API篡改。防止类重复加载)

2.redis如何跟mysql保证数据一致性?

答:我是们这边为了保证一致性,在更新操作的时候一般先操作DB,然后在操作缓存。或者通过工具进行操作。(补充:延时双删,更新DB->删除缓存->休眠->在删除缓存。分布式锁保证原子性)

4.redis的持久化?

答:redis的持久化有两种方式,第一种:全量备份,新启动一个线程进行备份。第二种:将redis的所有写操作进行备用。 RDB:定时快照。优点是文件小、恢复快;缺点是可能会丢失最后一次快照后的数据。 AOF:记录写命令日志。优点是数据安全性高(最多丢1秒数据);缺点是文件大、恢复慢。

5.遇到死锁怎么解决?

答:预防:统一加锁顺序(破坏循环等待条件)。检测,数据库层面可以通过 SHOW ENGINE INNODB STATUS 查看死锁日志。分析持有锁和等待锁的资源。统一枷锁顺序,设置超时间。

6.线程池的核心线程数据怎么设置的?

答:核心线程数我这边设置的是CPU数*2,因为我这边是用于数据传输(IO密集型),要频繁的访问网络。CPU 密集型:CPU 核数 + 1。

7.分库分表?

答:垂直分表水平分表。当数据量大的时候进行分表。垂直分库:按业务模块拆分(订单库、用户库)。垂直分表:大字段单独拆表。(这块回答的不行,其实一直都在用垂直分表:微服务就是典型的例子)

8.mysql的深度分页问题?

答:使用游标进行查询,我这边说的是使用id,记录上一次查询数据的最后一页的id,然后传递给后端进行查询。缺点是只能跳页不能随机访问。

9.如果一定要用mysql的limit分页,怎么优化查询效果?

答:首先加覆盖索引索引进行查询,其次可以通过子查询进行优化。

js
复制代码
-- 原 SQL(慢) SELECT * FROM orders ORDER BY id LIMIT 100000, 10; -- 优化 1:子查询 + 覆盖索引 SELECT * FROM orders INNER JOIN (SELECT id FROM orders ORDER BY id LIMIT 100000, 10) AS tmp USING(id); -- 优化 2:记录最大 ID WHERE id > last_max_id ORDER BY id LIMIT 10;

10:spring AOP

答:面向切面编程,切面类型有前置、后置、环绕、异常通知,在项目中主要用于日志,权限的校验。说了一下具体项目的使用。

还有几个记不太清楚了! 脑子里知道有些东西,但是死嘴就是说不出来!!!

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
不知足的yu
下载 APP