前言
不知道大家有没有这样的经历,明明感觉自己这个技术掌握的还行,能写在简历里肯定是有点自信的,但是被面试官一问,就感觉啥也不是
当我从面试的大楼里出来的时候脑袋里还是昏昏沉沉的,你压根不知道我经历了什么,我就面试一个开发岗位,有必要问我这么多
后来咨询了一下我在阿里的师兄,他是这么说的:现在的就业竞争很激烈,在考察技术的时候不单单是停留在应用层面,底层的原理你也要有所了解,这样在遇到不可控问题的时候你才能游刃有余的解决掉。
跟他谈了蛮久,了解到我一些问题后,直接给了我一份他的学习笔记,让我回去用两个星期啃完,大家一起来看看吧
由于篇幅影响,只展示一下大概内容吧
Spring技术内幕深入解析Spring架构与设计原理
Spring核心实现
一轮:
第一轮面试官(是一位女性,喜欢钻研一些细节性的东西)
自我介绍
1、 HashMap和ArrayList的原理解释下。
2、 Netty原理介绍下。
3. 了解过NIO,BIO,AIO么?介绍下异同,代码中如何使用?
4. 分布式锁用过么?用什么函数?什么使用场景?
5. 能介绍下垃圾回收机制么?
6. redis的数据结构介绍下。项目中用过哪些?什么场景
7. 幂等性是什么?如何保障?
8. 交易系统中的数据一致性咋保障?
二轮:
第二轮面试官(年龄看起来不大,人很好说话,给人一种很舒服的感觉)
自我介绍
9. 项目中的mongoDB使用场景是啥?如何部署的?怎么保证高可用性?
10. JVM的内存结构能介绍下么?
11. CMS和G1的优缺点?什么时候发生FULL GC?什么时候stop the world!
12. 什么样的对象能当根节点?
13. 一个类,两个函数,一读一写,写函数加synchronized,读函数还用加么?voliate关键字啥作用?
14. 数据库设计时,主键咋设?自增好还是非自增好?为啥?
15. mysql的锁类型介绍下
16. 线上CPU 100%了怎么查?
17. 写个算法,给一个数字,一个单调数组中,方法返回数组中第一个大于给定数字的下标,如果没有,返回-1。
第三轮:
第三轮面试官(应该是部门主管,比较严格)
你职业生涯中哪些事比较有亮点?
你的职业规划是啥?以后想怎么发展?
2、spring-cloud是否了解,spring-boot是了解,讲一讲bean的生命周期
3、hashmap-1.8后的改进,hashmap为什么是线程不安全的
4、如何做到线程安全,concurrenthashmap是怎么实现的
5、用到哪些的设计模式
6、ThreadLocal用过吗
7、类的加载机制
8、JVM-内存模型
9、垃圾回收
10、redis源码有读过吗
11、擅长的做什么
12、职业规划是什么
13、考虑过管理吗
总结
总体来说,如果你想转行从事程序员的工作,Java开发一定可以作为你的第一选择。但是不管你选择什么编程语言,提升自己的硬件实力才是拿高薪的唯一手段。