1. 程式人生 > >2018北京3月份java面試題(3~5年工作經驗)

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