背景
计算机六年入门选手,大大小小面试了不少,从小白一路成长而来,也希望能帮助到学弟学妹们。本面试经验只适用于我这种普普通通没有背景的萌新,大神勿扰
先介绍一下个人情况211本+985硕+计算机专业,参与的是百度提前批java开发,已拿offer
一面
1. 投递的岗位是java开发。自我介绍完之后,面试官询问了一下我的基本情况,问我有没有求职的具体的方向,比如偏算法、研发、数据库或者大数据,有没有自己的一些意愿。
2. 深挖项目。涉及到项目的思路、流程;过程中遇到的困难、如何解决的;如何提升性能的;所用到技术的底层原理等。(大概半小时)
3. final、finally和finalize的作用
4. synchronized和volatile的作用和区别
5. Java util包里面一些常见类的设计,我讲了HashMap相关内容。(底层结构、确定下标、扩容、线程不安全等等)
6. ConcurrentHashMap了解吗?(1.8之前分段锁,1.8之后CAS+synchronized,以及为什么会改)
7. CAS了解吗?优缺点?
8. 多线程编程写过具体代码吗?(写过简单的Web Server)
9. 那讲一讲BIO、NIO和AIO。(阻塞/非阻塞,同步/异步,然后分别讲各自原理)
10. JVM常用的垃圾回收算法。(各个算法及优缺点,用于新生代回收还是老年代回收,为什么?)
11. 平时的开发