作者: 徐劉根 ;

來源:Java後端技術

2018年最全Java面試通關祕籍第二套!


首先,我很懂你!當你看到這篇文章的時候可能是又喜又悲!喜的是,別人沒看到這些悉心整理的面試題你看到了;悲的是,面試你的面試官可能也看到了!前幾天整理了很多關於面試的經典題目,例如Redis爲什麼是單線程的、SqlSessionTemplate是如何保證SqlSession線程安全性的、還有緩存雪崩、緩存穿透、Hash一致性等等,很多小夥伴都留言表示面試官確實問了某某某問題,只不過沒有仔細閱讀這篇文章,導致回答的不是很好!

因此,看到這裏,我希望每一位小夥伴不是把這篇文章簡單的丟進收藏夾裏邊,爲了你的升職加薪,請好好對待每一道題目!每一題都可能成爲你以後的絆腳石!

不要問我爲什麼沒答案了,原因還是以前那句話,單純的背面試題是解決不了任何問題的,只有深入其內部原理,才能遊刃有餘!後期一系列的文章會不斷的探討這一個個經典的面試題,敬請期待!也歡迎大家在留言處補充和討論!

一、Java相關

  • Arraylist與LinkedList默認空間是多少;
  • Arraylist與LinkedList區別與各自的優勢List 和 Map 區別;
  • 談談HashMap,哈希表解決hash衝突的方法;
  • 爲什麼要重寫hashcode()和equals()以及他們之間的區別與關係;
  • Object的hashcode()是怎麼計算的?
  • 若hashcode方法永遠返回1或者一個常量會產生什麼結果?
  • Java Collections和Arrays的sort方法默認的排序方法是什麼;
  • 引用計數法與GC Root可達性分析法區別;
  • 淺拷貝和深拷貝的區別;
  • String s="abc"和String s=new String("abc")區別;
  • HashSet方法裏面的hashcode存在哪,如果重寫equals不重寫hashcode會怎麼樣?
  • 反射的作用與實現原理;
  • Java中的回調機制;
  • 模板方法模式;
  • 開閉原則說一下;
  • 發佈/訂閱使用場景;
  • KMP算法(一種改進的字符串匹配算法);
  • JMM裏邊的原子性、可見性、有序性是如何體現出來的,JMM中內存屏障是什麼意思,

二、多線程

  • AtomicInteger底層實現原理;
  • synchronized與ReentraLock哪個是公平鎖;
  • CAS機制會出現什麼問題;
  • 用過併發包下邊的哪些類;
  • 一個線程連着調用start兩次會出現什麼情況?
  • wait方法能不能被重寫,wait能不能被中斷;
  • 線程池的實現?四種線程池?重要參數及原理?任務拒接策略有哪幾種?
  • 線程狀態以及API怎麼操作會發生這種轉換;
  • 常用的避免死鎖方法;

三、JVM

  • Minor GC與Full GC分別在什麼時候發生?什麼時候觸發Full GC;
  • GC收集器有哪些?CMS收集器與G1收集器的特點。
  • Java在什麼時候會出現內存泄漏;
  • Java中的大對象如何進行存儲;
  • rt.jar被什麼類加載器加載,什麼時間加載;
  • 自己寫的類被什麼加載,什麼時間加載;
  • 自己寫的兩個不同的類是被同一個類加載器加載的嗎?爲什麼?
  • 爲什麼新生代內存需要有兩個Survivor區?
  • 幾種常用的內存調試工具:jmap、jstack、jconsole;
  • 類加載的五個過程:加載、驗證、準備、解析、初始化;
  • G1停頓嗎,CMS回收步驟,CMS爲什麼會停頓,停頓時間;
  • 棧主要存的數據是什麼,堆呢?
  • 堆分爲哪幾塊,比如說新生代老生代,那麼新生代又分爲什麼?
  • 軟引用和弱引用的使用場景(軟引用可以實現緩存,弱引用可以用來在回調函數中防止內存泄露);

四、數據庫

  • 數據庫索引,什麼是全文索引,全文索引中的倒排索引是什麼原理;
  • 數據庫最佳左前綴原則是什麼?
  • 數據庫的三大範式;
  • 悲觀鎖和樂觀鎖的原理和應用場景;
  • 左連接、右連接、內連接、外連接、交叉連接、笛卡兒積等;
  • 一般情況下數據庫宕機瞭如何進行恢復(什麼是Write Ahead Log機制,什麼是Double Write機制,什麼是Check Point);
  • 什麼是redo日誌、什麼是undo日誌;
  • 數據庫中的隔離性是怎樣實現的;原子性、一致性、持久性又是如何實現的;
  • 什麼是組合索引,組合索引什麼時候會失效;
  • 關係型數據庫和非關係型數據庫區別;
  • 數據庫死鎖如何解決;
  • MySQL併發情況下怎麼解決(通過事務、隔離級別、鎖);
  • MySQL中的MVCC機制是什麼意思,根據具體場景,MVCC是否有問題;
  • MySQL數據庫的隔離級別,以及如何解決幻讀;

