Java工程师面试知识点整理

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.项目经验

  • 注意总结项目中用到的技术、技术难点。
  • 遇到的印象最深刻的一个问题,如何解决的。
  • 了解项目用到了哪些开源框架。

你可能感兴趣的:(面试)