收到offer了?全方位的Android面試題奉上;或許在下一步大棋
前言
不經(jīng)一番徹骨寒,怎得梅花撲鼻香?由于之前有粉絲要去面試,就趁著中秋佳節(jié)別人休息的時(shí)間,把Android
包含的所有內(nèi)容整理了一遍,從基礎(chǔ)到性能優(yōu)化到Framework
,架構(gòu),音視頻,Flutter
,Compose
?Jetpack
,性能監(jiān)控Matrix
,SDK
,JVM
等等。更有22年最先Android
十一位大廠面試真題,和66道音視頻經(jīng)典面試題。
部分參考:
1.騰訊Android開(kāi)發(fā)筆記
2.2022年Android十一位大廠面試真題
3.60道音視頻經(jīng)典面試題
一丶2022Android十一位大廠面試真題
參考:
2022年Android十一位大廠面試真題
1.百度篇
1.關(guān)于okhttp
和Retrofit
2.view
的繪制流程
3.觸摸的傳遞機(jī)制
4.自定義view
主要重寫(xiě)哪個(gè)方法
5.講一下策略模式和狀態(tài)模式的各自的特點(diǎn)和區(qū)別
6.說(shuō)一下線程安全,線程同步的原子性,可見(jiàn)性和有序性
7.講一下雙重檢查鎖中的?volatile
?關(guān)鍵字的作用
8.講一下jvm
的堆棧
9.二叉樹(shù)的層次遍歷
10.自定義Navigator
切換fragment
11.Navigation
使用和源碼剖析
12.volatile
的作用
2.阿里篇
1.Android
?插件化.Hook
?插件化框架 (?Hook Activity
?啟動(dòng)流程 |?Hook
點(diǎn)分析
2.Android
中Handler
處理Runnable
任務(wù)的常見(jiàn)方法
3.講講對(duì)Handler
的認(rèn)識(shí)
4.求二叉樹(shù)中兩個(gè)節(jié)點(diǎn)之間的最大距離。
5.談?wù)剬?duì)Binder
的認(rèn)識(shí)
6.動(dòng)態(tài)代理實(shí)現(xiàn)
7.ASM
的原理
8.內(nèi)存泄漏常見(jiàn)場(chǎng)景以及解決方案
9.touch
?事件源碼問(wèn)題。
10.Android
自定義崩潰收集器捕獲java
層和native
層崩潰異常
11.如果 int 的值大于了 3 需要提示
12.介紹下?flutter
?的啟動(dòng)流程
13.介紹下?flutter
?與?weex
?的區(qū)別
14.組件化介紹一下
15.webview
?與?js
?交互的實(shí)現(xiàn)方法
16.介紹下?flutter_boost
?的原理
3.騰訊篇
1.講一下MVVM, MVP,MVC
2.LiveData
在項(xiàng)目里的實(shí)踐是怎樣的,遇到了什么問(wèn)題;有沒(méi)有想過(guò)怎么去解決LiveData
膨脹的問(wèn)題
3.Handler
,messageQueue
懂多少說(shuō)多少,越詳細(xì)越好
4.View
繪制的三個(gè)流程;onMeasure
中的measureSpec
,wrapContent
為什么會(huì)失效
5.內(nèi)存泄漏是怎么避免的?LeakCanary
原理是什么,沒(méi)看過(guò)源碼的話現(xiàn)在想一下該怎么實(shí)現(xiàn)
6.項(xiàng)目里的webView
是如何優(yōu)化加載速度的的
7.RecyclerView
和ScrollView
為什么不能一起使用
8.線程池用過(guò)嗎,工作組件有哪些,OkHttp
用的是什么線程池,為什么要用
9.synchronized
鎖升級(jí)的過(guò)程,為什么要設(shè)計(jì)這個(gè)鎖升級(jí)
10.HashMap
的實(shí)現(xiàn),如果要自己實(shí)現(xiàn)多線程安全的HashMap怎么操作
11.如果我想要自定義個(gè)任務(wù)有優(yōu)先級(jí)的線程池,應(yīng)該從哪些方面入手
12.為啥打開(kāi)一個(gè)app
以后默認(rèn)會(huì)顯示白屏嗎,為啥不是黑屏呢?
13.進(jìn)程間通信方式有哪些,Binder
講一下,和共享內(nèi)存的區(qū)別是什么
14.動(dòng)態(tài)代理和靜態(tài)代理
15.數(shù)據(jù)結(jié)構(gòu)和23種設(shè)計(jì)模式
16.RecyclerView
的性能優(yōu)化怎么實(shí)踐
17.堆排序?qū)崿F(xiàn)
4.京東篇
1.Activity
相關(guān)(生命周期、啟動(dòng)模式)
2.service
的意義
3.Handler
內(nèi)存泄漏相關(guān)
4.OKhttp
源碼相關(guān)
5.手寫(xiě)Singletion
5.字節(jié)篇
1.弱引用與軟引用,HashMap
的各個(gè)版本差異
2.什么是線程安全,如何實(shí)現(xiàn)線程安全 .常用的線程池種類(lèi),為什么要這么設(shè)計(jì)
3.單例常見(jiàn)的實(shí)現(xiàn)方式
4.DCL
為什么要加兩層判斷
5.ReentrantLock
如何實(shí)現(xiàn)公平鎖的
6.線程池里面非核心線程什么時(shí)候會(huì)被回收
7.handler
機(jī)制,
8.AsyncTask
原理,
9.Activity
窗口層級(jí),
10.binder
機(jī)制,
11.Activity
的啟動(dòng)流程,
12.mmap
,Intent
傳輸數(shù)據(jù)的限制,
13.ANR
原理,
14.RxJava
?線程池的使用注意問(wèn)題,
15.OKHTTP
攔截器
16.Activity
的啟動(dòng)流程
17.OKhttp
,Retrofit
18.布局優(yōu)化,內(nèi)存優(yōu)化,網(wǎng)絡(luò)優(yōu)化,apk瘦身
19.kotlin
,
20.常用設(shè)計(jì)模式,
21.MVC,MVVM,MVP
22.main
方法執(zhí)行之前發(fā)生了什么
6.Bilibili篇
1.啟動(dòng)Activity
的方法
2.intent
可以傳遞的數(shù)據(jù)
3.Activity
和Fragment
的關(guān)系,生命周期,如何傳遞數(shù)據(jù)
4.項(xiàng)目用到了ViewModel
,說(shuō)說(shuō)看他的原理,為什么Fragment
可以獲取到Activity
的ViewModel
5.你說(shuō)到了內(nèi)存泄露,有用過(guò)別的內(nèi)存檢查的工具嗎,什么時(shí)候會(huì)發(fā)生內(nèi)存泄露
6.說(shuō)說(shuō)進(jìn)程和線程的理解
7.請(qǐng)說(shuō)說(shuō)看mvp
和mvvm
模式有什么區(qū)別嗎
8.JVM
的內(nèi)存結(jié)構(gòu)是怎樣的,哪個(gè)地方不會(huì)出現(xiàn)內(nèi)存泄露
9.App
的啟動(dòng)流程
10.對(duì)Handler
的理解,handler
的內(nèi)存泄露了解嗎
7.網(wǎng)易篇
1.線程進(jìn)程
2.IPC
3.HashMap
4.創(chuàng)建線程三種方式
5.鎖、volatile
6.動(dòng)態(tài)代理
7.http
相關(guān)(https、響應(yīng)碼、請(qǐng)求方式)
8.Handler
9.Binder
10.view
繪制
8.小米篇
1.Android
啟動(dòng)模式
2.不同啟動(dòng)模式活動(dòng)跳轉(zhuǎn)的生命周期
3.handler
機(jī)制
4.一個(gè)線程中幾個(gè)handler
同時(shí)發(fā)送一個(gè)相同的消息,怎么分辨哪個(gè)消息是哪個(gè)handler
發(fā)送的
5.Android
服務(wù)的生命周期
6.Android
持久化存儲(chǔ)的方式
7.Android
廣播的分類(lèi)和使用場(chǎng)景
8.自定義view
三個(gè)方法,每個(gè)方法都要覆寫(xiě)嗎
9.java
怎么使得一個(gè)同步方法變?yōu)楫惒椒椒?br>10.synchnoized
作用
11.java
?抽象類(lèi)和接口的區(qū)別
12.抽象類(lèi)的方法一定要繼承嗎
9.攜程篇
1.Glide
講一講。你為什么選擇glide
2.Glide
三級(jí)緩存
3.Glide
怎么加載圖片進(jìn)Imageview
的
4.OKhttp
攔截器
5.get
和post
請(qǐng)求區(qū)別
6.項(xiàng)目里面內(nèi)存優(yōu)化
7.LeakCanary
8.Bitmap
高效緩存
9.項(xiàng)目中啟動(dòng)優(yōu)化
10.渲染布局優(yōu)化
11.ViewStub
懶加載
12.MVP
和MVVM
,談?wù)勀銓?duì)它們的了解
13.設(shè)計(jì)模式項(xiàng)目里邊有用過(guò)哪些
14.HTTPS
通信
15.JVM內(nèi)存模型
16.怎么保證線程安全
17.垃圾回收gc
講一講
10.小紅書(shū)篇
1.Java
深拷貝和淺拷貝的區(qū)別
2.自定義View
是怎么繪制的?ViewGroup?
3.Handler
機(jī)制,
4.TCP
和UDP
的區(qū)別
11.愛(ài)奇藝篇
1.Android
布局嵌套深有什么問(wèn)題
2.kotlin
協(xié)程
3.HashMap
原理
4.算法:手寫(xiě)快排
5.Activity
啟動(dòng)模式
6.Activity A → B
的生命周期在這四種啟動(dòng)模式下的狀態(tài)
7.有序廣播如何實(shí)現(xiàn)的按順序收到廣播
8.SharedPreferences
的格式
9.xml
解析方式
10.json
與xml
的區(qū)別,json
為什么比xml
更好
11.Android view
繪制流程
12.surfaceView
13.機(jī)型大小適配
14.ANR
?什么時(shí)候出現(xiàn),如何排查
15.Android
?動(dòng)畫(huà)
16.startService
與bindService
的區(qū)別
17.Service
?;罘绞?br>18.java
泛型
19.重寫(xiě)equals
方法需要重寫(xiě)hashCode
方法嗎
二丶騰訊Android開(kāi)發(fā)筆記
參考:
騰訊Android開(kāi)發(fā)筆記
1.Android工程師必備技能篇
涉及:注解、泛型、Retrofit
、架構(gòu)動(dòng)態(tài)編程技術(shù)原理、Butterknife
、JavaSSit
丶虛擬機(jī)丶并發(fā)內(nèi)存丶Synchronize
丶并發(fā)原理之線程池丶數(shù)據(jù)序列化

