大廠面試受阻?基本功不紮實,68.5%的面試機率都嗆,來看看這份“地表最強Android面試寶典”

金三銀四來了,各大廠動靜不小,都在儲備人才,絕對是程序員面試的黃金時間了。我發現很多候選人,聊起架構、框架侃侃而談,但一寫代碼,就暴露真實水平。說白了,還是基本功不夠紮實。

在一堆討論什麼時候能收到面試通知的吐槽中,某同學的這幾句話格外的惹眼——

“我倒是進了一面”
“但是我感覺這個一面挺難的”
“我感覺有68.5%的機率一面要涼”
“就是從答上來和沒答上來的比例”
“我感覺面試官老覺得我答非所問”
……

一石激起千層浪。
有人覺得這個同學是在變相“凡爾賽”,有人覺得自己接下來的面試可能統統要涼…

學委在安撫了大家的情緒之後,仔細想了想:
眼下互聯網大廠暑期實習幾乎全開,進程也是飛快,所以不少同學都在關注面試這個事情。

既然如此,與其讓大家胡思亂想,不如還是讓學委來一次性來給大家講清楚互聯網面試準備事項吧!

今年的互聯網就業形勢

互聯網過去幾年飛速發展,給的待遇比其他行業都要高不少,並且過去幾年入門門檻很低,基本去機構培訓幾個月就能上崗,所以出現很多其他專業培訓轉行當程序員的。還有這幾年新生報專業,也出現湧向計算機專業的趨勢,互聯網整體的供求關係出現了逆轉。

同時由於疫情的關係,去年倒閉的小公司特別多,進一步加劇了整體的就業形勢。所以準備要裸辭的同學最好掂量下自己,除非已經沒法忍受或者確實實力夠硬,否則還是騎驢找馬最好。

在工作中積累

當你還比較年輕時,例如一兩年經驗,通過面試前的準備往往能應付很多面試,因爲你還年輕,公司會對你更包容,更看重你的學習潛力。

但當你到了四五年經驗,甚至更多時,公司會看重你的積累,因爲這個年限一般需要能獨當一面了,招進來能快速負責起一塊業務。這個時候,如果你平時沒去思考和積累,只靠面試前的準備會很難應付,即使勉強應付過了,可能也沒有亮點,從而在跟其他候選人的PK中落敗。

因此,我們需要在平時的工作中去不斷積累,遇到困難時迎男而上,多思考更優的解決方案,多學習其他人的優秀方案,多進行階段性總結。

面試時,很經常會遇到沒準備過的問題,如果你平時沒怎麼學習和積累,這時候基本是束手無措。如果你有不斷的思考和積累,你可以將問題轉換爲:如果是你來設計這個功能,你會怎麼設計?當你積累的足夠多時,你很容易會有自己的一套設計方案。因爲大部分優秀的工具框架的底層設計思想都是一樣的,優秀的東西大家都喜歡用,只要我們朝着那個方向思考,我們很大概率會給出類似的方案。

這種之前沒看過,通過自己思考給出的設計方案在面試官這會加分

在工作之外學習

僅靠工作中的成長通常是不夠的,特別是大部分人的工作就是CRUD,所以一定要在平時花點時間去學習。

1)首先你需要有目標,如果沒有目標你會很難堅持下去。比如:爲了賺更多的錢、爲了成爲像xxx一樣牛逼的人等等。

2)不需要你把所有的業餘時間都花在學習上,只需要每天或者每週固定花點時間,讓自己養成習慣。

3)不要東學一點西學一點,儘量集中學習某個方向,以 Java 後端爲例,可以先集中學習 Java 常見的八股文

4)學習時不能只看教程(博客、公衆號、在線培訓機構等),一個是要培養自己的學習能力,另一個是現在很多教程都是爲了割韭菜水平堪憂。但是並不是說完全不要看這些教程,而是在看的時候要有自己的思考。這些教程可以作爲一個參考,學習更多的還是要靠自己去實踐、看官方文檔、看源碼等。

5)要有“打破砂鍋問到底”的精神,不要看過就過,多思考爲什麼,有疑問的地方要徹底搞清楚,通常來說,源碼可以解答你所有的問題。

6)如果自律性不太強,儘量不要碰電視劇、遊戲、小說、抖音快手這些,很容易就上癮,並且這些都要花很多時間。可以像我一樣,整一些不怎麼花費時間的,例如看海賊王,一週就更新一集,每集去掉回顧和預告就15分鐘,有時候還會被鴿,哈哈。

7)遇到複雜的知識點不要害怕,要迎難而上,簡單的知識大家都會,區分不出什麼,只有這些複雜的知識點時才能區分出你和別人的不同。很多問題百度上都搜得到,多搜多看,很容易也就弄懂了。

