算法与数据结构
常见算法类型
排序算法(冒泡、插入、选择、快排、希尔、堆排、归并、桶排、基数、计数)、字符串操作、数组操作、递归、回溯、分治、动态规划等
常用数据结构
链表、栈、队列、树(二叉树、平衡二叉树、红黑树、B树、B+树、哈夫曼树、字典树)、跳表、图
推荐书籍
《大话数据结构》适合入门学习
《剑指offer》必刷66题
《算法导论》尽量看,能啃完就是大神
计算机网络
网络相关的东西不是很多,关键在于对常见网络协议簇的认识和理解,以及一些常规操作底层设计实现的剖析。比如:
| 输入www.baidu.com会发生什么
| 微信扫描登录会发生什么
重点掌握知识点
OSI七层模型
TCP/IP五层模型
TCP/IP协议总结
TCP、UDP区别
TCP三次握手、四次挥手
TCP状态转换
TCP状态中TIME_WAIT
TCP连接建立需要为什么不是两次握手
TCP第三次握手失败会出现什么
TCP长连接和短链接及优缺点
TCP拥塞控制-慢启动、拥塞避免、快重传、快启动
TCP如何保证可靠性传输
TCP如何解决粘包、拆包问题
TCP为什么可靠
UDP如何实现TCP可靠传输
IP地址和子网掩码
ARP解析过程
DNS原理
HTTP状态码
HTTP1.0、HTTP1.1、HTTP2.0区别
HTTP和HTTPS区别
HTTPS加密过程
非对称加密和对称加密算法
Nagle算法
推荐书籍
《计算机网络自顶向下方法》教材书,可放手边查阅
《TCP/IP详解》重点了解TCP、IP、UDP协议实现
数据库
重点掌握
数据库类别
关系型数据库和非关系型数据库区别
MySQL:
SQL常见语句
MySQL内链接,外链接(左链接、右链接、全链接)
MySQL索引类型和原理
MySQL事务实现原理ACID
MySQL数据存储引擎
MySQL主从复制原理、作用和实现
MySQL日记系统redo log、binlog、undo log
MVCC实现原理
Sql优化思路
范式理论
数据库高并发解决方法
Redis:
Redis支持的数据类型
Redis持久化
Redis 架构模式
主从复制
一致性哈希算法
推荐书籍
《高性能 Mysql》能够加深对Mysql的理解和使用
《Redis设计与实现》比较全面的书,可以多看看
操作系统
操作系统的问题会集中在进程和线程,但是这一类的问题往往会以开放题的形式出现。主要考察的是对操作系统组件以及运行过程的理解。比如:
| 开机登录系统发生了什么?
| 复制粘贴是怎样操作的?
重点掌握
物理内存和虚拟内存
缓存IO和直接IO
作业调度算法
线程和进程
进程和线程的调度
线程的创建和结束
线程状态
线程间通信与线程同步机制
互斥锁和信号量
线程池
消费者和生产者
死锁
并发和并行
推荐书籍
《深入理解计算机系统》很全面的书,这一本就够用了
Linux系统
Linux系统操作和命令
top命令
ps命令
netstat命令
awk命令
find命令
grep命令
wc命令
sed命令
head和tail命令
正则表达式
如何查找出现频率最高的100个IP地址
linux如何统计文件中某个字符串出现的频率
linux启动的第一个进程
linux查看端口占用
linux查看CPU和内存使用
Linux查看系统负载命令
Linux调试程序
Linux硬链接和软连接
core dump
cmake和makefile
Shell脚本基本语法和使用
推荐书籍
《鸟哥私房菜》入门足够了,多敲多写才能更快掌握
Linux网络编程
重点掌握
孤儿进程、僵尸进程和守护进程
进程间通信方式signal、file、pipe、shm、sem、msg、socket
线程同步机制线程:互斥量、锁机制、条件变量、信号量、读写锁
fork返回值
五大IO模型:阻塞I/O、非阻塞I/O、I/O复用、信号驱动I/O、异步I/O
IO复用机制
epoll与select/poll
LT水平触发和ET边缘触发
Reactor和Proactor模式
反向代理、负载均衡
推荐书籍
《UNIX环境高级编程》APUE 比较难啃,可以挑着看
《Unix网络编程》UNP 同样比较难啃,可以挑着看
《Linux多线程服务器端编程》Muduo网络库,推荐看看源码实现
《深入理解Nginx》深入了解基于C的web服务器实现
另外
海量日志处理和并行计算开发
分布式技术框架、中间件等 Dubbo、Spring Cloud 、Zookeeper 、Kfaka
流媒体分发技术CDN
网络库,可参考Muduo或者Nginx实现
web服务器/http服务器,可实现基本的http响应请求和处理
简易版STL库,展现C++的综合代码能力
局域网聊天室开发,涉及到网络编程实现在线群聊
分布式日志系统
简易版数据库设计
可参考一些C++常用库,造一些轮子或者做些有趣的小工具。
网友评论