面試之前這樣準備 . 讓 BAT的 Offer 不再難拿(面試題含答案)

隨著各大公司春招的開始,很多小伙伴都行動起來了,我有幸能夠加入百度并和大家分享自己的經驗心得。由于我面試的都是比較大的公司,所以自然也是做了這方面的準備,因此這篇總結并不一定適合想去創(chuàng)業(yè)公司的同學。另外,由于經驗本來就是主觀性極強的東西,加之筆者水平有限,所以如果有不認可的地方,萬望諸君呵呵一笑,拋之腦后。

接下來,我就斗膽分享一下自己在準備和參加面試的過程中的收獲、對面試的思考,以及一些可能對大家有用的建議。最后附贈一份大禮包,希望能幫助每位讀者找到自己心儀的工作。

什么是面試

有些人可能會把面試看的太重,覺得面試過了就能進入大廠,技術和財富兼得……

我倒是覺得,面試沒有這么夸張,它其實是一次你和面試官互相了解的絕佳機會,借此機會你還可以對未來的工作有初步的了解和現(xiàn)在行業(yè)的情況。

面試本身并不能完全評價一個人的實力。面試通過的人,也許只是恰好在面試時遇到了自己熟悉的問題,面試不通過,也有可能是面試官自身的問題,并非每個面試官都具備客觀評價別人的能力。

換句話說,面試沒通過也許是面試官沒有發(fā)現(xiàn)你的才華,面試通過了也并不代表你就能勝任工作,因為進入企業(yè)之后可不是每天負責回答面試題!

所以從這一點來看,面試有點像相親。你滿意我,我滿意你,王八對綠豆——看上眼了,那就一拍即合,否則就分道揚鑣。我本人非常希望能夠多幾輪面試(實際并不總是能做到),這樣大家都有充足的時間互相了解,決定去留。

網上某些面經中,介紹了一些“裝逼”的方法,還有所謂的“面試技巧”,我是不太認可的。技巧需要有,這是為了讓你更好的展示自己,而非坑蒙拐騙,無理取鬧,無中生有。我更想展現(xiàn)一個真實的自己,如果面試官不認可,說明我們沒有緣分,或者說自己的能力還不夠。

面試要準備什么

不知道有多少讀者和我一樣有過這樣的困擾:“我知道某些東西很重要,所以去百度查了資料,但是查到的文章質量很差,正確率沒有保證”。這其實是正常的,優(yōu)秀的文章一般都放在優(yōu)秀的作者的個人博客上,這恰恰是搜索引擎的盲區(qū),所以一般只能搜到 CSDN、博客園這種地方的文章。自然就無法保證文章質量。

出于這種考慮,我在文章最后的復習資料中,提供了用于學習相關基礎知識的書籍,如果您恰好是 Java開發(fā)者,還可以閱讀我收集的一些高質量文章,正確性比較有保證。

面試

如果說騰訊的面試是揮金如土(畢竟每個面試官都配了一件單獨的房間),那華為就是戒奢寧儉。兩個大會議廳坐滿了面試官,其中一個是初面面試區(qū),另一邊是綜合面試區(qū)。初面區(qū)的面試官會來等待區(qū)一個一個叫我們過去面試。

面試桌采取一對一的形式,技術崗的面試通知短信雖然沒有通知說要帶簡歷,但是仍然帶了一份以免中途需要。(事實證明這是一個明智的選擇)

初面

初面面試官點到我的名字之后,我跟著面試官去他的那個位置。

面試流程和大多數互聯(lián)網公司流程差不多,首先讓自己介紹一個比較滿意的項目。(可能想通過這個項目了解我們的技能程度)在我面試準備時,其實我就糾結過這個問題。因為在我的項目中,有兩個項目是我比較滿意的,第一個主要做后臺,第二個主要做虛擬環(huán)境和數據交互。

“我有兩個項目是比較滿意的”,我先拋出這句話,希望面試官能夠給機會讓我將兩個項目都講一下,“我先講一下第一個我們當時做的換課平臺,當時本來是一個課程項目,但是我們在這個課程項目之上,結合當時校內急需換課這個需求,做出了這么一個換課平臺”,(首先提出項目目的),“然后這個項目大概實現(xiàn)了一個怎樣怎樣的功能”(拋出產品功能),“我在項目中主要負責后臺開發(fā)和數據庫交互功能”(說下在項目中的角色),“整個項目的架構大致如下。。。?!保椖咳绾螌崿F(xiàn)),我拿著紙筆在草稿上給面試官畫著后臺所有的系統(tǒng)架構和數據流動方式,同時將涉及到的重要點和技術點都說了下。

