新鮮出爐:騰訊Android開發(fā)筆記+2022Android十一位大廠面試真題+音視頻60道面試題
前言
經(jīng)過(guò)幾天幾夜的鏖戰(zhàn),終于把Android體系的內(nèi)容整理完了,包含基礎(chǔ),性能優(yōu)化,F(xiàn)ramework,Compose,音視頻,架構(gòu),flutter,kotlin。更有22年十一位大廠128道面試真題等等。以后再也不用繁瑣的查找了。
1.騰訊Android開發(fā)筆記
2.2022年Android十一位大廠面試真題
3.60道音視頻經(jīng)典面試題
一丶2022Android十一位大廠面試真題
1.百度篇
1.關(guān)于okhttp
和Retrofit
2.view
的繪制流程
3.觸摸的傳遞機(jī)制
4.自定義view
主要重寫哪個(gè)方法
5.講一下策略模式和狀態(tài)模式的各自的特點(diǎn)和區(qū)別
6.說(shuō)一下線程安全,線程同步的原子性,可見性和有序性
7.講一下雙重檢查鎖中的?volatile
?關(guān)鍵字的作用
8.講一下jvm
的堆棧
9.二叉樹的層次遍歷
10.自定義Navigator
切換fragment
11.Navigation
使用和源碼剖析
12.volatile
的作用
2.阿里篇
1.Android
?插件化.Hook
?插件化框架 (?Hook Activity
?啟動(dòng)流程 |?Hook
點(diǎn)分析
2.Android
中Handler
處理Runnable
任務(wù)的常見方法
3.講講對(duì)Handler
的認(rèn)識(shí)
4.求二叉樹中兩個(gè)節(jié)點(diǎn)之間的最大距離。
5.談?wù)剬?duì)Binder
的認(rèn)識(shí)
6.動(dòng)態(tài)代理實(shí)現(xiàn)
7.ASM
的原理
8.內(nèi)存泄漏常見場(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.為啥打開一個(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.手寫Singletion
5.字節(jié)篇
1.弱引用與軟引用,HashMap
的各個(gè)版本差異
2.什么是線程安全,如何實(shí)現(xiàn)線程安全 .常用的線程池種類,為什么要這么設(shè)計(jì)
3.單例常見的實(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
廣播的分類和使用場(chǎng)景
8.自定義view
三個(gè)方法,每個(gè)方法都要覆寫嗎
9.java
怎么使得一個(gè)同步方法變?yōu)楫惒椒椒?br>10.synchnoized
作用
11.java
?抽象類和接口的區(qū)別
12.抽象類的方法一定要繼承嗎
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.小紅書篇
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.算法:手寫快排
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)畫
16.startService
與bindService
的區(qū)別
17.Service
?;罘绞?br>18.java
泛型
19.重寫equals
方法需要重寫hashCode
方法嗎
二丶騰訊Android開發(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.音視頻開發(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.車載認(rèn)識(shí)篇
涉及:Android Auto
,汽車媒體應(yīng)用,構(gòu)建Android Auto
即時(shí)通信應(yīng)用,構(gòu)建車載導(dǎo)航和地圖注點(diǎn)應(yīng)用,構(gòu)建Android Automotive OS
視頻應(yīng)用,測(cè)試Android
車載應(yīng)用,分發(fā)Android汽車應(yīng)用,適用于汽車的Google Play
服務(wù),Android Automotive OS
的通知.

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

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

10.kotlin篇

涉及:對(duì)象丶類丶繼承丶變量丶常量丶拓展函數(shù)等20多個(gè)內(nèi)容
三丶60道音視頻經(jīng)典面試題
1.為什么巨大的原始視頻可以編碼成很小的視頻?這其中有什么技術(shù)?
2.怎么做到直播秒開優(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.常見的音視頻格式有哪些?
11.1080P
的意義
12.請(qǐng)解釋顏色的本質(zhì)及數(shù)字記錄原理,并說(shuō)出你知道的色域
13.請(qǐng)解釋矢量圖和位圖的區(qū)別
14.請(qǐng)從光圈,快門速度,感光度,白平衡,景深中任意選2個(gè)進(jìn)行敘述?
15視頻分量YUV
的意思及數(shù)字化格式
16.在MPEG
標(biāo)準(zhǔn)中圖像類型有哪些?
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.如何秒開視頻?什么是秒開視頻
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.常見的直播協(xié)議有哪些?之間有什么區(qū)別?
43.點(diǎ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ò)二次開發(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)是?