字节跳动基础架构四面面经(已意向书)

base杭州,整个流程包括周末下来10天左右,因为没有录屏做记录,所以很多问题给忘了,只记得部分。
大部分时间是在聊实习经历和项目,其他问题问的不多。

8.27 一面(70分钟)

1. 实习业务相关
2. lvs四层转发和nginx七层转发的区别?
3. 为什么要有lvs四层转发?
4. close_wait和time_wait是什么?为什么要time_wait?
5. 499和502出现的原因是什么?
6. session和cookie区别,解决了协议的什么问题?
7. 转账过程中,会出现什么事务的问题?
8. from_count -> to_count,to_count是热点用户,可能有多个请求要修改,怎么处理?
9. 什么场景需要建立索引,为什么要建立索引?
10. 排序数据要建索引吗?范围查询要建索引吗?txt文本数据要建索引吗?
11. 用户id怎么生成?(DB自增不可靠,因为可能有多个机器共用一个DB,自增会溢出。从代码层面解释如何生成)?
12. 怎么保证DB里面的数据不会被修改(权限问题不考虑,假设用户有权限)?
算法:任意三个数之和最接近0

8.31 二面(60分钟)

1. 实习经历(20分钟)
2. 三次握手具体过程(要说自己的理解,不能直接背),seq可以从0开始吗?
3. 数据库索引引擎为什么用B+树,和B树区别在哪,为什么不用红黑树/AVL树(从磁盘IO,查找稳定性,数据量去分析)?
4. B+树的双向有序链表有什么用?
5. 进程和线程机制上的区别,应用上的区别,线程共享/独有的,进程通信方式(一个一个往后推理,为什么要有这个)。
6. 线程和goroutine的区别,为什么协程比线程轻量级?
算法:lc124. 二叉树中的最大路径和

9.1 三面(60分钟)

1. golang,defer的底层执行过程,顺序是怎么样的,多个defer执行顺序
2. 实习项目,开发流程,遇到的问题(20分钟)
3. golang的slice扩容原理(顺带提了下vector的扩容)
4. 网络IO模型有几种,分别是什么(阻塞IO、非阻塞IO、IO多路复用、信号IO、异步IO,详细介绍)
5. socket编程的流程(服务端、客户端)
6. session和cookie
7. 进程和线程在应用上的区别,机制上的区别,什么场景选择哪种,为什么?

9.6 四面(45分钟)

1. 实习项目(20分钟)
2. C++和golang在并发场景下的应用区别
3. socket编程心得
4. 个人项目(问了个RPC框架)
5. 算法:
(1)合并两个有序数组(简单)
(2)找一个数,它两边的数都比它大(二分查找变种)

面试完隔天,也就是9.7号,HR联系发意向书,当天中午收到意向书。


总结:

面试的大部分时间在聊实习经历(我在腾讯云有过一段实习经历,做cdn),和基架那边的业务线有些关联,所以聊得来。然后大多是一些开放性的问题,不是那种八股直接背出来就行的,我这里列的问题可能不全,但每个问题面试官都会追问。二面后问面试官表现怎么样,他说底层技术知识还是不错的,不会停留于表面,因此面试问到不会的可以尝试和面试官讨论下,不要停留在背八股的层面。
最后,祝大家都能拿到心仪的offer,顺利结束秋招!





#字节跳动##面经##基础架构工程师#
全部评论
想问一下,面试会问计算机网络八股,那计算机网络黑书,tcpip卷一,图解tcpip,应该看哪些
点赞 回复 分享
发布于 2021-11-07 14:51
挺难的感觉,想问问春招还有岗位吗
1 回复 分享
发布于 2021-09-11 15:50
好难
1 回复 分享
发布于 2021-09-11 10:50
请问你是学golong的吗?我是Java,面经里好多东西我不会😅
点赞 回复 分享
发布于 2021-11-12 13:03
楼主一面后多久收到二面通知的
点赞 回复 分享
发布于 2021-09-29 21:02
大佬怎么是四面
点赞 回复 分享
发布于 2021-09-28 20:46
加个好友嘛,我也拿了字节跳动的基础架构的意向书
点赞 回复 分享
发布于 2021-09-27 15:44
如何保证DB数据不被修改?
点赞 回复 分享
发布于 2021-09-26 15:24
请问找一个数,它两边的数都比它大不是归并吗?
点赞 回复 分享
发布于 2021-09-15 12:08
大厂实习经历吗
点赞 回复 分享
发布于 2021-09-11 21:46
请问是基础架构什么部门?
点赞 回复 分享
发布于 2021-09-11 10:58

