字节 面经 基础架构
-
一面 4.19 1h
- GMP(阐述、P和M代表啥、为什么引入P)
- 怎么限制goroutine的拉起数? goroutine之间是怎么实现同步的?
- 内存管理(阐述、为什么对象分三种、怎么避免内存资源浪费(比如16B的大小的对象,一个页中使用了10%有效,90%无效))
- 什么是RESTful ,增删改查对应的HTTP动词是什么?
- HTTP request的格式
- 如果没有ConTent-Length 怎么使用HTTP (Transfer-Encoding为chunked)
- HTTP 与 HTTPS的区别? 为什么要有两种加密?
- socket函数
- contect 和 accept对应 TCP 三次握手的什么阶段?
- TCP 三次握手交换了什么东西? 为什么有窗口大小?
- 进程通信方式
- 管道自己用过没?
- 父子进程用过没? 父子进程的内存是拷贝还是共享? 公共库之类的资源,操作系统是怎么实现父子进程共享的?
- 项目中,如果高并发请求怎么限制goroutine?
- 项目的模块划分?
- 心跳检测发送了啥?为什么用ES和Kafka?
- 数据存储是怎么实现的?
算法:判断树B是否是树A的子结构?
-
二面 4.22 1h
- 自我介绍
- 对象存储架构
- 看过分布式论文没?为什么写这个项目
- 接口实现,研究过公有云其他的对象存储接口没
- 怎么存储数据的? RS纠删码怎么用的?
- 如果不用go,怎么应对高并发的http请求
- epoll 原理,自己用过没?自己写的,还是书上的?
- 看过什么专业的书? 有什么收获
- channel的底层实现?
- 看过什么源码?
- etcd的watch机制,用过没?
- 为什么基于k8S做
- kafka用来干什么了
- 二叉树和红黑树的区别
- 为什么用红黑树
- trie树,有什么问题
- 10w个URL黑名单,用什么数据结构实现?(trim树、布隆过滤器、hashmap)各种情况的时间复杂度
- 布隆过滤器为什么有差错
- 建立多大的hash表,时间复杂度
算法: 两个list求相同元素
用例需要考虑什么? 怎么优化? 时间复杂度? 如果是两个无限队列,怎么办?
-
三面 4.26 50min
-
全程项目讨论,需求探讨之类的
无算法
-
HR面 4.28 15min
-
自我介绍
-
实习期待获得什么?
-
为什么转专业
-
两次考研都考了多少分?为什么会被刷?
-
自己比着同届的优势和劣势
-
手里还有什么offer,以及在走流程的
-
实习地方选择
- 实习时间,转正意愿
4.29 offer下来(完美的一天!上午保罗14-14拿下第一轮,下午收到offer,晚上放假了和py happy喝酒)
字节流程很快,不拖沓,舒服。
自己运气比较好吧,手撕没有碰见难题,基本都是在和面试官沟通交流问题。
问题都是自己回想着写的,可能会有差错不合理的地方。
供交流分享
#面经#