
剛開始面試的時候我真的是處處碰壁,面一家掛一家,面完之后懷疑自我,是不是自己真的太菜了找不到作業,作業本身就是雙向選擇,一家不行再換一家,總有合適的,千萬不要因為別人的一句話就全盤否定自己,一定要自信,
下面是面試經歷,分享出來是為了給大家一個借鑒,知道這些一線互聯網企業注重那些技術,自己去面試也好有個準備,千萬別像我,掛了三家公司才知道去準備面試,
快手
一面
-
viewBinding的原理
-
Recycleview滑動怎么優化
-
快取設計
-
一級快取和二級快取的區別
-
LayoutManager原理
-
-
-
繪制
-
onMeasure描述一下
-
onDraw描述一下
-
invalidate一定會呼叫onDraw么
-
-
事件分發
- 事件是由誰分發的
-
fragment
-
銷毀與恢復
-
與Activity的通信
-
-
Activity
-
Activity的生命周期
-
銷毀與恢復
-
-
國際化插件
-
hashmap
-
2^n的原因(有多個原因)
-
擴容
-
-
22反轉鏈表
二面
-
協程原理
-
rxjava原理
-
leakcanary
- 如何分析參考鏈
-
執行緒池
-
給你一堆資料,如何畫曲線?
-
事件分發
-
責任鏈模式
-
汽車加油問題
三面
-
有序無序時洗掉鏈表的重復節點
-
都洗掉
-
保留一個
-
-
如何實作快手和抖音的整屏滑動效果
-
如何讓運營能看懂社區文章
-
專案中的難點(問得很細)比如有沒有遇到什呢難點呀
美團
一面
-
執行緒池原理,幾個引數
- 執行緒池里面的阻塞佇列是什么型別
-
設計模式
- 狀態模式和策略模式的區別
-
sleep和wait的區別
-
android序列化
- Parcelable與Serializable
-
Handler
-
Hashmap
-
深拷貝與淺拷貝
- 如何實作深拷貝
-
sync和Reenterlock
- 遇到例外的區別
-
可重入鎖和不可重入鎖
- funA,funB,funC,funD
-
postInvalidate和Invalidate的區別
- requestLayout
-
兩個有序鏈表合并
-
anr 分類及原理
二面
- 基本都是問的專案
支付寶
一面
-
專案
-
viewmodel原理
-
用了哪些jetpack的東西
-
livedata為何具有生命周期感知能力
二面
-
shareperference如何保證執行緒安全,
-
為什么不是行程安全的
-
如何實作行程安全的
-
-
viewmodel是如何解決記憶體泄漏問題的?能解決么
-
mmkv共享記憶體和binder的區別
-
magic ocr專案
-
有做過多執行緒開發么
-
room如何實作orm的
-
kotlin和java產物一樣么有
-
各種圖片格式的區別
-
如何保證記憶體與檔案的同步
-
開一個執行緒commit,commit不用加鎖么?
-
bitmap
-
怎么確定bitmap被復用了
-
一張圖片占用的記憶體大小
-

