OSI 七层模型和 TCP/IP 四层模型:
- http、ftp 应用层
- [表示层]
- [会话层]
- tcp/udp 传输层
- ip、icmp 网络层
- ethernet/以太网 数据链路层
- [物理层]
tcp
TCP 三次握手和四次挥手,报文 SYN/ACK ,报文 FIN /ACK
中间状态切换, timewait 为什么等两个 msl ? e.g. TIME_WAIT
和 ESTABLISHED
以 tcp 为传输协议设计应用层协议时,要考虑粘包、半包、拆包等问题,参考 http 解决即可。
多态
重载 overload 相同签名不同入参,编译期多态/静态多态(模板也是编译期多态的手段)。
重写/覆写/覆盖 override 继承体系,运行期多态。
怎么实现多态?虚函数表 + vptr
空对象的大小?1 个字节。
子类不重写父类的任何虚函数,子类的 vptr 会和父类的 vptr 指向同一 vftable 吗? 不会。
思考:多态解决什么问题?
内存拷贝
memcpy()
和 memmove()
两者有 什么区别?
关联容器
由浅入深的几个问题:
map
和unordermap
的区别unordermap
元素数太多,有什么影响map
和unorder_map
的底层数据结构map
红黑树,和平衡二叉树区别B+
树
微服务
有状态服务 vs. 无状态服务
集群化有哪些情况?
k8s 有状态服务,怎么处理
重构
怎么设计流媒体?通过思考的过程,验证能否去除流媒体调度服务,能否 k8s 自行扩展?
k8s 按照长连接数目的策略选择实例
收到客户请求(入参要有 puid),访问 redis 是否存在 puid,如果不存在:
向设备发出拉流信令
将 puid 和 spid 放到 redis 上,设置过期时间,要求服务打卡续命
失败或断开时主动从 redis 移除 puid
如果已经存在:
- 将 ……
认真思考
参照公司梳理主流程的做法,我自己也抽取一套更小的流程(主流程之内或者之外再考虑),保证可测试、可验证,尝试优化、改进。
异步 IO
windows 平台的 IOCP
linux 平台的 libaio
Linux-native asynchronous I/O access library.
POSIX aio 又是什么概念呢