面试复盘|成都百度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的多线程消费怎么做
抽象工厂模式
总结
面试还是要掌握主动权,主动说自己会的东西,了解的知识。三面问了一些技术,确实也是盲区了。面试官态度也不怎么好,体验很差。总之答得不好,体验也很差。再接再厉
全部评论
(1) 回帖