1. 程式人生 > >第三套:《2018年最全Java面試通關祕籍第三套!》

第三套:《2018年最全Java面試通關祕籍第三套!》

注:本文是從眾多面試者的面試經驗中整理而來,其中不少是本人出的一些題目,網路資源眾多,如有雷同,純屬巧合!禁止一切形式的碰瓷行為!未經允許禁止一切形式的轉載和複製,如有違反則追究其法律責任!

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

一、基礎題

  • 怎麼解決Hash衝突;(開放地址法、鏈地址法、再雜湊法、建立公共溢位區等)

  • 寫出一個必然會產生死鎖的虛擬碼;

  • Spring IoC涉及到的設計模式;(工廠模式、單利模式。。)

  • toString()方法什麼情況下需要重寫;

  • 判斷物件相等時,什麼情況下只需要重寫 equals(),什麼情況下需要重寫 equals(),hashcode()?

  • Set記憶體放的元素為什麼不可以重複,內部是如何保證和實現的?

  • 如何保證分散式快取的一致性(分散式快取一致性hash演算法?)?分散式session實現?

  • Java 8流式迭代的好處?

  • 專案中用到的JDK的哪些特性?

  • 說一下TreeMap的實現原理?紅黑樹的性質?紅黑樹遍歷方式有哪些?如果key衝突如何解決?setColor()方法在什麼時候用?什麼時候會進行旋轉和顏色轉換?

  • Spring的bean的建立時機?依賴注入的時機?

  • ArrayList和LinkList的刪除一個元素的時間複雜度;(ArrayList是O(N),LinkList是O(1));

  • CopyOnWriteArrayList是什麼;

  • 序列化和反序列化底層如何實現的(ObjectOutputStream 、ObjectInputStream、 readObject  writeObject);

  • 如何除錯多執行緒的程式;

  • 一個執行緒連著呼叫start兩次會出現什麼情況?(由於狀態只有就緒、阻塞、執行,狀態是無法由執行轉化為執行的,所以會報不合法的狀態!)

  • HashMap在什麼時候時間複雜度是O(1),什麼時候是O(n),什麼時候又是O(logn);

  • wait方法能不能被重寫?(wait是final型別的,不可以被重寫,不僅如此,notify和notifyall都是final型別的),wait能不能被中斷;

  • 一個Controller呼叫兩個Service,這兩Service又都分別呼叫兩個Dao,問其中用到了幾個資料庫連線池的連線?

二、網路基礎

  • HTTP、TCP、UDP的區別和聯絡;

  • TCP和UDP各自的優勢,知道哪些使用UDP協議的成功案例;

  • TCP和UDP各用了底層什麼協議;

  • 單個UDP報文最大容量;

  • 單個TCP報文最大容量;

  • TCP報頭格式、UDP報頭格式;

  • Server遭遇SYN Flood應當怎麼處理;

  • Web開發中如何防範XSS?

  • 拆包和粘包的問題,如何解決,如果我們的包沒有固定長度的話,我們的應用程式應該如何解決;

三、作業系統

  • 為什麼要記憶體對齊;

  • 為什麼會有大端小端,htol這一類函式的作用;

  • top顯示出來的系統資訊都是什麼含義;(重要!)

  • Linux地址空間,怎麼樣進行定址的;

  • Linux如何查詢目錄或者檔案的;

四、分散式其他

  • 分庫與分錶帶來的分散式困境與應對之策;

  • Solr如何實現全天24小時索引更新;

五、Redis

  • Redis插槽的分配(key的有效部分使用CRC16演算法計算出雜湊值,再將雜湊值對16384取餘,得到插槽值);

  • Redis主從是怎麼選取的(一種是主動切換,另一種是使用sentinel自動方式);

  • Redis複製的過程;

  • Redis佇列應用場景;

  • Redis主節點宕機了怎麼辦,還有沒有同步的資料怎麼辦;

六、系統設計開放性題目

  • 秒殺系統設計,超賣怎麼搞;

  • 你們的圖片時怎麼儲存的,對應在資料庫中時如何儲存圖片的資訊的?

  • 假如成都沒有一座消防站,現在問你要建立幾座消防站,每個消防站要配多少名消防官兵,多少輛消防車,請你拿出一個方案;

  • 基於陣列實現一個迴圈阻塞佇列;

  • 常見的ipv4地址的展現形式如“168.0.0.1”,請實現ip地址和int型別的相互轉換。(使用位移的方式)

  • 現網某個服務部署在多臺Liunx伺服器上,其中一臺突然出現CPU 100%的情況,而其他伺服器正常,請列舉可能導致這種情況發生的原因?如果您遇到這樣的情況,應如何定位?記憶體?CPU?釋出?debug?請求量?

七、大資料量問題(後邊會有專題單獨討論)

  • 給定a、b兩個檔案,各存放50億個url,每個url各佔64位元組,記憶體限制是4G,讓你找出a、b檔案共同的url?

  • 海量日誌資料,提取出某日訪問百度次數最多的那個IP;

  • 一個文字檔案,大約有一萬行,每行一個詞,要求統計出其中最頻繁出現的前10個詞,請給出思想,給出時間複雜度分析。

此話題後邊會有專門的文章探討,如果有等不及的小夥伴,可以移步參考:

1、https://blog.csdn.net/v_july_v/article/details/6279498

2、https://blog.csdn.net/v_july_v/article/details/7382693

八、邏輯思維題

  • 有兩根粗細均勻的香(燒香拜佛的香),每一根燒完都花一個小時,怎麼樣能夠得到15min?

  • 假定你有8個撞球,其中有1個球比其他的球稍重,如果只能利用天平來斷定哪一個球重,要找到較重的球,要稱幾次?(2次);

  • 實驗室裡有1000個一模一樣的瓶子,但是其中的一瓶有毒。可以用實驗室的小白鼠來測試哪一瓶是毒藥。如果小白鼠喝掉毒藥的話,會在一個星期的時候死去,其他瓶子裡的藥水沒有任何副作用。請問最少用多少隻小白鼠可以在一個星期以內查出哪瓶是毒藥;(答案是10只)

  • 假設有一個池塘,裡面有無窮多的水。現有2個空水壺,容積分別為5升和6升。問題是如何只用這2個水壺從池塘裡取得3升的水;