今日头条校招面试-后台开发工程师

一面:

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面:

很轻松,简单的聊了几句

你可能感兴趣的:(今日头条校招面试-后台开发工程师)