面试前几分钟进去的赛码网,结果耳机一直录不了音。。。弄好了进去已经迟到五分钟了orz 房间显示面试官离线,我还以为这个面试就这么凉了hhh但是等了三四十分钟之后面试官突然就上了(原来迟到的不止我一人= =
建议大家面试还是多提前一些去检查设备。。。不然对心态影响是真滴大啊
面试过程(大约30min)
- 自我介绍
- 十分钟内写一下以下任选的一题(我选了2,这决定了接下来的问题方向):
1)你认为最快的排序算法
2)死锁 - synchronized是用来干嘛的?
- jvm是怎么实现synchroinzed的?
- synchronized(Main.class) 和 synchronized(object)的区别?
- volatile有什么作用?
- 指令重排是什么意思?
- volatile和synchronized的区别?
- jvm的内存模型?
- jvm调优的方法
- 看了哪本关于jvm的书?
- 项目做了什么?
- 没有实习经验?
- 对框架有哪些了解?
- spring的bean和java的bean有哪些区别?
- 项目是处理HTTP请求的,那么301状态码和302有什么区别了解吗?
- 项目用的数据库是?
- MySQL都有哪些索引?
- sql题考察对B+树的理解(本来说准备了3道,结果第1就不会,所以就跳过这一步了)
表t有联合索引a,b,c,执行sql语句select * from t where a!= b 会用到索引吗? - 隔离级别?默认的是哪个?还有哪些
- 幻读和不可重复读的区别是什么?
- MySQL怎么实现隔离的?
- 就只有锁吗?(我又回答了MVCC)
- 那MVCC是怎么解决幻读问题的?
- 锁有行锁,段锁和表锁,insert一行数据的时候加的是什么锁?为什么?
- 反问
1)建议
多了解一些底层的实现,比如synchronized的实现还是要懂的,还有索引是怎么实现的,什么情况下会用到要知道,至少B+树最左匹配原则是应该知道的,还有MVCC具体是怎么实现隔离的要了解一下。
2)更注重基础知识还是应用能力呢(比如开源框架的使用)?
面试官大概的意思是像常见的开源框架怎么使用至少是要会的,当然了解底层实现是最好的。
总结
- 很幸运又遇到了很好的面试官,我卡住的时候都会鼓励我,然后也很认真的给我解答我不会的问题。非常感谢~
- 项目很水的话就少说点= = , 别说一些自己还不太了解的东西,给自己挖坑。
- 还是要学会把控面试的方向,尽量往自己熟悉的领域上走(感觉面试官对你说的一些专业名词还是很敏感的,会根据你说的东西决定接下来的问题
- 这次的面试体验还是很好的,头脑比第一次面试的时候清醒多了。不过,菜是原罪呀。。。后半段问的数据库底层实现的问题答的一塌糊涂(摇头),复习的时候还是要多深入理解,不然只会套专有名词只是在给自己挖坑。
- 厚着脸皮求下二面?
全部评论
(2) 回帖