面試前這樣準備 — 讓 BAT 的 Offer 不再難拿

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

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

什麼是面試

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

我倒是覺得,面試沒有這麼誇張,它其實是一次你和麵試官互相瞭解的絕佳機會,藉此機會你還可以對未來的工作有初步的瞭解和現在行業的情況。

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

換句話說,面試沒通過也許是面試官沒有發現你的才華,面試通過了也並不代表你就能勝任工作,因為進入企業之後可不是每天負責回答面試題!

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

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

面試要準備什麼

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

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

面試

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

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

初面

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

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

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

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

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

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

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

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

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

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

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

綜合面試

初面完之後,面試官指引我去綜合面試區等待綜合面試。

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

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

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

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

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

綜述

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

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

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

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

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

為大家準備了必備的一些面試資料

為大家準備了必備的一些面試資料

Java多線程

  • 說一說自己對於 synchronized 關鍵字的瞭解
  • 說說自己是怎麼使用 synchronized 關鍵字,在項目中用到了嗎
  • 講一下 synchronized 關鍵字的底層原理
  • 說說 JDK1.6 之後的synchronized 關鍵字底層做了哪些優化,可以詳細介紹一下這些優化嗎
  • 談談 synchronized和ReenTrantLock 的區別
  • 說說 synchronized 關鍵字和 volatile 關鍵字的區別
  • 為什麼要用線程池?
  • 實現Runnable接口和Callable接口的區別
  • 執行execute()方法和submit()方法的區別是什麼呢?
  • 如何創建線程池
  • 介紹一下Atomic 原子類
  • JUC 包中的原子類是哪4類?
  • 講講 AtomicInteger 的使用
  • 能不能給我簡單介紹一下 AtomicInteger 類的原理
面試前這樣準備 — 讓 BAT 的 Offer 不再難拿

多線程面試專題與答案

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

JVM

  • 內存模型以及分區,需要詳細到每個區放什麼。
  • GC 收集器有哪些?CMS 收集器與 G1 收集器的特點。
  • Minor GC 與 Full GC 分別在什麼時候發生?
  • 堆裡面的分區:Eden,survival (from+ to),老年代,各自的特點。
  • 簡述 java 垃圾回收機制?
  • java 中垃圾收集的方法有哪些?
  • 類加載器雙親委派模型機制?什麼是類加載器,類加載器有哪些?
  • 簡述 java 內存分配與回收策率以及 Minor GC 和Major GC
面試前這樣準備 — 讓 BAT 的 Offer 不再難拿


Redis

  • 為什麼要用 redis /為什麼要用緩存?
  • 為什麼要用 redis 而不用 map/guava 做緩存?
  • redis 和 memcached 的區別?
  • 上述 Redis 分佈式鎖的缺點?
  • redis 常見數據結構以及使用場景分析
  • redis 內存淘汰機制(MySQL裡有2000w數據,Redis中只存20w的數據,如何保證Redis中的數據都是熱點數據?)
  • redis 持久化機制(怎麼保證 redis 掛掉之後再重啟數據可以進行恢復)?
  • 緩存雪崩和緩存穿透問題解決方案?
  • 如何解決 Redis 的併發競爭 Key 問題?
  • 如何保證緩存與數據庫雙寫時的數據一致性?
面試前這樣準備 — 讓 BAT 的 Offer 不再難拿

Redis面試專題與答案

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

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

Spring

  • Spring Bean 的作用域?
  • 如何用基於 Java 配置的方式配置 Spring?
  • 請說下 Spring Bean 的生命週期?
  • Spring Bean 的作用域之間有什麼區別?
  • 請舉例說明如何在 Spring 中注入一個 Java Collection?
  • Spring 框架中有哪些不同類型的事件?
  • Spring 框架中都用到了哪些設計模式?
  • 開發中主要使用 Spring 的什麼技術 ?
面試前這樣準備 — 讓 BAT 的 Offer 不再難拿

Spring面試專題與答案

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

由於篇幅限制小編,以上面試專題答案全部整理在一個pdf文檔裡了,文檔裡的詳解資料太全面,所以只把部分知識點截圖出來粗略的介紹,每個小節點裡面都有更細化的內容!有需要的程序猿(媛)可以幫忙轉發+關注私信(面試)獲取哦

BATJ真實面試題

面試前這樣準備 — 讓 BAT 的 Offer 不再難拿

美團點評篇章

面試前這樣準備 — 讓 BAT 的 Offer 不再難拿

美團點評篇章

面試前這樣準備 — 讓 BAT 的 Offer 不再難拿

如何獲取?

轉發這篇文章,關注我,私信回覆“java面試”即可獲取高清大綱,以上 spring,MyBatis,Netty源碼分析,高併發、高性能、分佈式、微服務架構的原理,JVM性能優化、分佈式架構

如何私信?

關注我後,在手機,點進頭像進我的主頁,主頁上方右上角有個私信,點擊私信,如何回覆關鍵字“java面試”即可


分享到:


相關文章: