記一次中秋先後的Android面試經歷

前言

入職如今就任的公司到如今已經有一年半的時間,由於一直據說這2年互聯網的大經濟形勢很差,因此中秋先後萌生了出去看看機會,若是有合適機會能夠考慮一下的想法。從月初準備到月末決定暫時不離職,打算分享一下本身的心路歷程。php

面試前,寫了一份本身的簡歷。大體按照本身的基本信息、職業經歷、項目經歷、技能來寫。重點突出本身遇到的問題和解決手段。 接下來,是準備了一些知識點,大類上分爲java

  • Java
  • Android
  • 常見的計算機基礎

Java重點準備了一些多線程、concurrent  package以及JVM相關的內容,Android主要根據四大組件,UI,質量,性能,工程化幾個角度複習。基礎知識的話複習了一些常見的數據結構、算法和網絡知識。畫了腦圖,而後進行了整理。android

關於項目,總結和準備了幾個比較熟悉和拿手的東西。我我的的話是ios

  • Android組件化,分倉庫,基於ARouter的路由SDK的重構的項目經歷、
  • 路由庫apt 代碼和設計,文檔和自動測試的中後臺
  • Flutter的技術預研,相關的混合開發、基礎設施的落地

而後就出去面試了,一開始個人思路是挑幾個規模不大,數百人的公司進行練手。而後再面試一些規模比較大或者告訴發展期技術氛圍比較好的公司。c++

目前接觸過的有:阿里icbu,阿里大文娛,塗鴉智能,個推,哈囉出行,快手,學海教育面試

通過

先是脈脈上遇到了學海教育的 hrd 要了個人簡歷,我以爲行業和規模都和我如今公司差很少,就去嘗試試了一下。面試一共三輪,2輪技術+一輪hr,最後個人預期薪資太高匹配不了他們能給的2年經驗的工程師的薪資。就沒有繼續聊了。技術面是一輪隨機的基礎題目加上和技術leader的各類瞎聊。算法

一面的基礎問題基本是安全

  • Activity的啓動涉及哪些進程
  • 主線程的Looper是在哪裏啓動的,子線程如何啓動一個Looper,HandlerThread的原理
  • 重繪和requestLayout的區別
  • 如何攔截一個ScrollView的觸摸事件。
  • 如何實現一個三級嵌套的列表
  • 虛擬機如何判斷對象是否能夠回收,哪些對象能夠做爲 GC Root
  • 有哪些性能優化經驗

面試題比較基礎,基本平時認真複習背背題就能答出來。性能優化

二面主要是聊了項目,平時研究和工做的方向,方式,思考。微信

面完這個公司以後感受小公司的面試題仍是表現不出什麼人的真實能力,因而準備多準備一下。可是在 Boss 直聘上遇到了 塗鴉智能 要簡歷,而後很巧的是發現找我要簡歷的是在 yz 同組的一個 Android 同事,想着機會不錯就直接給了簡歷。這裏說一下塗鴉的公司背景,塗鴉的創始人是浙大的畢業生,早年搞了一個國內很大的php社區,被阿里所有收了,成了阿里雲的第一個業務團隊。創始人的背景仍是很厲害的。IOT的海外業務也擴展的不錯,前段時間還看到新聞給美國的部分挖來了一個有16年通用電氣 CEO 經驗的部門主管。仍是頗有前景的一個公司。面試和內部的氛圍感受和杭州多個阿里出身的創業公司比較符合。

塗鴉我只面試了一輪,可能由於是內推就直接現場面了,公司在浙商財富,如今應該搬到了三墩,總體的面試仍是很使人溫馨。前面花了很大的時間介紹本身的項目。時間最多的是路由庫的設計,實現和整個路由中後臺的想法。對我apt怎麼設計的,什麼優點,他本身看獲得的一些功能上的可擴展點會拿出來問我怎麼思考去解決。也穿插了一些ARouter的原理的提問。聊的仍是很是舒服的。感受本身能拿出手說的事情也能夠一直說出來。最後隨便問了我幾個基礎知識,可能由於那時候還準備的不是很充分,在回答的時候仍是有1-2點回答的有點很差。 整體感受面試體驗還能夠。可是沒有被繼續第二面。最後從內推人那裏瞭解到的理由是雖然本身的想法有落地,技術上有成果。可是身上的優點不能抵消本身在學歷背景和工做經歷頻繁跳槽的劣勢。就沒有被繼續面試了。仍是有點惋惜的。

第三家面試的是 個推 。相信移動端開發的同窗對這個公司不會很陌生。這是一家靠推送出名,如今靠大數據生存的業績還不錯的上市公司。地點在西湖區福地創業園,網上看到的消息是在三墩雲谷買了一塊地,在造本身的新大樓。

個推面試了三輪技術+一輪hr面。總體的面試體驗也很是的舒服。感受本身也獲得了不少發揮的空間。

