下午两点开始,需要装客户端,面试链接没写,建议大家提前准备。一面(1小时)1.项目40分钟2.笔试复盘15分钟3.拥塞窗口5分钟二面(1个半小时)1.算法题25分钟:给定正整数数组和正整数k。数组中只含有0或1,可以最多k次将0翻转成1。求数组中最长连续1的长度。2.项目20分钟3.epoll在服务器之中如何使用3.服务器SYN-RECV为什么会过多,怎么处理4.死链和保活机制怎么设计5.长连接和短连接区别,长连接断开如何恢复状态6.原子性的软件(CAS)和硬件实现方式7.互斥锁和自旋锁应用场景和区别8.信号量如何使用9.Linux内存分布10.Linux虚拟内存如何实现11.Linux内存分配Lazy行为12.三级存储体系13.内存屏障14.cmake如何产生二进制文件15.git提交流程和创建新的分治16.gdb如何查看寄存器的值和变量内存17.堆的实现总结华为面试官体验感拉满,如沐春风,如同和同学相处一般。平时在准备面试的过程中,尽量将知识串起来。若在面试的回答中只能回答出该子问题的答案,那么大概率面试官会问另一个子问题,所以还是考验对知识的全面性掌握。例如提问堆的实现:我回答了堆分为小顶堆和大顶堆,一个自顶向下递减,一个自顶向下递增。其中构建堆的方式分为两种:一种为自顶向下构建,元素从顶向下对比左右孩子然后递归向下更新,时间复杂度为O(NlogN)。一种为自底向上构建,元素从插入点对比父节点然后递归往上更新,时间复杂度为O(N)。因此准备某个子问题的答案是远远不够的,需要找出该子问题的父问题并且做一个全面的了解和概述。