vlambda博客
学习文章列表

面试复盘 | 杭州有赞 Java后端 一二三面

首先夸下有赞的面试效率挺高的,一天就面完了三面,技术面的体验也都挺好,一面着重考察基础,二面考察项目,HR面了接近40min,是面过最久的HR面。。

一面 45min

一面的面试官挺友善的,交流起来没有太大压力。

自我介绍之后,面试官问了我比较擅长哪方面,答了MySQL和Redis之后,就狂问MySQL

MySQL的B+树结构是什么?聚簇索引和非聚簇索引的区别?

MySQL为什么用b+树实现索引?为什么不用红黑树、跳表、哈希?

  1. 一开始答的比较混乱,后来面试官提示说可以对比红黑树、跳表、哈希来回答。
    首先是在相同的数据量下,红黑树的树高更高,IO次数会变多,而B+树的结构使得3层高度就能存储接近2000w的数据;
    第二是B+树的叶子节点是按照主键顺序存放,同时使用前后指针相连,在范围查询时遍历更加方便,以及可以利用磁盘预读特性将相邻节点读取出来;
    第三是哈希结构只适用于等值查询,无法在范围查询下使用。

MySQL的事务实现

  1. ACID特性。原子性和隔离性基于undo log,持久性基于redo log。具体展开可以再讲讲redo log的两阶段提交。

MySQL可重复读级别下,什么情况会出现幻读?

  1. 其实可重复读无法保证完全的隔离性。如果在事务A中,第一次select使用快照读(使用MVCC),同时另外一个事务B在第一次select的范围内插入了数据,那么如果A在第二次读时使用了当前读(for update/in share mode),此时就会出现幻读问题,因为当前读并不会使用MVCC,而是从数据库读取最新数据。

如何判断一条SQL是否使用到了索引?

  1. explain分析执行计划

MySQL场景题:MySQL机器上CPU飙升,怎么解决?

  1. 我以为是缓存失效了,面试官说那如果是MySQL出现死锁怎么解决。于是我简单答了下打印出线程执行信息去分析,以及编写相同的事务时操作的顺序保持一致。更好的答案网上挺多博客有写。

问完MySQL之后,面试官突然邪魅一笑,说想到了一个有趣的问题,我就知道情况不妙,果然问了个让人摸不着脑袋的问题:数组下标为什么是从0开始的??

后面就是Java相关了。HashMap中的数组容量为什么总是2的n次方?

  1. 为了扩容时转移节点不用去重新计算hash值,通过与运算判断后直接把元素放到新数组的原位置or原位置+旧数组长度。

ConcurrentHashMap中线程是怎么去协助扩容的?他是怎么知道扩容已经结束了?

JVM八股:内存布局、回收算法、GC Root可达性分析、内存分配担保、CMS G1

线程池场景:核心10、总数10、队列20,瞬间60个线程请求,在线程和队列都饱和的情况下有多少个线程会触发拒绝策略?(60-10-20=30个)

简单讨论了下实习的内容,在学校做项目遇到技术问题时怎么处理


面试复盘 | 杭州有赞 Java后端 一二三面

二面

二面的话会去抠项目细节,面的头很大。没有录音,写一些印象比较深刻的问题

项目是做什么的的,有哪些技术难点,为什么不用其他技术方案实现 等等等;实习做了哪些工作

悲观锁和乐观锁的场景,扣减库存的场景应使用哪一种锁?

你的项目里网关的鉴权流程?

缓存和DB一致性怎么保证?
答了让后台的线程使用队列去串行化更新,然后面试官问可以由客户端请求的线程来更新缓存吗?
我说可以,更新时使用分布式锁保证只有一个请求的线程在操作

接着面试官就问了分布式锁的使用会有什么问题?这里答的不是很好,后来才知道问的应该是锁的唯一性、可重入等问题。。

Redis除了缓存、分布式锁还有其他场景吗?

API和SPI区别

讲一下依赖倒置

项目有使用到什么设计模式吗?(策略模式)

面试复盘 | 杭州有赞 Java后端 一二三面

HR面

HR面了很久,感觉很看重你对公司的意向,对过往经历问的很细。。。主要围绕下面几个部分

实习的收获,为什么不去实习公司

家庭环境、从小到大有经历过什么困难吗

团队中出现分歧怎么办

都投了哪些公司,为什么

比赛时印象最深的困难

讨论

想和大佬们讨论下

扣减库存的场景应使用乐观锁or悲观锁?

缓存DB一致性的保证有没有更好的解决方案呢?

MySQL机器上CPU飙升,怎么解决?


总结

首先在基础方面自己要有比较擅长的一块,这样如果面试官给力的话会让你说自己擅长的,不然也可以引导面试官向自己擅长的部分去提问,尽量给自己加分。二面的面试官会根据你的项目去引申出一些场景题,所以对于项目使用到的技术栈还是要多去思考,之前一直背八股文,导致对于一些实际场景的使用不了解,继续改进。最后许愿offer~


文|牛客:DrBurry