作者:Kenber
連結:https://www.jianshu.com/p/73e539f0d6e4
最近加入了 ByteDance(位元組跳動) 某“Awesome”部門(具體保密,想猜的話就看這單詞猜吧,下文簡稱Awe),遂一群周遭好友來討要面經;其實自己過去在前東家也負責很多面試工作,對於這種內容猛一想還是保密相對好些,然鵝仔細想想涉及的東西很多是比較針對我所擅長的方向,未必和大多數人都能重合,而那些公共的基礎部分也是目前市場上一個合格的Android工程師所該必備的,所以整個面經分享我還是決定寫出來,只是換個沒那麼直接的方式,更多當成是一篇指導性的文章吧,畢竟面試還是靠硬實力,一篇面經如果真對你的實力有所提升那也算是我為招人企業做了點實在的貢獻,何樂而不為呢?先來個指導性總綱吧:ByteDance的Android面試整體是對計算機本源思想、實戰應用和個人思維、潛力的綜合性考查~打個比方就是:這裡比的更多是內力、是能打出真實傷害的武功祭奠,而非某種視聽上似乎很厲害的招式(這也是很多工程師不經意間欺騙自己的點)~
這確乎是我經歷過的最艱難的面試,引言我也曾提到,我本身就負責過很多面試,而且從我畢業半年後的16年底開始負責面試,實習、校招、社招大大小小近百次面試,也算是曾和一些高手過招,另外由於前公司的高要求面試難度確乎是高於BAT的,我深諳其中難度定級和標的定位,但這次面完“Awe”還是讓我感覺:之前面試難度是定低了呀~當然這感覺很大程度上也是基於其中二面的面試官,他本身的實力、面試風格等確乎讓我鴨梨山大~好了回歸正題,下麵是面經分享(→後為自己的指導性意見):
一面:
因為截至面試時,我只有1年實習+2.58年工作經驗,所以這一面側重考察基本的計算及原理和Android基礎機制,以及對做過專案的個人探索和理解深度;具體涉及的方面如下(有些我感覺隨口就能答上的忘記了- -)吧:
1、自我介紹:
我具體怎麼答的略過,總之註意幾個點:說簡歷上沒有的、有亮點的、跳槽原因等,從各個點上儘力彰顯自己優勢、技術特長
2、手寫程式碼:
計算View樹上所有view的數量,引數ViewGroup,補全空方法傳回view數量→本質就是資料結構多叉樹遞迴層序遍歷+Android View基本api呼叫
3、Android相關:
主執行緒Looper一直迴圈查訊息為何沒卡主執行緒?RecyclerView相對ListView區別?好像還有Bitmap resize相關,就是設定option,然後decode→這裡還有些我基本都是隨口答對的,已然忘了?反正都是中級(或稍偏高階)Android工程師必掌握原理機制~
4、專案相關:
用MultiDex解決何事?其根本原因在於?Dex如何最佳化?主Dex放哪些東西?主Dex和其他Dex呼叫、關聯?Odex最佳化點在於啥?Dalvik和Art虛擬機器區別?多渠道打包如何實現(Flavor、Dimension應用)?從母包生出渠道包實現方法?渠道標識替換原理?
Android打包哪些型別檔案不能混淆?
Retrofit主要實現機制?
動態代理靜態代理區別?
→上面這坨都是從我做過的專案或用過的開源庫引申出的問題,而且挑的都是不太偏業務且技術性強一些的,這其實要求日常在把事兒做成的基礎上還得再多看下原理順帶自己動手探索下,明晰人家每一步是怎麼互相關聯推動直至最終搞定的,而不是加個dependency或copy下別人程式碼就完事兒嘞~
5.
思維、架構:模組化怎麼做的?怎麼設計的?介面發現暴露怎麼做?基於什麼思想?MVC、MVP、MVVM應用和彼此本質區別?
→因為這不是那種確定性答案的問題,只能多實戰+戰後總結並深入思考才能出真知啦,。
二面:
真是要了我半條命,耗時近2小時……
這面上來大概介紹了下自己,然後問了點我用過的東西比如Glide快取特點?隨後:你擅長Android中哪個方向呢?這問題我其實是按Android UI動畫方面和移動端後臺互動方案制定來預想過的,然鵝說完他挑了Android UI,噩夢就開始嘞- -直接他出效果我來想方案做。
第一個問題前他說,這個問題我問過很多人沒幾個能答出來的,你試試?
我:呵呵?
他:你看我這手機上這個launcher裡應用抽屜(就是很多ROM都有的把很多APP管理歸類的二級選單功能)他在這ROM前一版是有個毛玻璃效果背景的,從系統ROM角度說下怎麼做吧?
→這100%是我一點沒做過的,面試官八成也知道,也是很多人在面試裡會遇到的情況,這時候別慌,我們可以從知道的東西里去推,哪怕只把把思路展示出來也OK;比如這個肯定是FrameWork做系統統一渲染那裡要做些事,那系統渲染是誰管呢,SurfaceFlinger呀,它怎麼工作的呢?它哪一步改動一下是不是可能就達到這效果了呢?這種思考過程是一個高工所要必備的,也是需要日常在面對很多問題時要培養自己去練就的思考方法~事實證明,雖然有些細節我確實沒涉及過,但至少思路策略以及知識遷移解決問題能力都得到了面試官的認可~
後面還有的UI相關的依舊是類似這種的兩個大問題:實時的水面倒影效果怎麼做?這裡面實時更新的UI效能如何保證?→我所處情形和思路同上
再到後面是偏UI基礎的考察:Measure、Layout、draw大流程、繪製順序,基於這些說下TagLayout(FlowLayout)怎麼寫?
接著是演演算法題:倆執行緒分別持續列印奇數和偶數,實現倆執行緒的交替列印(從小到大)→計算機作業系統執行緒相關基本題目,你要覺得難只能說明基礎瘸腿,趕緊補吧;作業系統+編譯原理也是我面試別人過程中發現的大多數人的弱項
最後也是模組化、工程架構思想相關更細緻的盤問,確實有些我之前沒意識的問題被問及不過還是老方案:能想出來的就給方案,不能的就給思考過程
三面:
整個Android端負責人面,可能是二面太太要命了,這面相比之下感覺在休息…..
上來還是互相介紹,然後有個演演算法題解決個實際問題,因為我很快用知識遷移的思想把生產者消費者問題的解法用過來,講的也很透徹,手寫程式碼就省了,隨後還是問問偏思想性的東西工程架構、之前提到的介面暴露又老生常談,不過之前答的不太好我突然還是用知識遷移想了個好辦法解決,對方也聽後看似比較滿意;
再然後還是擅長方向,因為二面真是被虐慘了,另外考慮到三面負責人的身份更關註一個人思想性、系統性的東西,所以毫不猶豫說了定移動端架構解決方案、前後臺介面涉及那套,這個應該是很少有面試者會說的一點,我發現我說完面試官眼前放光?
隨即問題就是設計個IM客戶端以及資料庫架構吧,類似微信,偏上層業務部分的會話、聯絡人、通知、公眾號如何存、分幾張表,架構每一層都是啥,互相怎麼互動工作?
還有是提個公司旗下產品做的不好的點,吐槽一下(有理由根據說服對方即可,最好是人難以意識到的點)。最終基本就是瞭解公司情況嘞,全聊完他都沒商量就直接告知hr來跟我談了,到這裡基本可以知道就是穩了,國內公司hr很少有掛掉人的,尤其對於ByteDance這種缺人的地方,移動端又是稀缺中的稀缺~
hr面:
這面就是偏閑聊了,問問跳槽原因、個人愛好、個人職業規劃、目前薪酬、跳槽薪酬要求,福利同步一下;這面稍微註意一個點吧,就是你首先要真誠,然後基於此儘量展示給對方的是你有活力、有上進心、對自己有想法也有期待、對於你來面試的地方也有興趣;你給她的好感會幫助你在定薪過程中讓她為你多多美言,當然主要還得看技術面,但這些小技巧也是有助力的,最終驗證也是符合這點的,總的算起來我的薪資漲幅超過60%,二期要求最高直到40%,另外我還被賦予了選組的權力和期權,我感覺這裡面或多或少都和我展示給hr以及前幾輪面試官的我的精神面貌有關,有些認可是在面試過程中很多小細節(身體姿勢、不經意的點頭、微笑、手勢、話語聲調突變等)能看出來的~
!!!備註下,因為隔得時間略久,有些面試內容和考察點已然忘記的也就沒往上寫,整體的面試題量還是大過上述這些的!!!
最後的最後,再獻上我個人面試別人經驗以及這次被面試經歷的一點要領總結吧:
對於社招,面試技術方向的,除了人工智慧、演演算法那些其他真的不太看重學歷,很多時候大家所認為的學歷敲門磚本質上是企業為了節省面試成本所額外加入的坎,社招更多還是看工作經歷和你的成長,這行業有句老話叫:從不看你起點在哪兒,而是看你能跑多塊,那些還在為這點擔心的更多是你自己還跑得不夠快或跑錯了方向,這是前提;
然後是方法,技術開發無論哪個方向都避不開的是計算機本源原理,有些很簡單的情形就是本源原理的縮影,網路的分層,計算機體系結構上的分功用部件,你可能想過其中的聯絡?
ByteDance相對於BAT使更多高手的聚集地,他們對於這一點和從這點上發散出來的能力的考察只會比BAT有多無少,所以無論是何方向,內力的修煉永遠排在第一位,具體的方向指示以一種具體招式將內力轉化為傷害輸出出來,很多人認為基礎便是內力,其實也不全是,基礎很多時候是那些死的知識,這些只是修煉內力的原料,要練成得把他們活用起來轉化自己認識其他內容的基礎、形成適用於自己修煉、探尋、思考的方法論,以一種獨有的方式把這套知識體系灌輸於自身,才能算是真正的內力,待你練成這點,哪怕真的遇見功力更深厚的高手依舊能應對自如,正如我二面遇到的面試官,HR和我介紹說他在Android領域的深度和廣度在北京能排上前幾名,現在他是我的leader?
最後的最後之後,附上我的內推連線:https://job.toutiao.com/2018/spring_referral/?token=gWo%2BdqyTjUlhrquILH%2By%2Bw%3D%3D&key;=MzI0ODUsMjUyMjQsMjUxNDQsMzE5OTAsMTEzNDY%3D&from;=singlemessage
主推北京Android基礎技術方向,其他地區、技術方向基本均有~
朋友會在“發現-看一看”看到你“在看”的內容