【Android實習】20場面試斬獲大廠offer,我學會了什麼

一隻修仙的猿 發表於 2021-04-20

前言

很高興遇見你~

先說一下筆者春招實習的情況:從三月初到四月半,經歷了近20場面試,一共面試了五家企業,通過了騰訊、位元組、螞蟻、美團的面試,虎牙在一面之後拒了二面邀請。

金三銀四,筆者不是在面試中,就是在面試的路上,踩了很多坑,吃了很多虧,也學了很多的東西。這篇文章,就想要把筆者的這些收穫分享給你們,希望對你們有幫助。

文章的內容總體上可以分為兩個部分:吹水、乾貨。吹水部分主要是分析筆者的面試過程,有興趣的讀者可以看一下;乾貨部分主要是分享筆者的面試經驗,從技術到非技術到面試表現,可以根據標題按需閱讀。同時需要注意的是:文章內容均為筆者的個人經驗之談,請不要奉為圭臬,辯證看待,同時歡迎各位評論區交流

那我們開始吧~

面試經歷

這部分主要是跟大家分享一下筆者的整個實習面試過程,屬於純吹水內容,且內容稍長。有興趣的讀者可以看一下,或者直接跳轉到知識總結看乾貨。

三四月幾乎各路大廠開始瘋狂招聘實習生。但其實有一些大廠,如騰訊、位元組,在三月前甚至年前,就已經開始接收簡歷了。這個時候的崗位幾乎應有盡有,難度也會相對三四月低一些,是一個非常好的機會。但筆者,比較慫,感覺沒有準備好,到了三月才開始投遞簡歷。

三月初投遞的第一家企業就是,騰訊。

【Android實習】20場面試斬獲大廠offer,我學會了什麼

經過工作室師兄的內推投遞簡歷,很快就收到了面試邀請,這裡得非常感謝師兄的幫忙啊。在三月六號開始了騰訊的第一輪面試,也是整個金三銀四的第一輪面試。面試形式是電話面,難度不高,也有適當擴充。結束後通過官網查詢已經進入複試狀態。當時是真的是非常高興,之後詢問了師兄,說簡歷已經拿給了總監,總監面試一過,就只剩下HR面試了。距離鵝廠就差臨門一腳。

隨後騰訊二面等待了一個多星期,非常久。等待期間經過其他師兄的內推,投遞了位元組跳動。

【Android實習】20場面試斬獲大廠offer,我學會了什麼

位元組跳動的面試流程速度相對穩定,每一面結束後隔一兩天就會打電話約下一面。3.11進行了位元組一面,3.15進行了位元組二面。位元組跳動面試自我感覺表現挺一般,有很多的點都沒答上來。當時面完我都覺得自己掛了,直接癱坐在椅子上喘氣,心想著完了,與位元組無緣了。但隔了兩天之後,位元組HR打電話來約三面時間,很驚喜,有點失而復得的那種感覺,雖然這個比喻不太準確,但確實是我意料之外的。

隔了一個多星期,在3.16進行了騰訊二面。二面的內容主要是一些軟技能問題。心想著沒有技術問題,應該差不多穩了。這時候,再一次出乎我的意外:在3.18號騰訊預約了我24號初試。當時驚呆了:啊?怎麼從複試退到初試?後來瞭解後發現是,我上一輪總監面試掛了,被騰訊其他的部門撈了,重新回到一面。這是我三月份的第一次面試掛,當時心裡還是蠻難受的,畢竟距離鵝廠offer就差那麼一步。但我並沒有多少的悲傷時間,因為馬不停蹄,位元組三面來了。

3.22,位元組三面。三面的面試官是c++開發工程師,對於android和Java似乎不太熟練,問的問題主要是c語言和演算法。但我準備的內容是android和Java居多,c語言部分我回答得比較一般。總體上,整個位元組跳動的三輪面試我的表現都比較一般,但當時面試完還是很期待能過的。這次沒有奇蹟,過了兩天,位元組的另一個部門HR打電話給我,給我重新安排面試。好傢伙,我又又又回到了一面!!!

【Android實習】20場面試斬獲大廠offer,我學會了什麼

到這裡其實心態是有點崩的。騰訊與位元組都面了一趟,但是都掛了,從一面重新開始。那會的時間已經來到了三月下旬,騰訊和位元組都在一面,相當於剛剛起步。而我身邊的同學很多已經拿到 BAT offer了。心裡有點難受,同時還有點怕,怕最終找不到實習。經過這兩輪的打擊,心裡其實也沒有什麼底氣了。

此時騰訊和位元組的面試流程先告一段落,三月下旬,其他的企業也開始面試了。

