字节后端三面凉经
哎😔 面的时候, 根本不知道怎么回答就很难过了...
感觉面试官人很好,特别像我的一个同学(也是一个dalao😂😂),如果实在卡壳,会给提示,然后聊着聊着就超过1个小时了(所以没有手撕代码)
算法
1. 设计算法实现 LFU Cache的实现,不写代码
具体:先给一个lazy删除优先队列+hashTable的双logN算法,后面突然想起来可以维护有序链表hashTable+hashTable双O(1)解决
网络
2. HTTP状态码(分了1xx,2xx,3xx,4xx,5xx详细介绍了以下,502 Bad Gateway什么情况会遇到? 500Internal Server Error又是什么?
3. TCP/IP 为什么一定要有滑动窗口(接收方数据来不及确认,如果零窗口传输会加剧网络拥塞,需要Buffer,需要确认机制,反正我是这么回答的)
4. MemCache了解吗?Redis用过吗?(真没有,后来查了是Memcached一个分布式缓存系统)
5. Serverless应用场景知道吗?(无了)
语言
6. 就问了一个C++的内存管理-Heap,Stack, new, delete然后扯到了smart_ptr, deleter然后谈了实现机制核引用计数存在什么问题?析构过程?
操作系统
7. 页面缓存是什么?有什么作用?(虚拟内存+分段太大=>分页=>页面缓存主要使用场景+优势+多线程/进程情况下的问题?)
8. mmap和Page Cache有什么区别?mmap是COW的,还有请求内存空间大于128K的时候不会从堆上给,而是直接mmap,别的区别当时我真不知道了😓
9. 网络IO的机制(刚刚看过select和epoll又忘记了,人麻了(忘记epoll的文件描述符组织方式是RB树了 害 水平触发和边缘触发也没提))
场景题
10. 系统设计:设计一个分布式ID生成器(即答UUID被否了,然后想了半天时间生成的hash算法也没有头绪,提示了之后联系AUTO INCREMENT KEY好不容易扯了一个实现,优化就更没有了(大概同步代价很大,然后数据库操作比较耗时,查了之后发现原来是个很经典的问题)
11. 一致性hash的应用场景?CDN的例子+忘了怎么move节点了草(刚刚看完这部分)
数据库
12. MySQL的引擎有什么?特点?
13. MyISAM, B+ Tree, Hash Index的特点,应用场景?
14. B+ Tree Index 为什么对并发控制支持比较好?(?!大脑的cache miss了!)
反问
- 没敢问别的,就问了业务+技术栈 golang
我感觉面试体验一路下来都是很好的,算法题肉眼可见的从一面的medium涨到了二三面hard+hard, 然后难度也是特别的难吧,会问的很细,所以面后端最好多了解一点分布式设计的经典问题(除了计网+OS+数据库之类的)
#面经##字节跳动##后端开发#