目录
哲库-协议软件开发
7.14一面
- 自我介绍
- 给定一个结构体求`sizeof`
- 一段while循环求`a`和`b`
- 16位数高8位和低8位交换
- TCP和UDP区别。追问:发送方发送了序列号0-100,接收方除了90都收到了,请问接收方发送给发送方的ack号是多少?答:90。追问:那发送方是把90-100全部发还是只发90。答:TCP中的SACK机制。
- 链表删除指定节点p,未给头节点指针,给了指向节点p的指针
7.19二面
- 项目P4语言介绍一下、项目进行时间介绍一下,在线如何实现的,和离线在实现层面区别,有没有遇到什么问题,如何解决的,耗费时间
- TCP/IP协议
- 有没有接触过通信相关课程
- 发送方给接收方发0-10号报文,接收方每收到一个报文就给发送方发送确认号如何解决?答:累计确认。若现在场景为发送方每隔10ms发送一个报文(共10个报文),接收方若还是使用累计确认机制,需要100ms之后才发送确认号,时延会增大,这种场景下应该立刻发确认号,延申:确认号的发送时间是灵活的,可以根据历史信息(网络状况,延时等等)来决定
- 手撕题:删除有序数组中的重复项
字节跳动-网络开发
7.22一面
项目:
- 介绍下项目,交流下他们部门主要做的,好像有重合,但是做的不太一样(网络监控、流量调度),流长对应到的实际问题场景是什么
C++
- new和malloc的区别。延申问了vector中的allocator。
- vector是怎么开辟空间的,适用什么场景。
- map和set的底层以及区别。
- 动态链接库和静态链接库的区别,在实际应用中如何考虑,一般情况下内存充足,保证应用程序时间响应
操作系统
- 进程 线程 协程区别。延申讲到Go语言实现协程*****(那会已经听不太懂了)
- 异步I/O与同步,I/O复用,写时复制
- 现在内存大小16G,malloc(10G),会发生什么,如果现在再加一条语句给这些内存赋初值,又会发生什么
- 操作系统内存的结构:五大部分。(我答了,但是面试官好像问的是要继续深入???进程调用时,内存的情况,用户态、内核态,没太听懂他要说啥了)
计算机网络
- ping工作原理
- TCP如何保证可靠传输
- 在建立三次连接时,如果某个报文丢失了,会发生什么
- 超时重传,超时重传的时间是怎么设置的
- 什么是TCP粘包和拆包
- TCP是面向字节流的,那么一个消息在多个报文中,怎么来恢复这个消息
- 流量控制和拥塞控制区别
手撕代码: