更新時間:2020-02-18 10:49:06 來源:動力節點 瀏覽4085次
有哪些集合實現,對應的線程安全集合?
主要考察集合框架的兩大類:集合(collection)和圖(map),集合下面主要了解list和set,如ArrayList、LinkedList、HashSet、TreeSet;map下主要了解HashMap、TreeMap。
劃重點(加分項):
①線程安全集合選兩個代表性的:ConcurrentHashMap和CopyOnWriteArrayList,了解它們是如何做到線程安全的。
hashmap底層結構,為什么使用鏈表?(hashmap是面試必考題)
HashMap的底層結構(數組)實現,一定要了解透徹,如put()、get()兩塊源碼花點心思;
hash碰撞后產生的鏈表、紅黑樹順帶了解,有能力的最好看下源碼實現(加分項)。
線程池常用參數、如何設置?
核心線程數、最大線程數、阻塞隊列容量、線程空閑時間及單位、拒絕策略,每個的具體含義一定要了解。
劃重點:
當線程數小于核心線程數時,創建線程。
當線程數大于等于核心線程數,且任務隊列未滿時,將任務放入任務隊列。
當線程數大于等于核心線程數,且任務隊列已滿:
若線程數小于最大線程數,創建線程若線程數等于最大線程數,看拒絕策略
如何設置具體參數值(個人經驗及看法,供參考):
核心線程數=每秒需要處理的最大任務數量*處理一個任務需要的時間,業界有常用的8020原則、6040原則,實際還是要根據自己應用的承載能力來看,假設系統每秒任務數為10~100,每個任務耗時0.1秒,則需要10*0.1~100*0.1,即1~10個線程。那么corePoolSize應該設置為大于1,若根據8020原則,即80%情況下系統每秒任務數不超過20,則corePoolSize=0.1*20=2。
阻塞隊列容量=核心線程數/處理一個任務需要的時間*系統允許任務最大的響應時間
最大線程數=(每秒需要處理的最大任務數量-隊列容量)*每秒的線程處理任務能力,假設每秒200個任務需要20個線程,那么當每秒達到1000個任務時,則需要(1000-隊列容量)*(20/200),即60個線程。
阻塞隊列的實現原理?
lock鎖的多條件(condition)阻塞控制,基礎薄弱的需要提前了解一下同步鎖synchronized、lock及Condition類,這一塊考驗高級和中級研發人員的界限,需要挖一下源碼,多用心。
加分項:另外輻射出來可能會順帶直接問你AQS,建議仔細了解其實現原理,如其內部如何利用雙向鏈表的,重點看acquire()方法實現。
內存模型(必考題)
無論你關注jdk1.8之前還是之后,不重要,關鍵是能正常理解每一塊的作用、是否線程共享/私有。
堆、虛擬機棧、本地方法棧、程序計數器、方法區,需要了解每一部分的作用。
劃重點:
虛擬機棧包含哪些部分、程序計數器的作用這兩塊著重了解。
GC發生在哪一塊,GC算法?
發生在堆內存,GC算法主要了解:標記清除、復制、標記整理,需要知道其執行步驟及各自的區別。
劃重點:
年輕代劃分成哪幾部分(E、S0、S1),使用哪種算法(復制),老年代使用哪種算法(標記清除),為什么?這里需要耐心理解透徹,很容易輻射到此類問題。
事務隔離級別,默認哪一個,解釋幻讀、不可重復讀及二者區別?
隔離級別:讀未提交、讀提交、不可重復讀、串行化,默認是不可重復讀,具體幻讀問題,請參考筆者此前文章幻讀、不可重復讀,其中進行了詳細說明。
索引失效場景、索引數據結構?
主要分為非組合索引和組合索引:
1、非組合索引主要注意or、like(若like非左模糊情形,如xxx%,則可以使用索引),索引列存在表達式、聚合函數等等;
2、組合索引主要注意是否遵循最左原則。
還有些其它小點靠大家自己去積累,筆者這會是蒙圈狀態,沒反應過來。
索引數據結構:主要關注B+樹,花心思了解透,且需要了解聚簇索引和非聚簇索引。
加分項:InnoDB與MyisAM索引方面的區別。
數據庫引擎
主要可以說說InnoDB、MyISAM這兩個常用的即可,需要了解二者的區別,InnoDB支持事務,二者使用場景,二者之間如何轉變。
mysql分表中間件、如何監聽binlog
中間件:tddl,MyCat(其實考驗你的知識儲備廣度,一般不要求細說中間件的實現)。
監聽時可以使用duckula中間件或者binlog監聽獨立jar包(common-binlog-alone)。
筆者認為高級或資深人員必須要了解的知識儲備:InnoDB的MVCC機制
mysql自身的并發控制如何實現的,原理主要從其新增、更新、刪除三方面去了解其內部的操作過程,其版本號如何控制等等。
以上就是動力節點Java培訓機構小編介紹的“資深Java面試題目及答案”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
相關推薦
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習