新鲜出炉:腾讯Android开发笔记+2022Android十一
前言
经过几天几夜的鏖战,终于把Android体系的内容整理完了,包含基础,性能优化,Framework,Compose,音视频,架构,flutter,kotlin。更有22年十一位大厂128道面试真题等等。以后再也不用繁琐的查找了。
一丶2022Android十一位大厂面试真题
1.百度篇
1.关于okhttp
和Retrofit
2.view
的绘制流程
3.触摸的传递机制
4.自定义view
主要重写哪个方法
5.讲一下策略模式和状态模式的各自的特点和区别
6.说一下线程安全,线程同步的原子性,可见性和有序性
7.讲一下双重检查锁中的 volatile
关键字的作用
8.讲一下jvm
的堆栈
9.二叉树的层次遍历
10.自定义Navigator
切换fragment
11.Navigation
使用和源码剖析
12.volatile
的作用
2.阿里篇
1.Android
插件化.Hook
插件化框架 ( Hook Activity
启动流程 | Hook
点分析
2.Android
中Handler
处理Runnable
任务的常见方法
3.讲讲对Handler
的认识
4.求二叉树中两个节点之间的最大距离。
5.谈谈对Binder
的认识
6.动态代理实现
7.ASM
的原理
8.内存泄漏常见场景以及解决方案
9.touch
事件源码问题。
10.Android
自定义崩溃收集器捕获java
层和native
层崩溃异常
11.如果 int 的值大于了 3 需要提示
12.介绍下 flutter
的启动流程
13.介绍下 flutter
与 weex
的区别
14.组件化介绍一下
15.webview
与 js
交互的实现方法
16.介绍下 flutter_boost
的原理
3.腾讯篇
1.讲一下MVVM, MVP,MVC
2.LiveData
在项目里的实践是怎样的,遇到了什么问题;有没有想过怎么去解决LiveData
膨胀的问题
3.Handler
,messageQueue
懂多少说多少,越详细越好
4.View
绘制的三个流程;onMeasure
中的measureSpec
,wrapContent
为什么会失效
5.内存泄漏是怎么避免的?LeakCanary
原理是什么,没看过源码的话现在想一下该怎么实现
6.项目里的webView
是如何优化加载速度的的
7.RecyclerView
和ScrollView
为什么不能一起使用
8.线程池用过吗,工作组件有哪些,OkHttp
用的是什么线程池,为什么要用
9.synchronized
锁升级的过程,为什么要设计这个锁升级
10.HashMap
的实现,如果要自己实现多线程安全的HashMap怎么操作
11.如果我想要自定义个任务有优先级的线程池,应该从哪些方面入手
12.为啥打开一个app
以后默认会显示白屏吗,为啥不是黑屏呢?
13.进程间通信方式有哪些,Binder
讲一下,和共享内存的区别是什么
14.动态代理和静态代理
15.数据结构和23种设计模式
16.RecyclerView
的性能优化怎么实践
17.堆排序实现
4.京东篇
1.Activity
相关(生命周期、启动模式)
2.service
的意义
3.Handler
内存泄漏相关
4.OKhttp
源码相关
5.手写Singletion
5.字节篇
1.弱引用与软引用,HashMap
的各个版本差异
2.什么是线程安全,如何实现线程安全 .常用的线程池种类,为什么要这么设计
3.单例常见的实现方式
4.DCL
为什么要加两层判断
5.ReentrantLock
如何实现公平锁的
6.线程池里面非核心线程什么时候会被回收
7.handler
机制,
8.AsyncTask
原理,
9.Activity
窗口层级,
10.binder
机制,
11.Activity
的启动流程,
12.mmap
,Intent
传输数据的限制,
13.ANR
原理,
14.RxJava
线程池的使用注意问题,
15.OKHTTP
拦截器
16.Activity
的启动流程
17.OKhttp
,Retrofit
18.布局优化,内存优化,网络优化,apk瘦身
19.kotlin
,
20.常用设计模式,
21.MVC,MVVM,MVP
22.main
方法执行之前发生了什么
6.Bilibili篇
1.启动Activity
的方法
2.intent
可以传递的数据
3.Activity
和Fragment
的关系,生命周期,如何传递数据
4.项目用到了ViewModel
,说说看他的原理,为什么Fragment
可以获取到Activity
的ViewModel
5.你说到了内存泄露,有用过别的内存检查的工具吗,什么时候会发生内存泄露
6.说说进程和线程的理解
7.请说说看mvp
和mvvm
模式有什么区别吗
8.JVM
的内存结构是怎样的,哪个地方不会出现内存泄露
9.App
的启动流程
10.对Handler
的理解,handler
的内存泄露了解吗
7.网易篇
1.线程进程
2.IPC
3.HashMap
4.创建线程三种方式
5.锁、volatile
6.动态代理
7.http
相关(https、响应码、请求方式)
8.Handler
9.Binder
10.view
绘制
8.小米篇
1.Android
启动模式
2.不同启动模式活动跳转的生命周期
3.handler
机制
4.一个线程中几个handler
同时发送一个相同的消息,怎么分辨哪个消息是哪个handler
发送的
5.Android
服务的生命周期
6.Android
持久化存储的方式
7.Android
广播的分类和使用场景
8.自定义view
三个方法,每个方法都要覆写吗
9.java
怎么使得一个同步方法变为异步方法
10.synchnoized
作用
11.java
抽象类和接口的区别
12.抽象类的方法一定要继承吗
9.携程篇
1.Glide
讲一讲。你为什么选择glide
2.Glide
三级缓存
3.Glide
怎么加载图片进Imageview
的
4.OKhttp
拦截器
5.get
和post
请求区别
6.项目里面内存优化
7.LeakCanary
8.Bitmap
高效缓存
9.项目中启动优化
10.渲染布局优化
11.ViewStub
懒加载
12.MVP
和MVVM
,谈谈你对它们的了解
13.设计模式项目里边有用过哪些
14.HTTPS
通信
15.JVM内存模型
16.怎么保证线程安全
17.垃圾回收gc
讲一讲
10.小红书篇
1.Java
深拷贝和浅拷贝的区别
2.自定义View
是怎么绘制的?ViewGroup?
3.Handler
机制,
4.TCP
和UDP
的区别
11.爱奇艺篇
1.Android
布局嵌套深有什么问题
2.kotlin
协程
3.HashMap
原理
4.算法:手写快排
5.Activity
启动模式
6.Activity A → B
的生命周期在这四种启动模式下的状态
7.有序广播如何实现的按顺序收到广播
8.SharedPreferences
的格式
9.xml
解析方式
10.json
与xml
的区别,json
为什么比xml
更好
11.Android view
绘制流程
12.surfaceView
13.机型大小适配
14.ANR
什么时候出现,如何排查
15.Android
动画
16.startService
与bindService
的区别
17.Service
保活方式
18.java
泛型
19.重写equals
方法需要重写hashCode
方法吗
二丶腾讯Android开发笔记
参考:
腾讯Android开发笔记
1.Android工程师必备技能篇
涉及:注解、泛型、Retrofit
、架构动态编程技术原理、Butterknife
、JavaSSit
丶虚拟机丶并发内存丶Synchronize
丶并发原理之线程池丶数据序列化
2.性能优化篇
涉及:启动优化、内存优化、启动优化速度、卡顿优化、布局优化、崩溃优化、应用启动全流程(源码深度解析)等内容.
3.Framework篇
设计:Framework
通信、Framework
底层服务、Framework
事件机制等内容.
4.Compose篇
5.音视频开发篇
涉及:C
和C++
基础语法,H264
编码基础和进阶,H265
编码原理和应用MediaCodec
硬解码,Media
内核源码,WeChat
视频通话。初级-中-高,WebRTC
6.架构篇
涉及:Arraylist
,Okhttp
,Retrofit
,图片加载,Dagger 2
,MVC.MVP.MVVM
,Jetpack Room
7.车载认识篇
涉及:Android Auto
,汽车媒体应用,构建Android Auto
即时通信应用,构建车载导航和地图注点应用,构建Android Automotive OS
视频应用,测试Android
车载应用,分发Android汽车应用,适用于汽车的Google Play
服务,Android Automotive OS
的通知.
8.Flutter篇
涉及:Dart
语法,Flutter
动画丶组件丶网络请求以及Flutter3.0
简介
9.Harmony OS篇
涉及:Ability
组件,分布式任务,事件总线,Harmony OS
线程,UI
自定义控件
10.kotlin篇
涉及:对象丶类丶继承丶变量丶常量丶拓展函数等20多个内容
三丶60道音视频经典面试题
参考:
3.60道音视频经典面试题
1.为什么巨大的原始视频可以编码成很小的视频?这其中有什么技术?
2.怎么做到直播秒开优化
3.直方图在图像处理里面最重要的作用是什么?
4.数字图像滤波有哪些方法?
5.图像可以提取的特征有哪些?
6.衡量图像重建好坏的标准有哪些?怎么计算?
7.AAC
和PCM
的区别?
8.H264
存储的两个形态
9.FFmpeg
:图像如何合成视频?
10.常见的音视频格式有哪些?
11.1080P
的意义
12.请解释颜色的本质及数字记录原理,并说出你知道的色域
13.请解释矢量图和位图的区别
14.请从光圈,快门速度,感光度,白平衡,景深中任意选2个进行叙述?
15视频分量YUV
的意思及数字化格式
16.在MPEG
标准中图像类型有哪些?
17.列举一些音频编解码常用的实现方案?
18.叙述MPEG
视频基本码流结构?
19.SPS
和PPS
的区别
20.叙述AMR
基本码流结构?
21.预测编码的基本原理是什么?
22说一说FFmpeg
的数据结构
23.说一说AVFormatContext
和AVIntFormat
之间的关系?
24.说一说AVFormatContext
, AVStream
和AVCodecContext
之间的关系?
25.说一说视频拼接处理步骤?(细节处理,比如分辨率大小不一,时间处理等等)
26.NV21
如何转换成I420
?
27.DTS
与PTS
共同点?
28.影响视频清晰度的指标有哪些?
29.编解码处理时遇到什么困难?
30.如何秒开视频?什么是秒开视频
31.如何降低延迟?如何保证流畅性?如何解决卡顿?解决网络抖动?
32.需要把网络上一段视频存储下来(比如作为mp4 ), 请实现并说出方法(第一个视频需要翻墙才能进)?
33.需要把网络上一段语音存储下来(比如作为mp3 ), 请实现并说出方法?
34.为什么要有YUV
这种数据出来?(YUV
相比RGB
来说的优点)
35.H264/H265
有什么区别?
36.视频或者音频传输,你会选择TCP
协议还是UDP
协议?为什么?
37.平时说的软解和硬解,具体是什么?
38.何为直播?何为点播?
39.简述推流、拉流的工作流程?
40.如何在直播中I帧间隔设置、与帧率分辨率选定?
41.直播推流中推I帧与推非I帧区别是什么?
42.常见的直播协议有哪些?之间有什么区别?
43.点播中常见的数据传输协议主要有哪些?
44.RTMP
、HLS
协议各自的默认端口号是?
45.简述RTMP
协议,如何封装RTMP
包?
46.m3u8
构成是?直播中m3u8
、ts
如何实时更新?
47.何为音视频同步,音视频同步是什么标准?
48.播放器暂停、快进快退、seek
、逐帧、变速怎么实现
49.说说你平时在播放过程中做的优化工作?
50.你研究过哪些具体的流媒体服务器,是否做过二次开发
51.什么是GOP
?
52.音频测试的测试点,音频时延如何测试?
53.美颜的实现原理,具体实现步骤?
54.如何直播APP
抓包过来的文件,如何过滤上行,下行,总码率?
55.如何测试一个美颜挂件?
56.为什么要用FLV
?
57.如何测试一个美颜挂件?
58.平常的视频格式?
59.何为homebrew
?你用它安装过什么?常用命令有哪些?
60.RTMP
、HLS
协议各自的默认端口号是?