在三月初那會,我投的不只是位元組、騰訊,還有美團、螞蟻、虎牙。但他們的流程比較慢,遲遲沒開始面試。美團在三月中筆試之後,終於在3.23開始了第一場面試。

【Android實習】20場面試斬獲大廠offer,我學會了什麼

美團前面的技術面流程比騰訊和位元組快很多,3.23下午進行了一面,晚上就約了3.25的二面。但是在之後的HR面試隔得比較久,到了4.1,進行了HR面試。

美團總體的面試過程是比較順利的,一面和二面的面試題目都回答得七七八八。而且有了前面的面試經驗,此時表達更加清晰、語速也沒有那麼快了。在4.8號美團HR打電話通知面試通過了。但是到了此時,面試情況已經和三月20號那會不一樣了。至於為什麼,這還要從也是在三月下旬開始面試的螞蟻開始講起。

【Android實習】20場面試斬獲大廠offer,我學會了什麼

在三月初我經過內推投遞了螞蟻的一個部門。螞蟻的簡歷篩選階段非常久,篩選了半個多月。我一直以為我跟螞蟻無緣了,簡歷沒過去。直到23號,面試官打電話過來詢問了一些我的情況,專案、學習情況等等。然後25號跟我約了26號的一面。對於螞蟻這個部門,我是真的沒有抱希望能過的。前面經過了位元組與騰訊的打擊,這會已經信心大折。我想著:去體驗一下卷中卷的部門,感受被刷的快樂。給你們看看我當時的聊天記錄:

【Android實習】20場面試斬獲大廠offer,我學會了什麼

之後在26號進行了螞蟻的一面,總體難度還是比較高,問到了比較多的一些優化、快取的內容。而這一部分我接觸得不多,大多是靠推理、猜測來回答的,也回答得不是很好。後面還跟面試官聊了一些部落格相關的內容。面試完之後我覺得懸了,就也沒抱著活的希望。接著就在31號上午收到了螞蟻的電話,約了下午的面試。[oh my god, amazing]

螞蟻二面是比較特殊的,一共有兩個面試官:一個是技術面試官,另一個是HR。技術面試官先提問了一會,大概15分鐘吧;之後是HR跟我聊,也是聊了15分鐘。主要問的內容都是在瞭解我的情況,例如工作室如何、成績如何、怎麼學習、怎麼管理時間、部落格等等。給我印象比較深刻的是這個HR姐姐。和其他企業的HR不同的是,面試過程中就像在和一個朋友聊天,瞭解我的學習以及周邊環境的情況,還會給我反饋表達她對我的印象。

然後在4月2號,面試官加了我微信,給我補了筆試的內容,就是做演算法題。過了兩天,收到了螞蟻的錄用喜報!!!當時掐了一下大腿,沒在做夢。。。

【Android實習】20場面試斬獲大廠offer,我學會了什麼

再拐回來說一下騰訊和位元組跳動的後續。騰訊在3.24進行了一面、3.29進行了二面、4.2進行了三面、4.13進行了HR面試。前面的速度是比較快的,只是HR可能比較忙,所以一直沒約上,隔了比較久。位元組跳動在4.1一面、4.6二面、4.9三面、4.14HR面,半個月完成了4個面試,速度比之前的也快了很多。

前面還講到了三月初投遞的虎牙,但虎牙的速度是真的慢,我甚至以為我的簡歷被篩選掉了。直到四月份才開始約面試。

【Android實習】20場面試斬獲大廠offer,我學會了什麼

虎牙在4月6號進行了一面,隔了幾天約了線下二面,也是終面。但此時我已經有意向的企業,就拒絕了面試。

整個面試流程,給我最大的感觸是:不嘗試,永遠是0;嘗試了,概率再小,都有可能是1

故事到這裡就講完了。誒,怎麼沒說去哪個公司了?哈哈,你猜我去哪了?

知識總結

面試中會被考察的具體問題有三個影響因素:部門需求、簡歷、面試中提到的知識點。因此不同的部門不同的面試者遇到的面試題很可能是完全不一樣的,這也是我為什麼不直接把面試題放出來的原因,沒有多大的參考價值。

這一部分主要總結在面試中被考察到的知識點,多為高頻面試問題,讀者可以自行考察是否這些知識都掌握了。需要特別注意的是這並不是全部的知識體系,僅僅是筆者遇到的面試題,讀者可以按照大體的方向去學習,但切不可認為這樣就足夠了,這裡提到的知識點是遠遠不夠的。

面試的過程中更多的時候不會單純地考察知識點,而是會結合一些需求或者業務場景來多方面考察對知識點的理解。因此筆者建議,對於知識點要以理解為首要任務,而不是背誦答案。

Android