說實話,要進步其實不難,不需要你關注一大堆公衆號,也不需要你收藏一大堆資料。只需要你靜下心來,明確一個方向,百度上找一兩套資料、買兩本書、下載點源碼,一步一個腳印的積累,到了某個階段你會發現自己已經完成蛻變。

面試前應該準備哪些內容

以下內容是我自己的準備,經驗差不多的同學可以參考下:

1、架構師築基語言基礎

重點內容:深入Java泛型+註解深入淺出+併發編程+數據傳輸與序列化+Java虛擬機原理+反射與類加載+動態代理+高效IO

  • 創建線程的方式,他們有什麼區別?
  • 知道線程池嗎?說說對線程池的理解?
  • 你瞭解過 Java 的四種引用嗎?
  • 分別代表什麼含義,他們有什麼區別?
  • 瞭解過 Java 的集合嗎?
  • 說說 HashMap 的底層實現原理?
  • ArrayList 和 LinkedList 的區別?
  • Java 集合中哪些是線程安全的?
  • JVM 的內存模型?

2、設計思想解讀開源框架

重點內容:熱修復設計+插件化框架解讀+組件化框架設計+圖片加載框架+網絡訪問框架設計+RXJava響應式編程框架設計+IOC架構設計+Android架構組件Jetpack

3、360°全方位性能調優

重點內容:設計思想與代碼質量優化+程序性能優化+開發效率優化

  • 說說 內存優化?
  • 內存泄漏相關?
  • OOM在什麼情況下發生?
  • 怎麼在線上收集OOM和內存泄漏?
  • Leakcanary的原理?
  • 幾種熱修復方案的原理及優缺點?
  • 虛擬機棧中爲啥會有局部變量表?它的設計初衷是什麼?

4、Android框架體系架構

重點內容:高級UI晉升+Framework內核解析+Android組件內核+數據持久化

5、NDK模塊開發(音視頻開發系列)

重點內容:NDK基礎知識體系+底層圖片處理+音視頻開發

6、Flutter學習進階

重點內容:Html5項目實戰+Flutter進階

7、微信小程序開發

重點內容:小程序介紹+UI開發+API操作+微信對接

8、通用問題:

幾個比較容易被問到的問題是:
1)爲什麼離職;
2)在上家公司哪些能力得到了成長;
3)平時怎麼學習的?

9、問面試官:

每次面試最後面試官一般會問有沒有什麼想問的,如果不知道問什麼,可以問下團隊當前負責的業務是什麼?主要面臨的挑戰是什麼?

大廠簡歷篩選標準

以下是我總結的一些大廠常見的篩選標準,不特指某個公司,估計大部分大家也都知道,僅供參考。

1)當前就職企業,當前就職企業是互聯網大廠基本簡歷關就過了,除非有其他特別大的問題。

2)畢業學校(本科更重要)和專業,如果是知名學校,例如211、985之類的,會有加分,如果是非本科會扣分,如果是非計算機專業會扣分。

3)期望薪水,這點可能很多人沒想到,但是這個確實是一個很重要的篩選條件,因爲這個很直接的反映了你當前的水平。主要參考下限,如果下限低於某個值基本不會考慮。

4)年紀和工作年限,很殘酷的事實,相信大家也應該都聽過“程序員35歲送外賣開滴滴”。

5)專業技能,如果有閱讀過某些源碼、深入研究過某個框架之類的會加分,使用“精通”字眼的扣分哈哈。還有就是“全棧”或者有幾年做過“前端”這些都是扣分。關於“全棧”,小公司可能會加分,但是對於大廠這個通常會扣分,大廠一般希望你更專注於某一塊。

6)項目,方向一致會有加分,高併發大數據加分。

7)其他,技術博客有不錯的技術文章加分,github 有參與一些知名開源項目加分,有機構培訓經歷扣分,跳槽過於頻繁扣分,特別是跳的都是小公司。

綜上,對於大部分人來說,特別是對於年輕人,大廠經驗還是非常重要的,所以如果有進入大廠的機會,千萬要抓住,不要太在意當前的薪資,大廠能夠給予你的成長機會、後續的漲薪這些都是小廠沒法比的。

面試中如何讓自己脫穎而出

面試就是如何讓自己成爲所有候選人中的裝逼之王,所以如果你只是正常的回答出來,可能會淪爲他人的備胎。

1)有自己的思考:初級點的,爲什麼這個功能要這麼設計?高級點的,如果是你來設計,你有更好的方案嗎?

2)知識廣度:初級點的,能答出面試官的所有問題。高級點的,在解答出來的同時還能扯到一些相關的知識。