相关推荐

3.6 一面自我介绍一、 项目相关1. 大概介绍一下你整个系统架构的链路,或者说你的系统整体链路是长什么样子?2. 你的库存信息怎么保留?存不存在超卖的现象?3. 你 Redis 里的信息是怎么跟 MySQL 做同步的?4. 初始结果不一致怎么办?(存不存在 Redis 初始结果跟 MySQL 不一致的问题)5. 你觉得这条链路在真实的生产环境下能用吗?还有哪些不完备的点?6. 如果消费队列扣减失败或订单写入 MySQL 失败,导致数据不一致,你有什么自动化机制(校验+补偿)来解决?7. 知识库构建的文档和语义信息数据来源是哪里?是自己整理的吗?8. 通过什么去做分词和检索?9. 向量数据库跟正常数据库的区别是什么?它怎么加速相似向量检索?10. 是否了解 HNSW 算法的具体实现?二、 八股1. 缓存击穿、穿透、雪崩这三个概念上的区别是什么?3. 使用 SETNX 指令跟执行 Lua 脚本的差异是什么?4. 排他锁(X锁)跟共享锁(S锁)的区别是什么?5. Java 线程模型如何保证线程间的公平性6. CAS是做什么的?它有什么问题?7. 数据库有哪些隔离级别?8. 如何解决“幻读”问题?InnoDB 引擎下是怎么处理的?9. 聚簇索引和非聚簇索引的区别是什么?10. 什么情况下不需要“回表”查询11. TCP 是通过哪些机制保证可靠传输的?12. 如何解决网络拥塞问题?(拥塞控制、慢启动、快重传等机制)13. 进程和线程在内存结构上有哪些区别和关系?14. 同步 I/O 和异步 I/O 的概念怎么理解?15. 异步 I/O 是在用户态执行还是系统态(内核)执行?谁来负责通知结果?16. Linux 的软链接和硬链接有什么区别?删除原始文件后哪种还能正常访问?17. Java 的 HashMap 是怎么解决冲突的18. 实现“数组+链表”时,为什么不能直接用 ArrayList 或 LinkedList 替换掉那个数组?手撕之字形(Zigzag)打印二叉树。3.10 二面一、项目1. 请介绍你在项目过程中印象最深、最具技术挑战或复杂度的点,以及你是如何解决的。2. 在秒杀场景下,如何保证“库存扣减”与“一人一单”逻辑的原子性?3. 为什么 Lua 脚本能做到分布式一致性?它是如何把多条命令聚合为原子操作的?4. Lua 脚本是如何编排这些多条 Redis 命令的?它是感知多个用户的命令还是单用户的顺序命令?5. 限流算法6. 除了限流,你是否了解“熔断”机制?它与限流的区别是什么?在下游服务扛不住时该如何处理?7. 你构建的知识库文档量级是多少?8. 如何从原始文档构建出向量检索索引库?索引库的底层数据结构是什么样的?9. 你了解 HNSW 和 IVF这两种索引算法的区别吗?它们分别适用于什么场景?手撕1. 无序数组频率统计 时间复杂度 O(n),空间复杂度 O(1)(允许修改原数组)2. 旋转有序数组找最小值3. 有 10 个 100G 的日志文件,存储用户的搜索 Query(存在重复),找出访问频次最高的 100 个 Query。单机内存仅 10G,可以使用多台机器。 口述思路3.11 hr面半小时后oc,晚上下正式offer明天就要入职了,希望一切顺利
点赞 评论 收藏
分享
评论
16
135
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务