系统
- 内存分配的流程
- 虚拟地址和物理地址转换
- 实模式和保护模式
- 执行可执行文件时操作系统做了什么
fork 分配内存 pcb 进程状态 对应页表 文件描述符 信号mask exec - 大小端存储
- 进程和线程
- 内核态/用户态切换,引起切换的方式
- 静态库和动态库的区别
https://www.cnblogs.com/codingmengmeng/p/6046481.html - cache原理
- 进程调度 分时系统结合优先级怎么实现
- 进程的状态
- 死锁
- 内存抖动
网络
- TCP三次握手,为什么/优化
- TCP四次握手,为什么,finwait1/2,closewait
- timewait哪一方/为什么
- TCP加密
- 拥塞控制
- 滑动窗口
- ping/traceroute
- 路由选择协议(RIP/OSPF/BGP)
- TCP和UDP区别
- TCP沾包/拆包
- TCP和UDP数据包的大小限制(TCPMSS和以太网MTU)
- DNS/DHCP/ARP
- ARP欺骗
- http状态码,常用指令
- POST和GET区别
- https和http区别,原理
- cookie和session
- select/poll/epoll
- 同步/异步/非阻塞
- veth/bridge
LINUX
- read/write的流程
- 文件系统结构
- 零拷贝
- 守护进程/实现
- 进程间通信
- 线程间同步
- 信号量和互斥锁的区别
- copy on write(fork/aufs)
- 条件变量
数据结构
- RBT/AVL/B树比较,B树为什么是B树不是多叉树
- 红黑树的性质
- 跳表和红黑树的区别
- 哈系表冲突的解决方式
C++
- union类的内存大小
- 深拷贝/浅拷贝
- 指针和引用
- 和c的区别
- 多态/虚函数
- 如何防止内存泄漏
- vector元素取地址传参
- vector deque list区别
- STL内存分配
- map和unordered_map区别
- new和malloc
- 野指针/空悬指针
- 编译过程
- c++内存分布
- 类内存模型,空类大小
- 内存对齐
- 智能指针的线程安全
- STL的线程安全
- C++11特性
- 智能指针的实现
- 内存屏障
- static
- extern
- const
- volatile
- 常成员函数
- 重载和重写
- strlen和sizeof
- 构造函数为什么不能是虚函数,析构函数为什么要是虚函数
- override
SHELL
- top
- awk
- | >
- ps
- 文本排序/去重
- tail/less/more/head
- 定时执行crond
- nohup
- sed
- 代码调试
数据库
- 事务
- 隔离级别
- 并发问题
- 乐观锁/mvcc原理
- innodb/mysiam
- 索引的实现
- b+树区别
- 聚集索引/非聚集索引
- 回表查询
- 三范式/目的
- 负载均衡
- 最左匹配
- 一致性哈系
- CAP原则
- redis数据结构
设计模式
- 单例模式/实现方式
- 观察者模式
- 工厂模式
算法/智力问题
- 大数找不重复的数
- 大数单词频率TOP K
- 大树数大小TOP K
- 不用临时变量交换两个数
- 1000瓶药/10只老鼠试毒
- 赛马问题