字节和腾讯暑期实习后台开发面经

1. 字节一面-60分钟
a. 算法题
i. 数字序列中某一位的数字,剑指offer 44
ii. 二维数组中的查找,剑指offer 04
iii. 链表奇数节点单调递增,偶数节点单调递减,要求全链表有序
b. 基础相关
i. 介绍golang的channel
ii. golang的map是不是线程安全的
iii. 互斥锁,读写锁,死锁介绍
iv. 乐观锁和悲观锁介绍
v. map和hash map的区别,哈希冲突怎么解决
vi. topK问题
c. 项目相关
2. 字节二面-60分钟
a. 算法题
i. 最长不含重复字符的子字符串,剑指offer 48
ii. 二维矩阵求左上到右下的和最低路径,每个元素访问一次
b. 基础相关
i. IO多路复用
ii. 进程、线程、协程的概念和介绍
iii. 像Java这种有GC的语言是否存在内存泄漏
iv. 多线程编程模型
v. Reactor/Proactor的区别
vi. 通常栈里的对象比堆里的对象快,为什么
vii. 如何自学的
c. 项目相关
3. 字节三面-40分钟
a. 算法题
i. 积雨水Leetcode 42
b. 基础相关
i. 对golang有什么了解
ii. 同步/异步,阻塞/非阻塞的介绍,优缺点
iii. 数据库索引介绍,B+树为什么快,Hash索引与B+树索引的对比
iv. 为什么计算机分CPU缓存,内存,交换区,磁盘这样的层级结构
c. 项目相关
i. 为什么参考etcd/raft的实现
ii. Raft选举流程,与Paxos的区别
iii. 分布式数据库如何实现故障容错,介绍一个数据节点挂了的后续处理

1. 腾讯一面-90分钟
a. 算法题
i. void reverse(LinkNode *root),翻转链表
ii. int findKthInBST(TreeNode *root, int k),寻找二叉搜索树第k小的值
iii. double sqrt(double value, double eps),求平方根
b. 智力题
64匹马和8个赛道,没有计时器,最多需要比赛几次能够获得前4快的马
c. 基础相关
i. topK问题
ii. C++ STL里容器的底层实现
iii. 代码改错(vector迭代器失效)
iv. 多线程同步机制有哪一些
v. 多线程里A线程持有锁,B线程调用fork()产生子进程,子进程里能否释放锁
vi. select, poll, epoll的区别,epoll ET/LT介绍
vii. OLAP, OLTP的区别
d. 项目相关
i. 共识算法
Raft和Paxos的区别
Raft选举流程,何时选举,如何保证数据可靠不丢
举例分析,5节点的集群,leader挂掉后到新leader诞生的全过程
ii. 如何设计一个支持多维度、数据立方的流数据聚合计算框架
2. 腾讯二面-50分钟
a. 算法题
int findPeak(const vector<int> &a),找峰值,{1, 2, 3}返回3,{1,4,7,6,5}返回7
b. 智力题
5L量筒和3L量筒,现在要4L水
c. 基础相关
i. 常见的排序算法,复杂度,解释快速排序的平均时间复杂度和最差时间复杂度,详细描述堆排序
ii. 红黑树的性质,与AVL树对比的优缺点
iii. topK问题
iv. C++ class和struct的区别
v. C++动态绑定机制
vi. 构造函数是否可以是虚函数,为什么
vii. C++ STL里容器的底层实现
viii. 输入URL到网页显示全过程
ix. TCP三次握手,详细描述第三次ACK丢了的情况
x. DNS报文用什么协议传递,为什么
xi. HTTP与HTTPS的区别
xii. epoll ET/LT介绍,如果ET读取数据到一半被中断(比如信号)怎么办
xiii. 设计一个计时器Timer以及Timer的管理类,只允许使用C++11 STL
要求支持插入Timer返回ID
根据ID可以找到Timer
可以根据ID删除Timer
Timer支持单次唤醒,周期唤醒,修改唤醒时间

3. 腾讯三面-70分钟
a. 算法题
void quickSort(vector<int> &a),快速排序,如何不递归实现
b. 基础相关
i. 如何判断单链表有环
ii. C++动态绑定机制
iii. C++派生类构造顺序,析构顺序
iv. 函数调用参数传递机制,如果是struct变量如何传递
v. 异常安全的类型
vi. 常见排序算法,复杂度,解释快速排序的平均时间复杂度和最差时间复杂度,解释pivot的选取对复杂度的影响,实现快速排序
vii. 有没有比快排更快的排序,解释一下桶排序的过程,适用场景
viii. map/unordered_map的底层实现,复杂度,适用场景
ix. TCP三次握手,TCP如何实现有序,seq/ack号超过最大值了怎么办,起始seq如何选择,为什么
x. HTTP的Get/Post有什么差别
xi. epoll ET/LT介绍
xii. 进程和线程的区别
xiii. 进程间通信方式,哪个效率最高,为什么
xiv. 线程间通信方式,同步机制,并发编程模型(Actor/CSP),死锁
xv. 数据库索引介绍,为什么有索引会变快
xvi. 数据库事务的作用,ACID介绍
c. 项目相关
i. Raft
Raft为什么能实现高可用,选举流程,如何保证数据一致性和可靠性,成员变更,优化
ii. 发布订阅
1) 整体架构介绍,为什么选用epoll
2) 介绍一个完整的订阅和反订阅流程
3) 如何实现流量控制,接收队列满了怎么办
4) 流数据持久化和高可用

