1. 电话面试,大约30分钟-技术面 晚上突然接到电话面试,面试官介绍了职位信息。问是否感兴趣,然后进行了电话面试。过程没有废话,全部都是技术问题。 2. 视频面试+笔试,大约1个小时-技术面 线上面试,开篇介绍了一下项目背景,然后问了一些基于项目的技术细节,非常细。后续继续基础知识的面试,JVM和多线程相关的问题很多。视频面结束后发了一道算法题,半小时内完成。 3. 电话面试,大约20分钟-聊背景 聊了一些对职位,对人生的规划,巴拉巴拉。以为这轮就结束了,结果一周后又接到继续面试的电话。未完待续。。。。。。
面试官问的面试题: 一轮:
自我介绍
1. HashMap和ArrayList的原理解释下。
2. Netty原理介绍下。
3. 了解过NIO,BIO,AIO么?介绍下异同,代码中如何使用?
4. 分布式锁用过么?用什么函数?什么使用场景?
5. 能介绍下垃圾回收机制么?
6. redis的数据结构介绍下。项目中用过哪些?什么场景
7. 幂等性是什么?如何保障?
8. 交易系统中的数据一致性咋保障?
二轮:
自我介绍
1. 项目中的mongoDB使用场景是啥?如何部署的?怎么保证高可用性?
2. JVM的内存结构能介绍下么?
3. CMS和G1的优缺点?什么时候发生FULL GC?什么时候stop the world!
4. 什么样的对象能当根节点?
5. 一个类,两个函数,一读一写,写函数加synchronized,读函数还用加么?voliate关键字啥作用?
6. 数据库设计时,主键咋设?自增好还是非自增好?为啥?
7. mysql的锁类型介绍下
8. 线上CPU 100%了怎么查?
9. 写个算法,给一个数字,一个单调数组中,方法返回数组中第一个大于给定数字的下标,如果没有,返回-1。
第三轮
自我介绍
你职业生涯中哪些事比较有亮点?
你的职业规划是啥?以后想怎么发展?
等等。。。