在头条蹭了顿饭,换一顿被吊打(头条后端开发三面面经)
本来剧本我都写好了:
我:你好
面试官:你好,我们做一道题吧,看看你代码写的怎么样。
我: emmm……
面试官:balabala……
我:(憋了半个小时没憋出来)
面试官:好的,我们先这样吧,你回休息区休息一下
5分钟后,HR:你好,你的一面可能没有通过,你可以先回去了,抱歉
我:时间刚好差不多6点,正好回去喝个砂锅粥。
没想到面试官不按套路来啊!他让我面了三轮!还每一轮都把我吊起来打!真是没有人性!
一面:
来讲讲你的项目
讲讲TCP的可靠性怎么保证的
讲讲TCP的keepalive
只用keepalive能保证连接的保活性?(这里没太get到点)
应用层的心跳和4层的keepalive有什么区别?
讲讲拥塞控制?
讲讲BBR?
讲讲HTTP的优化?
讲讲进程和线程的区别?
来写个程序,反转句子中的word。(www.toutiao.com -> com.toutiao.www)
来数组中的最大连续子序列和。
二面:
来讲讲你的项目吧
来讲讲分布式存储。
分布式存储怎么保证可用性?
分布式存储的主从同步怎么做?
设计一个数据结构……什么结构来着……想起来了!提供get, insert, traversal三种方法,要求查找和插入都是O(1)的,遍历则是按照插入顺序遍历。
设计一个方案,让高并发情况下,100ms内没有数据读写的连接自动关闭。
旋转数组的二分查找。
三面:
嗳呀你是C++的呀!(面试官OS:艾玛可算有的怼了,开心)
来讲讲C++11的新特性
来讲讲虚继承
来讲讲C++11的右值引用,std::move
来讲讲C++的虚函数实现机制
来从内核讲讲信号的实现机制
(面试官OS:唉看你小子这么菜,让你发挥一下,我们设计一个数据结构吧!)
说:
我们有一个池,里面是一些已经分配好的ID,然后我们有三个方法:
(1) get,从池中取一个已经分配好的元素
(2)release, 把元素还给池
(3)random, 随机返回一个已经分配出去的元素,要求保证等概率
来,想吧
这几种都是O(1)的哦~
卒。
面完,HR:你好,你也不用加面了,回去等通知吧。
好的,我能加个茶叶蛋吗?
#面经##字节跳动##C++工程师##秋招##内推#