各大互連網Java面試題匯總,最後我成功拿到百度的offer

來源:互聯網
上載者:User

標籤:Java   程式員   後端   程式設計語言   面試   

從事Java開發也有5年經驗了,7月初來到帝都,開啟面試經曆,前後20天左右,主面互連網公司,一二線大公司或者是融資中的創業公司都面試過,拿了一些offer,其中包括奇虎360,最後綜合決定還是去百度了。

首先不同面試官面試風格一定不同,我這裡就是總結這些天面試Java開發過程中的大多數問題,綜合分類有Java基礎,架構,多線程,網路通訊,資料庫以及設計模式,演算法,等幾個模組,由於問題太多,下面先列出問題,之後有時間在寫文章解答,或者網上有很多答案,可以自行搜尋。

關於專業技能

寫完項目接著寫寫一名3年工作經驗的Java程式員應該具備的技能,這可能是Java程式員們比較關心的內容。我這裡要說明一下,以下列舉的內容不是都要會的東西----但是如果你掌握得越多,最終能得到的評價、拿到的薪水勢必也越高。

1、基本文法

一、Java基礎

1.String類為什麼是final的。

2.HashMap的源碼,實現原理,底層結構。

3.反射中,Class.forName和classloader的區別

4.session和cookie的區別和聯絡,session的生命週期,多個服務部署時session管理。

5.Java中的隊列都有哪些,有什麼區別。

6.Java的記憶體模型以及GC演算法

7.Java7、Java8的新特性(baidu問的,好BT)

8.Java數組和鏈表兩種結構的操作效率,在哪些情況下(從開頭開始,從結尾開始,從中間開始),哪些操作(插入,尋找,刪除)的效率高

9.Java記憶體泄露的問題調查定位:jmap,jstack的使用等等

二、多線程

這也是必問的一塊了。因為三年工作經驗,所以基本上不會再問你怎麼實現多線程了,會問得深入一些比如說Thread和Runnable的區別和聯絡、多次start一個線程會怎麼樣、線程有哪些狀態。當然這隻是最基本的,出乎意料地,幾次面試幾乎都被同時問到了一個問題,問法不盡相同,總結起來是這麼一個意思:

假如有Thread1、Thread2、Thread3、Thread4四條線程分別統計C、D、E、F四個盤的大小,所有線程都統計完畢交給Thread5線程去做匯總,應當如何??

聰明的網友們對這個問題是否有答案呢?不難,java.util.concurrent下就有現成的類可以使用。

另外,線程池也是比較常問的一塊,常用的線程池有幾種?這幾種線程池之間有什麼區別和聯絡?線程池的實現原理是怎麼樣的?實際一些的,會給你一些具體的情境,讓你回答這種情境該使用什麼樣的線程池比較合適。

最後,雖然這次面試問得不多,但是多線程同步、鎖這塊也是重點。

synchronized和ReentrantLock的區別、synchronized鎖普通方法和鎖靜態方法、死結的原理及排查方法等等,關於多線程,我在之前有些過文章總結過多線程的40個問題,可以參看40個Java多線程問題總結。

三、IO

再次補充IO的內容,之前忘了寫了。

IO分為File IO和Socket IO,File IO基本上是不會問的,問也問不出什麼來,平時會用就好了,另外記得File IO都是阻塞IO。

Socket IO是比較重要的一塊,要搞懂的是阻塞/非阻塞的區別、同步/非同步區別,藉此理解阻塞IO、非阻塞IO、多工IO、非同步IO這四種IO模型,Socket IO如何和這四種模型相關聯。這是基本一些的,深入一些的話,就會問NIO的原理、NIO屬於哪種IO模型、NIO的三大組成等等,這有些難,當時我也是研究了很久才搞懂NIO。提一句,NIO並不是嚴格意義上的非阻塞IO而應該屬於多工IO,面試回答的時候要注意這個細節,講到NIO會阻塞在Selector的select方法上會增加面試官對你的好感。

如果用過Netty,可能會問一些Netty的東西,畢竟這個架構基本屬於當前最好的NIO架構了(Mina其實也不錯,不過總體來說還是比不上Netty的),大多數互連網公司也都在用Netty。

四、JDK源碼

