一、關于我
筆者從事Android開發3年了,前兩年一直在百度coder,因為業務調整的原因拿了N+1離開了,開開心心的在家休整了一個多月,上月末才開始面試,
可能是在百度安逸慣了,結果出來碰了一鼻子灰,
我一開始覺得自己好歹也算是三年大廠經驗,要個16K不過分吧,結果,我先后試了今日頭條、飛書、陌陌、優酷、微信都碰壁了,
位元組的那兩個是演算法不過關,優酷是音視頻開發苦手,微信和陌陌是因為flutter不會,后面HR又覺得我要價太高,然后……就沒有然后了……
老實說是備受打擊的,已經在懷疑人生了,
但是,總不可能不作業吧,
回去后閉關復習了20天左右,出關面了12家大廠,拿下了10家,節后到崗,心里美滋滋~ 今天特地來給大家分享我準備面試的經驗,以此回饋社會,積攢人品,希望對大家準備面試有幫助~
二、我的面試準備
這是我最難熬的一段時間,很忙,但是也是真的非常充實,
我先是對前面五次碰壁的經歷進行了總結,歸納了一下自己的短板,還有一些面試中的表現失誤,全部用一個本子記了下來,這樣一來,復習思路就清晰來了很多,
通過歸納我總結出了以下的一些點,大家也可以當做復習參考,
其實Android崗的面試都是差不多的,常問的這幾塊知識點,按照其重要程度排序,筆者認為可以這樣排:
- 資料結構與演算法,
- Java,
- Android(如果不找安卓的就去掉這部分),
- 計算機網路,
- 作業系統,
- 設計模式,
下面就按照這個重要性順序給出一些準備的建議,
資料結構與演算法模塊
大家可以看這個:《最短時間搞定演算法:位元組跳動Android崗演算法題考前突擊寶典》
當然,學習和積累都是功在平時,指望臨時抱佛腳的思想是非常危險的,這個分享只給那些時間倉促,沒有辦法的朋友,不過時間充裕的朋友也可以當做一個查漏補缺和重點突破的方向,
下面說一下我個人的學習方法推薦,
學習書籍推薦:
- 《演算法導論》
- 《大話資料結構》
- 《資料結構與演算法分析》(PS:java語言描述)
- 《劍指offer》
- 《labuladong的演算法小抄》
推薦在線刷題網站:
- Leetcode(LeetCode Online Judge),
- Lintcod(LintCode - 主頁),
- 牛客網(在線編程_C++Java前端經典筆試面試題庫)
Java 模塊
找程式員作業,大多數情況下需要掌握好一門面向物件的語言,主流上分為Java和C++兩大陣營,這里講Java需要怎么準備,
書籍推薦:
入門書籍:
- 《Java核心技術卷一》
- 《Head first in java》(如果一點面向物件的概念都沒有那就看這本)
提高書籍(我一般只推薦經典書籍,很干):
- 《Java編程思想》
Java虛擬機:
- 《Java編程思想》
- 《深入理解Java虛擬機》
Java多執行緒:
- 《Java多執行緒編程核心技術》
- 《Java并發編程實踐》
其實我覺得如果有一定基礎建議直接看Java編程思想,面試中的考點經常都會在這本書中有講到,當然Java虛擬機和多執行緒這兩塊需要再看一些專門講解的書,每一次java面試考查內容幾乎都離不開這兩塊,
下面我會對 java考察內容進行一些總結,
Java模塊知識要點整理
1、深入理解Java泛型
- 泛型的作用與定義
- 通配符與嵌套
- 泛型的上下邊界
- RxJava中深入理解泛型

2、注解深入淺出
- 注解(ANNOTATIONS)
- 元注解
- 自定義注解
- APT
- 插樁
- 反射
- Retrofit中的注解

3、并發編程
4、資料傳輸與序列化
5、Java虛擬機原理
6、高效IO
……
內容較多,都以PDF的格式整理成檔案了,大家可以通過掃描下方二維碼,備注【
面試】直接找我獲取,
↓↓↓↓↓
Android 模塊
主要問的一些問題
1, Activity,Service,BrocastReceiver,Intent,Fragemnet,ContentProvider,這些組件的基礎知識,比如Activity兩種啟動方式,生命周期,四種啟動模式,Service則主要是:兩種啟動方式,生命周期,還有組件之間怎么通信之類的問題,
2, Android的資料存盤方式,資料庫,sd卡,SharedPreferences 這些
3, Listview的優化,與scollview的區別
4, view狀態與重繪,view的繪制程序,view的事件分發機制,view的事件沖突處理
5, Android多執行緒異步機制,AsyncTask作業原理與原始碼實作,Handler,Message,Looper異步實作機制與原始碼分析
6, Android常見的開源框架(主要是網路通信,圖片加載這些),了解怎么使用,分析原始碼
7, Oom和anr例外引發的原因,怎么解決
8, 了解一些常見的圖片快取技術
Android常問知識點答案和決議整理
1、高級UI晉升
- 觸摸事件分發機制
- View渲染機制
- 常用View
- 布局ViewGroup
- 自定義View實戰