没有录音,每次面试后凭印象记录的,供参考
#实习##面经##字节跳动##腾讯#
全部评论
阿里巴巴政务钉钉事业部,阿里新赛道,飞速发展的事业部,方不方便发简历过来呢,我们特别希望收到优秀同学的简历,邮箱lh242628@alibaba-inc.com
1 回复 分享
发布于 2020-03-28 11:58
{"pureText":"","imgs":[{"src":"https://uploadfiles.nowcoder.com/images/20200328/621440138_1585376934733_42FC6592D0682B3B5FB8930B625A3730","alt":"A0nFjSd78tW1OULO9TZq7QdbGHftyBmS.jpg","width":"1440.0","height":"2310.0"}]}
点赞 回复 分享
发布于 2020-03-28 14:29
好强
点赞 回复 分享
发布于 2020-03-28 10:42
所有问构造函数能否是虚函数的部门一律拉黑。。。。
点赞 回复 分享
发布于 2020-03-28 10:04
@所有人 从投递简历->到准备面试,都是你关心的干货【字节跳动-投递必读】https://bytedance.feishu.cn/docs/doccnG71V5OtL4GmlyMNnSZv3Cb#i96SHV
点赞 回复 分享
发布于 2020-03-28 09:13
好强。
点赞 回复 分享
发布于 2020-03-28 00:33
老哥的字节三面算法接雨水撕出来了吗?
点赞 回复 分享
发布于 2020-03-27 20:19
这么变态,面的啥呀?
点赞 回复 分享
发布于 2020-03-27 18:41
什么项目啊?能推荐一下吗
点赞 回复 分享
发布于 2020-03-27 18:36
项目是6.824吗?tql
点赞 回复 分享
发布于 2020-03-27 18:35

相关推荐

面试官人很好,态度和蔼可亲,没答出来时也会引导你去思考。由于是晚上面的,导致我白天一天都有点紧张,面的时候状态也不是很好,正常可能面试官提问完应该思考几秒再答,而我就像抢答一样一口气把所有会的都说出来,这样就导致逻辑比较混乱,东一句西一句的。首先是自我介绍,先把会的技术大致讲一下,由于我八股背的多所以着重讲了一下,Java,go,jvm,MySQL,Redis,计网,操作系统这些,然后一小部分闲聊,然后先问了一下项目,面试官问我这个项目是否落实之类的,直接坦言说是写的练手的,包括之前也写过IM通讯,外卖之类的。然后面试官就把提问的重点放在了八股上。先问了Java:类加载器(答:3种+自定义类加载器、tomcat、原因+双亲委派+好处)JVM参数(答:xmx,xms,newsize这些,问我是如何设定的,我回答是把内存分一半给堆,再把堆分一半给新生代,这方面确实不太了解)然后问了一下并发相关的:线程池(答:线程池的7个参数(忘了线程工厂和阻塞时间了),3个重要参数,还有线程如何启用,为什么要设计最大线程数之类的,提到Java栈默认分配1MB运行时不可以更改)AQS(答:先讲clh是自旋锁+list,然后是AQS在这个基础上做的两个优化,然后举了一下reentrantlock根据state如何获取资源)CAS(答:使用三个字段,aba问题,然后将通常搭配自旋锁实现,面试官问通常会自旋多少次,这个不太了解,答的100,然后问100次大概多少秒,回答微秒级,然后面试官讲了一下怎么做资源可能没用完,意识到可能还需要进行阻塞操作)然后考虑一下Linux命令(top,ps,如何使用管道符过滤线程和使用Linux启动线程没答出来)然后问Redis:持久化机制(答:三种aof,rdb,混合,aof的三个参数刷盘策略,rdb以快照保存,使用bgsave会使用子线程来保存不会阻塞,而aof虽然会阻塞但是只在写完数据后追加一条命令,不会太影响,然后是他俩的优缺点,还有混合是怎么保存数据的)集群模式(答:三种,主从复制到缺点再到哨兵机制,正常使用三个哨兵互相监督,主节点挂了投票选主哨兵然后选主节点,然后额外讲一下脑裂的问题,主节点进行数据更新然后把命令写入aof来同步从节点,最后cluster集群,如何实现,使用16383个哈希槽(艹答成16384了),先根据哈希码取余,再根据节点数取余决定放在哪个节点上,然后问了一下我会怎么选集群模式,首先是cluster的问题,会让管道操作之类的失效,然后哨兵会导致整个集群结构变得复杂,使用小项目可能会考虑哨兵,大的考虑cluster,然后考了一下cluster如果一个节点挂了怎么办,根据节点数重新取余然后数据转移,面试官说这么转移比较慢,有没有别的办法,我隐约记得使用一个类似环形数组的方式,想不起来了)然后考了一下MySQL的b+树(这方面的知识点太多了,导致我什么都想讲逻辑就比较乱,讲了一下聚簇索引,树的叶子节点对应着一张页16KB,MySQL有一个区的概念,把这些页放在同一个区中,这样叶子节点的双向链表遍历时速度更快,然后b+树的扇出比较大(非常二,说成扇度之类的,面试官以为说的是扇区)这样层数就比较小,一行1kb数据的话3层可以放心2000w数据)其他的暂时想不起来了算法是lru,面试官问要不要提示,我说写个,然后写了10分钟左右,说大概写好了,但是面试官指出了2个小错误,第一个马上就改回来了,第二个一直没看出来(大脑这时候已经停止工作了)反问:问学习建议,说根据实际的项目进行深入,考虑应该怎么做,还问了一下组里面是做Java的吗?面试官说他是做go的,组里什么语言都有,语言影响不大,连忙补充了一句我对go的底层有深入源码的学习)结束。总体感觉答得不太好,没有太体现出深度,细节也不够全面。
下一个更好呗:佬,我投完云智一直没消息,多久约的一面啊
查看14道真题和解析
点赞 评论 收藏
分享
评论
17
178
分享

创作者周榜

更多
牛客网
牛客企业服务