2.性能優(yōu)化篇
涉及:?jiǎn)?dòng)優(yōu)化、內(nèi)存優(yōu)化、啟動(dòng)優(yōu)化速度、卡頓優(yōu)化、布局優(yōu)化、崩潰優(yōu)化、應(yīng)用啟動(dòng)全流程(源碼深度解析)等內(nèi)容.

3.Framework篇
設(shè)計(jì):Framework
通信、Framework
底層服務(wù)、Framework
事件機(jī)制等內(nèi)容.

4.Compose篇

5.音視頻開(kāi)發(fā)篇
涉及:C
和C++
基礎(chǔ)語(yǔ)法,H264
編碼基礎(chǔ)和進(jìn)階,H265
編碼原理和應(yīng)用MediaCodec
硬解碼,Media
內(nèi)核源碼,WeChat
視頻通話。初級(jí)-中-高,WebRTC

6.架構(gòu)篇
涉及:Arraylist
,Okhttp
,Retrofit
,圖片加載,Dagger 2
,MVC.MVP.MVVM
,Jetpack Room

7.車(chē)載認(rèn)識(shí)篇
涉及:Android Auto
,汽車(chē)媒體應(yīng)用,構(gòu)建Android Auto
即時(shí)通信應(yīng)用,構(gòu)建車(chē)載導(dǎo)航和地圖注點(diǎn)應(yīng)用,構(gòu)建Android Automotive OS
視頻應(yīng)用,測(cè)試Android
車(chē)載應(yīng)用,分發(fā)Android汽車(chē)應(yīng)用,適用于汽車(chē)的Google Play
服務(wù),Android Automotive OS
的通知.

