天天看點

深度剖析原理!阿裡巴巴Android面試都問些什麼?積累總結面試經驗阿裡巴巴攜程鬥魚位元組跳動騰訊

開頭

相信大多數網際網路的從業者都有着這樣一個夢想:進大廠,獲得豐厚的薪酬,和更優秀的人一起共事,在技術上獲得更快的成長。

**然而部分人其實一直都陷入了“窮忙”的困局,覺得自己每天白天黑夜都在工作,高強度輸出,但是卻并沒有獲得機會的眷顧。**久而久之,既不知道自己忙什麼,也不知道怎麼能停下來。

這并不是時間的過錯,而是因為把解決方式過多押注在技術上,然後繼續在工作上不斷循環,這樣的狀态讓你極度缺少另一個層面的思考。

如何去打破這種僵局呢?很多人建議多讀書,但是從哪種類型的書開始看又該看誰的書呢?說實話,很多技術書寫到最後大同小異。但是萬變不離其宗,源代碼以及參考手冊需要多些鑽研,紮根底層是程式員應有的素養。

現在網際網路訊息如此便捷,學習資料從來不缺。硬碟裡都是各種學習資源,上下班坐地鐵,還要刷技術視訊。但是泛看不如精看、精讀。

這裡我總結了一些Android核心知識點,以及一些最新的大廠面試題、知識腦圖和視訊資料解析。

需要的**小夥伴私信【學習】**我免費分享給你,以後的路也希望我們能一起走下去。

面試經驗

自己大大小小投了也有20多家公司,不過經曆履歷篩選以及筆試淘汰,最終就經曆了7家公司的面試。下面我就把自己面試中問到的問題貼出來供大家參考,一些具體項目相關的就不貼了。

阿裡巴巴

阿裡是3月初開始投的,是自己第一次面試大型的網際網路公司,當時自己的準備也不夠充分,表現不是很好,經曆了三次技術面,最後挂了。

一面

  1. 自我介紹
  2. hashmap和hashtable
  3. jdbc
  4. 三次握手
  5. http狀态碼
  6. HTTPS加密:對稱,非對稱,CA憑證
  7. handler
  8. 線程池的使用
  9. sychonized,volatile
  10. binder
  11. activity繪制流程
  12. 事件響應流程
  13. activity周期,啟動模式

二面

  1. 自我介紹
  2. 對自己項目的介紹,架構圖呈現
  3. 對MVP和MVVM的了解。
  4. 四大啟動模式,以及場景對應
  5. Handler的機制介紹,為什麼不能在子線程初始化問題
  6. 設計模式中的單例介紹,使用場景(Okhttp的Seesion存儲等等),線上編寫
  7. 快排算法
  8. OkHttp的源碼分析,及整體架構的流程圖繪制
  9. 四大引用的問題和MVP架構相結合進行回答
  10. View繪制流程問題,如何不使用xml,來實作中間位置的定位
  11. 事件分發機制流程講解,以及如何實作單擊事件和長按事件的判定
  12. 關于為什麼選用mqtt協定的問題,優勢,原理

三面

  1. 自我介紹
  2. abstract和interface差別
  3. int和Integer差別
  4. 四種引用
  5. Java裡面int、char、long的位元組數
  6. 線程的建立方式
  7. RxJava的優缺點
  8. EventBus
  9. 從網絡上加載一個10M的圖檔,要考慮哪些
  10. http與https
  11. http 1.0 和 http 2.0之間的差別
  12. 設計模式準則
  13. Handler機制
  14. 算法:判斷一個連結清單是否回文算法,給定一個數組,将數組裡面的每一位向後移動k位

攜程

攜程當時投的時候就沒抱希望,招聘資訊上明确指定隻招固定的那幾所985高校,就随便投了,沒想到筆試都沒做就直接打電話面試了,不過問的問題确實很深入,結果顯然,一面就挂了。

一面

  1. 集合
  2. concurrenthashmap
  3. volatile
  4. synchronized與Lock
  5. Java線程池
  6. wait/notify
  7. NIO
  8. 垃圾收集器
  9. Activity生命周期
  10. AlertDialog,popupWindow,Activity差別

鬥魚

鬥魚是一家直播公司,給出的實習待遇是相當好,經室友推薦就投了履歷。最後流程走完,得知挂在了二面上,大概原因就是沒有拿得出手的項目,實際項目經驗不足。