五、緩存服務器

  • Redis中zSet跳躍表問題;
  • Redis的set的應用場合?
  • Redis高級特性瞭解嗎?
  • Redis的pipeline有什麼用處?
  • Redis集羣宕機如何處理,怎麼樣進行數據的遷移;
  • Redis的集羣方案;
  • Redis原子操作怎麼用比較好;
  • Redis過期策略是怎麼實現的呢?

六、SSM相關

  • Spring中@Autowired和@Resource註解的區別?
  • Spring聲明一個 bean 如何對其進行個性化定製;
  • MyBatis有什麼優勢;
  • MyBatis如何做事務管理;

七、操作系統

  • Linux靜態鏈接和動態鏈接;
  • 什麼是IO多路複用模型(select、poll、epoll);
  • Linux中的grep管道用處?Linux的常用命令?
  • 操作系統中虛擬地址、邏輯地址、線性地址、物理地址的概念及區別;
  • 內存的頁面置換算法;
  • 內存的頁面置換算法;
  • 進程調度算法,操作系統是如何調度進程的;
  • 父子進程、孤兒進程、僵死進程等概念;
  • fork進程時的操作;
  • kill用法,某個進程殺不掉的原因(僵死進程;進入內核態,忽略kill信號);
  • 系統管理命令(如查看內存使用、網絡情況);
  • find命令、awk使用;
  • Linux下排查某個死循環的線程;

八、網絡相關

  • 數據鏈路層是做什麼的?
  • 數據鏈路層的流量控制?
  • 網絡模型的分層、IP和Mac地址在那個層、TCP和HTTP分別在那個層;
  • TCP滑動窗口;
  • TCP爲什麼可靠;
  • TCP的同傳,拆包與組裝包是什麼意思;
  • Https和Http有什麼區別;
  • Http 爲什麼是無狀態的;
  • TCP三次握手,爲什麼不是三次,爲什麼不是四次;
  • TCP的擁塞控制、流量控制詳細說明?
  • Http1.0和Http2.0的區別;
  • 兩個不同ip地址的計算機之間如何通信;
  • 地址解析協議ARP;
  • OSI七層模型分別對應着五層模型的哪一部分;
  • TCP三次握手數據丟失了怎麼辦?那如果後面又找到了呢?

九、分佈式相關

  • 消息隊列使用的場景介紹和作用(應用耦合、異步消息、流量削鋒等);
  • 如何解決消息隊列丟失消息和重複消費問題;
  • Kafka使用過嗎,什麼是冪等性?怎麼保證一致性,持久化怎麼做,分區partition的理解,LEO是什麼意思,如何保證多個partition之間數據一致性的(ISR機制),爲什麼Kafka可以這麼快(基於磁盤的順序讀寫);
  • 異步隊列怎麼實現;
  • 你項目的併發是多少?怎麼解決高併發問題?單機情況下Tomcat的併發大概是多少,MySQL的併發大致是多少?
  • 什麼是C10K問題;
  • 高併發情況下怎麼辦;
  • 分佈式理論,什麼是CAP理論,什麼是Base理論,什麼是Paxos理論;
  • 分佈式協議的選舉算法;
  • 說一下你對微服務的理解,與SOA的區別;
  • Dubbo的基本原理,RPC,支持哪些通信方式,服務的調用過程;
  • Dubbo如果有一個服務掛掉了怎麼辦;
  • 分佈式事務,操作兩個表不在一個庫,如何保證一致性。
  • 分佈式系統中,每臺機器如何產生一個唯一的隨機值;
  • 系統的量級、pv、uv等;
  • 什麼是Hash一致性算法?分佈式緩存的一致性,服務器如何擴容(哈希環);
  • 正向代理、反向代理;
  • 什麼是客戶端負載均衡策略、什麼是服務器端負載均衡策略;
  • 如何優化Tomcat,常見的優化方式有哪些;
  • Nginx的Master和Worker,Nginx是如何處理請求的;

十、系統設計相關

  • 如何防止表單重複提交(Token令牌環等方式);
  • 有一個url白名單,需要使用正則表達式進行過濾,但是url量級很大,大概億級,那麼如何優化正則表達式?如何優化億級的url匹配呢?
  • 常見的Nginx負載均衡策略;已有兩臺Nginx服務器了,倘若這時候再增加一臺服務器,採用什麼負載均衡算法比較好?
  • 掃描二維碼登錄的過程解析;
  • 如何設計一個生成唯一UUID的算法?
  • 實現一個負載均衡的算法,服務器資源分配爲70%、20%、10%;
  • 有三個線程T1 T2 T3,如何保證他們按順序執行;
  • 三個線程循環輸出ABCABCABC....

十一、安全相關

  • 什麼是XSS攻擊,XSS攻擊的一般表現形式有哪些?如何防止XSS攻擊;
相關文章