后端Java开发岗社招面经(B站一面)答案分析分享

文章讲述了作者在B站后端开发和百度搜索研发岗位的面试经历,涉及的问题包括搜索系统流程、MySQL的事务隔离级别与实现、索引原理、存储引擎、URL到浏览器展示的过程、Redis数据类型及过期策略、Goroutine的轻量级特性以及Golang的垃圾回收机制。作者还分享了限流器的实现原理和面试技巧。


写这篇主要是想复盘一下我的两次面试经历,一个是B站的后端开发岗,另一个是百度的搜索研发。文章涵盖了MySQL、Golang、 计算机网络、Elasticsearch、 分布式、搜索的一些知识。

1.你之前是负责搜索的,那我想听一下你们搜索系统的大致流程

说实在还挺惊讶面试官会问这个的,因为对方是一个后端工程师,所以就没讲多细致,答得很general,大体来说就是,query分析->粗排召回->精排算特征-> learning to rank计算score ->返回结果,每个再展开来说一些即可。面试官问这个相当于在问项目,确定简历的真实性,所以这个没啥参考价值。

2.MySQL的事务隔离级别有哪些?

总共是四大隔离级别,理解以后用自己的话答就好了

面试官还是比较满意这个答案的,但接下来面试官问道:

3.以上事务隔离是如何实现的?

老实回答,这题我不会,面试官提示MVCC,我还是不会hhh。回去翻了一些资料,在这里补充一下答案。所谓的MVCC就是MultipleVersion Concurrency Control,多版本并发控制,从名字上也可以看出来,它是使用版本号来对数据进行并发控制的。实际上,在数据表的每一列,都存储两个隐藏列,一个是trx_id,代表事务的ID,另一个是roll_pointer,指向其上一个版本的记录,如此组成一个记录的版本链,接下来就可以讲ReadView了,它存储着一种用来记录当前活跃状态的读写事务,用于判定该transaction可见到的数据版本。

4.MySQL索引的原理是什么

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值