8.16 字节商业化后端一面
一、自我介绍
二、项目相关(15min,问的挺细的)
用户登录的流程,以及如何在其他功能中判断用户是否登录
Redis在项目中咋使用的,为啥这么用,条数是多少。(我说就十几条他说那为啥不直接放在内存,尴尬了)
Redis宕机怎么办(直接在DB中查找)
问我了不了解哨兵机制和集群,这个不会了
三、java的类加载机制和双亲委派机制
四、ConcurrentHashMap如何保证线程安全(还问了HashMap为啥线程不安全)
五、了不了解LinkedHashMap,通过LinkedHashMap构造LRU缓存(这个没说出来)
六、Spring的 IOC 和AOP
解释了之后问我控制反转(IOC)是啥意思,面试官的意思是IOC不是Spring中独有的概念,我就不道了
问我有没有用过AOP,我说简单的用来权限校验
七、MySQL的锁的分类
粒度分: 行级锁、表级锁、页级锁
乐观锁、悲观锁(乐观锁咋实现:版本号机制 version=#{version})
类别:共享锁,排它锁
(问我间隙锁是啥,不道) Gap lock:间隙锁,锁定一个范围,不包括记录本身
八、事务的隔离机制
-
READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。
-
READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。
-
REPEATABLE-READ(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。
-
SERIALIZABLE(可串行化): 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。
MySQL如何实现REPEATABLE-READ(可重复读):MVCC(这个就说了下知道MVCC)
写题:单调栈结构
全部评论
(3) 回帖