字节 后端面经(oc)
-
笔试 9.26
-
一面 10.11 60min
-
项目
-
挑个后端项目说说
-
遇到的难点
-
乐观并发的实现
-
-
算法
-
lc 76 hard 滑窗 难点在左边界的移动
-
这个题想思路没用几秒钟,实现卡了我20多分钟,最后也没干出来,这20分钟基本就是永别了
-
-
-
数据库
-
熟悉那个存储引擎
-
innodb的索引结构有哪些
-
为什么用B树作为索引
-
-
反问
-
还有几轮技术面 - 3技术 + 1hr
- 技术面多久能全部走完 - 看hr安排,一般来说两周内
-
-
-
二面 10.15 60min
-
项目
-
如果修改发生冲突了咋办
-
-
go
-
channel有几种类型,都有什么特点
-
make和new的区别
-
-
你在刷今日头条的时候很卡,可能是哪些原因呢(客户端和服务端两边都可以说一下)
-
客户端 (以下是我的回答不知道是否正确 仅供参考!!)
-
手机有问题
-
手机连入的网络出现问题(带宽,信号这种)
-
app缓存被清理
-
-
服务器
-
代理服务器负载均衡出现了问题
-
后端出现内存泄漏
-
redis同时失效了部分缓存导致数据库处理速度变慢(还没达到雪崩的效果)
-
数据库出现性能抖动
-
-
-
实现一个聊天室(包括聊天和文件传输两个功能)用到几个进程几个线程
-
如果是多人聊天几个线程
-
为什么聊天和文件用多线程,不用多进程
- 什么时候选用多进程什么时候选用多进程
- 这个有人问我,我贴一下,仅供参考,欢迎指正 ----- 一个进程两个线程,一个线程负责聊天信息的发送,一个线程负责文件的传输,用多线程是为了提高效率,因为文件传输涉及到I/O操作会阻塞当前线程,总不能传输文件就不能聊天了吧,所以这两个应该是并行的,为什么用多线程是从两个角度来分析,从逻辑角度来看,聊天和文件传输都属于相同的进程也就是聊天室,所以是一个包含关系,从资源消耗来看,创建进程、进程调度的开销更大,同时进程间通信的处理也比较麻烦,所以用多线程
-
-
-
算法题
-
输入几个区间数组,输出覆盖的最大长度,题目难度算是mid吧,参考lc上的各种数组区间问题,可以在找区间过程中就进行统计,举例:[[1.0, 2.3], [4, 6], [5.5, 7], [5.5, 9], [12, 22]],输出16.3 = (2.3 - 1.0) + (9 - 4) + (22 - 12)
-
思路:贪心,区间数组,根据端点对数组进行排序,O(n)统计和
-
总结:我是个fw,刚看到题思路就出来了,实现用了20多分钟,真难受
-
-
反问
- 业务 - 挺复杂的(具体说的啥我忘了。。)
-
-
三面 10.18 76min
-
参加过什么竞赛
-
挑个项目说说
-
有形如(ip1,ip2,北京)的三元组,现给定一个ip想要判断该ip对应的地址信息是哪里,如何设计数据结构
-
如何设计排行榜
-
zset底层实现
-
-
设计评论区功能(查看评论,写评论,给别人的评论评论)
-
mysql如果承受不住压力怎么办
-
redis如果承受不住压力怎么办
-
-
秒杀如何防止超卖现象
-
不使用串行方式(消息队列)解决,并发方式(两个请求同时修改数据库)如何解决
-
乐观并发控制和悲观并发控制说下
-
-
算法
-
给定一个长为m的字符串s1,s1中的所有字符都不重复,给定一个长为n的字符串s2,能否在s2中找到仅有s1字符组成的字串(顺序任意),返回起始位置,未找到返回-1,举例,s1 = "abcd",s2 = "tbcacbdata",res = 3
-
一个m大小的窗口向右移动就完了。。我直接用了一面算法题的思路写复杂了,喜提加面
-
-
-
加面 10.19 60min
-
数据库和redis的使用情况
-
索引优化的细节
-
算法
-
lc 33 搜索旋转排序数组
-
lc 143 重排链表
- 光速A了,也不知道能不能过了
-
-
-
oc 10.26