1. Java Web项目
- SSM框架:了解spring mvc/spring boot的项目,了解@Autowired、@Controller、@RequestMapping等常用注解的用法。
- 结合项目的用法,说下怎么用AOP,拦截器的,比如说可以通过拦截器拦截非法请求,怎么用 AOP输出日志、或者处理事务等。
- 了解声明式事务的用法。
2. 数据库方面
- SQL优化的常用方法:
索引怎么建的,怎么用的?比如我建好了一个索引,在where 语句里写 name like '123%'会不会走索引,怎么情况下不该建索引,哪些语句不会走索引。
除了索引之外,你有过哪些SQL优化方面的经验,比如分库分表,或通过执行计划查看SQL的优化点。这最好是能结合你做的项目实际来讲。
- 数据库事务的特性、隔离级别等。列举使用事务的例子。参考:https://www.cnblogs.com/fjdingsd/p/5273008.html
3. Java核心API
- 集合
1. hashcode有没有重写过?在什么场景下需要重写。如果可以,结合hash表的算法,说下hashmap的实现原理。
对于高级开发而言,最好通过ConcurrentHashMap来说明下并发方面的底层实现代码。
2. ArrayList,LinkedList的差别,比如一个基于数组,一个基于链表,它们均是线程不安全的,ArrayList的扩容做法。
- 多线程
1. synchronized和可重入锁的差别,然后可能会顺便问下信号量等防并发的机制。
2. 在线程里该如何返回值,其实就是callable runnable 区别。
3.了解Future和callable的结合,最好看下线程池传递callable和runnable时的源码。
4. 一定得通过ThreadLocal或volatile关键字,来说明线程的内存模型。
5. 线程池方面,会用,了解些常用参数。
- 虚拟机
1. 结构图和流程可以大致说下。
2. 一定得了解针对堆的垃圾回收机制,具体而言,可以画个图,说下年轻代年老代等。
3. 说下垃圾回收的流程,然后针对性地说下如何在代码中优化内存性能。
4. 最好说下如果出现了OOM异常,该怎么排查?如何看Dump文件。
5. GC的一些概念,比如强弱软引用,finalize方法等,这些可以准备下。
6.了解常用的JVM启动参数,GC项目调优的过程。
4.项目经验
- 注意总结项目中用到的技术、技术难点。
- 遇到的印象最深刻的一个问题,如何解决的。
- 了解项目用到了哪些开源框架。