說來也挺惋惜的,前三家公司都是到了二面甚至是三面才掛掉,如果是一面就掛掉我也不用花那么多時間去煎熬、等待結果,只怪自己自視過高,在一家公司做久了對自己的能力沒有一個正確的認知,
之后我開始猛刷大廠的面試題,在朋友的內推下收到了位元組的面試題通知,又把位元組近幾年的面試題都翻出來刷了個遍,終于在四輪技術面+一輪HR面后收到了offer,下面是位元組面經:
一面
-
MVC,MMVM,MVP
- MMVM如何解決MVP中存在的問題
-
記憶體泄漏
-
記憶體泄漏的幾種情況
-
LeakCancary分析記憶體泄漏的原理
-
-
手寫單例模式,并分析
-
演算法
- 找到兩個陣列中的兩個元素的和等于某個值
二面
-
activity
- onSaveInstance
-
service
- StartService和BindService的生命周期
-
求浮點數的平方根
-
Binder的原理
-
設計模式
-
工廠模式
- 抽象工廠模式和普通工廠模式
-
建造者模式
-
-
啟動模式有幾種
-
共享記憶體原理
- java能實作共享記憶體么
-
kotlin協程的四個dispatcher及區別
三面
-
window,decorview,ViewRootImpl的關系
面試官 想讓你回答如何window和windowManager如何聯系的,viewRootImpl是聯系window和decorview的紐帶 -
行程間的通信方式
-
AIDL的用法
- 用法和原理
-
事件分發
-
onIntercept在哪用
-
事件分發底層的產生
-
-
RecycleView的用法
- 里面的各種Manager作用
-
wake lock:使螢屏常亮
-
Activity是如何被限制到狀態欄和導航欄之下的
-
canvas
-
canvas的save和restore的作用
-
canvas的density有什么作用
-
-
vsync
- vsync是如何生成的
-
android中異步一般怎么實作
-
android中記憶體泄漏發生的情況
-
如何去獲取view的寬高
-
懸浮窗
-
如何實作一個懸浮窗
-
一個懸浮窗懸浮在頂層,覆寫了底層的app的啟動圖示,如果讓事件啟動圖示接收到click事件
-
-
Android M之前與之后的權限變化
-
ContentProvider
-
使用
-
如何找到該contentProvider的
-
-
RxJava中map和flatmap的區別
-
view的繪制
-
viewgroup是如何重繪的
-
onMeasure,onlayout,onDraw分別起什么作用
-
onLayout的時候可以layout自己么?
-
-
AndroidManifest
- 和的區別
一個是系統的權限,一個是自定義的權限
- 和的區別
四面
-
兩道演算法
-
洗牌問題
-
接雨水
-
-
兩道設計
-
面向物件原則
-
用代碼描述你覺得最有設計感的專案
-
后面就是HR面了,我就省略了,相信這些大廠HR面試都不會有太大的差別,
我個人覺得面試也像是一場全新的征程,失敗和勝利都是平常之事,所以,勸各位不要因為面試失敗而灰心、 喪失斗志,也不要因為面試通過而沾沾自喜,等待你的將是更美好的未來,繼續加油!
面試官通常會問一些開放性的問題,對你的思維拓展能力、多方位的思考能力也是一種考驗
永遠不要打無準備之仗!早做準備,多做準備!
下面分享一下我之前刷過的面試題以及演算法資料,希望能幫助到有心在技術這條道路上一路走到黑的朋友!
Java部分
- 作業系統相關
- JDK&JVM&JRE
- 面向程序 & 面向物件
- 八大基本資料型別&參考型別
- 陣列
- Java例外
- 集合(容器)
- 執行緒
- 泛型
- 反射
- 注解
- Socket編程
- 設計模式
- JVM相關

Android部分
Activity
- 典型情況下的Activity生命周期?
- 例外情況下的Activity的生命周期 & 資料如何保存和恢復?
- 從Activity A跳轉到Activity B之后,然后再點擊back建之后,它們的生命周期呼叫流程是什么?
- 如何統計Activity的作業時間?
- Activity的啟動模式 & 使用場景
- 如何在任意位置關掉應用所有Activity & 如何在任意位置關掉指定的Activity?
- Activity的啟動流程(從原始碼角度決議)?
- Activity任務堆疊是什么?在專案中有用到它嗎?說給我聽聽

由于篇幅有限,只能分享部分面試題,更多面試題及答案去我的【GitHub】閱讀下載哦~無償分享給大家,算是一個感恩回饋吧
BroadcastReceiver
- 廣播是什么?
- 廣播的注冊方式有哪些?
- 廣播的分類 & 特性 & 使用場景?
ContentProvider
- 什么是內容提供者?
- 說說如何創建自己應用的內容提供者 & 使用場景
- 說說ContentProvider的原理
- ContentProvider,ContentResolver,ContentObserver之間的關系
- 說說ContentProvider的權限管理
Service
- 什么是Service?
- 說說Service的生命周期
- Service和Thread的區別?
- Android 5.0以上的隱式啟動問題及其解決方案,
- Service保活方案
- IntentService是什么 & 原理 & 使用場景 & 和Service的區別,
- 創建一個獨立行程的Service應該怎樣做?

