網際網路面試實習經驗分享-開發崗
最近各大網際網路的暑期實習招聘開始了,身邊的小夥伴們也都忙碌了起來。整理了一些 開發類面試經驗 ,分享給需要的同學。

image
我先做個簡單的自我介紹。曉曉,研二在讀,大三學年末開始接觸Android開發,前後共在美團、頭條等公司實習18個月左右。有過6-8次面試經歷,包括百度、網易、keep等,有些通過有些失敗,在這裡分享一些 開發類面試通用型問題 ,並不只針對於Android開發。
我將分為 面試前準備 、 面試中發揮 與 面試後總結 三個部分,分享我的經驗。因為我也是一隻小白,不能保證說的都對,請大家參考後自行判斷。
面試前準備
找工作的第一步關卡就是簡歷篩選,一份簡潔清爽又重點突出的簡歷可以增加我們的競爭力。面試過程中,面試官也大多會參考簡歷內容進行提問。之前幫忙收過一些簡歷,對於開發類簡歷的準備,有如下幾個建議:
-
命名規範。一定避免無意義的檔名,很可能直接被無視。一般來講,可以將簡歷命名為:姓名-求職方向-手機號-學校-年級-可以實習幾個月-最早幾月入職。如: 朱佩奇-Java開發實習-18812345678-北京大學-研二-可實習6個月-最早3月入職 。HR可能不會一看到你的簡歷就馬上聯絡你,把聯絡方式標在文件名稱處,可以為彼此提供方便。另外,一定要轉成 PDF格式, doc格式很可能出現排版錯亂的情況,嚴重影響閱讀體驗。儘量選擇姓名拼音字首+學校的郵箱,或其他稍正式的郵箱傳送簡歷,避免如[email protected]這種辨識度低的郵箱。
-
排版格式。找到一個 簡潔大方的模板 ,主題色為黑色或深藍色即可,儘量避免一些花花綠綠的顏色,使閱讀者儘可能將注意力停留在簡歷內容上。整個簡歷控制在1-2頁為佳,儘量不超過3頁。
-
個人介紹。只包含 簡單的客觀資訊 即可,如姓名、性別、電話、郵箱和現居地,不需要花一大段進行自我評價,自我評價不會是簡歷篩選的決定性因素,且浪費寶貴篇幅。一般來說,開發類簡歷是不需要附照片的。不過也沒有硬性要求,假如你覺得照片是加分項,可以加上一個P圖程度別太過分的證件照。
-
實習經歷。如果有過實習經歷,可以 按照熟悉程度由強到弱 介紹自己做過的專案,不必非按照時間順序進行排序。一般大家都會將自己最熟悉、或收穫最多的放在第一個,這也會是面試官重點提問的專案。
-
專案經歷。如果之前一直沒時間實習的同學也不要擔心,可以將重點放在你的學校專案經歷上。可以是實驗室的專案,也可以是某程式設計課的大作業,但一個原則是要保持簡歷的真實性。一定要能把自己寫的東西說清楚,如專案需求、或使用的設計模式等。不要為了凸顯工作量,把別人做的東西安到自己頭上,基本都會被識破,給面試官留下壞印象就得不償失啦。
不管經歷過幾次面試,好像都還是會感覺非常緊張。可以在面試前嚼一塊口香糖,據說咀嚼的動作可以讓人感到放鬆,還可以保持口氣清新。提前1-2天查好交通路線,最好提前15分鐘左右到達面試現場(攜帶2-3份紙質版簡歷最佳),適應一下環境。把手機調至靜音後,穩住心神等待面試官的到來。
面試中發揮
我仔細研究了以前的面試記錄,結合實習的經驗,整理了一些提問率較高的技術型問題供大家參考。由於篇幅有限,且不能保證答案完全正確,下面只列舉了問題,有需要參考答案的 加群Android IOC架構設計 ,我可以分享完整版。
計算機網路
-
計算機網路協議有幾層?自底向上分別為什麼(畫圖)?HTTP/UDP/TCP/IP協議分別在哪一層?
-
TCP/IP三次揮手的過程(畫圖)?四次揮手的過程(畫圖)?為什麼握手要3次?為什麼揮手要4次?為什麼揮手完成後要等待2MSL才能釋放TCP連線?
-
HTTP請求報文和響應報文的格式是什麼?GET與POST方法的區別是什麼?
-
HTTP響應報文中各種狀態碼的含義,如404、502、302等?
演算法與資料結構
-
寫一個你最熟悉的排序演算法,它的時間複雜度為多少?(最好別寫太簡單的,建議熟記快速排序)
-
經典遞迴問題的非遞迴演算法。[圖片上傳失敗...(image-b01284-1554889106348)]
聽起來有點繞,不過確實很多時候面試官會直接要求 非遞迴演算法,如漢諾塔問題、斐波那契數列、二叉樹遍歷等問題的非遞迴演算法。
-
二叉樹的前、中、後序遍歷,層序遍歷演算法。
-
棧與佇列的區別。
-
如何判斷一個連結串列裡有環?
-
有一次筆試選擇題還問到了小根堆。
另外建議在面試前,刷一些Leetcode的題目,至少每天2道找手感。有幾次面試撞到了刷過的easy題目誒,心情就像是中了大獎。(希望大家也能中獎!)
作業系統
-
程序與執行緒的區別是什麼?
-
程序的五種狀態,畫圖表示。
-
程序間通訊的方式有哪些。(複製貼上竟然也算一種誒)
-
程序的記憶體分佈圖。(畫圖)
-
死鎖要滿足幾個條件?分別是什麼?
-
堆和棧的區別是什麼。
資料庫
-
主鍵的概念、特性。
-
簡單的查詢、刪除語句。
-
left join、right join和inner join。(問的不多)
-
事務是什麼,四大特性都是什麼?
Git
-
基本的Git操作。
-
git rebase和git merge的區別?
-
git fetch和git merge的區別?
Java類(非Java類程式設計可跳)
-
泛型,型別擦除可以瞭解一下。
-
介面與抽象類的區別。
-
String a = "abc"; 和 String b = new String("abc")的區別。
-
Java中有幾種基本資料型別?各佔幾字節?
-
ArrayList和LinkedList的區別,如何選擇?比如對於add操作或get操作,選擇哪一個結構時間複雜度最低?
-
訪問許可權有哪幾種?
-
執行順序類,讀程式碼題目。(寫出幾條語句的列印順序。)
Android類(非Android開發可跳)
-
Activity的完整生命週期?(畫圖)擴充套件:Activity A啟動Activity B時,分別觸發了A和B的哪些生命週期?
-
Activity的四種其中模式,簡單介紹。
-
資料持久化方案有哪些?SharedPreferences會帶來效能問題嗎?
-
Android有幾種動畫?哪種動畫真正改變了View的屬性?
-
dp與sp的區別是什麼?dp與px的區別是什麼?
-
如何寫一個高效的單例模式?(手寫程式碼)
-
Handler有什麼用?子執行緒裡面能建立Handler嗎? Handler的訊息傳遞機制建議重點複習。
-
佈局方式有哪些?LinearLayout和RelativeLayout哪個效率更高?瞭解一下ConstraintLayout。
-
沒用過kotlin的話,可以瞭解一下。
其他
- 對於新技術有什麼研究?平時關注嗎?
最好關注下自己領域的新技術,可以體現你的求知慾強、學習能力強等若干優點。
-
遇到過最難的問題是什麼?
這道題經常會被問到,猜測面試官主要想了解一下我們的抗壓能力和解決問題能力。建議選擇一箇中上等難度的問題,並且結局一定是解決了它,或至少提出了可行的解決方案。
-
學的最好的一門課是什麼?
這道題我覺得面試官是在給機會,我們說出自己比較擅長的方向。面試官向這個方向提問,有助於我們的發揮。可以仔細想想自己學的最好的一門課。
-
程式碼風格如何保障?
比如可以同學們之間互相review程式碼,瞭解常用的命名規範等。
- 你還有什麼想問的嗎? (2-3個問題為宜,不問會減分!)
a. 如果有幸加入這個部門,請問我的工作職責大概是怎樣的?
b. 剛才有一個xxx的題目,請問您能給我講講嗎?
c. 部門大概有多少人?如果我加入的話,會有人帶嗎?
面試中遇到自己不會的問題很正常,
一定要穩住!
我能想到的有三個級別的解決方案。
-
低階方案。不懂裝懂,瞎說一通。千萬不要嘗試這種方案,沒有任何正向影響,且浪費雙方時間。可以把寶貴的面試時間留給其他可能會的問題。
-
普通方案。經過合適時間段的思考,確認自己不會後,可以直接說不知道,或者會多少說多少。
-
高階方案。機智的把話題轉移到自己熟悉的領域。大概的答題模式如:“這個A我瞭解的不多,我瞭解了xxx,但是我最近接觸了一個B,我覺得有相似之處”。假如面試官也對這個領域感興趣就說下去,不感興趣及時停下。不過這個方案過於高階,我還沒有成功應用過。
面試後總結
經歷了兩輪、三輪甚至四五輪面試之後,我知道大家都很累。但是!先別鬆懈下來, 趕快把剛剛的所有問題記錄下來! 這是非常重要,卻很容易被忽略的一步。可以等自己休息充分了,再專心去查閱答案,最好把問題分類歸納。不要等到第二天再去回憶問題,你會發現忘記了好大一部分!這一步一定一定要認真做,一個問題一次答不上來可以,跌倒兩次絕對不能原諒!
最後在文末放上我自己整理出來的一份更詳細的面試資料和關於安卓學習的思維導圖提供給大家參考下,畢竟學習還是需要一個準確的方向的,才能使學習更有成效。
領取方式:
點贊+加群免費獲取Android IOC架構設計

image

image

image