- 大厂面试
- 知识沉淀
- 持续更新
GitHub:https://github.com/Gong-Shijie/developer-skillpoints
1.操作系统
进程管理
操作系统划分任务给进程,同时把内存资源也交给进程
进程组织线程来执行任务,线程执行过程是栈的形式执行
- 每个线程有自己的变量空间 --> 栈空间
栈空间保存的是一些局部变量或者一些引用,new出的对象还是在堆内存,栈空间保留引用 - 进程空间 --> 堆空间
操作系统划分任务和资源分配最小单位 --> 进程
CPU调度执行的最小单位(时间片轮转) --> 线程
内存管理
物理内存和虚拟内存的 组织 和 映射关系
进程间通信
- Binder
- AIDL
- Messenger
输入输出
文件系统
网络系统
2. 计算机网络
概述
应用层
网络层
传输层
- TCP:面向连接,可靠有序
流量控制:滑动窗口协议。客户端和服务端都有可用窗口的概念,服务端在收到客户端ACK后,可用窗口移动可以发送下一部分数据
拥塞避免:慢启动超过阈值后启动线性增长。指数性增加拥塞窗口,拥塞窗口决定发送的速率。 - UDP:尽力而为,充分发挥能力
数据链路层
物理层
HTTP/HTTPS
HTTPS 多一层 TLS / SSL 层不再面文传输数据
CA:数字证书,权威机构发布,里面有 公钥
3. 数据结构
链表
树
栈/队列
哈希表
字符串
数组
图
4. Java
编程范式:面向对象
- 封装
- 继承
- 多态
语法
jvm
类加载过程
- 加载:将字节流中的内容(jar文件 编译后的.class文件)加载为JVM认可的数据类型 --> class对象
- 链接:
- 验证加载对象符合规范
- 分配一些静态内存
- 初始化:该赋值的赋值,将类 --> 可执行类对象
内存回收
- 复制:发生在新生代,划分from to交换区,不是垃圾的对象复制
- 标记:发生在老年代,将垃圾进行标记回收,回收后的内存空闲链表式结构管理空闲内存
- 整理:切割后的零碎内存的整理,方便内存分配
- 垃圾判断:可达性分析,从 GCRoot出发,查看引用关系,在引用链中的都不是垃圾,否则是垃圾。
- GCRoot:栈上变量,方法区(静态变量)
数据结构
HashMap
LRUCache
并发
5. Android
Activity
- 生命周期:
Create
Start
Resume
Pause
Stop
Destroy - 启动模式
Stantand
SingleTop
SingleTask
SingleInstance
Service
ContentProvider
BroadCast
界面布局
JetPack
API
Binder
Handler
6. 设计模式
7.音视频
- 采集
- 编码 ffmpeg
- 压缩 H264
- 封装 mp4 flv
8.Git
100.企业题库
字节跳动
阿里巴巴
腾讯
101. 算法题
// 留白艺术
// if后 {前有空行
if (true) {
// for后空 = < > << >> && || ; , 等符号两侧有空
for (int i = 0; i < 10; i++) {
int num = i;
}
}
try catch 规范
try {
// 业务代码
} catch (IOException e) {
// 捕获异常后 记得打印日志
Log
} finally {
// 关闭对应 流
}
网友评论