字节春招基架面经

一面
做了简单的自我介绍, 然后面试官让我介绍一下项目
照着字节开源的netpoll做的一个自定义epoll IO库, 我大致介绍了一下实现, 投屏给他讲了下怎么实现对自定义协议和protobuf支持的.
为什么用LT, 讲了下LT的缺点, 所以里面制定了可配置ET
项目里面用到了spinLock, 面试官让我讲一下我的spinLock的实现,以及go 标准库mutex的实现
问了go的gc, 影响gc的条件是内存开辟大小吗
闲聊了下另一个项目, 秋招的时候面试官技术上已经问了够多了, 这次面试官就好奇了一下日活, 怎么做推广的
算法题:
两两翻转链表

第二天二面:
二面基本上是聊天
我简历里有开源项目贡献的经历, 就让我讲了讲开源贡献, 大致上是给两个高star go IO库和rpc库修复做了点内存溢出的问题
问go中内存溢出怎么检查
有哪些内存溢出
问go和nodejs的区别
其他基本在闲聊
面试官最后介绍了下部门做的内容, 还是挺感兴趣的
算法题:
二叉树的序列化和反序列化

九天后三面
(中间因为北京疫情,还有三面leader很忙的样子, 拖了很久才面)
偏向聊天
问我为什么从字节前端基架实习跑路了, 为什么秋招拿了字节的offer没来 (尴尬..不知道咋说)
问我go 的协程栈怎么增长的
go 的netpoller如何封装epoll的
自定义epoll能有多少用 , 问我有没有具体的benchmark数据, 我没做过, 只说了鸟窝大佬有篇博客做过百万websocket连接的对比
面试官可能对自定义epoll这种做法一直持怀疑态度吧, 觉得开的goroutine内存不是无谓开的,
多次追问, 我不太能get他的点, 我只说在大量连接proxy(转发)场景下, IO框架的性能是最大瓶颈, 所以还是有用的
问10核CPU开10个goroutine死循环会怎么样
问知道goroutine切换的开销吗, 做过pprof吗
项目里用到了heaptimer , 问知道其他的做法吗, 为什么不用, (我说timingwheel时间复杂度稍低, 但是做起来很麻烦)
提到heap ,让我说一下heap怎么删除任意节点
绷, 一下蒙了, 一直调库没关心过这个,,,
卡了半天, 问我怎么删除堆顶, 想了会儿答出来了,
但是一直说不对怎么删除任意节点, 主要是这种基础问题没答上来很慌
最后放弃了, 面试官挽尊让我写下heapify, 默写完了
后面稍微聊了下工作强度之类的, 就结束了

看面试官的意思, 估计凉了, 栽在基础数据结构上, 还是水平差了点.


3-15更新
刚刚hr面了, 还混了个sp, 感觉挺幸运的, 腾讯wxg那边还没挂, 但是流程也还没推进
唉, 看来wxg要失去我了😂

许愿offer~





#字节跳动春招##面经##校招##基础架构工程师##字节跳动#
全部评论
我想问问楼主,你是应届生吗😂这些东西……感觉,好难
2 回复 分享
发布于 2022-03-10 20:57
删除任意节点感觉和删除堆顶一样?从尾部拿个节点过来然后shiftdown。
1 回复 分享
发布于 2022-03-11 08:00
985?
点赞 回复 分享
发布于 2022-03-22 14:18
老哥投了哪个城市的基架,我的三面也拖了挺久
点赞 回复 分享
发布于 2022-03-12 17:12
删除元素 应该是先找到要删除的元素然后和堆最后一个元素交换 重新调整
点赞 回复 分享
发布于 2022-03-10 20:28

相关推荐

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明天就要入职了,希望一切顺利
点赞 评论 收藏
分享
评论
6
32
分享

创作者周榜

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