一面
4道算法题
时间50分钟
- atoi实现
- 求字符串能分割成的所有ipv4地址
- 链表逆置
- 有一个均匀生成0-65535的随机数rand(),实现从30W(编号为1-300000)人抽10W人。
前三题都是比较常见的题,第四题之前没遇到过,本质上是要用一个小的随机数生成大的随机数,不知道正确的做法应该是怎么样的。当时想了一个办法,就是用rand()来生成两个3位数a和b,再用a和b生成一个六位数a*1000+b,这样可以保证每个数字生成的概率是相同的,然后就可以随机生成1-300000了,后面只需要用个set做一下去重就行了。
基础知识
- 三次握手四次挥手
- 滑动窗口
- 问我有没有做过网络编程相关的项目,表示并没有
- 问了一下我libco相关的东西,我已经不会了,后面就扯到了实习上去了
- 介绍了一下实习的项目
聊天
然后后面介绍了一下部门,聊了聊天,问了一下我对工作城市的喜好之类的,这时候才知道是WXG的一面。可能是中间带偏了,基础知识没怎么问,光聊天了,然后就结束了。
PS:中间我的信号不太好断了好几次,还好面试官比较有耐心,又给我打回来了,算法题我有一些写的不太好的地方,面试官都和我讨论了一下,还帮我找了出来,还是很nice的。
面委一面
因为面试开始的比较晚,似乎就没有写题的部分了,直接开始后面的部分,更多是一些分析设计题,有一部分已经忘记了,这里写一些记得的。
- 在浏览器中输入url后会发生什么
- TCP/UDP
- 三次握手
- 如何让UDP实现可靠传输?(其实是TCP可靠传输的一些点?)
- 内存池设计之类的(具体记不太清楚了,我也不太懂)
- 比赛中遇到过的最难的问题
- 在实现爬虫的时候要注意的点
- 一篇文章多个关键字,匹配到一个就返回true,如何去做
- 百度搜索实现
面委二面
这次的要求是能跑通,并在本地测试样例,略微复杂一点。写了快2个小时,有点拉跨。
5道算法题
- 链表去掉有重复的
例:1->1->2->3->3->4->4->5->null
2->5->null - 又是求字符串能分割成的所有ipv4地址
- 按照出现次数排序(降序),相同按照数字大小升序
例:[ 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5 ]
[ 4, 4, 4, 4, 3, 3, 3, 2, 2, 1, 5 ] - 由小写字母和’+’ , ‘-’ , ‘(’ , ‘)’ 组成的两个字符串是否等效
例:“a-(b-c+a)” 和 "c-b"等效 - 二叉搜索树判断是否含有两个节点和为sum
基础
总的来说问的比较深入,像我这样只知道皮毛的有很多答不上来。先让自我介绍,因为我没什么项目,所以对实习经历深入的探讨了一下,聊的比较久。
计算机网络
- TCP三次握手
- 为什么要三次握手(为什么要建立连接)
操作系统
- 进程与线程
- 进程间通信