噢耶!字节后端 Offer,拿到了!
很多同学反馈多搞点面经,说来就来!
今天分享一位拿到字节跳动实习 Offer 的面经,没错,Java 转 Go。
别问我选 Java 还是选 Go,成年人不做选择题。先搞定一个语言,再学第二语言从来不是难事。
无论学哪个,你要做的事情是先学起来:想都是问题,学才有答案!
面经分享
本文没有按照一面、二面、三面流水账的形式整理。
而是把面试中碰到的问题,按种类划分汇总:算法题、数据结构、操作系统、数据库、缓存、计网、场景题等等,这样对大家应该更有帮助!
一、算法题:
给定一个字符串 abcdabgh,给个字符 a,随机返回 a 下标,比如这个是 0 4。要求返回的概率必须一样,空间复杂度要求 O1 即不能开任何空间存储下标,并且只能遍历一次。
给定 n 个骰子,和为 k 的概率,不能用回溯。
给一个数字比如 234,给个数组比如{2,3,7},找出第一个不大于 234 的数,比如这个是 233,有几种情况我记得是,这里用到了有序表我写的时候。
二、八股文
不全,比较简单的我就没整理了...
数据结构:
堆和树的区别?应用场景?
二叉搜索树是什么?
操作系统:
进程之间的通信方式?写个死锁?怎么解决?
操作系统内存满了怎么办?如何回收?有什么影响?
什么是僵尸进程?应该怎么去操作?
为什么会有线程安全的问题,如何解决?
说一下乐观锁和悲观锁?说一下 CAS?aba 问题是什么?如何解决?
MySQL:
索引构成?(B+树)索引优化?给个 sql 让判断走索引的情况?
什么是慢 sql,如何查找,如何优化?
三大日志,我记得好像有个问题是 redolog 写进去了,但是有个 bin log 没写进去该怎么办?(具体的我忘了,我没回答好)讲 write 还有 flush 区别?redo log 刷盘时机?三大日志的执行顺序?
mysql 的事务隔离级别?各自解决了什么问题?mvcc 的流程
Redis:
问了 zset 的底层?为什么不用红黑树?(这是我自己引得,我傻了自己说了一句没用红黑树,用的是跳表)
redis 里面的命令行比如 setnx 和 setex 还有 zset 里面的
redis 的 key 有大小的限制吗?有什么影响?怎么办?
redis 的内存淘汰策略?(面试的时候一直想不起来 一直背了半天旁路缓存那些东西 我以为凉了的)
根据 score 查 member 的时间复杂度?反过来根据 member 查 score 时间复杂度?
计算机网络:
http 常见的方法和状态码有哪些?
502 是什么错误?如何排查问题?
讲一下反向代理?
场景设计:
敏感词库的设计,要求增删改查敏感词。敏感词文本匹配,敏感词一万个,文本长度 20-10000 这样子。
trie 树什么的都回答了,开什么几个线程这样子,我也是各种瞎说,后面问我在这里面怎么存储持久化,给出方法,redis 里面存储如果宕机了怎么办有个节点?这一块真的虚,我也不知道怎么办,感觉面试官很厉害,我给的方案他好像都否定了,说我的方案一天宕机几分钟怎么可能行?
三:项目和实习
也有一些闲聊没有写进来...
微信扫码登录流程?后面的原理你了解吗?(准备了很久的 Oauth2 总算碰到了开心)csrf 是什么?怎么解决的?
项目难点(之前登录日志是同步写入库的 后来为了提升效率加入了队列 先写队列后消费入库 做解耦 但是队列用了同步操作 有一次 mq 挂了 导致登录服务不可用 这种是不可接受的 记日志不能影响登录 所以将其改为了异步方式)
订单 30 分钟取消,延时消息这里(这个是我自己引申的,我包装了一下,我把 mq 的 18 个队列讲了一下,也讲了一下 kafka 的时间轮)
你实习用的什么语言?go 的协程里面出现 panic 怎么办?defer 讲一下?gmp 模型了解吗?
总结
本文来自 程序员升职加薪 知识星球一位星友的分享。感谢这位好心人,一定顺利度过试用期哦!
希望对大家有帮助,Let's Go!
版权声明: 本文为 InfoQ 作者【王中阳Go】的原创文章。
原文链接:【http://xie.infoq.cn/article/0eb4e6cd442fbb4d6d083c054】。文章转载请联系作者。
评论