第一輪主要是我本身介紹本身的項目。面試官中間評價了一句以爲我仍是比較有想法的。結合我寫過比較多的SDK的經歷問了一些寫SDK的體會。而後問了一些基礎知識

  • Handler
  • SSL握手過程,抓包原理
  • 對稱加密和非對稱加密
  • 有沒有了解過安全和反編譯。(這裏我是沒了解過的,後面瞭解到個推的SDK對這方面還有比較高的要求,可是面試的時候你沒研究過也不會刁難你)

第二輪是移動端的部門主管面試的,由於個推是一個作SDK轉大數據的公司,因此人思惟不限於一端的方式在個推仍是比較受歡迎的。這個和我在公司思考的一些事情和實踐也比較吻合,因此聊的仍是比較舒服的。後面用很是快的語速提問和讓我回答了一些基礎知識:

  • ssl 握手流程
  • service的生命週期,保活方案
  • Activity在signleinstance的生命週期
  • 若是你是一個公司的技術負責人,設計一個日誌系統你會思考一些什麼。儘量的說

專一於端上的同窗可能會疑惑最後一個問題,可是我很是能理解這個問題。在如今這個公司參與過一些端上日誌收集的工做。對不少事情客戶端一端出發思考出來的方案是不全不合理一廂情願是有很大的感覺的。咱們須要專一端上的細節和疑難雜症,可是不要忘記去關注具體業務和其餘端的視角,知道的越多,咱們能作的決策會更準。 第三輪是研發總監的面試,主要就是聊了項目經歷、職業規劃等

整體個推給個人感受仍是對技術比較有追求,技術思惟比較開放的一家公司。技術理念也很是合我意。後面雖然offer的薪資達不到個人預期。可是把季度獎平攤,結合公積金比例,確實比我如今強了不少。可是手上沒有其餘公司的offer,個推也沒有讓我強烈中意的點,加上最後有對本身的一些工做上的反思。最後我仍是選擇了不離職婉拒了offer。期間個推的 HR小姐姐和移動端負責人也很熱心的幫我分析,給我建議。也很理解個人選擇。仍是很是感謝面試的時候遇到這樣的一家公司和人的。

第四家接觸的就是讓我有很大執念的阿里了。此次阿里我面了2個部門,都是慘敗收場。可是也收穫了很多,也有了下一步的準備方向。

第一個部門是朋友招人幫忙內推的阿里國際,傳說中阿里最奇特的不加班部門。icbu面了2輪。第一輪問的問題主要是:

  • 爲何研究flutter,新技術上的話什麼考慮,有哪些人一塊兒作,其餘人對flutter的觀點是什麼,大家一塊兒共事的時候有沒有過觀念衝突
  • 路由庫作了什麼,怎麼作的,用apt的緣由
  • 下載庫作了什麼,怎麼設計的。你以爲爲何會出現新技術替換老技術的現象。你以爲你的設計被替代的概率多大
  • 日誌庫作了什麼,性能有沒有作過先後對比,若是讓你再作一次,你會怎麼作

而後問了一些基礎問題

  • hashtable和hashmap區別。hash表線程安全的實現是什麼樣?
  • activity的launch mode
  • sp須要注意什麼
  • ssl握手流程,ssl爲何是安全的,怎麼抓https的包,7.0上有什麼變化,怎麼抓,怎麼防止被抓
  • 插入排序的流程、時間複雜度,穩定性
  • android的存儲有哪些
  • java的垃圾回收算法有哪些

基礎知識問的感受比較簡單。本身設想的view原理,binder什麼的都沒問。可是前面幾個對於工做中的思考仍是有點直擊靈魂的。對作一件事的思考能力仍是頗有要求的。

二面就比較尷尬了,後面一個偶然的緣由瞭解到那時候招聘級改爲了 P7,因此被用來走了招聘流程。問了幾個很簡單的問題就草草結束了。比較惋惜。

從icbu的流程出來以後,找以前yz同組在大文娛的同事,確認了他們招p6,可是也被告知2年面p6很難。抱着試試看的態度面了一輪電話。電話是面試官在高鐵上打給個人。簡單聊了下簡歷,就開始了一堆基礎知識的提問

  • 對本身負責的業務的理解
  • 日誌sdk怎麼設計的,上報策略是什麼樣的
  • 項目裏面比較複雜的場景舉例子
  • android ipc有哪幾種,content provider的原理是啥
  • 簡述handler和消息機制
  • view的渲染原理和流程
  • android有哪些動畫類型
  • 簡述網絡架構,tcp三次握手的流程,爲何是三次不是2次
  • http和https的區別,ssl握手的流程,瞭解哪些對稱和非對稱加密算法,是否瞭解數字簽名
  • gc的算法有哪些,什麼過程。java有哪些引用類型,什麼狀況下用軟引用
  • java有哪些鎖,有什麼樣的應用場景

基本上大部分時間都是在面基礎題。感受本身被面試官帶了節奏,沒有發揮出本身的一丁點優點。雖然大部分題也答上來了,可是仍是掛了。反饋是沒有突出優點。

後面還接觸了 快手 和 哈囉出行

