一面:
1:自我介绍
2:手写代码:去除c++中的注释
3:详细描述网络库的架构
4:服务端编程需要用到的函数,详细解释
5:解释time_wait状态,原因,解决方法
6:解释MSL
7:解释服务端哪些函数需要阻塞,如何实现非阻塞
8:解释poll和epoll的区别,epoll的底层原理
9:简单描述红黑树
10:简单解释中断机制
11:解释读写缓冲,为什么这么设计
12:解释socket缓冲,滑动窗口协议
13:解释backlog,为什么有这个限制
14:线程池的简单描述
15:了解c++11中哪些新特性
16:左值引用和右值引用
17:生产者消费者模型,如何实现多线程访问
18:c++中如何实现信号量
19:提问环节
20:再解释论文中的一个算法吧,有加分
二面:
1:自我介绍
2:手写代码:之字形打印二叉树
3:解释网络库
4:解释消息队列,pub-sub系统以及RPC
5:解释poll和epoll的区别,epoll的底层架构
6:解释红黑树
7:解释hash_map的底层实现
8:解释线程池的实现
9:聊聊你的消息如何进行序列化和反序列化,如何判断大端小端
10:你的网络库和现在的网络库相比,有哪些没有考虑的,如何解决
11:最近有在看哪些技术书籍
12:mmap的原理,为什么比read,write要快
13:fwrite会经历哪些过程
14:解释分布式一致性协议,两阶段提交,raft以及其与paxos的区别
15:提问环节
三面:
1:自我介绍
2:解释CAP
3:解释分布式一致性协议,raft
4:设计题:设计一个后端系统用于用于查询新闻,其中数据库最多只能承受1w的访问量:
初步设计:连接路由+分布式缓存+超时机制+消息队列
5:超时机制如何更新新闻,新闻需要存储哪些东西,如何设计key:
优化:超时机制改为push
6:如何进行路由,路由表如何查找:
优化:map,红黑树,时间戳
7:路由会有单点问题,如何解决:
优化:一致性hash,分布式hash表
8:分布式hash和普通hash有什么区别,优势是什么
9:再谈谈超时机制,详细设计一下:
优化:类似LRU这样的缓存更新
10:如果每条新闻的超时时间不同呢:
优化:优先级队列
11:如何将这个优先级队列分布式化
12:优先级队列的原理
13:描述一下堆的插入和删除
14:网络库的设计思路,如何一步步想到这些的
15:未来对这个库优化思路
16:技术规划是什么,最近在看哪些技术书籍
17:了解哪些开源框架,了解头条的技术架构
18:想在头条里从事什么,提问环节
HR面:
很轻松,简单的聊了几句
网友评论