一、编程语言 c++
- 虚函数: 在有继承关系的父子类中,构建和析构一个子类对象时,父子构造函数和析构函数的执行顺序分别是怎样的?
- 在有继承关系的类体系中,父类的构造函数和析构函数一定要申明为 virtual 吗?如果不申明为 virtual 会怎样?
- 什么是 C++ 多态?C++ 多态的实现原理是什么?什么是虚函数?虚函数的实现原理是什么?什么是虚表?虚表的内存结构布局如何?虚表的第一项(或第二项)是什么?
- 菱形继承(类D同时继承B和C,B和C又继承自A)体系下,虚表在各个类中的布局如何?如果类B和类C同时有一个成员变了m,m如何在D对象的内存地址上分布的?是否会相互覆盖?
- 模板:
- 萃取
- 函数对象
- STL vector 扩容策略;hashmap的实现;allocator的实现
二、操作系统
- 内存分配:
- jemalloc 学习
三、网络通信、网络编程
- 三次握手
- socket函数
- select的缺陷
- epoll模型
四、分布式系统、多线程编程
- 同步互斥,异步非阻塞,回调的概念
- 分布式存储的数据一致性保证
五、算法与数据结构
- 数组
- 链表
- 二叉树
- 哈希表
- 遍历:递归/迭代
- 排序算法
- 动态规划
- 二分查找
六、开源代码与系统框架
- kafka
- mq 实现原理
七、搜索引擎技术
- 正排实现
- 倒排实现
- 召回流程
八、数据库、缓存
- redis : 持久化机制 ; redis销毁方式机制; https://blog.csdn.net/mashaokang1314/article/details/88636371
- memcached一致性哈希
- innodb索引原理
九、设计模式
- 单例模式:多线程安全、懒汉饿汉的实现 ,适合的场景。
- 反射机制
- 工厂模式
TIPS: 后台开发学习