腾讯后台开发实习一面面经
2019年03月12日下午四点收到腾讯面试官电话。
首先做了自我介绍,然后面试官往我邮箱发了一个题,让我在线编程。
然后过了大概十几分钟,我给出了一个 O(n) 的作法。
算法聊完后,面试官问了问关于网络和 C++ 的一些东西,然后我回答的很惨,下面是问题。
C++
- 创建一个
vector<int>
,里面存了5个元素1 2 3 4 5
,把迭代器指向 5,然后在 vector 的最前面插入一个 0 ,问刚才那个迭代器指向几
网络编程和OS
- 在 socket 编程中,服务端调用了 bind listen 但是没有调用 accept ,而是调用了 sleep(1000) ,然后客户端 调用 connect 向已经 sleep 的服务端发起请求,问这个 connect 会不会返回。我回答会醒过来,面试官继续问,如果醒过来后,服务端没有写 accept ,那么 connect 会不会返回。
- connect 在 TCP 握手的哪个阶段会返回,是三次握手完成后还是在中间某个阶段返回
- select 和 epoll 的异同点,epoll 为啥快。
- 面试官提出一个场景,创建一个 socket 并且加入到 epoll 中,现在把这个 socket 给 close 掉,那么这个被 close 的 socket 还在不在 epoll 中(没有主动调用 epoll_ctl 去删除),如果这时用 epoll_ctl 去删除它,还能不能删除掉。
- 有没有看过 epoll 的 man 手册
- 什么时候接触 Linux 的。
- 你如何了解一个新知识,如何学习
算法和数据结构
- 做题,略过
- 说一下贪心和动态规划的区别。
- 说一下红黑树,为什么在 STL 的实现中,用的是红黑树,而不是其他树。
- B 树,跳表学过吗
其他
- 如果让你设计中国第三代身份证系统,说一下设计思路。
- 除了学习算法打比赛,你还学了些啥