2019年03月12日下午四点收到腾讯面试官电话。

首先做了自我介绍,然后面试官往我邮箱发了一个题,让我在线编程。

然后过了大概十几分钟,我给出了一个 O(n) 的作法。

算法聊完后,面试官问了问关于网络和 C++ 的一些东西,然后我回答的很惨,下面是问题。

C++

  1. 创建一个 vector<int> ,里面存了5个元素 1 2 3 4 5,把迭代器指向 5,然后在 vector 的最前面插入一个 0 ,问刚才那个迭代器指向几

网络编程和OS

  1. 在 socket 编程中,服务端调用了 bind listen 但是没有调用 accept ,而是调用了 sleep(1000) ,然后客户端 调用 connect 向已经 sleep 的服务端发起请求,问这个 connect 会不会返回。我回答会醒过来,面试官继续问,如果醒过来后,服务端没有写 accept ,那么 connect 会不会返回。
  2. connect 在 TCP 握手的哪个阶段会返回,是三次握手完成后还是在中间某个阶段返回
  3. select 和 epoll 的异同点,epoll 为啥快。
  4. 面试官提出一个场景,创建一个 socket 并且加入到 epoll 中,现在把这个 socket 给 close 掉,那么这个被 close 的 socket 还在不在 epoll 中(没有主动调用 epoll_ctl 去删除),如果这时用 epoll_ctl 去删除它,还能不能删除掉。
  5. 有没有看过 epoll 的 man 手册
  6. 什么时候接触 Linux 的。
  7. 你如何了解一个新知识,如何学习

算法和数据结构

  1. 做题,略过
  2. 说一下贪心和动态规划的区别。
  3. 说一下红黑树,为什么在 STL 的实现中,用的是红黑树,而不是其他树。
  4. B 树,跳表学过吗

其他

  1. 如果让你设计中国第三代身份证系统,说一下设计思路。
  2. 除了学习算法打比赛,你还学了些啥
最后修改:2019 年 03 月 13 日 11 : 28 AM
如果觉得我的文章对你有用,请随意赞赏