面試必問的知識點(1)
阿新 • • 發佈:2019-01-03
想找一個好工作,在工作中用到的東西總是那麼千篇一律,但是面試官的問題總是包羅永珍。為了更加鞏固自己的知識,所以將以下的問題一一羅列出來,希望可以逐個擊破,從問題的本質上理解這些問題,而不是背概念。
1)集合相關問題(必問)
- HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底層實現。
- HashMap和Hashtable的區別。
- ArrayList、LinkedList、Vector的區別。
- HashMap和ConcurrentHashMap的區別。
- HashMap和LinkedHashMap的區別。
- HashMap是執行緒安全的嗎。
- ConcurrentHashMap是怎麼實現執行緒安全的。
- HashMap 的長度為什麼是2的冪次方
2)多執行緒併發相關問題(必問)
- 建立執行緒的3種方式。
- 什麼是執行緒安全。
- Runnable介面和Callable介面的區別。
- wait方法和sleep方法的區別。
- synchronized、Lock、ReentrantLock、ReadWriteLock。
- 介紹下CAS(無鎖技術)。
- volatile關鍵字的作用和原理。
- 什麼是ThreadLocal。
- 建立執行緒池的4種方式。
- ThreadPoolExecutor的內部工作原理。
- 分散式環境下,怎麼保證執行緒安全。
- 儲存過程的建立執行
3)JVM相關問題
- 介紹下垃圾收集機制(在什麼時候,對什麼,做了什麼)。
- 垃圾收集有哪些演算法,各自的特點。
- 類載入的過程。
- 雙親委派模型。
- 有哪些類載入器。
- 能不能自己寫一個類叫java.lang.String。
4)設計模式相關問題(必問)
先問你熟悉哪些設計模式,然後再具體問你某個設計模式具體實現和相關擴充套件問題。
5)資料庫相關問題,針對MySQL(必問)
- 給題目讓你手寫SQL。
- 有沒有SQL優化經驗。
- MySQL索引的資料結構。
- SQL怎麼進行優化。
- SQL關鍵字的執行順序。
- 有哪幾種索引。
- 什麼時候該(不該)建索引。
- Explain包含哪些列。
6)框架相關問題
- Hibernate和Mybatis的區別。
- Spring MVC和Struts2的區別。
- Spring用了哪些設計模式。
- Spring中AOP主要用來做什麼。
- Spring注入bean的方式。
- 什麼是IOC,什麼是依賴注入。
- Spring是單例還是多例,怎麼修改。
- Spring事務隔離級別和傳播性。
- 介紹下Mybatis/Hibernate的快取機制。
- Mybatis的mapper檔案中#和$的區別。
- Mybatis的mapper檔案中resultType和resultMap的區別。
- 日誌級別。
7)其他遇到問題
- 介紹下棧和佇列。
- IO和NIO的區別。
- 介面和抽象類的區別。
- int和Integer的自動拆箱/裝箱相關問題。
- 常量池相關問題。
- ==和equals的區別。
- 什麼是JDK?什麼是JRE?什麼是JVM?三者之間的聯絡與區別
- Java和C++的區別
- 過載和重寫的區別。
- String和StringBuilder、StringBuffer的區別。
- 靜態變數、例項變數、區域性變數執行緒安全嗎,為什麼。
- try、catch、finally都有return語句時執行哪個。
- 介紹下B樹、二叉樹。
- 分散式鎖的實現。
- 分散式session儲存解決方案。
- 常用的linux命令。