按照之前整理過的描述流程,我將整個換課平臺項目描述了一遍,中途偶爾面試官會問一下技術細節(jié),不過都不是很難,可能因為我沒有***H”三大框架,而是使用純JSP進行的底層開發(fā),所以面試官也不是太好提問。

不過有意思的是,在我介紹到項目中實現(xiàn)了實時聊天的時候,面試官提了兩個小問題,是我之前項目中沒碰到,而實際生產產品中可能遇到的問題:第一,我們的實時聊天是直接P2P,這樣需要雙方在同一子網下,那如果現(xiàn)在雙方不在同一子網下,外網某個移動端客戶A可以訪問后臺服務器B,這時候某個web端C同時也可以訪問服務器,這個時候A和C是互相不同的,現(xiàn)在如果我們仍然想讓他們通信怎么辦;第二,考慮大量用戶同時訪問后臺服務器的時候,該如何處理。

第一個我首先考慮到用服務器作為中介,但是當時老是想著可能打兩個聊天信息會對服務器造成壓力,所以一直很猶豫要不要用后臺服務器作為中轉,以及,作為中轉該如何操作。不過面試官稍微提醒我可以用服務器作為中轉,這時候我突然意識到只要服務器收到之后,立刻將消息轉發(fā)出去就可以了,不用走數據庫。這時候我也才一直到為什么我以前分析微信的聊天服務時,會將所有的文本消息和圖片消息發(fā)送到微信的后臺服務器,而且簡單的直接P2P對話,主要還是為了克服網絡問題

第二個不難,考慮云計算中的負載均衡,我大致說了下思路,選取一臺主機作為負載均衡調度機,其他的作為工作機即可。

第一個項目大概講了十分鐘,不知道是因為剛開始面試還是我項目確實對面試官的胃口。

第一個項目完了以后,面試官翻了下我的簡歷,“你要不說下你另一個項目?”我有blabla說了一通。

“有什么難點?”“項目中遇到過哪些問題?”

說完之后,初面基本也就結束了,整個過程十分和諧(可能我遇到的面試官比較nice)。最后讓我提一個問題,我大概問了下投遞的這個崗位今后具體會是什么工作,面試官大致給我講了下。(我投遞的云計算開發(fā)崗,PaaS方向)

綜合面試

初面完之后,面試官指引我去綜合面試區(qū)等待綜合面試。

綜合面試整體感覺和初面差不多,不過在綜合面試階段面試官首先問了我的籍貫,工作意向和理想的工作地點。

這里我表示并不挑,因為作為一個外省人,自從一個人出省讀書以后,就已經對在哪生活在哪上班沒有太多顧慮。

接著面試官問了我一些成績怎樣,家庭情況之類問題之后,開始問我的項目經驗。(雖然我不太明白,為什么綜合面試還會問初面中問過的關于項目經驗的問題)這里我就不在重復了,何處是一樣,我大致和面試官交流了一下我們的項目內容。

這一塊內容完成之后,感覺綜合面試整個流程已經基本結束了,面試官開始跟我介紹他們項目組的工作地點(深圳),工作內容,以及平常的一些工作,同時還給我介紹了一些將來工作中需要了解的基本知識——比如docker容器,k8s,部分國內國外的公有云的運行原理,讓我回去之后提前自學一下。(到這里我開始感覺有戲了)

其實,綜面和初面差別其實沒有太大,不過感覺這還是和面試官有關系,因為在我同行的隊友中,他們有的就被問到了一些比較底層的知識點比如Java有什么特點之類,也有被問及面向對象的優(yōu)點等等(這些我都沒被問到)。

綜述

總的來說,其實華為的面試并沒有我想象中的困難(因為聽說華為今年縮招,我還以為面試會故意很難)。簡歷準備很重要, 尤其是項目經歷,個人blog,github這類容易加分的內容,最好能夠寫出來。兩場面試相比較同伴更加順利,有一定程度上就是簡歷給我加了分。

因為我面試的是云計算開發(fā)崗,所以我在項目中重新添加了很多Java相關的項目經歷,雖然不是很重要,但是至少能讓面試官從中了解我在Java方面有不少經驗。

面試時候不用太緊張,在之前騰訊面試中我就明顯很緊張,腦子一片發(fā)蒙,而這次華為面試就感覺稍微舒服很多,不知道是因為已經經歷過幾次面試,還是因為面試官帶動的比較好。

最后還挺重要的要能夠及時清楚地描述自己想說的內容。畢竟將來工作崗位中,少不了和同事的交流。另外清晰的描訴對面試官了解你,了解你的項目會很有幫助。因此,不論是在給面試官講述自己項目的時候,還是在回答面試官問題,亦或是想表達自己觀點的時候,都需要清晰的表達。如果一時語塞,可以嘗試停頓一下,整理下思路然后重新描述,只要面試官能夠理解你的話,一般有些停頓是不會有什么大礙。

