Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说网传字节系最全 Android 面试点梳理,我收藏了你呢?[通俗易懂],希望能够帮助你!!!。
目录:
以下分享的所有内容包括字节系的面试题,另外还有一些对面试经验的总结,需要的小伙伴麻烦各位转发一下(可以帮助更多的人看到哦!),记得一定要关注+转发,然后私信@芜湖Android“面试”,即可回复免费下载的方式!!
【一线互联网面试真题解析大全】
【字节跳动面试真题解析】
【腾讯、华为Android中高级面试真题解析】
【2020 Android复习资料汇总】
分层模型
UDP
TCP
1. C->S:SYN,seq=x(你能听到吗?)
2. S->C:SYN,seq=y,ack=x+1(我能听到,你能听到吗?)
3. C->S:ACK,seq=x+1,ack=y+1(我能听到,开始吧)
两方都要能确保:我说的话,你能听到;你说的话,我能听到。所以需要三次握手
1. C->S:FIN,seq=p(我说完了)
2. S->C:ACK,ack=p+1(我知道了,等一下,我可能还没说完)
3. S->C:FIN,seq=q,ACK,ack=p+1(我也说完了)
4. C->S:ACK,ack=q+1(我知道了,结束吧)
S 收到 C 结束的消息后 S 可能还没说完,没法立即回复结束标示,只能等说完后再告诉 C :我说完了
复制代码
HTTP
HTTPS
数据结构
常用算法
StringBuilder
泛型擦除
Exception 和 Error
IO 、 NIO、 OKIO
ArrayList、LinkedList
HashMap 、HashTable、HashSet
ArrayMap、SparseArray
Concurrent 集合
LRUCache 原理
volatile 关键字
wait 和 sleep
wait、notify、notifyAll
lock 和 synchronized
Synchronized 原理
可重入锁
公平锁
乐观锁和悲观锁
死锁 4 个必要条件
六大原则
Java 23 种设计模式(按目的分类为:5+7+11)
1995 年 GoF(四人组)出了一本设计模式的书,收录了 23 种设计模式,树立设计模式里程碑,也叫:GoF 设计模式
1.单例模式
2.原型模式:对象的拷贝
3.建造者模式
4.工厂模式:建立一个工厂方法来制造新的对象
5.抽象工厂模式:
1.桥接模式:对于两个或以上纬度独立变化的场景,将抽象与具体实现分离,实例:用不同颜色画不同形状
2.外观模式:对外有一个统一接口,外部不用关心内部子系统的具体实现,这是"迪米特原则"的典型应用
3.适配器模式:改变类的接口,使原本由于接口不匹配而无法一起工作的两个类能够在一工作,实例:RecycleView 的 Adapter 不管什么类型的 View 都返回 ViewHolder
4.代理模式:由代理对象控制对原对象的引用,包括静态代理和动态代理
5.组合模式:将对象组成树形结构,用于对单个对象和组合对象的使用具有一致性,实例:ViewGroup
6.装饰模式:对对象包装一层,动态的增加一些额外功能,实例:ContextWrapper 包装 Context
7.享元模式:复用对象,实例:java 的常量池(比如 String),线程池,Message.obtain 等
行为型(11):描述类或对象之间怎么相互协作,怎样分配指责
1.观察者模式:一对多依赖关系,多个观察者可以同时监听某一个对象,实例:jetpack 的 lifeCycle 添加生命周期观察者
2.中介者模式:定义一个中介对象封装一系列对象的交互,解耦这些对象,实例:MVP 的 P
3.访问者模式:将作用于某数据结构中各元素的操作分离出来封装成独立的类,对这些元素添加新的操作,但不改变原数据结构,实例:asm 中的 classVisitor 中再分别对类注解、变量、方法等进行处理
4.状态模式:行为由状态决定,不同状态下由不同行为,与策略模式类似,实例:不同状态下有同一种操作的不同行为的子类实现
5.命令模式:将一个请求封装为一个对象发出,交给别的对象去处理请求,实例:Handler 发送定义好的消息事件
6.策略模式:将一系列的算法封装起来,方便替换,实例:动画的时间插值器
7.责任链模式:让多个对象都有机会处理一个事件,实例:View 事件传递机制
8.备忘录模式:保存对象之前的状态,方便后面恢复
9.迭代器模式:提供一种方法遍历容器中的元素,而不需要暴露该对象的内部表示,实例:集合的迭代器
10.解释器模式:多次出现的问题有一定规律,就可以归纳成一种简单的语言来解释,实例:AndroidManifest 文件、GLES 着色器语言
11.模版方法模式:定义一套固定步骤,方便直接执行,实例:AsyncTask
动态代理原理及实现
JVM
JVM 内存模型
JVM 内存结构
GC
Minor GC/Major GC/Full GC
四种引用
ClassLoader
Activity 生命周期
Activity 启动模式
View 工作原理
MeasureSpec 测量规则
View 动画、帧动画及属性动画
Window 、WindowManager、WMS、SurfaceFlinger
SurfaceView、TextureView、SurfaceTexture、GLSurfaceView
事件分发机制
Handler、MessageQueue、Looper 及 postDelayed 原理
Serializable、Parcelable
Linux IPC 方式
Binder
Android 为什么选择 binder
Android IPC 方式
Android 系统架构
Dalvik 和 ART
Android 系统启动流程
Android 类加载器
APK 打包流程
App 安装过程
网络优化及检测
UI卡顿优化
内存优化
瘦包
内存泄漏场景及规避
ANR 问题及分析
Native Crash
Android 解析 XML
热修复、插件化、组件化
进程保活
播放器原理
Lint
CI
AOP
JetPack