
语言
- 写一个常量指针和指针常量
- 怎么实现单例模式
- 单例模式和观察者模式的应用场景
- reactor 模式
- MVC
- 了解其他开源的 mallic 方式吗
- C++ 14 新特性
- C++ 20 新特性
- 什么是右值引用
- 什么是智能指针,有哪些,以及实现原理
- 什么是虚函数
- 怎么定义虚函数
- 什么是虚函数表
- 什么是多态
- 指针和引用的区别
- 指针的大小
- 强制类型转换
- 如何理解 C++ 的面向对象编程
- 内存对齐的原则
- 怎么实现模板
- 指针和 const 的用法
- 内联函数和宏定义的区别
- extern C 的作用
- C 和 C++ 的区别
- 模板特化的概念,为什么特化
- explicit 干什么用的
- new与malloc的 区别,delet 和 free 的区别
- vector 底层如何实现的,如果内存不够执行什么操作
- sizeof(1==1) 在 C 和 C++ 中分别是什么结果
计算机网络
- 长连接和短连接
- 怎么在服务端实现长连接
- http 和 https 区别,https 加密方式
- http 头部包含哪些,keep-alive 和非 keep-alive 区别,对服务器性能有影响吗
- 怎么知道 http 的报文长度
- 如果你访问一个网站很慢,怎么排查和解决
- 域名和 ip 的关系,一个 ip 可以对应多个域名吗
- 为什么 fidder,charls 能抓到你的包,过程是什么
- tcp 三次握手和四次挥手
- TIME_WAIT状态会导致什么问题,怎么解决
- tcp 如何保证可靠传输
- ping ip 的过程
- 拥塞控制和流量控制
- tcp 和 udp 的区别
- tcp 粘包问题
- tcp 报文包含哪些信息
- 如果不想让一个人上网,除了MAC地址进行限制之外还能怎么做
- 私网地址和公网地址之间进行转换:同一个局域网内的两个私网地址,经过转换之后外面看到的一样吗
- 对称加密和非对称加密的区别
- epoll水平触发和边沿触发,底层原理
数据结构
- 跳表的实现原理
- 哈希表的具体实现,哈希函数和哈希冲突等
- 字典树的实现原理
- 红黑树的定义和解释
- 二叉树有哪几种遍历方式
- map 与 unorder_map 的区别
- vector 和普通数组的区别
数据库
- MySQL、MongoDB 区别以及适用场景
- MySQL 有哪些存储引擎以及它们的区别和适用场景
- Redis 有哪些对象,什么情况用什么对象
- Redis 中的跳跃表
- Redis 和关系型数据库比有什么特点
- Redis 中是怎么避免突然断电等数据丢失的问题的
- 数据库的事务特点
- 数据库的隔离级别
- 分表和分区
- 假如查询的字段不是你分区的字段,如何提高效率
- 数据放在内存中的数据库有什么隐患
bin
操作系统
- linux 内核原理了解哪些
- Linux 文件系统
- 哪些方法可以读取文件内容
- 共享内存的实现原理
- 进程怎么进行管理
- 进程间的通讯方式
- 进程和线程的区别
- 系统平均负载如何计算
- read 函数详细调用过程
- 怎么通过 inode 节点的文件偏移量知道读取哪个页
- 当页缓存未命中时会发生什么
- 怎么样知道该页的磁盘地址
- 如何实现内存池
- 如何检测出现了内存碎片,如何解决
- 如何检测内存泄漏
- 实现多线程有哪些方法
- 多线程的缺点
- 互斥锁和自旋锁的区别和优点
- 死锁如何产生
- 堆和栈的区别和优点
- 有哪些调度算法
- 内存溢出有那些因素
- 异常机制
- top 怎么查看线程
- Linux下的/var 目录有什么用
- 什么是并行计算
算法