c/c++语言基础
- 面向对象三大特性
封装,继承,多态 - 多态的实现和什么是虚函数
通过虚表和虚表指针实现 - 纯虚函数
定义了纯虚函数的类不能实例化,只能通过子类重写,用来实现抽象类 - 复制构造函数什么时候被调用
- 作为函数参数
- 作为函数返回值
- 用一个对象初始化另外一个对象,有 2 中形式,classObj o2(o1), classObj o2 = o1;
复制构造函数和赋值运算符区别:主要看是否产生新的实例,有新实例就是复制构造函数
classObj o1;
classObj o2;
o2 = o1; // 调用赋值运算符
重载
函数重载和运算符重载coredump 如何开启
ulimit -c unlimited 开启
ulimt -c 0 关闭memcpy 和 memmove 区别
memmove 可以处理内存重叠问题(dest 指针在 src+count 的内部),memcpy 不行大小端区别,网络是什么端
cpu 对内存中数据解释不同,小端,低位在低的内存地址,大端,高位在低内存
x86 是小端,arm 小端
网络是大端模式malloc 和 realloc 区别
realloc(void * ptr, size_t size)
ptr 为空,跟 malloc 一样
ptr 不为空,size 为 0,跟 free 一样
ptr 和 size 都不为 0,size 小于原来大小,则截断,返回原指针,size 大于原大小,可能返回原指针,或者返回新指针,原指针被释放makefile 相关
c++11 新特性
python 语言
- 包裹函数?
数据结构与算法
- 找链表的中间节点
两个指针,一个指针每次是另外一个的 2 倍前进 - map 和 hash map 区别
map 底层是红黑树,插入,查找,删除都是 O(log2N)
hash_map 底层是哈希表,需要处理冲突
操作系统
进程通信和线程同步
linux 内核中的锁,原子锁
查看系统性能命令,ps,netstat,io 方面的是啥?iostat
tcpdump,监控一个网卡的命令
linux 内存管理,页面寻址
计算机网络
- 浏览器打开一个地址发生了什么事情?
- ip 层做什么事情?
- tcp,udp 区别
- linux socket 编程函数和流程
- accept 是在三次握手的那个?
客户端 connect 后,三次握手结束,accept 才返回 - send 发完是一定成功吗?数据去哪里了?
- 服务器编程模型
- 同步阻塞模型,accept,read,write 都会是进程阻塞
- 多进程模型,accept 与客户端建立连接后,fork 子进程,在子进程中 read 和 write
- 多线程模型,可以按需生成,可以用线程池,Leader follower(LF),缺点:(1)多线程不稳定,一个线程异常影响其他线程,(2)多线程同步问题导致性能下降
- IO 多路复用模型,select/poll,或者 epoll
- select,poll,epoll 区别
- 网络请求的触发?水平触发,边缘触发
- 阻塞,非阻塞,同步,异步
- IO 模型
五种 IO 的模型:阻塞 IO、非阻塞 IO、多路复用 IO、信号驱动 IO 和异步 IO;前四种都是同步 IO
1) nigux 相关
数据库
分布式系统
分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾
K8S,Doucker
- CAS
CAP
K8S,Doucker
- CAS