面的系统部,做四层或七层的接入网关,Base北京或深圳,技术栈是C++ / DPDK / 网络 / Linux内核
百度网络研发一面面经(技术面,电话,1h)
1.网络
(1)TCP和UDP的区别?
(2)TCP三次握手和四次握手?
(3)为什么是三次握手而不是两次握手?(防止重复建立连接)
(4)Time-Wait状态太多,会有什么影响?(占用端口)
(5)Linux如何查看Time-Wait状态?(netstat -atnp)
(6)哪些内核参数可以调整TCP半连接队列?(tcp_max_syn_backlog)
(7)epoll的底层原理?(红黑树、就绪队列)
(8)epoll_wait,用户程序里面没有处理就绪数据会怎么样?(水平触发、边缘触发)
(9)网页输入域名的整个过程?(DNS流程、TCP三次握手、TLS四次握手、HTTP交互、页面渲染、TCP四次挥手)
(10)HTTP请求到了服务器,网卡收包的流程是什么?(网卡DMA拷到内存,硬件中断通知CPU,执行硬件中断处理函数,函数里面关硬件中断,产生软中断,执行软中断处理函数,函数里面启动一个进程调用poll函数轮询处理内存网络数据包,对数据包进行协议处理,最后拷贝到socket缓冲区)
(11)数据包中间经过协议栈的时候是怎么处理的?(NetFilte,允许注册hook函数,实现对经过协议栈的网络数据包进行自定义处理,参考https://zhuanlan.zhihu.com/p/81866818)
(12)Linux看CPU的利用率,怎么查看?(Top、uptime)
(13)Linux,CPU的平均负载怎么理解?(用Top或uptime命令会显示load average:有三个数,分别表示1分钟、5分钟、15分钟内的平均负载。在只有一个CPU情况下,CPU最大负载为1.0,当平均负载大于1.0,表示有进程在等待,例如CPU最多能够处理100个进程,那么平均负载为1.7表示有100个进程正在处理,70个进程处于等待,参考:http://www.ruanyifeng.com/blog/2011/07/linux_load_average_explained.html)
(14)查看网络I/O的命令?(ifstat -a)
2.代码
(1)输入两个链表,找出它们的第一个公共节点。
(2)二叉树反转非递归方式实现。
示例: 4 / \ 2 7 / \ / \ 1 3 6 9 输出 4 / \ 7 2 / \ / \ 9 6 3 1
(3)一个不重复的数组,[3,4,1,2,5,6],从中选取n个数,返回所有组合。
3.反问
全部评论
(2) 回帖