快手是北京的部門視頻面試的。由於提早被給了牛客的連接,就總以爲必定要手寫算法掛定了,因此很是緊張。加上本身是第一次視頻面試,感受很是不習慣和緊張。面試官問了比較簡單的題目,結果sb了同樣大腦空白寫不出來。很是的尷尬和惋惜。大概的面試套路也分享一下,可能頭條相似的公司如今也是這個套路?

給了一段Handler# postDelay 的代碼,問GC root的引用鏈。我一會兒腦子短路竟然沒想起來Handler是被匿名內部類引用了Activity致使的泄漏。期間面試官還引導我問我Activity被誰引用了我也沒反應過來。真的是尷尬至極。中途也問了哪些對象能夠做爲gc root,handler怎麼處理delay的時間等問題,仍是比較全的。並且很從實際出發的面試套路。 後面是一個算法題。遞歸反轉鏈表。其實本身知道遞歸是怎麼反轉的。。。可是太緊張了就是寫不出代碼,就差反轉的指針關係沒寫出來。也是尷尬至極。 全程面試表現的很sb。。。浪費了一次大好的機會。

哈囉出行是面試了杭州成立的新部門。全程面試官在拉高本身的姿態。幾乎我說什麼都試圖用我以爲你根本不理解其中原理的態度跟我說話。面試體驗極差,我隨便舉例說幾個 例如:

  • okhttp我說我主要就看了攔截器,知道有線程池可是沒有關心使用線程池的邏輯。可是他一個勁的懟我說ok要看就看線程調度。其餘都不用看。。。
  • 問我arouter和普通跳轉有什麼區別,我說我的經歷以爲動態下發路由表能夠提高動態性。思考了一下說你這也是個思路可是優勢是能夠作統跳。。。我很納悶,intent+scheme也能夠啊。。。
  • 跟我聊Flutter優點,我巴拉巴拉說了一堆優缺點,最後懟我說你沒寫過ios我以爲你不理解跨平臺原理。而後跟我說底層用c++寫的內存和原生佔用差很少。當我面說hotreload不是效率優點最後用「我以爲你不懂」的語氣跟我說他看了一些原理可是沒寫過Flutter。。。

由於本身感受在杭州須要去一次阿里的情節。因此後面就沒有怎麼繼續投遞簡歷了。感受面試阿里仍是頗有收穫的。 對人和技術的要求都很是的高。

總結

經過這些面試,我總結了一些我的的體會做爲觀點。也決定再繼續沉澱一段比較長的時間再出去試試大廠。

  • 關注一些身邊朋友面試的體驗。我的感受如今面試的要求和套路和剛畢業的時候徹底不同。2016年看面經,拿大廠offer的基本是原理、源碼回答的漂亮。如今你回答的再好別人也知道你多是背博客背的,會很看重你在平時工做中的思考和對原理真正的探究和應用。若是你有很好的落地結果或者能教面試官一些細節知識。面試結果會很不同。
  • 準備好本身的自我介紹。找到本身的優點和能夠拿出來講的點。電面能夠提早根據start原則寫下來,直接對着讀給面試官聽。這樣的詳細介紹,便可以佔用時間,也能夠引導面試官掌握主動。我的以爲本身面阿里文娛的時候徹底沒有說出本身的優點項目,被各類基礎知識問。若是基礎知識的原理你沒有直接應用深刻理解過,你是很難給出使人眼前一亮的回答的。我此次面試,工做經歷很簡單的介紹了等着面試官問,結果不多被問到我本身的擅長項目。從這個角度看,我此次是親手把本身推向了被動。
  • 面試的時候要克服不自信的心態,要時刻記得你是和麪試官交流的。要不卑不亢。這點對我來講還不是很容易。視頻面的時候表現糟的令本身不敢相信。遇到辣雞面試官的時候也很木,任由人家漏洞百出的懟。思路也比較木,沒有準備到的東西根本扯不出來,舉個例子,content provider的原理我沒有具體看,可是我知道 1. 四大組件都會跟ams走ipc,2. cp是讀取另外一個app進程的數據。其實這2點稍微思考下就能分析出來而後扯不少。可是我卻木木的說不清楚。這個實際上是很吃虧的,徹底表現不出本身的思考能力。這可能也是不少小夥伴須要提高的能力吧。
  • 不要頻繁跳槽,想清楚本身爲何離職。若是不是公司真的提供不了發揮的環境或者你真的很是缺這點錢,仍是比較建議在這家公司發揮出你最大能發揮的價值再離職。這樣你出去,反而可能會帶着亮點出去。對於年輕人來講,你的亮點無非四點:
  1. 985,211背景
  2. 大廠背景
  3. 項目經歷頗有亮點,在某些點研究、實踐、落地、思考的很深刻。
  4. 開源項目

大部分人可能和我同樣沒有1和2。那麼若是你作不到3和4的其中一點,只是會跟網上的面經同樣幹扯源碼扯原理,仍是很難收穫滿意的offer的。

請關注個人微信公衆號 【半行代碼】

相關文章
相關標籤/搜索