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基本命令
- 其他消息隊列了解即可