前言
6.12日早上電話突擊面試,當時我還在睡覺,迷糊中接到了電話,一開始以為他只是和我確認時間,沒想到問完資訊之后直接開始問問題了,我當時沒反應過來,說我現在不太方便,等20分鐘再電話面的,我沒想到這居然就是一面
面完就約了16號的二面視頻面,面完等了幾天接到了21號的三面電話面通知,然后22號接到了23號hr面的通知,面完之后3天后也就是26號接到了oc
以下是我被問到的絕大部分問題,有那么幾個實在想不起來了,不分先后
android基礎:
- activity的生命周期
- activity的啟動模式
- service的生命周期
- android行程和執行緒的關系
- android行程間的通信方式
- Handler機制簡述,作用,要素,流程
- Handler中訊息佇列為空時會發生什么情況
- looper,訊息佇列,handler的數量對應關系,為什么
- 訊息佇列delay之后會發什么
- 記憶體泄露是什么,為什么會發生,常見的記憶體泄露的例子,怎么解決
- 記憶體泄露和記憶體溢位的區別,什么會導致記憶體溢位
- 什么是ANR?什么情況會發生?如何避免?怎樣定位?
- 設計模式,體現在android的哪些地方
java基礎:
- Hashmap各種,基本都問到了
- Arraylist和linkedlist
- 行程和執行緒的關系
- 行程間通信方式
- 執行緒間通信方式
- 死鎖
- 實作執行緒安全的方式
- synchronized關鍵字,底層,使用方式
- synchronized和lock的區別
- volatile和synchronized的區別
- jvm結構,作用,各存放了什么資料
- 運行時常量池
- 講講對gc的理解
- 4種參考,強軟弱虛
- gc演算法,分代策略
- 介紹下cms收集器(g1)
- 類加載程序
- 雙親委派模型介紹,原理,好處
網路:
- 三次握手,四次揮手
- tcp和udp的區別,傳輸資料時的區別,怎么傳輸
- tcp可靠性
- 滑動視窗,流量控制,擁塞控制(4種方法)
- 輸入url到顯示主頁的程序(基本每面都問)
- http和https
- https資料傳輸加密程序(基本每面都問)
- 什么是網路位元組序,為什么可以保證在傳輸時能夠被正確解釋
演算法:
- 海量資料topk問題,要詳細講(小根堆怎么實作的,快排怎么實作的)
- 十進制轉十六進制
- 輸入一篇文章,再輸入若干關鍵詞,輸出這些關鍵詞至少都出現了一次的最小范圍
最后:
強烈建議多看原始碼,特別是比較關鍵的,很多問題都是從原始碼里摳出來的,比如handler,,,
因為有兩面都是電話面,所以代碼實作基本集中在視頻面,3面是讓口述的演算法,要詳細原理實作的那種
其他的我覺得都算ok,面試官挺好的,特別是3面面試官,我當時還調侃他騰訊雙休咋你還是周日面試的呢
自己也看了很多別人的面經,特別是海量資料topk問題,3面前看到一個面經有提到,然后去了解了下,3面真被問到了,不然就撲街了,所以也把自己的面經和學習方法分享出來,給后來人留點有用的東西
祝愿大家都能順利通過面試,拿到理想的offer
學習:
-
讀懂原始碼和原理,自己也能寫;
-
一定要通過爛筆頭記錄下來,比如博客;
-
不斷完善自己的知識體系,要有廣度,而且在某些方面還要有深度;
-
通過實戰不斷磨練
以下是我學習的資料,供大家參考,有需要的可以在文末文末免費領取
1.2020大廠面試高頻知識點
- 圖片
- 網路和安全機制
- 資料庫
- 插件化、模塊化、組件化、熱修復、增量更新、Gradle
- 架構設計和設計模式
- 性能優化
- Android Framework
- Android優秀三方庫原始碼

2.Jetpack架構組件從入門到精通
- Android Jetpack - Navigation
- Android Jetpack - Data Binding
- Android Jetpack - ViewModel & LiveData
- Android Jetpack - Room
- Android Jetpack - Paging
- Android Jetpack - WorkManger
- Android Jetpack架構組件之Lifecycle
- Android Jetpack Compose 最全上手指南

3.Framework精編內核決議
主要內容包含:
- 深入決議Binder
- 深入決議Handler
- Dalvik VM 行程系統
- 深入決議 WMS
- PackagerManagerService

4.Kotlin強化實戰(附Demo)
- 第一章 Kotlin入門教程
- 第二章 Kotlin 實戰避坑指南
- 第三章 專案實戰《Kotlin Jetpack 實戰》
- 從一個膜拜大神的 Demo 開始
Kotlin 寫 Gradle 腳本是一種什么體驗?
Kotlin 編程的三重境界
Kotlin 高階函式
Kotlin 泛型
Kotlin 擴展
Kotlin 委托
協程“不為人知”的除錯技巧
圖解協程:suspend

5.Android設計思想解讀開源框架
- 熱修復
- 插件化
-組件化框架設計 - 圖片加載框架
- 網路請求框架
- RXJava 回應式編程框架設計
- IOC 架構設計
- Android架構組件Jetpack

6.NDK模塊開發
- NDK 模塊開發
- JNI 模塊
- Native 開發工具
- Linux 編程
- 底層圖片處理
- 音視頻開發
- 機器學習

7.Android原始碼決議
“編程語言是程式員的表達的方式,而架構是程式員對世界的認知”,所以,程式員要想快速認知并學習架構,讀原始碼是必不可少的,閱讀原始碼,是解決問題 + 理解事物,更重要的:看到原始碼背后的想法;程式員說:讀萬行原始碼,行萬種實踐,
主要內含微信 MMKV 原始碼、AsyncTask 原始碼、Volley 原始碼、Retrofit原始碼、OkHttp 原始碼等等,

以上這些內容均免費分享給大家,需要完整版的朋友,點這里可以看到全部內容,或者點擊 【這里】 查看獲取方式,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293361.html
標籤:其他
上一篇:資料結構C語言實作動態順序表