總體來說,本次春招問的android內容其實不多,主要還是看著我的簡歷問,簡歷寫得不多,問得也就比較少。但android的基礎內容如handler、view機制等還是要會的,其他的有更加深入的研究可以寫在簡歷加分,如Binder、系統服務、優化等。

  • Activity

    1. Activity啟動流程。其中考察最多的類似問題是:【從桌面點選一個圖示之後,到介面顯示,這個過程發生了什麼?】。很多時候面試官會結合activity生命週期來考問:在啟動流程的哪些階段哪些生命週期被回撥,此時Activity狀態如何。
    2. 啟動模式。也就是常見的四種啟動模式,但面試官更喜歡問何時使用他們,也就是使用場景。
    3. 生命週期。這個很少單獨問,一般和啟動流程或者具體的業務場景結合考問。
    4. context。主要是記憶體洩露的考察以及application和activity兩種context如何選擇。
  • Handler

    1. 內部原理。Handler必會的啊,android的訊息機制,可以稱為android程式的引擎來的。
    2. 同步屏障。涉及到繪製優化、螢幕重新整理機制等。
    3. 阻塞喚醒原理。這裡一般是會問為何loop()方法是死迴圈卻不會佔用cpu時間片 or 為何next()方法阻塞卻不會卡死。更深一點會問到Linux的IO多路複用epoll原理。
    4. 卡頓與記憶體優化。整個主執行緒的所有任務都必須經過Looper,是排查卡頓和ANR的關鍵點,以及訊息太多會造成的後果等。
    5. 訊息複用。
  • 圖片

    1. 計算一張圖片大小。解析度x畫素點大小,考察得很多次。
    2. 載入優化。如LaunchActivity同時載入的圖片太多如何優化、view的大小比圖片小如何優化等。
    3. 快取優化。記憶體快取、硬碟快取。
    4. Glide框架。重點就是Glide對上面的優化的實現原理,因此需要著重看Glide的快取原理。
    5. drawable。對比使用圖片和drawable的好處,以及drawable的原理。
  • SharePreference

    1. 內部原理
    2. commit和apply的區別
    3. 這部分考察得不多,但建議讀者可以深入理解sp的缺點,如導致ANR原理,以及新框架MMKV、Data Store的優點。
  • window

    考察得非常少,主要window的型別、以及window的真正定義理解即可。

  • view

    1. 事件分發流程。考察得最多,基本把整個分發流程講清楚就好了;其次還會考察如何解決具體的衝突場景。
    2. 應用介面的view層級。
    3. 繪製流程與時機。activity啟動時到onResume方法被呼叫,view依舊還未被繪製。
  • IPC

    1. 常見IPC型別以及優缺點。
    2. Binder機制。優點、缺點、特點、和傳統IPC比較。Binder涉及到的很多是偏底層,更多的時候考察的是上層的應用,如和socket比較等。
    3. socket。這個會重點問,涉及優缺點、使用場景、和binder相比等。
  • 序列化

    1. serializable和parcelable的原理,以及各自的優缺點、應用場景。
  • jetpack

    1. 使用jetpack的好處與壞處。
    2. 框架原理。這部分如果寫在簡歷也很少問,看面試官;但如果問的話,一般會問原理。
  • okHttp

    1. 攔截器以及責任鏈思想。這個是問的最多的。
    2. 內部排程器對執行緒、任務數的併發控制。
    3. 優點缺點,和URLConnection相比的好處,誕生的背景等。
  • 優化

    1. 效能優化。問得很多,主要看自己平時有沒有做過優化。
    2. 卡頓優化。一般詢問如何定位和解決卡頓問題。
    3. 記憶體優化。一般是記憶體洩露、或者減少記憶體佔用等。
    4. ANR。一般會考察原理以及如何解決。
    5. 工具:leakcanary、profiler。優化涉及的內容太多,這個屬於比較深的內容,還是得看自己平時的專案積累。

Java

Java的考察是一個非常考驗功底的地方,很多的知識點都是基礎中的基礎,同時又都可以延伸到底層的邏輯。這些知識點在實際的運用中,也有很多的情況需要考慮,考察我們對於知識點的運用。例如執行緒池,可以從引數作用、到執行緒池原理、到阻塞喚醒機制、到實際專案的引數配置,有非常多的知識點可以考察。因而這一塊就看各位的造詣了。

