面试复盘|成都百度Java提前批三面

面试复盘|成都百度Java提前批三面

我看一些百度三面都是聊天,加上前面面试比较水,而且这个部门说实话我是不怎么想去的。所以这一面基本没怎么准备,但好巧不巧的是遇到一个面试官在家面试,问了一些技术,刚好我又不会,他总是皱眉,表情不大友好。果然面完之后第二天就简历共享了,惨!

三面 7.28 40分钟

  • 介绍IM即时通讯系统的项目

  • 你使用的是websocket协议吗? 有聊天界面吗?

    因为我是采用的netty自定义协议,也没有写前端,是通过终端命令来的,所以这里没有前端

  • 项目的总体架构和流程

    我讲了客户端发起请求建立连接,然后群聊、私聊等等过程

  • 用户下线的功能是怎么做的

  • 如果redis删除数据失败了怎么办(项目中用户下线后需要删除redis)

  • 用户登录功能是怎么做的

  • Redis的高可用了解吗?

    这里我答得不怎么好,说了redis的持久化机制和集群。但他想问的应该是哨兵机制相关的吧

  • redis集群和哨兵模式的优缺点

    这里越说越不对劲了,自己给自己带坑里去了

  • Kafka你了解哪些?

    这里本来应该可以背一背准备好的八股文,但我脑子抽了就不想背,问他想知道哪些,这里就把主动权交出去了,大忌大忌!!

  • Kafka的基本架构是什么

    我讲了producer、consumer、broker等基本概念,这个问题之前没怎么准备过,有点宽泛

  • 你的消费者和线程之间的对应关系是怎样的

    我就只知道一个消费者对应一个线程这种。然后我主动说如果需要使用多线程的话,那么可以一个线程去拉取消息,然后通过一个队列,来启动多个线程进行消费。其实是网上博客看的,我也没怎么懂,教训就是千万不要自己给自己挖坑说一些模棱两可不禁问的东西

  • 你刚才说用一个队列,那如果一条线程消费的手挂掉了,那offset是怎么提交的

    然后这个地方说不清楚了,我都说不会了,这面试官不肯放过,还一直问,我也没办法,GG

  • JVM的内存模型

  • 线程同步的几种方式

  • 可重入锁底层的实现(AQS)

  • AQS是怎么实现的

  • AQS的state变量是如何修改的

  • 线程切换的过程有哪些(保存现场,移出可运行队列,放入等待队列)

  • 进程和线程的区别

  • 设计模式了解哪些(单例、工厂、策略)

  • 工厂和抽象工厂模式的区别(这。。都没听说过)

    然后他说这不应该不知道啊,netty底层设计都用了抽象工厂模式。我又没研究过netty使用的设计模式...

  • 对于加班怎么看?

    我说最好加班在干一些实际有意义的事情。然后他开始杠了,怎么才算有意义呢?如果项目进度拖慢了,你愿意加班吗?

    我说短时间可以,长期不行。他又杠如果就是长期怎么办,我心里想还能怎么办,还不快跑嘛

    问到这里我就已经无语了,加班搞得他很光荣一样。。。

  • 团队意见不一致怎么办

  • 你有想过帮助其他人成长吗?(满脸问号)

  • 还用过其他语言和技术栈吗?(python和go)

  • 反问部门业务啥的,走个过场。

讨论和交流

一些答得不好的地方

  • redis的高可用机制,这个不是很清楚

  • Kafka的多线程消费怎么做

  • 抽象工厂模式

总结

面试还是要掌握主动权,主动说自己会的东西,了解的知识。三面问了一些技术,确实也是盲区了。面试官态度也不怎么好,体验很差。总之答得不好,体验也很差。再接再厉

#面试复盘##校招##百度##java工程师##面经#
全部评论
老哥能说说你IM即时通讯系统是做的哪个项目?😭😭
点赞 回复 分享
发布于 2022-04-26 19:28

相关推荐