3)知識深度:初級點的,你能給出大部分人知道的版本。高級點的,你能給出具體實現的細節。以 MVCC 爲例,初級答法就是給出創建版本號和刪除版本號的這個答案,而高級答法就是能從源碼去分析 ReadView、回滾指針、快照讀等內容。

一些大廠的面試流程

阿里:通常3~4面技術+Hr面,每一輪結束可以問內推人或者通過面試郵件底部的電話轉人工查詢面試結果,一般流程比較長,大多要一個月以上,無法並行面多個部門。

騰訊:通常3-5輪技術+Hr面,每一輪結束可以問招聘Hr面試結果,一般流程比較長,每一面之間可能要隔一週,全部流程大多要一個月以上,無法並行面多個部門。

美團:通常3~4面技術(3.1開始多一輪交叉面)+Hr面,通過的話一般3個工作日內約下一次面試時間,一般半個月就可以走完流程,可以並行面多個部門,美團是少有可以並行面的公司,但是一旦第一個部門定薪定級後,後續的其他部門即使通過了也會按照第一個的定薪定級。

快手:通常3~4面技術+Hr面,通過的話一般2個工作日內約下一次面試時間,經常面完幾個小時內就收到電話約下一次面試,一般半個月就可以走完流程,無法並行面多個部門。

字節:通常3~4面技術+Hr面,面試效率比較高,可能一天內就面完技術面,整個面試流程比較快,但是發口頭offer比較慢,無法並行面多個部門。

拼多多:通常3面技術+Hr面,現場面可以一天面完,並且可以週日面,一般半個月就可以走完流程,無法並行面多個部門。

面試要注意的一些點

1)儘量保持自信,自信心的建立源於你自己的武器庫裏有多少武器,所以歸根到底還是要多學習、多積累。
2)先拿小公司練手,面試通常會面的越多發揮的越好。
3)視頻面試提前調試好設備,不要像我一樣臨時發現沒法打開視頻就尷尬了。
4)大廠談薪時通常會看你是否有其他大廠的offer,如果你有其他大廠的offer會有利於談一個不錯的待遇,所以可以多面幾家。

最後面試系統複習路線

我很喜歡把學習比喻成拼圖,一開始時很艱難,效率很低,並且可能有某些知識你反覆看也不理解,因爲此時的你看不清拼圖的完整模樣。

但是隻要你不斷的積累,當你在拼圖上東積累一塊、西積累一塊後,到了某個階段,你會發現很多原來不理解的東西可能突然就理解了,同時學習效率也會比以前快多了。

這裏給大家提供一個方向,進行體系化的學習:

1、看視頻進行系統學習

前幾年的Crud經歷,讓我明白自己真的算是菜雞中的戰鬥機,也正因爲Crud,導致自己技術比較零散,也不夠深入不夠系統,所以重新進行學習是很有必要的。我差的是系統知識,差的結構框架和思路,所以通過視頻來學習,效果更好,也更全面。關於視頻學習,個人可以推薦去B站進行學習,B站上有很多學習視頻,唯一的缺點就是免費的容易過時。

另外,我自己也珍藏了好幾套視頻,有需要的我也可以分享給你。

2、進行系統梳理知識,提升儲備

客戶端開發的知識點就那麼多,面試問來問去還是那麼點東西。所以面試沒有其他的訣竅,只看你對這些知識點準備的充分程度。so,出去面試時先看看自己複習到了哪個階段就好。

3、讀源碼,看實戰筆記,學習大神思路

“編程語言是程序員的表達的方式,而架構是程序員對世界的認知”。所以,程序員要想快速認知並學習架構,讀源碼是必不可少的。閱讀源碼,是解決問題 + 理解事物,更重要的:看到源碼背後的想法;程序員說:讀萬行源碼,行萬種實踐。

主要內含微信 MMKV 源碼、AsyncTask 源碼、Volley 源碼、Retrofit源碼、OkHttp 源碼等等。

4、面試前夕,刷題衝刺

面試的前一週時間內,就可以開始刷題衝刺了。請記住,刷題的時候,技術的優先,算法的看些基本的,比如排序等即可,而智力題,除非是校招,否則一般不怎麼會問。

關於面試刷題,我個人也準備了一套系統的面試題,幫助你舉一反三:

還有耗時一年多整理的一系列Android學習資源:Android源碼解析、Android第三方庫源碼筆記、Android進階架構師七大專題學習、歷年BAT面試題解析包、Android大佬學習筆記等等。

以上內容均免費分享給大家,需要完整版的朋友,點這裏可以看到全部內容。或者點擊 【這裏】 查看獲取方式。

最後送大家一碗雞湯:當你的才華還撐不起你的野心時,那你就應該靜下心來學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章