當然,一些基礎或者常考的知識點還是得會的。

  • 集合框架
  1. HashMap。幾乎每家公司都問,主要是內部原理如hash演算法、衝突解決方案、擴容方案、紅黑樹的優缺點等。必會的內容,不會就直接當場去世了。
  2. HashSet。內部使用HashMap來實現,value設定為object。記住這個就好了。
  3. ConcurrentHashMap。必問。他的併發原理以及好處,同時有些面試官也會問缺點等問題。
  4. Hashtable、SychronizeMap。一般和ConcurrentHashMap一起問,進行對比。
  5. CopyOnWriteArrayList。一般會作為執行緒安全方法來進行比較優缺點。
  6. 集合框架重點還是在Map,但是其他的框架List和queue的原理也是要了解的。
  • 訪問限制符

    public protect default private 四個要懂,基礎知識了。(筆者就是忽略了這些當時回答錯了)特別注意protect是可以跨包訪問的。

    1. 4種內部類,特別注意每個class編譯後都會產生一個class檔案,不管靜態或非靜態。面試踩坑了
    2. lambda的本質。就是匿名內部類。
    3. 抽象類和介面的區別。這個很看理解,如果有開發過具體專案的會回答得更加深刻,這是背八股文體現不出來的。
  • 異常

    1. 異常體系、分類、機制。
    2. 與error的區別。
  • IO

    主要還是問NIO的原理以及優缺點。建議把緩衝流的原理也得學一學並進行比較。

  • 執行緒池

    1. 內部原理。必會的啊。
    2. 關鍵引數作用及如何配置。重點在如何配置,需要結合具體的機器情況、任務情況等等考量。
    3. 執行緒池的作用。不僅僅只是執行緒複用,更重要的是管理執行緒、控制執行緒數量。這個也比較考察具體的專案運用理解。
    4. 常見的四種執行緒池。
  • 併發

    1. sychronize。必問,java的鎖機制。特別是jdk6之後的鎖優化以及運用場景。為什麼是重量級的、JVM層如何實現如果瞭解可以加分。
    2. Lock。必問,AQS的原理最好懂。一般會拿來和synchronize比較。
    3. volatile。必問,會拿來和鎖比較,他的兩個重要作用。更深點會問到cpu快取一致性協議、以及指令重排的型別與原理。
    4. CAS。必問,問原理以及ABA問題。
    5. 死鎖。一般詢問如何解決或者產生的條件。
    6. Object的wait和notify。阻塞喚醒,一般會用一個程式碼或者具體的場景來詢問如何保證多執行緒同步。
    7. ThreadLocal。原理、記憶體洩露等
    8. 這一塊問的還是比較多,而且大都可以深入去問,看自己的學習程度了。
  • JVM

    1. GC機制。必問。
    2. 類載入機制。必問,同時還會問雙親委託機制。
    3. 方法呼叫過程。這個也問的挺多,也看對JVM的學習程度了。
    4. 執行緒與程式的記憶體關係。如一個執行緒佔多少記憶體、一個程式可以開多少執行緒、一個程式佔用多少記憶體等。
    5. 記憶體分佈。JMM、執行時資料區、native記憶體分佈。很看對JVM的理解程度。

Kotlin

kotlin其實問的很少,現在大部分的專案還是使用Java開發的。一些有kotlin業務的公司會問,但是問的內容也不多。這一塊如果還沒學習其實不急的,把Java學好才是王道,kotlin和java在原理上,都是互通的。

  • 協程

    問的是最多的,主要是理解執行緒和協程的關係、協程的優缺點。這個也看個人的學習程度了。

  • run、let、also、with、apply

    注意返回值以及作用域

  • 特性的具體實現

    如預設引數的具體實現。有了解過最好了,沒有的話就聯想Java是如何實現的,如預設引數可以聯想方法過載。

計算機網路

計網這一部分主要還是HTTP和TCP的內容了,經典中的經典。需要注意的是鏈路層、網路層的一些協議要了解,也是計算機基礎了,被問到不會的話會比較尷尬。其次是一些新的協議如QUIC、http3.0等可以瞭解一下,面試會很加分,同時也可以進一步去理解TCP的優缺點。

  • HTTP

    http在android上的體現並不多,因為大部分的工作都給框架解決了,問的問題其實很少。

    1. 歷代http的優化以及原因
    2. 請求方法、響應碼
  • HTTPS

    必問。一定要會了

    1. 原理以及和http的區別。加密演算法、hash摘要、ca證照驗證都要了解
    2. 建立連線過程
    3. 破解:中間人攻擊等
  • 資料鏈路層、IP層

    1. ARP和RARP協議
    2. NAT協議
    3. DNS
    4. 這部分主要問一些常見的協議,考察計網功底,這裡列出來的是筆者考察過的,讀者需要比價系統地去學習這一塊。
  • TCP

    1. 握手揮手
    2. 擁塞控制
    3. 可靠傳輸原理
    4. 缺點以及如何改進。這個是比較重要的,對應http3.0的優化就是針對TCP的缺點來入手的。
    5. TCP的連線數目上限
    6. TCP非常重要,必問的內容,不會的讀者一定要去好好學習一下。
  • UDP

    1. 優缺點
    2. 和TCP比較
    3. 應用場景
    4. 一般和TCP一起出現,詢問他們的區別,以及如何通過UDP來優化TCP的缺點。
  • 資料格式

    json的優缺點,為什麼要使用json而不是XML。熟記就可以了。

