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. 算法题
1 |
|
try catch 规范
1 | try { |
数据结构类
链表
树
栈/队列
哈希表
字符串
组 矩阵
图
位运算
算法思想类
广度搜索
深度搜索
动态规划
排序
双指针
贪心
二分
分治
数学
推荐几点:
1.面试是一场交流沟通。不应该紧张担心发挥,比起你清不清楚 计算机网络各层协议
面试官更加关注的是你本人 回答的逻辑 和 沟通能力 以及 交谈中感受到你的潜力2.面试准备,可以参考牛客面经,顺便把基础知识梳理下,准备面试的过程就是你提升的过程
3.面试是学习的机会,查缺不漏的机会。候选人不应该有很强的目的导向性,心心念念拿offer,这样只会降低你的level, 面试去交流一些经典的知识点,一起进行技术上的探索,前辈设计的巧妙
4.面试笔试环节。认真去思考解题,不应该敷衍了事,简简单单写一点就告知面试官
笔试point*
代码整洁 show一下你代码的 艺术性
1 |
|
拿到题目 --> 明确接口定义(参数返回值) --> 切记空想一组用例来切入思考 --> 整理思路 --> 和面试官说明思路 --> 开始编码
最后,预祝 各位候选人,面试中获得成长,收获offer