2、Android組件內核
- Activity呼叫堆疊
- Fragment管理與內核
- Service內核原理
- 內核之組件間通信方案
- 組件間通信方案

3、大型專案必備IPC
- Binder 原理機制
- 其他 IPC 方式
- ……
4、資料持久化
- Android檔案系統
- 輕量級Kv持久化
- 嵌入式資料庫 SQLite
- ……
5、Framework內核決議
內容較多,都以PDF的格式整理成檔案了,大家可以通過掃描下方二維碼,備注【
面試】直接找我獲取,
↓↓↓↓↓
計算機網路模塊
書籍推薦:
《計算機網路自頂向下》
《tcp/ip協議詳解》
主要看:主要看應用層,傳輸層,網路層,其中傳輸層最為重要,
主要問的一些問題:
1, TCP和UDP的區別
2, TCP的三次握手,和四次揮手,為什么需要三次握手,為什么要四次揮手(這兩個為什么要考慮非常清楚)
3, TCP擁塞控制演算法(慢啟動,擁塞避免,快速恢復),流量控制演算法,滑動視窗協議,選擇重傳,
4, TCP可靠性是怎么保證的(通過哪些機制保證)?
5, HTTP協議報文格式,請求方法欄位以及各個方法之間的區別,了解常見的回應狀態碼,了解cookie機制,了解WEB快取技術(條件get方法),
6, DNS協議的各層域名服務器,兩種查詢方式(遞回和迭代),dns快取
7, Udp的特點,適用場景,校驗機制
8, 從輸入一個網址到最后網頁顯示整個程序發生了什么?
9, IP地址組成,ARR,RARP,ICMP協議,路由選擇演算法
三、一大把面經
1. 探探
是通過脈脈上網紅馬映怡推薦的,馬映怡之前在位元組跳動,今年4月份到了探探,在脈脈找到了我,正好我有出去看看的意向,就約了時間去面試,探探的辦公環境還是比較好的,
一面
OpenGL一些知識,頂點著色器、片元著色器的作業原理,什么是VBO(這個沒想起來),以及shader的一些簡單問題
View的事件傳遞機制
包體積優化
JVM相關知識,Dalvik和ART的區別
組件化的實作方案
演算法題,ViewGroup的層級深度,轉換為二叉樹的層級深度
二面
二面面試官,比較注重思維,我理解為聰不聰明的意思,有點腦筋急轉彎的意思,要求的最簡單有效的方法,
RecyclerView防止記憶體OOM的一道題,充分利用自身的快取機制,可能我始終沒理解問題所在,雖然給出解決方案,但是面試官不滿意,太繁瑣
討論LRUcache的實作和時間復雜度
三面
cto面試
聊了一下抖音發展的程序中我的角色,做過什么事情,有什么收益
在華為的一些經歷,為什么離開華為
聊了一到演算法題,查找兩個字串的交集和字串1中有字串2中沒有的問題,
四面(不是一天)
這次主要是聊一下我將要做的作業,以及讓其他面試官再次了解一下我,因為評級比較高,所以需要謹慎點,
總結
整體來說探探發展還是不錯,尤其近兩年要上市,環境也不錯,管三餐,加班不嚴重,雙休,工資也給力,但是也是由于近兩年要上市,所以要做的東西還是比較多和急,需要你有一定的能力,
2. 快陪練
快陪練整體的環境并不是很好,環境很嘈雜,而且我是在門口面試的,很亂,
一面
MVC、MVP和MVVM的原理和區別
設計的六大基礎原則
使用UML畫一下訪問者設計模式
二面
先聊了聊為什么離開現在公司,畢竟現在這么火
我做的專案中的一些解決方案,組件化、位元組碼注入、包體積的極致優化
直播的架構設計
三面
設計一個上傳日志的大小,涉及到,性能、檔案大小、怎樣壓縮、時機、TopK問題等
聊了聊在位元組跳動做的事情
總結
是一家創業公司,給的薪資還是挺不錯的,但是由于是996,沒有加班工資,多出來的錢可能就是加班工資吧,后面聽hr說公司正在打算取消996
3. 猿輔導
猿輔導面試應該是有硬性的時間指標,應該是每一輪面試都要差不多1個小時,并且會出1~2道演算法題,
一面
主要聊了下面幾個方面
熱修復,主要說了ClassLoader的方式和Rubost的插裝方式,重點介紹了Rubost的原理,
實作直播禮物的一些技術選型,和播放帶有alpha通道MP4的解決方案
怎么實作位元組碼注入
抖音組件的探索,SPI到位元組碼注入,優缺點,
接下來就是兩道演算法題
String字串的數字相加
使用三個執行緒順序列印有序的陣列
提問環節
二面
包體積優化:靜態Lint,Proguard,AndResGuard和洗掉R.java中的所有欄位,洗掉access$方法,在gradle的transform階段將壓縮png和jpeg,使用google開源的redex方案,每種方案的原理以及優缺點
MVVM-livedata的實作原理
屬性影片的原理,這里沒看過,不太清楚
Kotlin寫一個let的擴展函式,大體寫了一下代碼,
演算法,可能是我寫的太慢了,所以就只有一道
給定一個有序的陣列和目標數,找出與目標數最近接的index,要求復雜度是log(n)的時間復雜度
三面
三面就比較輕松了,面試官一直樂呵呵的,又問了一下alpha視頻的解決方案,然后聊了聊為什么要離開這么火的專案,問了問我的經歷之類的,最后寫了兩道演算法題
二叉樹的深度和廣度,要求一次遍歷
給定一個二叉樹和一個目標數,在二叉樹中是否存在一條路徑的所有節點的和與目標數是相同的case,并且列印,
總結
效率并不是很高,而且并不主動,可能是跟我要的薪水太高有關系,后面通過詢問才知道,技術面試是通過了,可能位元組跳動本來薪水就很高,我再跳過來,猿輔導考慮到我的作業年限和年齡,會倒掛一大批人,所以只能平薪過來,而且這樣知道我肯定不會來,就沒主動跟我說,
整個面試環節總體來說還可以,但是就是效率不高,也可能是我運氣不好,我是4:10到猿輔導的,然后在前臺等了20所分鐘,hr才來,說了剛才在電話會議耽誤了,這個理解,然后等待面試又等了10多分鐘,來了server的面試童鞋,寫了道演算法題,重新調整到Android面試,又等了15分鐘,真正Android面試開始在5:10左右,面試完成后基本到了8:30了,
對自己的表現基本滿意,就是好久不手寫代碼,有點生疏,寫的比較慢,大多數問題和答案都得到了面試的認可,對一些知識點沒有復習到,其實我是這樣認為的,并不是所有的問題或者知識都需要知道,你只需要有1~2個方面了解的很透徹,得到面試官的認可就行,
4. 抖音
一面
在抖音上顯示自己做的功能,框架的搭建,實作原理,所做的優化點等,
組件化的實作,為什么做組件化,不同實作的優缺點,
hashmap的實作原理
view的優化,減少層級,異步加載,x2c框架引入,優缺點,textview的優化,
mp4播放alpha視頻實作的原理
一面面試官大概聊了1個小時左右,沒讓我寫演算法,細究原理和細節,非常仔細,
二面
冷啟優化的一些方案,
資料驅動業務的理解,怎么做,和pm產生分歧怎么解決,
我所有做的優化的收益是什么,有什么資料支撐,
事件分發機制,舉了一個具體的例子來解決,
http的一些問題,1.1和2.0區別,心跳機制,https怎么建立鏈接,怎么進行資料加密等,
為什么離開,職業發展,訴求等,
聊了大概一個小時,面試官的思路相對獨特,不是為做技術而做技術,技術始終要服務于業務,我非常認可,
總結
趣頭條北京位于海淀,位置不靠近地鐵,需要步行一段時間,不過效率挺高的,在面試完的第二天就給我發offer了,面試流程也相對較少,對趣頭條的營收模式看的不是很清楚,類似發錢看新聞,但是現在頭條也再做這個,趣頭條能夠搞得過頭條是個問題,如果沒有增長點,那后期的轉型是什么(我瞎操心啥)?總體來說體驗還是不錯的,hr也很真誠,多次溝通,雖然最后我沒有去,感興趣的同學可以去看看,
5. 瓜子二手車
瓜子二手車真的是太遠了,從海淀到作業地方將近花費了2個小時,而且還不在地鐵附近,還需要坐公交,
一面
聊了一下專案中做過的東西,位元組碼注入相關知識,transform優化,mp4禮物實作等
從桌面點擊icon圖示開始,整個啟動activity的啟動程序
Binder的實作原理
插件化的原理,以及hook點,大概有兩個,可以網上搜索一下
hashmap的實作原理
單例的實作,sychrnized的實作原理,以及雙鎖不加violate,會不會有執行緒安全問題
二叉樹,讀取每一層最右邊的節點
二面
聊聊大概履歷,以及在華為、位元組跳動都做了什么,為什么要離開,
職業規劃,怎么帶領團隊
代碼設計的基礎原則,以及用UML畫出工廠模式
將兩個有序的鏈表合并成一個有序的鏈表,遞回和回圈兩中方式
時間分發機制,并且需要從Android的sensor開始到應用層,我只知道從Activity開始的流程,
聊作業系統Unix,汗顏,我知之甚少,
對新技術的看法(flutter),瓜子二手車也已經開始在專案中使用fultter相關技術
三面(總監)
自我介紹,為什么要離開
執行緒安全的問題,sychronized和viloated的使用
實作一個CAS(樂觀鎖)的方法
HashMap的實作原理,怎么優化記憶體占用,優化resize的程序,這個是開放的問題
四面(VP?)
自我介紹,在抖音做了什么
在抖音做的比較好的兩件事情
設計一個美團的框架,組件化
總結
瓜子二手車是眾多二手車中做的還算比較好的公司,現在像優信、人人二手車好像都不是很好了,就是太遠了,公司附近也沒有地鐵站,就算是公交站還需要走2公里,但是面試官感徑訓是比較有水平的,后期的hr跟我談也是誠意滿滿,整個團隊在我來看,還是一個想做事情的態度,總體來說hr還是非常真誠的,想去的朋友可以考慮考慮,
6. 小紅書
小紅書的裝修真是豪,辦公環境特別棒,但是面試流程有點多,足足面了5輪,不過總體來說技識訓是很不錯的,不論是廣度還是深度,尤其最后一面,專門從上海飛來面試,十分榮幸,從這點就能看出公司對人才的重視程度,是一個值得加入的公司,hr小姐姐人美也真誠,
7. 餓了么
總體來說面試體驗還是不錯的,三面面試官對于職業發展和新技術的見解都是非常深刻,也給與了我很多建議,
8. 愛奇藝
這次面試的是奇異果,并不是愛奇藝app,因為我還是想做app,二面之后,我就跟面試官說了我的想法,就沒必要聊下去了,就直接走了,
9. 快手
總體來說面試官的技識訓是很厲害的,二面面試官的背景很好,思路也獨特,有點外企風格,三面面試官比較注重演算法,和解決問題的思路,整個面試流程真的是不太友好,三次面試去了三次,而且前兩次都是在茶水間,一直說會議室訂不到,環境特別嘈雜,而且前兩次都是臨近飯點,茶水間送飯更是雜亂,感覺快手效率和環境有一些混亂(個人面試感覺),但是不能否認快手在2018年的成績還是很好的,尤其是直播的營識訓是相當的不錯,
10. 右劃
右劃真的是一家非常不錯的公司,有一件事情就體現了整個公司的價值觀:由于我當天去公司接待的人比較多,二面和三面中間大概有兩個小時的空檔,我其實挺不滿意的,跟hr反饋了這個事情,hr立馬就跟我解釋了事情的原因,并且立馬跟我道歉了,后面cto還專門為這個事情跟我說了原因,
雖然后面沒有去這個公司,但是我還是很欣賞的,從公司層面,公司的定位很明確,而且有自己的核心技術,從個人來看,公司也是非常人性化,管三餐有房補而且有問題及時改正,我覺得大家可以來看看,
HR面總結
在大多數互聯網公司內(除了外企),到了HR面,基本上已經定下來,正常的聊聊就能發offer了,只要別太“個性”,或者三觀異于常人就能收到offer,大體就是一個積極樂觀的態度,有幾點需要注意下:
- 不要說前公司和前leader的壞話
- 對于為什么離開原公司,標準答案是目前公司不適合現有的自身發展,尋求更好的機會,(當然大部分都是因為錢 心知肚明就行,不用說出來)
- 展現自己積極樂觀和樂于助人的一面
注意以上幾點大體就沒問題了,
最后
碼字不易,希望大家點贊支持一下,
PS:文中資料都是免費分享的,直接掃碼找我就行啦~ 記得給本文三連支持哦~

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/300512.html
標籤:其他