一面

  1. 線程同步(五個線程如何順序執行)
  2. GC
  3. 内部類特點
  4. 四大引用範式
  5. 建立線程的方式(三個)
  6. arraylist和linkedlist
  7. 線程池(使用,種類,參數)
  8. hashmap(底層實作,沖突解決方式,擴容方式,線程安全?LinkedHashmap)
  9. 自定義VIew(View的繪制,自定義View的方法)
  10. 性能優化(布局和代碼)
  11. sp、dp和px的差別(适配問題)
  12. handler(基本原理,ThreadLocal原理和使用)
  13. 四大元件(問了生命周期和特點和基本使用)* 計網
  14. TCP和UDP
  15. HTTP建立過程

二面

  1. 問的都是一些項目問題,比較寬泛,沒問具體技術點

位元組跳動

位元組跳動是在三月底投的,當時找了一個月,都沒拿到拿得出手的offer,有點心煩意亂,就又海投了一波。3.24接了位元組跳動的面試,3.29進行的視訊面試。一共進行了3輪視訊面試,位元組的面試官很好,看得出來位元組的技術是很強的,也很注重算法。最終拿到offer。

一面

  1. 資料結構中堆的概念,堆排序
  2. 死鎖的概念,怎麼避免死鎖
  3. ReentrantLock
  4. synchronized
  5. volatile
  6. HashMap
  7. singleTask啟動模式
  8. 用到的一些開源架構,介紹一個看過源碼的,内部實作過程。
  9. 消息機制實作

二面

  1. synchronized與ReentrantLock
  2. ReentrantLock的内部實作
  3. 用到的一些開源架構,介紹一個看過源碼的,内部實作過程。
  4. Java中異常
  5. App啟動崩潰異常捕捉
  6. 事件傳遞機制的介紹
  7. ListView的優化
  8. 今日頭條推薦新聞去重,推薦的時候去掉使用者已經看過的新聞。
  9. 二叉樹,給出根節點和目标節點,找出從根節點到目标節點的路徑。手寫算法
  10. 模式MVP,MVC介紹
  11. 斷點續傳的實作

三面

  1. 集合的接口和具體實作類,介紹
  2. TreeMap具體實作
  3. synchronized與ReentrantLock
  4. 手寫生産者/消費者模式
  5. 邏輯位址與實體位址,為什麼使用邏輯位址
  6. volatile
  7. 一個無序,不重複數組,輸出N個元素,使得N個元素的和相加為M,給出時間複雜度、空間複雜度。手寫算法
  8. Android程序分類
  9. 前台切換到背景,然後再回到前台,Activity生命周期回調方法。彈出Dialog,生命值周期回調方法。
  10. Activity的啟動模式

騰訊

騰訊大家都知道網際網路巨頭,我是通過實習僧上履歷投遞獲得的這次面試機會,一共進行了兩輪電話面試,挂在了二面。

一面

  1. 自我介紹
  2. APP的啟動流程
  3. APP的安裝流程
  4. Rxjava的源碼
  5. 事件分發機制和多點觸控
  6. https和非對稱加密
  7. Retrofit的動态代理
  8. 幾種IPC方式的優劣,以及Binder的原理
  9. 本地持久化儲存的方法
  10. parcelable和serializable

二面

  1. 自我介紹
  2. 筆試題1:删除無序連結清單中的重複結點(能否優化)
  3. 筆試題2:先說一下二叉樹的有哪些周遊方法。寫一個二叉樹前序周遊的非遞歸形式。
  4. 講一下Java的記憶體。
  5. 建立一個字元串對象,這個對象配置設定在哪裡?
  6. String str = “123” + “456”;會建立幾個對象。
  7. 問了作業系統的問題,沒學過,是以也忘了問了什麼。
  8. 資料存儲有學過嗎?資料庫和檔案儲存有什麼差別?
  9. Activity有哪些啟動模式?
  10. 有什麼要問的?

最後

我這裡整理了一份完整的學習思維以及Android開發知識大全PDF,有需要的同學可以自行領取。

深度剖析原理!阿裡巴巴Android面試都問些什麼?積累總結面試經驗阿裡巴巴攜程鬥魚位元組跳動騰訊

資料擷取方式:Android完整知識學習體系路線

當然實踐出真知,即使有了學習線路也要注重實踐,學習過的内容隻有結合實操才算是真正的掌握。

Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**

當然實踐出真知,即使有了學習線路也要注重實踐,學習過的内容隻有結合實操才算是真正的掌握。