二月底那会tx约面过我一次,结果我当时第一次被约面没经验,当时上着课,就想着先挂了等会打回去,结果发现是虚拟号打不回去一天后喜提流程结束字节oc了之后又收到了约面电话,不过我意向部门是cdg,约面的是pcg。想到之前还没面过tx,于是就接了尝尝鲜,所以就有了今天的面试一上来面试官迟到了十分钟1. 自我介绍2. redis存商品库存用的什么数据结构?3. 怎么保证原子性?4. redis如何配置?集群还是主从?(从这里就是拷打的开始)5. 如果你主节点完成操作了,从节点还没同步,主节点就挂了怎么办?6. 看我回答的不好,于是问我主从同步的方式的底层原理。我说了全量同步、增量同步,面试官说我没答到点上7. 又问我知道kafka生产者将消息发送给broker的三种方式吗?汗流浃背了,说了生产者发送→broker刷盘→返回ack→生产者收到ack的过程,面试官说这是其中的一种8. 面试官说,你不了解主从同步的原理,所以你实现不了高可用。又问我如果broker返回ack后挂了,副本还没同步就变成主节点导致的消息丢失怎么办(其实和5差不多)。我说我猜一下,于是类比了mysql的同步机制,说让副本读主节点的日志。被面试官否了,说主节点挂了是没法读它的日志的。见我不懂,就给我讲了几种同步策略,比如选出和broker的offset最接近的几个副本作为候选集,将候选集同步完成后才会真正视为刷盘成功并返回ack;比较严格的模式就是强制同步所有副本。具体还要根据业务来选9. 面试官看我用了雪花算法,于是问时钟回拨怎么解决。我说可以参考美团leaf,引入zk,生成前比较当前时间和此前最后生成id的时间。面试官反问我你引入这么重的一个东西合适么?你这样做损坏了它本身的高性能的优势。我说那可以使用号段模式。预先生成一批id存起来,使用的时候去取,也被面试官否了,说这样做也不是一个好的策略。10. 然后面试官看了看表,说自己三点还有一场面试,后面得加快速度。于是就开始迅速问一些八股,要求必须快速答出关键部分赶紧下一题:11. 进程和线程的区别12. 线程有自己的堆栈吗13. 线程通信的方式14. 乐观锁了解吗15. 线程池由哪些部分组成16. 你自己使用的哪种拒绝策略?17. 核心线程数怎么设置?理由是什么18. 大量出现time_wait有哪些可能的原因?答了一些,面试官不断问还有吗还有吗,最后说想不出来了19. 一个很大的表查询很慢怎么优化?把分库分表、sql语句优化、索引、innodb调优等角度都说了一遍,面试官继续追问还有吗,我说检查脏页是否过多,继续问还有吗,我说想不到别的了20. 分库分表的底层原理了解吗?我说沙丁jdbc,或者用中间件,面试官不想听,只想听底层原理。回答不太熟悉手撕:此时距离三点还有不到10分钟。一开始出了道二维矩阵中第k个最大值,矩阵中的元素符合按行递增和按列递增。面试官问我觉得这题难度怎么样,我说你想要n方logk的算法我现在就能写,但是要n方的话我得想一想。面试官等不及,于是换成了一维数组。直接优先队列三分钟秒了反问:我需要加强哪些方面(了解底层原理并实际运用的能力)总结:感觉大概率会挂,被挖的很痛但是一些问题面试官主动给出了讲解,冲这点其实也不亏了。可惜由于对方时间紧迫,有些我不懂的点没有来得及讲了,尤其是雪花算法的最佳实践那里,成了永远的遗憾-------------更新:一天后流程结束#互联网回暖,腾讯要招5000人!# #软件开发笔面经# #牛客创作赏金赛#
ailanxier:迟到10分钟是因为上一个也是拖堂了吧
点赞 评论 收藏
分享
评论
3
15
分享

创作者周榜

更多
牛客网
牛客企业服务