設計模式

設計模式這一塊問的不是很多,原因是設計模式需要實際的編碼才能去真正理解他的好處。所以大部分情況下面試官都是詢問在專案中用了哪些設計模式、或者哪些開源框架用了什麼設計模式。其次問的最多的就是三大架構模式了,必會的。

  • 常見的設計模式

    一般面試官會讓我們講自己認識的設計模式,按照自己的理解講出來就好了。

  • 在專案和原始碼中的體現

    問的最多的就是:你看過的框架原始碼都使用了哪些設計模式。不僅考察了設計模式、還考察了原始碼。另外也會問在專案中運用了哪些設計模式。

  • MVC\MVP\MVVM

    基本必問了。結合具體的專案實現以及自己的思考,分析他們的優缺點、適用場景等。

計算機基礎

計算機基礎這裡包括了c語言、作業系統、資料庫庫、以及前面的計網等等。這部分直接問的內容不多,但卻是非常重要的,也是考驗我們基礎扎不紮實的地方。其次,面試官也會用一些業務場景來考驗我們的理解程度,如聊到java併發時,問具體為何執行緒切換代價高;又如聊到JVM記憶體分佈時,問在native層是怎樣的記憶體分佈以及邏輯記憶體實體記憶體等;再如聊到volatile,會問到cpu快取一致性的問題等等。這些都是非常考驗功底的內容。因而,這些基礎內容要學好,不僅是為了面試,更是為了讓我們自己可以更好地學習理解知識。

  • C語言

    問的很少,偶爾會問到。筆者只被問到:同構結構體的記憶體佔用、指標相關問題。

    C語言作為語言鼻祖,一些基礎還是要會的。

  • 作業系統

    1. 中斷原理、作用。
    2. 死鎖原理以及如何解決。
    3. 作業系統這一塊確實問的不多,同樣也是考察基礎功底了。可以不問,但是問到一定要會。

專案

專案是非常重要的,一個擁有亮點的專案可為面試加分不少。面試前需要把自己的專案總結一下,提煉出專案的亮點難點。假如有優秀的專案,一定要把他寫在簡歷上,並把亮點表現出來。

在面試中面試官一般會先讓我們介紹專案,介紹專案一般可以按照這個模板來介紹:專案的背景、專案的內容、自己負責的內容、專案亮點。技術面的面試官會詢問專案有什麼技術亮點難點,這個時候可以把我們提前準備的亮點給面試官表述出來。例如做了什麼優化、自定義view等,體現出自己在技術上的能力。

當然,很多時候我們的專案並沒有什麼亮點,甚至就是一個Demo,例如筆者。在被面試官問到專案有什麼技術難點時支支吾吾說不出來。這時候可以把專案自己實現的功能講出來,例如一個wanAndroid App可以這樣描述:首頁使用viewPager+recyclerView來展示後臺資料,點選後可跳轉到對應文章詳情頁;登入註冊需要跳轉到另一個Activity,採用okHttp攔截器和SharePreference來實現記住登入 。千萬不要說:額、、就是一個練習demo,拉資料展示,沒有什麼亮點。這樣讓面試官完全無法瞭解我們的專案到底如何,也無法從專案開始提問來了解我們,面試效果就大打折扣了。

面試官對於我們的專案有了一定的瞭解之後,會繼續深問一些相關的知識點或者一些情況是如何解決的。以wanAndroid App為例子,面試官可以進一步提問:viewPager有做快取嗎?recyclerView快取機制如何?首頁圖片過多首頁載入緩慢導致卡頓如何解決?為什麼使用攔截器實現,他有什麼優缺點?SharePreference的原理如何等等。

非技術面試官可能會問一些如:專案中學習到什麼?你們是如何合作的?專案過程中遇到過什麼問題等等。常見的問題可以提前準備,把自己的心得整理一下。

那,沒有專案怎麼辦?那趕緊去寫一個。正如某個大廠的面試官說的:到現在都不知道你們這些實習生,到底是真的會,還是背八股文的。的確如此,有時候我們甚至都不知道自己是不是真的懂,唯一的辦法就是,是騾子是馬拉出來遛一遛,寫個專案。專案是面試官一個瞭解我們的非常好的方式。

需要注意的是:面試前要把自己的專案總結好,包括背景、內容、技術難點、亮點;面試時不要覺得自己專案很撈,而要表現出自己的自信,把專案內容有條不紊地表達出來。後面回答好面試官提出的問題就可以了。

