java工程师面试大纲
除了java的基础知识还包括以下几个内容:
-
JVM
- JVM内存区域:重点注意堆栈的区别 - JVM运行时内存(新生代、老年代、永久代)注意jdk7/8的区别 - 如何进行确定垃圾回收(引用计数法、可达性分析) - 垃圾回收算法(复制算法、标记清除算法、标记整理算法、分代收集) - java中四大引用类型(强/软/弱/虚引用) - GC垃圾收集器 - 内存溢出/内存泄漏 - 如何进行jvm调优 - jvm类加载机制/类加载器(注意双亲委派)
-
Java IO/NIO
-
容器(集合)
- list/set/map集合,他们之间的区别(底层数据结构,线程安全,是否为空,扩容)
- 重点关注hashmap的底层实现原理,以及与courrentHashMap的区别,注意比较jdk1.7与1.8的不同
- hashMap/hashtable区别
- 并发编程
- java内存模型、JMM三大特性、线程安全级别
- 并发知识库
- 线程的实现方式(某些公司面试会手写多线程)
- 线程的生命周期(注意start与run的区别、sleep与run的区别)
- 终止线程的方式
- 线程与进程的区别、通信方式
- 多线程的基本实现原理、线程池参数、拒绝策略、线程池工作过程
- 四种线程池
- java阻塞队列(原理、队列)
- synchronized、ReentrantLock、Semaphore、AtomicInteger、volatile、ThreadLocal作用、应用场景、基本原理
- 重点关注synchronized作用范围、底层原理、锁的升级原理、基本特性、与ReentrantLock/volatile的区别
- java锁 重点关注CAS原理
- 反射
- 异常
- 泛型
- 框架
-Spring IOC/DI/AOP原理 注入方式
- Spring事务传播行为、隔离级别
- 常用注解
- IOC容器的实现原理
- springbean的生命周期
- spring中用到的设计模式
- springMVC实现原理
- Mybatis缓存
- 数据库
- 存储引擎(InnoDB、MyIASM)区别
- 聚簇索引、非聚簇索引、覆盖索引的概念
- 什么是索引、有哪些索引、什么情况下建立索引、哪些情况下索引失效、索引如何提高查询效率、索引的数据结构
- 什么是死锁、死锁的表现方式、怎么解决死锁
- 数据库三范式
- 数据库事务
- 一条sql语句执行很慢的原因
- 怎么进行sql调优
- 主从复制原理
- 计算机网络
- 网络的七层架构、五层模型
- TCP/UDP的区别
- TCP的三次握手、四次挥手过程,为什么不能改成两次握手
- TCP流量控制、阻塞控制、粘包
- HTTP原理、状态、https区别、请求方法
- 在浏览器中输入URL到显示页面的整个过程,以及使用的协议
- socket通信
- 设计模式
- 设计原则
- 设计模式 单例模式懒汉饿汉要会写
- 其他
- Redis
- kafka
- Linux基本命令
- 其他消息队列了解即可