「我的面試寶典」 這些不會的話,就別去面試了


「我的面試寶典」 這些不會的話,就別去面試了


01

面試前的準備

我最近和不少同學聊了一下,主要就是傾聽對方的困難和疑惑,然後我自己就我的經歷體會給出我的一些建議。

總的來說,不過是一點,基礎知識不會。

有的同學說,自己實習期到了,無奈裸面。回答時想不起來,最後倆周沒消息。這裡想說一下,倆周沒消息,面試基本涼了。

其它崗我不清楚,Java崗這塊必問的東西,百分百包括:Java虛擬機、多線程、集合框架,這三點每次必問,知識點就那麼些,多嗎?其實不多。

除了這三點,大概率會問到數據庫、設計模式、算法。這些東西如果純靠記憶的話,估計要背好久,而且還要保證面試時不被發現面試官發覺。看過我之前的文章我一個二本大學是如何拿到百度、網易大廠offer的!可能會對我的學習方法有所瞭解。那就是抄書,說句真心話這種方法好處顯而易見,那就是紮實,缺點也顯而易見,就是費時費力。如果你馬上就要面試了,或者時間緊張,我建議你去閱讀一些教程資料

小編為大家準備了一些編程資料及面試資料,需要的同學們轉發此文,關注並私信小編“學習”,即可馬上領取,僅限300人哦

02

關鍵得靠腦子

但是,並不是每塊知識我都得靠背,有些知識你必須要理解,甚至深刻理解。為什麼?因為面試官對這部分的問題千奇百怪,你不理解,沒掌握,只能竟無語凝噎。這裡例子很多,我隨機舉幾個。

現在有T1、T2、T3三個線程,你怎樣保證T2在T1執行完後執行,T3在T2執行完後執行?

講真,對於問題的回答結果有很多。如果你真的熟悉多線程編程,對你來說就是easy。比如用join方法,Thread.sleep()方法等等。

還有,如果讓你實現一個阻塞隊列,你會怎麼去做?

首先我們需要了解阻塞什麼,阻塞本質就是線程被掛起(調用wait方法)。所謂的喚醒線程是什麼?就是再次調用該線程的notify方法。剩下的就是阻塞的時機,阻塞時機就兩個,一個是get已空,一個是put已滿。很容易理解的概念。

關於這部分多線程知識的學習,我強烈建議一步一個腳印,一行代碼一行代碼的敲,當你對這塊的知識理解達到任你出題千萬,我一眼看破本質的地步,那你面試基本和玩似的。

03

關於集合框架

關於集合框架這塊,說實話,看書看博客都ok。算是比較輕鬆的一塊知識區域。內容少,質量高。區分JDK8之前之後對Map的影響,區分線程安全不安全的實例,都不是問題。

既然談到這塊,我就多說幾句比較讓人迷糊幾個點!大家記好筆記,當然啦,最好就是收藏+關注!打賞我也是支持的。

一定明確,JDK8之前,HashMap是數組+鏈表,JDK8之後,HashMap是數組+鏈表+紅黑樹,具體咋做的,自行百度,我就不囉嗦了。

還有,ConcurrentHashMap的設計思路和HashMap是同步的,也就是說,ConcurrentHashMap除了鎖機制這塊的處理與HashMap不同,數組+鏈表(+紅黑樹)是和HashMap一樣一樣的。

還有一點就是map的put方法過程,這也是必須要會的。提醒你兩句,使用的是hashCode()和equals()方法。由此,面試官可能會引出下面兩個問題:

1.為什麼重寫equals()方法必須重寫hashCode()方法?

2.為什麼先調用hashCode()再調用equals()方法?優勢?

還是那句話,自行百度去!

04

數據庫常考難點

不要對數據庫這塊的知識掌握還停留在我會left join的水平,好不好同學們。SQL說實話,最難也就是連接查詢了。一般情況下會這樣,但如果面試官提了如何優化數據庫,你回答了索引,那數據庫索引底層的原理你就不得不去了解了。也許你會回答哈希表或者B+樹,那問題又來了,來同學,說一下B+樹,你整一句:B+樹的內節點只存放key,只有葉子節點存放數據。雖然也不錯,但是如果能回答的更具體一些,我覺得你會讓面試官對你雙眼一亮。至少這塊知識點上,你已經領先於其他競爭者。

其它數據庫方面的考點,那就是事務了。

ACID四個特性懂吧?讓你解釋也沒問題吧?

髒讀、不可重複讀、幻讀 也是必須會的。為啥?沒有這三個問題,就沒有解決這三個問題的隔離機制。

未提交讀、已提交讀、可重複讀、串行。(不解釋,自行百度)關於事務的傳播行為(描述由某一個事務傳播行為修飾的方法被嵌套進另一個方法的時事務如何傳播),這個瞭解、知道就ok,因為我沒被問到過。

觸發器、視圖、遊標 這三個概念很冷門,但防不住面試官問。

我簡單說一下。

觸發器:由事件觸發的存儲過程。

視圖:視圖是從一個或幾個基本表(或視圖)中導出的虛擬的表。

遊標:實際上是一種能從包含多條數據記錄的結果集中每次提取一條記錄的機制。

我覺得最可能讓人迷糊的就是視圖和遊標的概念了。

05

23種設計模式

標題是23種設計模式,難道23種設計模式我都要會嗎?是的,都要會。不然怎麼做麵霸。

拿我自己的一次面試經歷來說,面試官說:我來問問你設計模式方面的東西。我說:您儘管問。(答不上來算我輸)

知道為什麼我對設計模式這方面的知識這麼瞭解嗎?

因為我把這些設計模式都學了一遍,並且,我找到了最本質的那個思想。設計模式說白了就是一種思想,你get到了,那你就可以從容不迫的向面試官解釋說明(XX設計模式是什麼?比如說怎麼怎麼的...)

說實話,思想才是最本質的東西。

我把這些我對設計模式的感悟用一句話的形式都寫在了有道雲筆記上。面試前看一看,隨便面試官問,答不上來算我輸。

這些筆記我都會在公眾號的後面發出來,並會詳細介紹我對每一種設計模式的理解。期待大家多多關注。

06

算法考察的深度

其它崗我不清楚,Java開發/研發崗對算法的要求並不高。我相信有過面試經歷的人都會有這樣的體會。

個人覺得,刷完劍指offer上的題是基礎。

然後刷刷LeetCode上的題也是極好。

更多的面試資料獲取方式:轉發此文,關注並私信小編“學習”,即可馬上領取

相關推薦

推薦中...