演算法

演算法這一塊,先看看筆者在面試中遇到的演算法題:(點選可跳轉leetcode對應題目)

演算法難度基本就是力扣的中等題,且很多都屬於經典題目。面試的過程中,只要別太緊張基本不會有太大的問題。筆者在前期的面試過程中過於緊張,導致大腦空白,根本無法思考,連題意都沒看明白。此時,可以深吸一口氣,冷靜一下,旁邊有水可以喝一口水,努力讓自己冷靜下來。如果是在牛客網面試,可以開啟程式碼全屏,可以遮掉面試官的視訊,眼不見心不煩(狗頭)。

如何提升演算法,其實就是刷題,刷題,還是塔喵的,刷題。演算法沒有捷徑可走,需要靠自己勤奮去做題。如何刷以及刷到什麼程度,可以參考筆者的經驗:

  1. 分標籤刷。題目的型別總體就分為那麼幾類,每一類題型都有特定的模板。因此在一段時間內,對同一型別的題目重複刷,然後總結思路,效率會更好。
  2. 可以參考大廠演算法合集劍指offer,在面試前一段時間把這些題目刷一刷,很多時候可以做到原題或者型別題。
  3. 多做總結。實習考察的演算法大都是有套路,每次刷題都把關鍵的點記錄下來,做總結,很快可以提煉出一個題型的整體思路。這裡推薦一個博主的演算法框架,幫助我們提煉演算法思路。
  4. 學習官解,精簡程式碼。這裡不是要實現那種一行程式碼解決問題的騷操作,而是去除掉我們程式碼中的那些無用的判斷、迴圈等操作,增加程式碼可閱讀性和提升效率。

關於演算法,不同的企業對演算法的要求是不同的,有些企業的演算法都是簡單題甚至沒有演算法題,例如美團的演算法題是很簡單的,騰訊的演算法題也基本都是經典題目;而位元組跳動對於演算法考察較為嚴格,多為非常見演算法題,且基本每輪技術面都有演算法題。

其次,企業的不同的部門對演算法的考察偏好也是不同的。例如我同學面試wxg一次性來了5道演算法題,而筆者面試pcg則沒有遇到這個情況。對演算法看重的企業多會更深地去考察我們的演算法功底,而對演算法沒有要求的更多是走個流程。

總之,學好演算法對我們是一件終身受益的事情,而不管企業考察難度如何。

簡歷

關於簡歷,網路上有很多的部落格寫得很好,讀者可以自行去搜查一下。這裡主要和讀者們分享筆者對於簡歷的一些心得。

  • 簡歷的作用是展示自己的亮點給面試官,讓面試官可以在短時間內迅速瞭解我們。

    簡歷一定要把自己的亮點寫上去,展示自己的能力。說人話就是:告訴面試官自己有多牛叉,這不是表現我們謙虛的時候。不管是專案亮點、還是個人技能,都通通寫上去。

    其次,一定要控制篇幅,不宜過長。面試官一般10s內閱讀完一份簡歷,只需要把有亮點的內容展示出來,而一些類似“熟悉Java類與介面、瞭解使用xx框架”等基礎知識就不要寫了。

    另外,有開源專案或部落格也一定要寫上去,特別加分。有時候即使面試回答得一般,但是看到我們的部落格或者開源專案可能就認為只是緊張,隨手就給我們一個過了。因此平時多寫部落格、專案,是有好處的。

  • 技能點描述要精準,不要模糊。

    舉個例子:

    1. 熟悉JVM。
    2. 熟悉JVM的GC標記演算法及其分代回收理論、方法呼叫的解析及其入棧過程、類載入流程、記憶體模型與執行時資料區等。

    對比這兩種描述,第二種面試官可以很明顯知道我們到底對JVM掌握到什麼程度以及哪些知識點,並針對性提問,而第一種面試官甚至會覺得我們根本不懂JVM,連JVM中有什麼知識點都不知道。

    因此描述技能一定要精準,不要模糊,讓面試官猜。面試官不會掀起我們的蓋頭,只會掀起我們的頭蓋[狗頭]。

  • 無用資訊不要寫。

    縱使在校園內參加了非常多的大型社團活動,包括但不限於三下鄉、主持大會等。我們面試的是android崗位,不是社團。只需要簡單一句參加過校園各類社團活動,讓面試官知道我們是一個active boy/gird 就好了。

  • 寫上簡歷的內容一定要是自己掌握的內容。

    這是簡歷最基本的要求,不用多說了吧。

非技術問題

