面试过程
一面总体上还是围绕Java基础、JVM、并发编程、数据结构等展开。一面结束后很快安排了二面,相对一面,二面和三面从项目入手多数问的是数据库,缓存,分布式架构等问题且更深入,问题比较刨根问底,更加注重对一些技术细节的理解和把握。比如数据库操作,面试官会详细的问你数据库插入和删除一条数据的过程在底层是如何执行的,项目里配置了读写分离,也会比较深入的就实现方法和底层逻辑展开讨论。
一. 技术一面(注重问了基础)
自我介绍!
常见集合类的区别和适用场景?
并发容器了解哪些?
如何判断链表是否有环?
平时会用到哪些数据结构?
解决hash冲突的方法有哪些?
讲讲自己对HashMap的理解,以及和Weakhashmap的区别?
concurrentHashMap如何实现?
集群服务器 如何application 共享?
BIO、NIO、AIO的区别和联系?
jvm内存模型jmm 知道的全讲讲
JAVA的垃圾回收,标记算法和复制算法的区别,用在什么场合?
http和https的区别,http1.x和http2.0的区别,SSL和TSL之间的区别?
GC、G1和ZGC的区别?
B+树和B树的区别,和红黑树的区别?
内存泄漏与内存溢出的区别?
session的生命周期是多久?
关于Mina框架了解多少?(因为我在项目里用到了