8.Flutter篇
涉及:Dart
語(yǔ)法,Flutter
動(dòng)畫(huà)丶組件丶網(wǎng)絡(luò)請(qǐng)求以及Flutter3.0
簡(jiǎn)介

9.Harmony OS篇
涉及:Ability
組件,分布式任務(wù),事件總線,Harmony OS
線程,UI
自定義控件

10.kotlin篇
涉及:對(duì)象丶類(lèi)丶繼承丶變量丶常量丶拓展函數(shù)等20多個(gè)內(nèi)容

三丶60道音視頻經(jīng)典面試題
參考:
3.60道音視頻經(jīng)典面試題
1.為什么巨大的原始視頻可以編碼成很小的視頻?這其中有什么技術(shù)?
2.怎么做到直播秒開(kāi)優(yōu)化
3.直方圖在圖像處理里面最重要的作用是什么?
4.數(shù)字圖像濾波有哪些方法?
5.圖像可以提取的特征有哪些?
6.衡量圖像重建好壞的標(biāo)準(zhǔn)有哪些?怎么計(jì)算?
7.AAC
和PCM
的區(qū)別?
8.H264
存儲(chǔ)的兩個(gè)形態(tài)
9.FFmpeg
:圖像如何合成視頻?
10.常見(jiàn)的音視頻格式有哪些?
11.1080P
的意義
12.請(qǐng)解釋顏色的本質(zhì)及數(shù)字記錄原理,并說(shuō)出你知道的色域
13.請(qǐng)解釋矢量圖和位圖的區(qū)別
14.請(qǐng)從光圈,快門(mén)速度,感光度,白平衡,景深中任意選2個(gè)進(jìn)行敘述?
15視頻分量YUV
的意思及數(shù)字化格式
16.在MPEG
標(biāo)準(zhǔn)中圖像類(lèi)型有哪些?
17.列舉一些音頻編解碼常用的實(shí)現(xiàn)方案?
18.敘述MPEG
視頻基本碼流結(jié)構(gòu)?
19.SPS
和PPS
的區(qū)別
20.敘述AMR
基本碼流結(jié)構(gòu)?
21.預(yù)測(cè)編碼的基本原理是什么?
22說(shuō)一說(shuō)FFmpeg
的數(shù)據(jù)結(jié)構(gòu)
23.說(shuō)一說(shuō)AVFormatContext
和AVIntFormat
之間的關(guān)系?
24.說(shuō)一說(shuō)AVFormatContext
,?AVStream
和AVCodecContext
之間的關(guān)系?
25.說(shuō)一說(shuō)視頻拼接處理步驟?(細(xì)節(jié)處理,比如分辨率大小不一,時(shí)間處理等等)
26.NV21
如何轉(zhuǎn)換成I420
?
27.DTS
與PTS
共同點(diǎn)?
28.影響視頻清晰度的指標(biāo)有哪些?
29.編解碼處理時(shí)遇到什么困難?
30.如何秒開(kāi)視頻?什么是秒開(kāi)視頻
31.如何降低延遲?如何保證流暢性?如何解決卡頓?解決網(wǎng)絡(luò)抖動(dòng)?
32.需要把網(wǎng)絡(luò)上一段視頻存儲(chǔ)下來(lái)(比如作為mp4 ), 請(qǐng)實(shí)現(xiàn)并說(shuō)出方法(第一個(gè)視頻需要翻墻才能進(jìn))?
33.需要把網(wǎng)絡(luò)上一段語(yǔ)音存儲(chǔ)下來(lái)(比如作為mp3 ), 請(qǐng)實(shí)現(xiàn)并說(shuō)出方法?
34.為什么要有YUV
這種數(shù)據(jù)出來(lái)?(YUV
相比RGB
來(lái)說(shuō)的優(yōu)點(diǎn))
35.H264/H265
有什么區(qū)別?
36.視頻或者音頻傳輸,你會(huì)選擇TCP
協(xié)議還是UDP
協(xié)議?為什么?
37.平時(shí)說(shuō)的軟解和硬解,具體是什么?
38.何為直播?何為點(diǎn)播?
39.簡(jiǎn)述推流、拉流的工作流程?
40.如何在直播中I幀間隔設(shè)置、與幀率分辨率選定?
41.直播推流中推I幀與推非I幀區(qū)別是什么?
42.常見(jiàn)的直播協(xié)議有哪些?之間有什么區(qū)別?
43.點(diǎn)播中常見(jiàn)的數(shù)據(jù)傳輸協(xié)議主要有哪些?
44.RTMP
、HLS
協(xié)議各自的默認(rèn)端口號(hào)是?
45.簡(jiǎn)述RTMP
協(xié)議,如何封裝RTMP
包?
46.m3u8
構(gòu)成是?直播中m3u8
、ts
如何實(shí)時(shí)更新?
47.何為音視頻同步,音視頻同步是什么標(biāo)準(zhǔn)?
48.播放器暫停、快進(jìn)快退、seek
、逐幀、變速怎么實(shí)現(xiàn)
49.說(shuō)說(shuō)你平時(shí)在播放過(guò)程中做的優(yōu)化工作?
50.你研究過(guò)哪些具體的流媒體服務(wù)器,是否做過(guò)二次開(kāi)發(fā)
51.什么是GOP
?
52.音頻測(cè)試的測(cè)試點(diǎn),音頻時(shí)延如何測(cè)試?
53.美顏的實(shí)現(xiàn)原理,具體實(shí)現(xiàn)步驟?
54.如何直播APP
抓包過(guò)來(lái)的文件,如何過(guò)濾上行,下行,總碼率?
55.如何測(cè)試一個(gè)美顏掛件?
56.為什么要用FLV
?
57.如何測(cè)試一個(gè)美顏掛件?
58.平常的視頻格式?
59.何為homebrew
?你用它安裝過(guò)什么?常用命令有哪些?
60.RTMP
、HLS
協(xié)議各自的默認(rèn)端口號(hào)是?
四丶Jetpack全家桶
1.Jetpack
之lifecycle
2.Jetpack
之ViewModel
3.Jetpack
之DataBinding
4.Jetpack
之Navigation
5.Jetpack
之Livedata
五丶Android性能監(jiān)控框架Matrix
1.Matrix
簡(jiǎn)介
2.內(nèi)存泄漏監(jiān)控及原理介紹
3.內(nèi)存泄漏監(jiān)控源碼分析
4.Hprof
文件分析
5.卡頓監(jiān)控
6.卡頓監(jiān)控源碼解析
7.插樁
8.資源優(yōu)化
9.I/O
監(jiān)控及原理解析
部分參考:
1.騰訊Android開(kāi)發(fā)筆記
2.2022年Android十一位大廠面試真題
3.60道音視頻經(jīng)典面試題