這部分的內容,大都會在三面或者HR面提問到,到這裡其實面試已經差不多穩了,但也不可以亂講話哦,不然HR姐姐卡我們簡歷就難受了。這些問題多為考察我們的軟實力,重點是要知道面試官提問這個問題的目的是什麼,瞭解他的“潛臺詞”。

順帶提一下HR面試,基本上到這一步,我們的面試就基本通過了。HR面試的主要目的是瞭解我們這個人本身的情況,如學習、周邊環境、未來打算、價值觀等等。只需要真誠和HR姐姐聊聊天,同時避開一些雷別踩就好了。嗯?這還能有雷?有的哇,例如HR姐姐問你拿了幾家offer之後你會選擇我們嗎?你直接說:如果另一家過了就不要你們了。那人家還給你發offer?

但其他的個人情況問題,還是需要真誠和HR溝通,其實也是看企業文化是否適合自己。

下面看看筆者被提問到的一些軟實力問題:

  • 你專案中遇到的最大的困難是什麼?

    這個問題問的最多,多為考察面試者的解決問題的能力;問題本身並不是重點,解決的過程才是重點。

  • 你在專案中學到了什麼?

    考問學習總結的能力,回答一些自己的收穫,可以是技術的,也可以是非技術的例如團隊合作的經驗。

  • 平時是如何學習的?

    考察自學能力,可以把自己平時學習的方法講出來,向面試官展示自己學習的能力。

  • 你為什麼選android?

    考察對android的興趣。不要講得太浮誇哇,什麼從小就xxx,真誠一點講出來就好了。

  • 未來的計劃如何?考研嗎?

    根據具體情況回答就好了,如先實習鍛鍊業務能力,畢業後一兩年希望有單獨負責一個模組的能力等等;一般來說,企業更願意招聘未來可以轉正且有規劃的實習生,更有培養空間。

  • 工作城市有什麼考慮嗎?父母怎麼態度等

    這個很明顯了,根據自己的實際情況來回答;當然,面試官更願意招聘希望去他們部門所在城市的面試者。

  • 你還在面試其他公司嗎?拿到其他公司的offer了嗎?你會選誰?

    這裡可以講一兩個比較優秀的公司來提高自己的身價,讓HR感受到你的市場競爭力,但切不可全部十幾個說出來哇,我們都討厭海王,包括HR。

    選誰這個問題,如果此時自己還沒確定,可以把自己考慮的因素講出來,如業務內容、地點、實習生培養制度等講出來,然後告訴HR最後會權衡考慮,並在最後向HR瞭解這些內容(如果你都不問,怎麼權衡?HR一看就知道你在養魚)。如果已經確定好了要來這家公司,那就直接告訴他一定來。

    千萬記住不要撒謊,例如告訴HR我一定來,但心裡已經有了想去的公司。到時候要拒offer會非常尷尬,而且有可能進入企業黑名單。[狗頭]

    當然面試官肯定更加傾向於想要選他們的面試者,不然發了offer又不來,那何必發呢?所以這裡就看各位的情商發揮了。

  • 你有什麼優缺點?在別人看來,你有什麼優缺點?

    一定要提前做好準備,筆者當時就是沒做準備,亂講一通。

    需要注意的就是別太浮誇,真實一點;什麼叫真實一點?例如:我的缺點是總是控制不好自己的學習節奏,老是學習太晚,傷害身體。雖然存在這種情況,但別說HR,可能我們自己都不信不是嗎[狗頭]

    其次是講缺點的時候可以聊一下自己是怎麼對待自己的缺點的,因為發現是一回事,而最終怎麼處理又是另一回事了;把自己怎麼對待自己的缺點的可以講出來。

    最後是注意題目,是有兩個角度:自己和他人。一個是自我反省,另一個是外在表現,最好準備好這兩道題的答案。

  • 前面的面試體會如何?你覺得你前面的面試表現如何?

    主要看在前面的面試中有沒有什麼體會,然後有沒有去處理發現的問題。這裡可以講發現了很多的不會的知識點,然後自己都去再次學習了等等

  • 自我介紹

    幾乎在每一場的面試都會有,但在三面總監面一般沒有。

    自我介紹是除了簡歷之外面試官第二個快速瞭解我們的地方。最好不要對著簡歷念,而是補充一些簡歷沒有的內容。

    例如可以講自己從何時開始自學,自學能力非常強;加入過什麼老師團隊,做了什麼專案;近段時間學習到什麼程度等等。

    在面試前可以做好一份自我介紹,然後後面所有的面試都用這份自我介紹就可以了。這樣也不會說在自我介紹的時候不知道說啥。

    但是千萬不要太長哦,抓重點一兩分鐘就好了。

  • 你還有什麼問題嗎?

    這部分可以向面試官提問一些自己想了解的情況。一般來說,需要了解的有:部門業務內容、實習生具體的工作內容(sdk、業務開發、跨平臺、轉語言等)、實習生的培養內容、學習建議等等。

    不同的面試官也需要區分問,例如HR可以問多一些工作地點、轉正機會等問題,而技術面試官可以問一些工作內容的問題。

    這些因人而異,最好不要說沒問題咯,讓面試官看起來對崗位沒有多大的興趣~

