0%

面试——知识梳理

GitHub:https://github.com/Gong-Shijie/developer-skillpoints


面试是学习和成长的机会。

  • 大厂面试
  • 知识沉淀
  • 持续更新

image

1.操作系统

进程管理

操作系统划分任务给进程,同时把内存资源也交给进程
进程组织线程来执行任务,线程执行过程是栈的形式执行

  • 每个线程有自己的变量空间 –> 栈空间
    栈空间保存的是一些局部变量或者一些引用,new出的对象还是在堆内存,栈空间保留引用
  • 进程空间 –> 堆空间

操作系统划分任务和资源分配最小单位 –> 进程
CPU调度执行的最小单位(时间片轮转) –> 线程

内存管理

物理内存和虚拟内存的 组织映射关系

进程间通信

输入输出

文件系统

网络系统

2. 计算机网络

概述

应用层

网络层

传输层

  • TCP:面向连接,可靠有序
    流量控制:滑动窗口协议。客户端和服务端都有可用窗口的概念,服务端在收到客户端ACK后,可用窗口移动可以发送下一部分数据
    拥塞避免:慢启动超过阈值后启动线性增长。指数性增加拥塞窗口,拥塞窗口决定发送的速率。
  • UDP:尽力而为,充分发挥能力

数据链路层

物理层

HTTP/HTTPS

HTTPS 多一层 TLS / SSL 层不再面文传输数据
CA:数字证书,权威机构发布,里面有 公钥
image

3. 数据结构

链表

栈/队列

哈希表

字符串

数组

4. Java

编程范式:面向对象

  • 封装
  • 继承
  • 多态

语法

jvm

image

类加载过程
  • 加载:将字节流中的内容(jar文件 编译后的.class文件)加载为JVM认可的数据类型 –> class对象
  • 链接:
  • 验证加载对象符合规范
    
  • 分配一些静态内存  
    
  • 初始化:该赋值的赋值,将类 –> 可执行类对象

内存回收

  • 复制:发生在新生代,划分from to交换区,不是垃圾的对象复制
  • 标记:发生在老年代,将垃圾进行标记回收,回收后的内存空闲链表式结构管理空闲内存
  • 整理:切割后的零碎内存的整理,方便内存分配
  • 垃圾判断:可达性分析,从 GCRoot出发,查看引用关系,在引用链中的都不是垃圾,否则是垃圾。
  • GCRoot:栈上变量,方法区(静态变量)

数据结构

HashMap

LRUCache

并发

volatile

5. Android

Activity

  • 生命周期:
    Create
    Start
    Resume
    Pause
    Stop
    Destroy
  • 启动模式
    Stantand
    SingleTop
    SingleTask
    SingleInstance

Service

ContentProvider

BroadCast

界面布局

JetPack

API

Binder

Handler

6. 设计模式

image

7.音视频

  • 采集
  • 编码 ffmpeg
  • 压缩 H264
  • 封装 mp4 flv

8.Git

100.企业题库

字节跳动

阿里巴巴

腾讯

101. 算法题

1
2
3
4
5
6
7
8
9
10
        
// 留白艺术
// if后 {前有空行
if (true) {
// for后空 = < > << >> && || ; , 等符号两侧有空
for (int i = 0; i < 10; i++) {
int num = i;
}
}

try catch 规范

1
2
3
4
5
6
7
8
9
try {
// 业务代码
} catch (IOException e) {
// 捕获异常后 记得打印日志
Log
} finally {
// 关闭对应 流
}

数据结构类

链表

栈/队列

哈希表

字符串

组 矩阵

位运算

算法思想类

广度搜索

深度搜索

动态规划

排序

双指针

贪心

二分

分治

数学

推荐几点:


  • 1.面试是一场交流沟通。不应该紧张担心发挥,比起你清不清楚 计算机网络各层协议
    面试官更加关注的是你本人 回答的逻辑 和 沟通能力 以及 交谈中感受到你的潜力

  • 2.面试准备,可以参考牛客面经,顺便把基础知识梳理下,准备面试的过程就是你提升的过程

  • 3.面试是学习的机会,查缺不漏的机会。候选人不应该有很强的目的导向性,心心念念拿offer,这样只会降低你的level, 面试去交流一些经典的知识点,一起进行技术上的探索,前辈设计的巧妙

  • 4.面试笔试环节。认真去思考解题,不应该敷衍了事,简简单单写一点就告知面试官

  • 笔试point*

  • 代码整洁 show一下你代码的 艺术性    
    
1
2
3
4
5
6
7
8
9
10
        
// 留白艺术
// if后 {前有空行
if (true) {
// for后空 = < > << >> && || ; , 等符号两侧有空
for (int i = 0; i < 10; i++) {
int num = i;
}
}

  • 拿到题目 --> 明确接口定义(参数返回值) -->  切记空想一组用例来切入思考 --> 整理思路  --> 和面试官说明思路 --> 开始编码  
    

最后,预祝 各位候选人,面试中获得成长,收获offer

微信扫码关注公众号,追踪更多博文