一、java基础方面
栈和队列的实现,大厂都会考察的一个点,有的还直接让用list来现场写段代码。
HashMap的jdk源码,怎么实现的尤其是散列方面hashcode()方法,必须要会!
List下的各接口实现,底层采用的数据结构,原理还有特性,要很熟悉
二、多线程
synchronized关键字,原理是怎么样的
Lock类,基于jdk实现的锁机制,掌握好可重入锁和读写锁,最好还能和synchronized做做对比。
线程安全的几种做法,从上面两点,volatile,ThreadLocal方面讲讲。
线程池
三、sql和数据库优化方面的问题
sql优化,最最基础的一个点,需要从sql语句,索引这些方面去考虑
亿级别海量数据的优化,从库表设计以及查询各方面去考虑
缓存服务化,利用redis等缓存数据库能做的应用去考虑,主要有主备、主从、读写分离、持久化、与数据库同步还有分布式锁之类的角度。
redis支持的数据类型,redis和数据库的同步
四、jvm
GC的运行机制,原理,算法以及判断对象可回收,很重要
类加载,双亲委托,理解+记忆
jvm内存区域怎么划分,GC在其中的策略,能够了解minor gc和full gc。
jvm的优化,能谈上几点更好。
五、tomcat
tomcat的体系架构,这个在本人系列博客中进行过详细阐述
tomcat优化,可以结合NIO,BIO对高并发做优化的思路。
六、算法和设计模式
排序算法必须要掌握一种,冒泡是基本,额外准备一个可以眼前一亮的堆排序or归并排序。每次的算法考察都不一样,只能平时找些题练下思路和语法有备无患。
掌握好单例模式,恶汉、懒汉、线程安全的,不带锁的线程安全的也是一个亮点。
spring里面的工厂模式和代理模式,IO中的装饰者模式,挑几个最熟的能讲讲思路和伪代码实现。
七、框架
SSM不用说了,必须很熟。
SOA以及微服务是目前较为流行的技术趋势,dubbo框架(或者spring cloud)的工作流程和使用都要掌握,最好能结合项目谈谈理解和使用。
消息方面,我准备了RabbitMQ,数据协议也要能说一说ProtoBuf的好处,消息的确认,如何保证消息可靠和不丢失的一些机制。
最后能针对项目中的难点,谈一谈自己做出的改进,延伸拓展一下,和他人做法的一个对比,分析和总结些规律出来,这样能展现一个比较好的工作和学习态度,也是日后真正工作了不断提升成长的应有之义。推荐写博客(备忘)和github(展示成果和输出)