计算机基础
1. 操作系统
了解进程、线程、协程的区别
了解进程间常用的通信方式
- 管道
- 命名管道(FIFO)
- 消息队列
- 信号量
- 共享内存
- 套接字(Socket)
了解5种网络IO模型
- 阻塞 IO(blocking IO)
- 非阻塞 IO(non-blocking IO)
- 多路复用 IO(IO multiplexing)
- 异步 IO(Asynchronous I/O)
- 信号驱动 IO(signal driven I/O, SIGIO)
了解并发与并行的区别
- 并发是指一个处理器同时处理多个任务。
- 并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。
- 并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生。
- 并行在多处理器系统中存在,而并发可以在单处理器和多处理器系统中都存在,
- 并发能够在单处理器系统中存在是因为并发是并行的假象,并行要求程序能够同时执行多个操作,而并发只是要求程序假装同时执行多个操作(每个小时间片执行一个操作,多个操作快速切换执行)。
了解同步与异步的区别
- 同步:同步是指一个进程在执行某个请求的时候,如果该请求需要一段时间才能返回信息,那么这个进程会一直等待下去,直到收到返回信息才继续执行下去。
- 异步:异步是指进程不需要一直等待下去,而是继续执行下面的操作,不管其他进程的状态,当有信息返回的时候会通知进程进行处理,这样就可以提高执行的效率了,即异步是我们发出的一个请求,该请求会在后台自动发出并获取数据,然后对数据进行处理,在此过程中,我们可以继续做其他操作,不管它怎么发出请求,不关心它怎么处理数据。
- 以上总结起来,通俗地讲,也就是说,同步需要按部就班地走完一整个流程,完成一整个动作,打个比方:同步的时候,你在写程序,然后你妈妈叫你马上拖地,你就必须停止写程序然后拖地,没法同时进行。而异步则不需要按部就班,可以在等待那个动作的时候同时做别的动作,
了解阻塞与非阻塞的区别
了解常见缓存淘汰算法:
- LRU(Least Recently Used)最近最少使用算法
- LFU(Least Frequently Used)最近频次最少算法
- FIFO(First In First Out)先入先出算法
- ARC(Adjustable Replacement Cache)自适应缓存替换算法
2. 计算机网络
3. 计算机组成原理(冯诺依曼体系)[了解]
4. 数据结构与算法
5. 互联网(Internet)
6. 数据库
Golang编程基础
- 字符串
- 常量
- 变量
- 类型
- 操作符
- 表达式
- 语句
- 错误处理
1. 代码组织
2. 标准库
3. 版本控制
Go编程进阶
原理
- map
- channel
- goroutine
- slice
- runtime
GMP
GC
CGO
反射
测试
- 单元测试
- 压力测试
- 覆盖测试
- 性能测试
并发编程
goroutine调度
channel调度
锁
waitGroup
context
sync
atomic