春招Android崗實習面試分享

hello_bin.jpg
前言
感覺時間過得很快,學期又過半了,紅紅火火的春招實習也基本拉下帷幕。 跟許多同學一樣我也去嘗試了,摸著石頭過河磕磕碰碰,最終確定了大疆dji的offer,很感謝無論是在技術上還是面試經驗上給過建議和幫助的大佬們。技術崗考核的標配是:筆試+2輪技術面+HR面,等待的過程挺煎熬的,因為你不清楚自己會在哪一輪被KO掉,所以還得邊複習邊等待結果。想說把面試經驗總結分享一下,相信這種東西準備面試的同學已經司空見慣了(我是學Android方向的),歡迎探討哈。
簡歷篇
簡歷製作技巧的作用不可忽視,畢竟很多大公司會篩選簡歷然後再給出筆試機會,要儘量在簡歷內容中體現出自己的優勢和實力(比如說專案經驗、掌握技能)。我做的第一份簡歷詳細地敘述了一些專案細節,導致整體排版感覺密密麻麻,難以get points。後來在大佬指導下做了修改,只列舉出了主要實現的功能和技術要點。技術崗的同學有個人部落格可以附上部落格地址。
關於簡歷製作技巧,最近班主任在課堂傳授了一些乾貨(一原則九要點),下面跟大家分享一下:
-
一原則是符合崗位需求
-
要點1:黃金位置利用好(比如簡歷不止一頁的,重要的資訊最好放在第一頁)
-
要點2:不要無用資訊(比如簡歷所付照片正常人能辨別出性別的,那麼個人資訊就可不新增‘性別’屬性了)
-
要點3:注重簡歷的誠實度和表達(假的東西就不要寫啦,表達要簡明扼要)
-
要點4:版面佈局要進行邏輯分類
-
要點5:要冷冷的數字與細節,不要火熱的抒情描述
-
要點6:好簡歷=過程+結果(比如參賽擔任的角色和主要的職責,最終有獲獎的話也要寫上)
-
要點7:重要資訊上下留白
-
要點8:本專科簡歷,一般不超過1頁
-
要點9:法無定法,凸顯特色
面試Android崗需要具備的技能
Android是基於Linux的移動作業系統,面試Android開發崗,要掌握的知識除去Android本身的開發技能外,計算機相關基礎學科也是考核的範疇。(有些要點後面附有參考連結,想了解相關知識的老鐵可以點選進入)
計算機網路篇
面tx的時候面試官就問了很多網路安全傳輸細節,一起去的同學也反映網路知識問的挺多。下面列舉一些常問的問題:
- TCP/UDP的區別 (參考)
- TCP三次握手和四次揮手過程,為什麼是三次握手,為什麼要四次揮手而不是三次揮手就行?
- TCP是如何做到擁塞控制的?(參考)
- 應用推送與伺服器建立連線的方式有哪些,如何做到傳輸安全?(參考1/ ofollow,noindex">參考2 )
- HTTPS建立連線的流程,證書有什麼用,怎麼解決中間人劫持攻擊?(參考)
作業系統篇
作業系統能幫我們更好地理解多執行緒程式設計的原理,主要問題還是集中線上程與程序的區別與聯絡(參考):
- 執行緒與程序的區別
- 程序的三種基本狀態及其轉換
- 產生死鎖的必要條件和預防死鎖的方法
- 銀行家演算法的資料結構、銀行家演算法演算法流程、安全性演算法的演算法流程
- 程序同步的生產者-消費者問題
資料結構和演算法
演算法工程師崗和c/c++開發工程師對演算法要求會高些,移動端要掌握基本資料結構和演算法(比如棧、佇列、樹、八大基本排序演算法)。不過有一些公司對產品的效率要求比較高,像WPS的面試官一上來就搞個演算法題讓寫程式碼思路(輸入一字串,要求排序輸出其中的單詞以及單詞出現的次數。),我用hashmap實現的,完了他就把問題轉向如何優化這個演算法,結合著問Java集合類框架。
- 基本排序演算法(冒泡、插入、快排、歸併、堆排)的虛擬碼和時間複雜度分析(參考)
- 單向連結串列和雙向連結串列的結點增刪操作
- 棧和佇列的區別和實現
- 查詢演算法
- 用貪心演算法、動態規劃思想解決實際問題
- 二叉樹遞迴遍歷的三種方式,給出其中的兩種遍歷輸出結果求第三種遍歷輸出結果
Java篇
Android開發有很大部分用到Java語言,所以熟練掌握Java知識是必不可少的。最基本的面向物件概念、主要類框架(如集合類、IO類)、多執行緒操作、GUI程式設計等都得掌握,基礎紮實之後可以考慮看些進階的書籍,比如《Java程式設計思想》、《effective Java》等。
- 面向物件的三大特性及其理解,多型如何體現
- Java集合類框架,Set、List、Queue的區別和應用場景(參考)
- Java類載入器(參考)
- 什麼是執行緒安全
- Java多執行緒實現方式
- Java多執行緒同步方式
- HashMap與Hashtable的區別,HashMap怎樣實現執行緒安全、HashMap原始碼(參考)
- String、StringBuffer、StringBuilder的區別及各自應用場景
- Java反射機制
- JVM四大引用
設計模式以及專案篇
基礎面過後,二面問得較多的是設計模式和專案相關的問題,面了幾個公司都問到了設計模式,比如單例模式、觀察者模式、MVP模式等,設計模式推薦《Head First設計模式》這本書。至於專案,主要問職責和技術要點(按簡歷上寫的內容展開),實現過程中遇到過的困難,怎麼分配工作,往外了說可能會讓你想想優化方案,或者說重做一次專案的話自己會想優化哪些地方。
Android篇
主角終於閃亮登場啦,這是面試的重點區域,考察內容也比較廣泛,從四大元件到流行框架和封裝庫,都可能涉及,很多時候也是結合著專案來講。
- Android四大元件的理解
- Activity的四種啟動方式、Activity的生命週期
- Handler事件分發機制(理清Handler、Looper、Message、MessageQueue之間的關係)(參考)
- 靜態廣播和動態廣播的區別
- 三層圖片快取載入機制
- Activity與Service的通訊方式
- Android animation的幾種方式(參考)
- 物件序列化相關知識
- AsyncTask的機制、原始碼(參考)
- view的繪畫機制
- Android資料持久化技術
- Android使用http協議訪問網路的兩個方式(HttpURLConnection、HttpClient)
- 專案中使用過的第三方庫
- 記憶體洩漏、記憶體溢位的區別,記憶體洩露如何檢測
準備篇
機會總是留給有準備的人。面試前最好得到網上搜一搜應聘崗位的面經,看看常問面試題。每次面試過後暴露出來的問題要及時解決,找部落格或者書籍學習相關知識,做個總結,爭取下次面試能較全面地回答同個問題。當然,有時間的話也可以瞭解一下應聘公司的文化和相關產品,聊到對公司瞭解的時候就有話談,顯得也更有誠意。
技術面通過之後會有個HR面,一般來說不會為難你的。可能會問家庭情況、興趣愛好、職業規劃、處事方法,大學最難忘的回憶或者是最驕傲的事情,為什麼會選這個崗位and so on。
大概就講到這啦,感謝閱讀,歡迎指教。本人簡書和GitHub —>(簡書/ GitHub )
good luck!