要想拿高工資,JDK源碼不可不讀。上面的內容可能還和具體情境聯絡起來,JDK源碼就是實打實地看你平時是不是愛鑽研了。過程中被問了不少JDK源碼的問題,其中最刁鑽的一個問了,String的hashCode()方法是怎麼實現的,幸好平時String原始碼看得多,答了個大概。JDK源碼其實沒什麼好總結的,純粹看個人,總結一下比較重要的源碼:

(1)List、Map、Set實作類別的原始碼

(2)ReentrantLock、AQS的原始碼

(3)AtomicInteger的實現原理,主要能說清楚CAS機制並且AtomicInteger是如何利用CAS機制實現的

(4)線程池的實現原理

(5)Object類中的方法以及每個方法的作用

這些其實要求蠻高的,去年一整年基本把JDK中重要類的原始碼研究了個遍,真的花費時間、花費精力,當然回頭看,是值得的----不僅僅是為了應付面試。

五、架構

1.struts1和struts2的區別

2.struts2和springMVC的區別

3.spring架構中需要引用哪些jar包,以及這些jar包的用途

4.srpingMVC的原理

5.springMVC註解的意思

6.spring中beanFactory和ApplicationContext的聯絡和區別

7.spring注入的幾種方式

8.spring如何?事物管理的

9.springIOC和AOP的原理

10.hibernate中的1級和2級緩衝的使用方式以及區別原理

11.spring中迴圈注入的方式

六、資料庫

資料庫十有八九也都會問到。一些基本的像union和union all的區別、left join、幾種索引及其區別就不談了,比較重要的就是資料庫效能的最佳化,如果對於資料庫的效能最佳化一竅不通,那麼有時間,還是建議你在面試前花一兩天專門把SQL基礎和SQL最佳化的內容準備一下。

不過資料庫倒是不用擔心,一家公司往往有很多部門,如果你對資料庫不熟悉而基本技術又非常好,九成都是會要你的,估計會先把你放到對資料庫使用不是要求非常高的部門鍛煉一下。

七、資料結構和演算法分析

資料結構和演算法分析,對於一名程式員來說,會比不會好而且在工作中絕對能派上用場。數組、鏈表是基礎,棧和隊列深入一些但也不難,樹挺重要的,比較重要的樹AVL樹、紅/黑樹狀結構,可以不瞭解它們的具體實現,但是要知道什麼是二叉尋找樹、什麼是平衡樹,AVL樹和紅/黑樹狀結構的區別。記得某次面試,某個面試官和我聊到了資料庫的索引,他問我:

你知道索引使用的是哪種資料結構實現嗎?

答到用的Hash表吧,答錯。他又問,你知道為什麼要使用樹嗎?答到因為Hash表可能會出現比較多的衝突,在千萬甚至是上億層級的資料面前,會大大增加尋找的時間複雜度。而樹比較穩定,基本保證最多二三十次就能找到想要的資料,對方說不完全對,最後我們還是交流了一下這個問題,我也明白了為什麼要使用樹,這裡不說,網友朋友們覺得索引為什麼要使用樹來實現呢?

八、Java虛擬機器

出乎意料,Java虛擬機器應該是很重要的一塊內容,結果在這幾家公司中被問到的機率幾乎為0。要知道,去年可是花了大量的時間去研究Java虛擬機器的,光周志明老師的《深入理解Java虛擬機器:JVM進階特性與最佳實務》,就讀了不下五遍。

言歸正傳,雖然Java虛擬機器沒問到,但我覺得還是有必要研究的,就簡單地列一個提綱吧,談談Java虛擬機器中比較重要的內容:

(1)Java虛擬機器的記憶體布局

(2)GC演算法及幾種垃圾收集器

(3)類載入機制,也就是雙親委派模型

(4)Java記憶體模型

(5)happens-before規則

(6)volatile關鍵字使用規則

也許面試無用,但在走向大牛的路上,不可不會,這個是面試了幾家公司最後經過整合寫出了這些面試題,面試就決定了你的薪資,一定要好好對待,這些問題可能不會問到,但是程式員技多不壓身,最後收到了百度的offer,薪資還不錯,把這些面試題分享出來希望能協助那些打算跳槽的人,另外找朋友錄製了一些視頻,裡面有針對Java面試的,也有一些是目前互連網行業的一些技術,包括Java高並發、分布式、微服務、JVM、IO,等技術,進群免費分享給大家!Java後端技術交流群:720893309

各大互連網Java面試題匯總,最後我成功拿到百度的offer

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.