百度后端Java面经分享

一面

1、刚来就是写代码:一个单链表的算法题目

2、随后面试官发问在你的项目中spring是如何管理zookeeper的?

3、了解zookeeperleader选取算法吗,讲一下它的流程。

1)自增选举轮次。Zookeeper规定所有有效的投票都必须在同一轮次中,在开始新一轮投票时,会首先对logicalclock进行自增操作。

2)初始化选票。在开始进行新一轮投票之前,每个服务器都会初始化自身的选票,并且在初始化阶段,每台服务器都会将自己推举为Leader

3)发送初始化选票。完成选票的初始化后,服务器就会发起第一次投票。Zookeeper会将刚刚初始化好的选票放入sendqueue中,由发送器WorkerSender负责发送出去。

4)接收外部投票。每台服务器会不断地从recvqueue队列中获取外部选票。如果服务器发现无法获取到任何外部投票,那么就会立即确认自己是否和集群中其他服务器保持着有效的连接,如果没有连接,则马上建立连接,如果已经建立了连接,则再次发送自己当前的内部投票。

5)判断选举轮次。在发送完初始化选票之后,接着开始处理外部投票。在处理外部投票时,会根据选举轮次来进行不同的处理。


·外部投票的选举轮次大于内部投票。若服务器自身的选举轮次落后于该外部投票对应服务器的选举轮次,那么就会立即更新自己的选举轮次(logicalclock),并且清空所有已经收到的投票,然后使用初始化的投票来进行PK以确定是否变更内部投票。最终再将内部投票发送出去。

·外部投票的选举轮次小于内部投票若服务器接收的外选票的选举轮次落后于自身的选举轮次,那么Zookeeper就会直接忽略该外部投票,不做任何处理,并返回步骤4

·外部投票的选举轮次等于内部投票。此时可以开始进行选票PK


6)选票PK。在进行选票PK时,符合任意一个条件就需要变更投票。

· 若外部投票中推举的Leader服务器的选举轮次大于内部投票,那么需要变更投票。

· 若选举轮次一致,那么就对比两者的ZXID,若外部投票的ZXID大,那么需要变更投票。

· 若两者的ZXID一致,那么就对比两者的SID,若外部投票的SID大,那么就需要变更投票。


7)变更投票。经过PK后,若确定了外部投票优于内部投票,那么就变更投票,即使用外部投票的选票信息来覆盖内部投票,变更完成后,再次将这个变更后的内部投票发送出去。

8)选票归档。无论是否变更了投票,都会将刚刚收到的那份外部投票放入选票集合recvset中进行归档。recvset用于记录当前服务器在本轮次的Leader选举中收到的所有外部投票。


9)统计投票。完成选票归档后,就可以开始统计投票,统计投票是为了统计集群中是否已经有过半的服务器认可了当前的内部投票,如果确定已经有过半服务器认可了该投票,则终止投票。否则返回步骤(4)。

10)更新服务器状态。若已经确定可以终止投票,那么就开始更新服务器状态,服务器首选判断当前被过半服务器认可的投票所对应的Leader服务器是否是自己,若是自己,则将自己的服务器状态更新为LEADING,若不是,则根据具体情况来确定自己是FOLLOWING或是OBSERVING


4、知道zab算法吗,讲一下它的流程


二面

主要是两个方面,一个jvm,一个并发编程。

1、jvm主要是性能调优,jstack的使用,full GCminor GC的分析等

2、并发编程问的很细。多个线程达到同一个状态然后再一起执行,达到某一个状态之后再继续并发执行,这种怎么实现?

答:jdk5之后有一个CyclicBarrir,通过这个来实现,它可以重用等


3、读写锁中加读锁后如何避免写线程饿死?

4、如何实现控制线程在某段时间内完成,不完成就撤销。

答:实现Callable接口,返回FutureTask类或者Future接口,然后去触发撤销操作。


5、然后开始问项目,描述一下对账系统,数据量大吗,并发量高吗,数据库怎么设计的等。


6、最后问我业务,你在第三方支付公司,能不能讲一下支付的技术流程,然后把自己理解的支付流程讲了一下。


三面

1、问异步处理的幂等性。

2、唯一性索引或者开发分布式锁。

3、你觉得你来百度能给百度带来什么样的价值。

4、你希望你加入的百度的团队是一个什么样的团队,你如何和产品经理沟通,假如你和其他研发接口制定无法统一你该如何解决等。

#百度##社招##Java工程师##面经#
全部评论
offer了吗
点赞 回复 分享
发布于 2020-08-21 23:09
点赞 回复 分享
发布于 2020-08-19 15:44
你的问题好难啊感觉
点赞 回复 分享
发布于 2020-08-10 14:17

相关推荐

“无名小卒,还是名扬天下?”我知道很多人都不觉得我能走到今天这一步,当然,也包括我自己。在我的人生里,有两部作品刻下了最深的烙印:《斗破苍穹》与《龙族》。它们总被人拿来对照:一边是萧炎的桀骜轻狂,一边是路明非的怯懦衰颓。有人说,天蚕土豆没见过魂天帝,但江南见过真凯撒。我时常觉得,自己就是那个衰小孩路明非。可路明非可以开挂,我不可以;我也无数次幻想过,能拥有萧炎那般年少轻狂的人生,可我没有他与生俱来的逆天天赋。我只是个平庸的普通人,一个看过《斗破苍穹》却开不了挂的路明非,只能一步一步往上爬。从我下定决心找实习的那一刻起,我就给自己定下了目标:“我一定要为字节跳动卖命.jpg”。萧炎有他的三年之约,我有我的两年半之约(其实是一年半)。2024.11.20,科大讯飞的第一封实习offer落进邮箱,我迈出了这场奔赴的第一步。2025.8.18,放弃百度转正的安稳机会,转身走进前路未卜的不确定里。我很感谢我在百度的mentor,是她从茫茫人海选中了我,给了我大厂实习的机会。即便有段时间我状态差、产出不理想,她依旧愿意认可我、希望我留下转正。2025.11.14,我选择走进字节跳动,以实习生的身份重新出发。2026.3.25 - 3.31,一周速通上海飞书,幸遇赏识我的伯乐,斩获Special Offer。被告知面试通过的那一刻,我的内心无比平静,就像这个offer本就该属于我。不是侥幸,是应得的。这一路,有人看轻过我的出身,不相信我能走到这里;也有人在我看不见前路的时候,替我举过灯。没有他们的鼓励与支撑,就没有今天站在这里的我。我看到了自强不息的激荡,那是一个双非的伟大乐章!我是雨夜迈巴赫,我要开启属于我的新篇章了。
在看牛客的本杰明很勇...:真心祝贺l总 我永远的偶像 我滴神
春招至今,你收到几个面试...
点赞 评论 收藏
分享
评论
2
35
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务