java面試需要掌握的知識點

基礎知識:

算法和數據結構
數組、鏈表、二叉樹、隊列、棧的各種操作(性能,場景)
二分查找和各種變種的二分查找
各類排序算法以及復雜度分析(快排、歸并、堆)
各類算法題(手寫)
理解并可以分析時間和空間復雜度。
動態規劃(筆試回回有。。)、貪心。
紅黑樹、AVL樹、Hash樹、Tire樹、B樹、B+樹。
圖算法(比較少,也就兩個最短路徑算法理解吧)

計算機網絡

OSI7層模型(TCP4層)
每層的協議
url到頁面的過程
HTTP
http/https 1.0、1.1、2.0
get/post 以及冪等性
http 協議頭相關
網絡攻擊(CSRF、XSS)
TCP/IP
三次握手、四次揮手
擁塞控制(過程、閾值)
流量控制與滑動窗口
TCP與UDP比較
子網劃分(一般只有筆試有)
DDos攻擊
(B)IO/NIO/AIO
三者原理,各個語言是怎么實現的
Netty
Linux內核select poll epoll

數據庫(最多的還是mysql,Nosql有redis)

索引(包括分類及優化方式,失效條件,底層結構)
sql語法(join,union,子查詢,having,group by)
引擎對比(InnoDB,MyISAM)
數據庫的鎖(行鎖,表鎖,頁級鎖,意向鎖,讀鎖,寫鎖,悲觀鎖,樂觀鎖,以及加鎖的select sql方式)
隔離級別,依次解決的問題(臟讀、不可重復讀、幻讀)
事務的ACID
B樹、B+樹
優化(explain,慢查詢,show profile)
數據庫的范式。
分庫分表,主從復制,讀寫分離。
Nosql相關(redis和memcached區別之類的,如果你熟悉redis,redis還有一堆要問的)

操作系統:

進程通信IPC(幾種方式),與線程區別
OS的幾種策略(頁面置換,進程調度等,每個里面有幾種算法)
互斥與死鎖相關的
linux常用命令(問的時候都會給具體某一個場景)
Linux內核相關(select、poll、epoll)
編程語言(這里只說Java):
把我之后的面經過一遍,Java感覺覆蓋的就差不多了,不過下面還是分個類。
Java基礎(面向對象、四個特性、重載重寫、static和final等等很多東西)
集合(HashMap、ConcurrentHashMap、各種List,最好結合源碼看)
并發和多線程(線程池、SYNC和Lock鎖機制、線程通信、volatile、ThreadLocal、CyclicBarrier、Atom包、CountDownLatch、AQS、CAS原理等等)
JVM(內存模型、GC垃圾回收,包括分代,GC算法,收集器、類加載和雙親委派、JVM調優,內存泄漏和內存溢出)
IO/NIO相關
反射和代理、異常、Java8相關、序列化
設計模式(常用的,jdk中有的)
Web相關(servlet、cookie/session、Spring<AOP、IOC、MVC、事務、動態代理>、Mybatis、Tomcat、Hibernate等)
看jdk源碼

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容