Handler
- 子執行緒一定不能更新UI嗎?
- 給我說說Handler的原理
- Handler導致的記憶體泄露你是如何解決的?
- 如何使用Handler讓子執行緒和子執行緒通信?
- HandlerThread是什么 & 原理 & 使用場景?
- 一個執行緒能否創建多個Handler,Handler和Looper之間的對應關系?
- 為什么Android系統不建議子執行緒訪問UI?

AsyncTask
- AsyncTask是什么?能解決什么問題
- 給我談談AsyncTask的三個泛型引數作用 & 它的一些方法作用,
- 給我說說AsyncTask的原理
- 你覺得AsyncTask有不足之處嗎?
Fragment
- Android中v4包下Fragment和app包下Fragment的區別是什么?
- Fragment的生命周期 & 請結合Activity的生命周期再一起說說,
- 說說Fragment如何進行懶加載,
- ViewPager + Fragment結合使用會出現記憶體泄漏嗎 & 如何解決?
- Fragment如何和Activity進行通信 & Fragment之間如何進行通信?
- 給我談談Fragment3種切換的方式以及區別 & 使用場景,
檔案存盤
- 說說Android中資料持久化的方式 & 使用場景
- 接觸過MMKV嗎?說說SharedPreference和它的區別
- 第三方資料庫框架用過哪些?有沒有自己封裝過一個SQLite的庫
- SQLite是執行緒安全的嗎 & SharedPreference是執行緒安全的嗎?
- 請簡單的給我說說什么是三級快取?
- SharedPreference的apply和commit的區別
- 談談你對SQLite事務的認識

ListView & RecyclerView
- ListView是什么?如何使用?
- RecyclerView是什么?如何使用?如何回傳不一樣的Item,
- ListView和RecycyclerView的區別是什么?
- 分別講講你對ListView & RecyclerView的優化經驗,
- 給我說說RecyclerView的回收復用機制
- 說說你是如何給ListView & RecyclerView加上拉重繪 & 下拉加載更多機制
- 談談你是如何對ListView & RecycleView進行區域重繪的?

圖片編程
- 你對Bitmap了解嗎?它在記憶體中如何存在?
- 有關Bitmap導致OOM的原因知道嗎?如何優化?
- 給我談談圖片壓縮,
- LruCache & DiskLruCache原理,
- 說說你平常會使用的一些第三方圖片加載庫,最好給我談談它的原理,
- 如果讓你設計一個圖片加載庫,你會如何設計?
- 你知道Android中處理圖片的一些庫嗎(OpenCv & GPUImage …)?
WebView
- WebView會導致記憶體泄露嗎?原因是什么?解決方式有哪些?
- 你知道Hybrid開發嗎?說說你的相關經驗
- 說說WebSettings & WebViewClient & WebChromeClient這三個類的作用 & 用法,
- 說說你了解的Hybrid框架,
- 如何提高原生的WebView加載速度?
- 談談你對webView作業機制的認識,你在專案中優化過它嗎?說說是從哪些方面著手的?
ViewPager
- 什么是ViewPager?說說它的那些配接器,(校招&實習)
- 你了解ViewPager2嗎?和ViewPager 1有哪些區別?
- ViewPager + Fragment結合使用存在的記憶體泄漏的原因是什么?如何解決?
View事件分發機制
- 什么是事件分發機制?主要用來解決什么問題?(校招&實習)
- 給我說說事件分發的流程 & 你專案解決事件沖突的一些案例,
- 分別講講有關事件分發的三個方法的作用及關系,
- 如果我在一個設定了點擊事件的TextView中dispatchTouchEvent方法強制回傳ture或
者false會發生什么? - 談談你對MotionEvent的認識?Cancel事件是什么情況下觸發的?
- requestLayout(),onLayout(),onDraw(),drawChild()區別和聯系?
由于篇幅有限,只能分享部分面試題,更多面試題及答案去我的【GitHub】閱讀下載哦~無償分享給大家,算是一個感恩回饋吧
除此之外,還有一份全套的BAT、TMD面試真題資料,含決議,需要的朋友也可以去我的GitHub無償獲取,

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/281301.html
標籤:其他
上一篇:兩年Android面試大廠上岸經