面試中

未知,所以恐懼。

在沒開始面試前,可能很多的讀者都是人生第一次入職面試,肯定非常緊張的,在面試前甚至想著,要不算了,不面了。這都是正常的。解決的辦法就是:去面一次。經歷過一次之後就不會緊張了。或者說,沒那麼緊張了。

大廠的面試官的體驗一般都是非常好的,筆者到目前為止遇到的所有面試官,都給我非常好的面試體驗。

在面試的時候要注意語速與咬字清晰問題。筆者本身是一個語速很快的人,加上面試緊張,面試官很難聽清楚我到底在講什麼。面試一定要控制語速,可以提前給自己錄音看看什麼程度的語速是最合適的。

其次,要注意自己的表達清晰。仔細聽好面試官的問題,然後先組織好思路,再慢慢表述出來。回答問題,也是相當於和一個講解知識點的過程,思路一定要清晰。一些口頭禪、冗餘的表達儘量去除。

有一個需要注意的點就是:不瞭解的東西,千萬不要講出來,切記!!!。例如,我們不懂NIO,在面試官問到傳統IO的時候,就不要拿NIO去比較或者提起NIO。如果提起了,面試官99%會問一些NIO的問題,這時候就會灰常尷尬。而如果自己掌握了NIO,那麼就可以不斷提起NIO,把面試官的詢問重點往我們熟悉的知識點牽引。

最後需要注意一點的是:拒offer是一個很考驗情商的事情。這不是在凡爾賽,而是一個非常重要的事情,處理不好可能會上企業黑名單。舉個最簡單的例子:

現在手上拿到了企業a的offer,但是自己更加嚮往的企業是b,但是b還在面試。這個時候企業a的HR問你:a和b你選擇哪個?然後你堅定地說肯定選擇a啊。然後拖了一兩個星期,b通過了,然後跟a的HR講我不去,我去b了。不僅影響了企業a的招聘,而且HR還會覺得你言而無信。

所以,拒offer最好是趁早,不要影響人家的招聘;其次是語言前後要一致,不要當渣男or渣女。[狗頭]

春招時間線

實習生招聘一般集中在春季,秋季招聘主要是校招,也就是招正式工。

  • 最先的一批開始時間是在年前,也就是12月。例如CVTE在11月、位元組跳動在春節前就開啟了實習招聘,屬於最早的一批。
  • 第二批在春節後,也就是2月份,很多的部門有內推直達。多關注牛客網等的一些內推資訊,此時公司官網可能還沒有開放投遞通道。
  • 三月份幾乎是所以一二線大廠開始招聘的時間。大廠還會分兩個批次:提前批和正式批。
    • 提前批:一般通過內推直達沒有筆試,且提前批hc較多,是最推薦的投遞簡歷時機。
    • 正式批:提前批掛了,正式批可以繼續面。缺點就是一般都需要筆試
    • 但很多的公司沒有提前批與正式批之分,這個要看具體的公司具體安排。強烈建議,越早投越好。
  • 四月份是正式批開始時間,但熱門崗位幾乎已經招滿人了。此時hc更少,要求也會比三月份更高。

最後

最後想要告訴讀者的是:影響面試結果的因素有非常多,如面試官心情、口味,當天自己的狀態,崗位要求等等。筆者的兩個同學,都是前面連續掛了兩次一面,但後面也都成功拿到了BAT offer,甚至不止一個。掛掉面試絕對不是簡單的自己能力不行,而是多方面的因素,總結好經驗,繼續面試就好了。

邁出第一步,開啟第一輪面試非常重要。不要覺得自己“好菜啊,投了肯定不過的,不投了”。不投,怎麼知道不過呢?面試也是一個學習的過程,會慢慢發現自己的不足,包括表達、知識等等。所以,如果你還在猶豫,趕緊投起來吧。

希望這篇文章能夠給正在找實習的讀者提供一點幫助,先預祝各位實習面試順利吧。有什麼問題或者想了解的內容可以評論區交流,後續筆者繼續補充或者新開一篇文章做解答。

如果文章對你有幫助,還希望給筆者一個贊鼓勵一下。

全文到此,原創不易,覺得有幫助可以點贊收藏評論轉發。
有任何想法歡迎評論區交流指正。
如需轉載請評論區或私信告知。

另外歡迎光臨筆者的個人部落格:傳送門