2018北京3月份java面試題(3~5年工作經驗)
一、java基礎
1.final修飾方法、類、成員變數的特點
2.集合框架 ArrayList,HashMap,ConcurrentHashMap(這三個問到的頻率最高)
知識點:底層資料結構,知道哪些是執行緒安全的,執行緒不安全的,最好閱讀一下原始碼,構造方法有幾個,預設引數。(jdk1.8和之前的版本區別)
ConcurrentHashMap 為什麼是安全的?看一下put方法;能說出來細節,鎖加在什麼位置,hash衝突怎麼 處理;擴容以後儲存順序位置會發生什麼變化。
3.多執行緒 Lock和Synchronized,join和yield
知識點:兩者之間的區別(進階版:lock的底層實現原理AbstractOwnableSynchronizer,synchronized底層monitor物件)公平鎖和非公平鎖, Synchronized加在靜態方法上和非靜態方法上用的鎖是什麼,補充CAS知識點
4.atomic包下面的AtomicInteger等(保證原子性),volatile保證可見性(指令重排序、記憶體屏障),ThreadLocal
5.執行緒池有幾種,區別,詳細瞭解一下構造方法的各個引數。進階:實現執行緒池的思路
6.java IO和NIO的區別
7.java反射機制,在哪兒用到了
8.深克隆和淺克隆
二、資料結構
1.演算法:氣泡排序(至少掌握一種排序演算法)、二分法查詢
2.手寫一個棧 先進後出
3.二叉樹、紅黑樹
三、框架
1.Spring:AOP,IOC 最好能翻閱spring原始碼,用到的設計模式,隔離級別,傳播屬性
2.Mybatis中的$和#的區別
3.dubbo:工作原理,叢集容錯,負載均衡
四、資料庫
1.mysql innodb引擎特點;索引B+tree,sql優化,sql分析方法;
2.redis 資料型別,主從原理,持久化方式,事務;
五、jvm
1.gc演算法:標記整理、複製、壓縮
2.堆、棧、方法區
六、調優
1.tomcat NIO,執行緒池。
七、線上問題分析方法
1.top命令,jstat,jmap等
八、計算機網路
1.三次握手、四次揮手能畫出圖,以及各個狀態代表的意義
2.http和https
3.TCP和UDP