最后的最后,希望能夠收到華為的offer吧(:зゝ∠)目前正在“排隊待錄取”中。

給大家看一下我面試的時候資料的Java題目

Java多線程
說一說自己對于 synchronized 關鍵字的了解
說說自己是怎么使用 synchronized 關鍵字,在項目中用到了嗎
講一下 synchronized 關鍵字的底層原理
說說 JDK1.6 之后的synchronized 關鍵字底層做了哪些優(yōu)化,可以詳細介紹一下這些優(yōu)化嗎
談談 synchronized和ReenTrantLock 的區(qū)別
說說 synchronized 關鍵字和 volatile 關鍵字的區(qū)別
為什么要用線程池?
實現(xiàn)Runnable接口和Callable接口的區(qū)別
執(zhí)行execute()方法和submit()方法的區(qū)別是什么呢?
如何創(chuàng)建線程池
介紹一下Atomic 原子類
JUC 包中的原子類是哪4類?
講講 AtomicInteger 的使用
能不能給我簡單介紹一下 AtomicInteger 類的原理


多線程面試專題與答案

JVM的設計目標是提供一個基于抽象規(guī)格描述的計算機模型,為解釋程序開發(fā)人員提供很好的靈活性,同時也確保Java代碼可在符合該規(guī)范的任何系統(tǒng)上運行。JVM對其實現(xiàn)的某些方面給出了具體的定義,特別是對Java可執(zhí)行代碼,即字節(jié)碼(Bytecode)的格式給出了明確的規(guī)格。這一規(guī)格包括操作碼和操作數的語法和數值、標識符的數值表示方式、以及Java類文件中的Java對象、常量緩沖池在JVM的存儲映象。這些定義為JVM解釋器開發(fā)人員提供了所需的信息和開發(fā)環(huán)境。Java的設計者希望給開發(fā)人員以隨心所欲使用Java的自由。

JVM

內存模型以及分區(qū),需要詳細到每個區(qū)放什么。
GC 收集器有哪些?CMS 收集器與 G1 收集器的特點。
Minor GC 與 Full GC 分別在什么時候發(fā)生?
堆里面的分區(qū):Eden,survival (from+ to),老年代,各自的特點。
簡述 java 垃圾回收機制?
java 中垃圾收集的方法有哪些?
類加載器雙親委派模型機制?什么是類加載器,類加載器有哪些?
簡述 java 內存分配與回收策率以及 Minor GC 和Major GC


Redis

為什么要用 redis /為什么要用緩存?
為什么要用 redis 而不用 map/guava 做緩存?
redis 和 memcached 的區(qū)別?
上述 Redis 分布式鎖的缺點?
redis 常見數據結構以及使用場景分析
redis 內存淘汰機制(MySQL里有2000w數據,Redis中只存20w的數據,如何保證Redis中的數據都是熱點數據?)
redis 持久化機制(怎么保證 redis 掛掉之后再重啟數據可以進行恢復)?
緩存雪崩和緩存穿透問題解決方案?
如何解決 Redis 的并發(fā)競爭 Key 問題?
如何保證緩存與數據庫雙寫時的數據一致性?


Redis面試專題與答案

Spring一般是不可避免的,如果你的簡歷上注明了你會Spring Boot或者Spring Cloud的話,那么面試官也可能會同時問你這兩個技術,比如他可能會問你springboot和spring的區(qū)別。 所以,一定要謹慎對待寫在簡歷上的東西,一定要對簡歷上的東西非常熟悉。

另外,AOP實現(xiàn)原理、動態(tài)代理和靜態(tài)代理、Spring IOC的初始化過程、IOC原理、自己怎么實現(xiàn)一個IOC容器? 這些東西都是經常會被問到的。

Spring

Spring Bean 的作用域?
如何用基于 Java 配置的方式配置 Spring?
請說下 Spring Bean 的生命周期?
Spring Bean 的作用域之間有什么區(qū)別?
請舉例說明如何在 Spring 中注入一個 Java Collection?
Spring 框架中有哪些不同類型的事件?
Spring 框架中都用到了哪些設計模式?
開發(fā)中主要使用 Spring 的什么技術 ?


Spring面試專題與答案

“RabbitMQ?”“Kafka?”“RocketMQ?”...在日常學習與開發(fā)過程中,我們常常聽到消息隊列這個關鍵詞。這也是面試經常被問到的

BATJ真實面試題

美團點評篇章

美團點評篇章

由于篇幅限制小編,pdf 文檔的詳解資料太全面,細節(jié)內容實在太多啦,所以只把部分知識點截圖出來粗略的介紹,每個小節(jié)點里面都有更細化的內容!如需參考原件 pdf 學習+刷題可以幫忙三連支持一下

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容