总的来看,大的方便有以下几个
- 编程语言基础
- 数据结构与算法
- 计算机网络
- 操作系统
每个方面的核心问题
编程语言基础
- new和malloc的区别以及底层实现原理
- 怎么理解static? static 在C和C++中的区别?
- 怎么理解const? const 在C和C++中的区别?
- c++虚函数原理
- 智能指针
- c语言如何实现c++对象以及私有成员
- c++多态实现
- STL中的vector怎么扩容
- 虚函数指针的初始化过程
- c++11原子变量介绍
- c++11特性有哪些?
- 怎么理解重载与重写
- 怎么理解c++中的static关键字
- vector和list 的区别
- c++的内存分配
- map与set的底层实现
- 类静态变量的初始化
- 析构函数可以是虚函数?为什么?
- 深拷贝与浅拷贝
- 指针常量,常量指针的区别
书籍推荐:
c语言语法推荐书籍: 《c专家编程》《c与指针》
c++语言语言推荐书籍:《c++ primer》《effect c++》
c++语言stl底层原理:《STL源码剖析》
数据结构与算法
- hash处理冲突的方法
- 二分查找及其变种
- 数组与链表的区别
- redis数据结构用过哪些,了解跳表?
- 红黑树比平衡二叉树有哪些优点
- 二叉树,b+树,hash,二叉查找树区别
- 说说红黑树的特性
- 各种树,排序的时间复杂度
- 数据库索引,事务,事务级别
- 不考虑事务的隔离性会出现什么问题
- 事务隔离级别
- 索引的类型
- AC自动机时间复杂度
- 链表有无环判断 - 实现一个单例模式
- 给一个字符串判断单词数
- 开方算法
- 青蛙跳台阶
- 常用排序(快排和归并要写吐)
- 反转链表
- 两个链表,寻找公共节点
- 查找字符串中不重复的最长子串
- LRU
- 手写求树的深度的代码
- 手写生产者消费者
- 编程实现string类
- 两个数组A,B,A有的B都有,求B-A;
- 输入一个字符串,输出它的全排列
- 统计完全二叉树多少个节点
- memcpy实现
数据结构书籍《大话数据结构》
leetcode 每个类型的题目10道,做懂吃透。
计算机网络
- 介绍下proactor和reactor
- reactor的组成
- TIME_WAIT危害
- TIME_WAIT时长,为什么?
- IP为什么要分片
- 项目中说用到线程池,开多大,为什么运用线程池?
- select和epoll区别
- select什么情况返回0
- epoll可读情况有哪些
- 什么时候需要TCP四次挥手?
- 如何设置非阻塞
- 什么是零拷贝?
- tcp与udp的区别以及应用场景
- 如何设计一个可靠的udp
- 粘包如何解决
- 讲一下拥塞控制和流量控制
- http和https区别
- 是否了解中间人劫持原理
- http协议格式,几种方法,功能是什么
- chunk块了解?介绍下
- 有chunk的时候contentlength是什么样子
- 半连接在哪个阶段
- 三次握手四次握手详细过程,越详细越好
- libevent结构,内部实现
- tcp的可靠性体现在哪里
- ARP协议工作流程
- epoll中的ET和LT模式
- 介绍下滑动窗口
- 指针与引用的区别
- Accept发生在三次握手哪个阶段
- Udp的接收缓冲区和发送缓冲区和tcp的区别
- http长连接与短连接的区别
- udp包长度
- 一次url访问会经历哪些过程
- 数据包乱序会处理?
- seq为1000,发送了1000个数据,下一个seq是多少?
- syn如果丢了,重传多少次
tcp/ip相关推荐书籍:《tcp/详解:1》
操作系统
- 进程与线程的区别
- 多进程与多线程区别,应用场景
- volatile和原子变量的区别
- proc文件系统
- 自旋锁与普通锁的区别
- 虚拟内存
- 进程的内存分布
- 栈内存为什么由系统自动分配和释放
- 守护进程如何创建
- 进程间的通信方式及其区别,应用场景
- 死锁条件和解除
- 进程调度方式
- 对编译连接的理解
- 共享内存实现原理
- 僵尸进程是什么,如何处理
- 自旋锁在单cpu与多cpu下的使用
- 用户态与内核态
操作系统推荐书籍:《深入理解操作系统》,《Linux内核设计与实现》
上述是操作系统的原理部分,除了理解原理之外, 还需要对常用的linux操作系统的使用很熟悉
linux
- 如何查看进程打开的文件
- 介绍下nm与ldd命令
- shell命令查内存,端口 ,io访问量,读写速率
- awk grep具体应用
- 硬链接与软连接,目录可不可以用硬链接
- 常见命令netstat iptable tcpdump top
- makefile介绍下(cmake介绍下)
- gdb查看堆栈中所有遍历
- gdb查看shared_ptr 指向的内容
- gdb如何调试多进程多线程
- g++和gcc编译出来有什么区别
- 死锁怎么调试
- core文件中是什么,gdb调试core文件
- 如何读取一个10G文件,cat一个10g文件会发生什么
Linux基础命令推荐书籍:《Linux就该这么学》《Linux多线程服务端编程》
最好是亲自上手操作练习。