來自一個六年 Java開發者百度、阿里、騰訊的面試心經
前言
我覺得有一個能夠找一份大廠的 offer的想法,這是很正常的,這並不是我們的飯後談資而是每個技術人的追求。像阿里、騰訊、美團、位元組跳動、京東等等的技術氛圍與技術規範度還是要明顯優於一些創業型公司 / 小公司,如果說能夠在這樣的公司鍛鍊幾年,相信對自己能力的提升還是非常大的。不論是校招還是社招都避免不了各種面試、筆試,如何去準備這些東西就顯得格外重要。不論是筆試還是面試都是有章可循的。
因為大廠面試一般都有專業團隊負責,某個知識點你到底是掌握了還是單純背下來,面試官一問就可以看出來(PS:真正到面試特別是你覺得準備面試的時間不夠的時候,你可以多挑一些面試常問的問題來看,注意理解,一定不要死記硬背)。一定不要過分寄希望於各種面經,試著去提高自己的綜合能力。
“ 80% 的 offer 掌握在 20% 的人手 ” 中這句話也不是不無道理的。決定你面試能否成功的因素中實力固然佔有很大一部分比例,但是如果你的心態或者說運氣不好的話,依然無法拿到滿意的 offer。運氣暫且不談,就拿心態來說,千萬不要因為面試失敗而氣餒或者說懷疑自己的能力,面試失敗之後多總結一下失敗的原因,後面你就會發現自己會越來越強大。
從大廠實際招聘要求來看到底青睞什麼樣的人?
首先要明確的一點是:985/211 的學歷的確會為你加分很多。
另外,再強調的一點是不要天天把自己的學校是雙非學校這個介面當做你無法進入大廠的原因。只要你的能力足夠,大廠的大門就會為你開啟。也有著很多雙非學校甚至是三本的同學就拿到像阿里、騰訊這樣的大公司的 offer。
從阿里、騰訊等大廠招聘官網對於 Java 後端方向/後端方向的要求,我們大概可以總結看出大廠對招聘者的能力要求。
下面以阿里巴巴為例子,看看大廠的實際要求
在面試 Java 工程師的時候,下面幾點也提升你的個人競爭力:
- 熟悉開源框架的底層,閱讀原始碼;
- 大型資料庫系統經驗;
- 熟悉分散式,快取,訊息中介軟體;
- 良好的表達和溝通能力, 善於學習, 關注前沿。
“ 一定要有一門自己的特長,不管是技術還好還是其他能力 ” 。我覺得這句話真的非常有道理,大家可以仔細思考一下。在這裡再強調一點:公司不需要你什麼都會,但是在某一方面你一定要有過於常人的優點。換言之就是我們不需要去掌握每一門技術(你也沒精力去掌握這麼多技術),而是需要去深入研究某一門技術,對於其他技術我們可以簡單瞭解一下。
我覺得比起你對每一門技術都是淺嘗輒止,深入吃透某一門技術對你的個人競爭力提升才更有幫助。
如何獲取大廠面試機會?
在講如何獲取大廠面試機會之前,先來對比一下兩個非常常見的概念——春招和秋招。
招聘人數:秋招多於春招 ;
招聘時間: 秋招一般 7 月左右開始,大概一直持續到 10 月底。但是大廠(如 BAT)都會早開始早結束,所以一定要把握好時間。春招最佳時間為 3 月,次佳時間為 4 月,進入 5 月基本就不會再有春招了(金三銀四)。
應聘難度:秋招略大於春招;
招聘公司:秋招數量多,而春招數量較少,一般為秋招的補充。
綜上,一般來說,秋招的含金量明顯是高於春招的。
下面我就說一下我自己知道的一些方法,不過應該也涵蓋了大部分獲取面試機會的方法。
關注大廠官網,隨時投遞簡歷(走流程的網申);
找到師兄師姐或者 認識的前公司的技術牛人 ,幫忙內推(能夠讓你避開網申簡歷篩選,筆試篩選,還是挺不錯的,不過也還是需要你的簡歷夠棒);
求職類網站投遞簡歷(不是太推薦)。
除了這些方法,我也遇到過這樣的經歷:有些大公司的一些部門可能暫時沒招夠人,然後如果你的親戚或者朋友剛好在這個公司,而你正好又在尋求 offer,那麼面試機會基本上是有了,而且這種面試的難度好像一般還普遍比其他正規面試低很多。
想要取得一份自己滿意的 offer,前提是自己要有過硬的實力作為資本,下面就如何提高個人硬實力給大家提幾點建議!
如何提高個人硬實力及大廠 Java 後端面試主要問些什麼??
我在這裡所說的個人硬實力更多的指的是個人的專業能力,比如構建高質量網站的能力或者是對專業知識的掌握程度。
我覺得不論是對於新手還是老手,想要提高個人硬實力最重要的就是不斷深入學習並且將理論實踐,最好可以將理論在具體專案中實踐一下。
想要提高個人硬實力,那麼學習一門新技術的方法一定是至關重要了。下面分享一下《 Java 工程師修煉之道》一書對於學習一門新技術的一些要點(在這以圖片的方式整理了出來,更加方便閱讀):
一定要有自己的技術優勢,可能你懂得不是最多的,但是別人不會的你卻會,那麼你就是厲害的!然而如何準備大廠面試?我覺得最關鍵的一點之一就是搞清楚大廠面試主要在問些什麼。下面我將分解每一個知識點,給大家簡單說一下大廠面試主要會問些什麼?
首先你要明確的是面試官所問的內容一定和你簡歷所寫的東西是緊密聯絡的,一般你沒有記錄簡歷上的技能,面試管很少會去提問。
大廠面試大體上包括下面幾方面知識型別:
Java 基礎、多執行緒、IO 與 NIO、虛擬機器、設計模式
面試官在多執行緒這一部分很可能會問你有沒有在專案中實際使用多執行緒的經歷。所以,如果你在你的專案中有實際使用 Java 多執行緒的經歷 的話,會為你加分不少哦!
設計模式比較常見的就是讓你手寫一個單例模式(注意單例模式的幾種不同的實現方法)或者讓你說一下某個常見的設計模式在你的專案中是如何使用的,另外面試官還有可能問你 “ 抽象工廠 ” 和 “ 工廠方法模式的區別 ” 、“ 工廠模式 ” 的思想這樣的問題 ” 。
建議把 代理模式 、 觀察者模式 、 (抽象)工廠模式 好好看一下,這三個設計模式很有用。
資料結構與演算法(要有手寫演算法的能力)
資料結構比較常問的就是:二叉樹、紅黑樹(很可能讓你手繪一個紅黑樹出來哦!)、二叉查詢樹(BST)、平衡二叉樹(Self-balancing binary search tree)、B - 樹,B + 樹與 B * 樹的優缺點比較、 LSM 樹這些知識點。資料結構很重要,而且學起來也相對要難一些。建議學習資料結構一定要循序漸進的來,一步一個腳印的走好。一定要搞懂原理,最好自己能用程式碼實現一遍。
計算機網路(TCP 三次握手和四次揮手)
資料通訊(RESTful、RPC、訊息佇列)
如果你的簡歷上寫了你會某個RPC框架(比如:阿里的開源的dubbo)或者訊息佇列(比如:RabbitMQ、Kafka)的使用的話,面試官一般會以你寫在簡歷上的技術提問,回答的時候最好能結合在專案中的實際使用。
效能優化及作業系統(常見優化方式,Linux 的基本命令以及使用)
主流框架(Spring 底層原理與原始碼問的很多)
Spring一般是不可避免的,如果你的簡歷上註明了你會 Spring Boot 或者 Spring Cloud 的話,那麼面試官也可能會同時問你這兩個技術,比如他可能會問你 springboot 和 spring 的區別。 所以,一定要謹慎對待寫在簡歷上的東西,一定要對簡歷上的東西非常熟悉。
另外,AOP 實現原理、動態代理和靜態代理、Spring IOC 的初始化過程、IOC 原理、自己怎麼實現一個 IOC 容器?這些東西都是經常會被問到的。
資料儲存(最常見的是 MySQL、Redis)
分散式(分散式鎖,事務等)
除了這些東西還有什麼其他問題:
實際場景題
實際場景題就是對你的知識運用能力以及思維能力的考察。建議在平時養成多思考問題的習慣,這樣面試的時候碰到這樣的問題就不至於慌了。另外,如果自己實在不會就給面試官委婉的說一下,面試官可能會給你提醒一下。切忌不懂裝懂,亂答一氣。
面試官可能會問你類似這樣的問題:
- 假設你要做一個銀行 app,有可能碰到多個人同時向一個賬戶打錢的情況,有可能碰到什麼問題,如何解決(鎖)?
- 你是怎麼保證你的程式碼質量和正確性的?
- 下單過程中是下訂單減庫存還是付款減庫存,分析一下兩者的優劣。
- 同時給 10 萬個人發工資,怎麼樣設計併發方案,能確保在 1 分鐘內全部發完。
- 如果讓你設計 xxx 系統的話,你會如何設計。
生活
- 一般到最後的 HR 面的時候,面試官基本就是和你聊聊天。他可能會問你類似如下的問題:
- 父母是做什麼的,具體一點
- 自己平時是如何學習的
- 平時的興趣愛好是什麼
性格/其他
- 主要是看你個人的性格以及價值觀是否適合他們公司,比如他會問你類似下面的問題:
- 遇到壓力大的情況自己是如何處理的
- 遇到很難解決的困難怎麼辦
- 遇到不是很喜歡同項目組的某個成員的情況怎麼辦
- 如何看待加班
- 你覺得自己有什麼缺點/優點
總結強調
一定要謹慎對待寫在簡歷上的東西,一定要對簡歷上的東西非常熟悉。因為一般情況下,面試官都是會根據你的簡歷來問的;能有一個上得了檯面的專案也非常重要,這很可能是面試官會大量發問的地方,所以在面試之前好好回顧一下自己所做的專案;和麵試官聊基礎知識比如設計模式的使用、多執行緒的使用等等,可以結合具體的專案場景或者是自己在平時是如何使用的;建議提前瞭解一下自己想要面試的公司的價值觀,判斷一下自己究竟是否適合這個公司。
最後
針對於上面所提到的知識導圖我總結出了一些架構視訊資料和網際網路公司java程式設計師面試涉及到的絕大部分面試題及答案做成了文件和架構視訊資料還有完整高清的java進階架構學習思維導圖免費分享給大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分散式、高併發等架構技術資料),希望能幫助到您面試前的複習且找到一個好的工作,也節省大家在網上搜索資料的時間來學習。
資料領取方式:加QQ群930254941,進群既領取資料!
點選連結加入群聊【java架構交流群】: https://jq.qq.com/?_wv=1027&k=57qP2qp