转转一二三面面经
技术一面:
(首先自我介绍)
1.说一下HashMap?
怎么理解HashMap是非线程安全的?
put一个key怎样计算下标的?
key可以为空吗?为什么?CurrentHashMap不可以为空为什么?(我说到了CurrentHashMap面试官就问)
2. 说一下HashSet?
3. JVM内存划分?
OutOfMemory发生在哪些区域?(也问到了StackOverflower)
栈里面会发生OutOfMemory吗?
什么情况下会发生OutOfMemory?
4. 怎么判断一个对象为可回收对象?
常见的垃圾回收算法?
JVM用了哪些GC算法?
5. MySQL索引?
索引失效的场景?
聚簇索引和非聚簇索引?
聚簇索引绑定的是全表数据还是?<面试官给出了具体例子让回答>
6. TCP三次握手四次挥手?(详细)
三次握手可以建立连接为什么四次挥手不能断开连接?
7. 了解过哪些开源的中间件或者项目?
8. 问了项目相关
反问(问了两个问题)
一面结束!
(自我介绍)
- JVM区域划分?<问堆很详细>
new一个User对象怎么去存储?
新生代硬GC怎么GC?(我不懂什么是硬GC,下来查了没查到,我当时回答的就是GC过程)
一次硬GC堆中的区域怎么回收的?
对象若一直存活怎么处理?<从新生代转到老年代>
经过多少次GC会到老年代?<回答了15次后又问可以自己调吗?怎么调?>
对象的年龄放在哪?
CMS的一次回收流程?有什么优缺点?
CMS采用什么GC算法?<标记清除> 又问这个算法有什么问题?这个问题可以解决吗?<顺势说了复制算法和标记整理算法>又问标记整理算法和复制算法具体怎样的? - ReentrantLock和Synchronized区别?
<说到了公平锁和非公平锁策略后>又问ReentrantLock的非公平锁是怎么实现的?
一次非公平锁的争抢流程是怎样的?
ReentrantLock实现原理?< AQS > 又问AQS中的state变量是怎样修饰的?
<给了一个例子问假如有A,B两个线程怎样实现非公平锁和公平锁?> - 问了Volatile相关
- HashMap的一次Put流程具体是怎样的?
HashMap是线程安全的吗?(不是)又问如何实现线程安全? - MySQL事务的特性?<解释分别什么意思>
事务隔离级别?读未提交有什么问题?什么是幻读?<基本就是你说到啥就会追着继续问>
MySQL默认隔离级别?<可重复读> 继续问可重复读能解决幻读吗?回答不能后又问那可重复读连幻读都解决不了那默认可重复读有什么意义呢?(我有点蒙,就回答说MySQL是利用锁机制(间隙锁、临键锁等)和MVCC去解决的)
索引底层数据结构?
B+树和B树有什么区别?为什么选择B+树?
什么是覆盖索引?
执行计划怎么看?里边有什么字段?Type有哪些?什么意思? - TCP四次挥手怎样的?
为什么等待两个MSL?
二,三次挥手可以合并吗?
举例问:假如我建立了一个连接但客户端和服务端没有交互,这个链接会怎么办 - 口述快速排序?时间复杂度?稳定性?
稳定的排序算法有哪些?时间复杂度分别是?
那你是说归并又稳定速断又快是不是都采用归并排序好? - Spring怎么解决循环依赖?
- 线程池的参数?
提交一个任务的流程?拒绝策略有哪些?
回答完然后问我半科班出身怎么学习的Java?有什么心得?现在回头看会后悔选择软件吗?学习过程享受还是痛苦?你们班像你这后来自己学软件的多吗?
到这里面试官说他问的已经完了,问我有什么想知道的。(问了两个问题)
二面结束!
(自我介绍)
- 为什么转学Java?Java有哪些吸引你的地方?
- 让介绍项目,问是一个人完成的吗?已经发布了还是在本地?(已发布)
- 看我简历上有博客链接问到了我的博客情况
- 非科班出身觉得自己比科班的不足的地方有哪些?哪些地方还需要弥补?
- 毕竟时间精力有限你学习了Java那么你觉得你失去了哪些?
- 学习之外的兴趣爱好?
- 对转转的了解?转转有哪些吸引你的地方?
- 有接触其他一些公司吗?(感觉是委婉的问手里有没有offer)
- 你选择一家公司时会从哪些维度去考虑?(其中我谈到了公司氛围)
- 你喜欢什么样的公司氛围?
- 自己有哪些地方待提升?
- 什么时候可以来实习?
反问:问了两个问题