天天看點

最強整理:對Android開發的現狀和未來發展的思考,算法太TM重要了

基本情況

先說一下個人基本情況,計算機科學與技術專業。主要學的Android開發,是以投的崗位都是Android開發工程師。投了知乎,内推了阿裡蘑菇街騰訊百度網易。騰訊百度都沒有收到面試,知乎Skype面試,蘑菇街阿裡電話面試,網易現場面。知乎二面被拒,蘑菇街阿裡一面被拒,網易三面,然後備胎了,前幾天被通知過了,收到了offer。自己整理了一下被問到的問題,現在分享給大家,另外自己整理的一下資料也會發給大家,希望能幫助到各位求職的小夥伴。

一面(104min)

  • 自我介紹。
  • 線程和程序的差別。
  • 線程安全。面試官追問是否了解volite關鍵字,小金忘了沒回答出來。面試官追問是否了解自旋鎖,樂觀鎖,悲觀鎖等,小金回答了解但是沒用過。
  • http是用什麼實作的。
  • TCP和UDP的差別。
  • TCP為什麼是可靠的。注意擁塞機制涉及的算法(慢開始,擁塞避難,快重傳,快恢複)。
  • Get請求和Post請求的差別。注意Get請求比Post請求效率高,Post請求需要伺服器傳回100再發送資料處理,Get請求直接是通過URL。面試官追問是否知道其他請求方式,Put,Delete,Head。
  • 項目中詢問一個 A Activity 跳到一個 B Activity中,生命周期的走動,點選Back傳回呢。如果一個 A Activity是透明的呢?如果 B Activity是一個Dialog呢?面試官追問橫豎屏切換生命周期走動,以及是否了解onConfigurationChanged。
  • HashMap的源碼,擴容的條件。
  • 算法兩道,一道是和并兩個有序連結清單,小金用的歸并排序合并過程的思路寫的(長時間用IDE,好多錯誤,但是面試官很有耐心幫我糾錯)。一道是思路,将一段文本中的單詞逆序輸出,主要考察資料結構的知識,用到了棧和隊列。
  • 詢問小金的基本情況,實習時間等。
  • 反問環節:其實沒問,面試官建議小金對常見的知識做深一步的了解,多看源碼,多用記事本寫代碼,多看看基本的資料結構和算法。
    最強整理:對Android開發的現狀和未來發展的思考,算法太TM重要了

二面(57min)

  • 自我介紹。
  • Android靜态庫和動态庫的差別。
  • Android中Binder機制。
  • Android程序間的通信。
  • 說說自旋鎖,内部實作。
  • 問了線程同步,小金又說了sychroized,還是參考那篇部落格。
  • 是否了解Java的atomic,以及好多很底層的東西,記不清了,大部分都沒有回答出來。
  • 算法題:求解矩形起點到終點的最短路徑,隻能向右或者向下走,這是一道簡單的動态規劃題。
  • 詢問小金的基本情況,實習時間等。
  • 反問環節:詢問小金想要加入還需要提升那部分的知識,面試官建議多參加實際的項目。
    最強整理:對Android開發的現狀和未來發展的思考,算法太TM重要了

三面(40min)

  • 自我介紹。
  • 項目中出現的難處以及解決。小金說的是使用addView達到彈出框的效果,但是耗時長。後來了解Fragment,使用Fragment代替addView。面試官追問能分析為什麼這麼慢嗎,小金就說了Android的Activity->PhoneWindow->DecorView->ContentView->WindowManager->RootViewImpl的繪制流程。面試官繼續追問ANR出現的類型,原因以及排查的方式。面試官繼續追問Fragment和Activity的差別以及Fragment的優點。
  • 說一下Android中多線程使用方式。面試官追問如何停止一個線程。
  • Handler的原理。Looper,MessageQueue,Message。面試官追問在一個Handler中給另一個Handler發送消息,小金其實沒太了解。
  • Java記憶體,回收的搜尋算法:引用計數和根搜尋算法。
  • 算法題:将一個32位的int型整數逆序,小金用的取整加取餘擷取每一位儲存在連結清單中,然後反轉連結清單。
  • 詢問小金的基本情況,實習時間,職業規劃等。
    最強整理:對Android開發的現狀和未來發展的思考,算法太TM重要了

Hr面(20min)

  • 自我介紹。
  • 詢問小金的基本情況,實習時間,職業規劃等。
  • 給了口頭Offer。

最後

如果你看到了這裡,覺得文章寫得不錯就給個贊呗?如果你覺得那裡值得改進的,請給我留言。一定會認真查詢,修正不足。謝謝。

最強整理:對Android開發的現狀和未來發展的思考,算法太TM重要了
最後針對Android程式員,我這邊給大家整理了一些資料,包括不限于進階UI、性能優化、移動架構師、NDK、混合式開發(ReactNative+Weex)微信小程式、Flutter等全方面的Android進階實踐技術;希望能幫助到大家,也節省大家在網上搜尋資料的時間來學習,也可以分享動态給身邊好友一起學習!
需要資料的朋友可以點選我的GitHub免費領取