6月18日
一面(一个面试官):(一个小时)
自我介绍
1.你这个项目是自己做的?你一个人做的吗?为什么你做了绝大部分的后台编码工作?你作为项目负责人如何协调小组成员。
2.说一下项目的数据库设计,你是如何设计数据库的?这些表中如何设置主键?用了外键吗?(回答:没有)多表查询为什么不用外键?为什么要进行数据冗余?数据表中数据冗余的好处?
3.说一下功能设计,邮件短信功能如何设计,怎么配置邮件发送服务器?如何生成验证码?什么组件? 服务器如何校验前端验证码?为什么不能用HTTP直接调用验证码?
4.我看你用Redis做了缓存,缓存了哪些数据?为什么要缓存这些数据?如何保证Redis缓存和数据库中存储的数据一致性?Redis数据是否采用了过期策略?那你的项目如何设计缓存的过期策略?为什么要这样设计验证码的过期时间?还能用其他的方法吗?
5.项目用到了ThreadLocal?解释一下ThreadLocal,说一下ThreadLocal的底层原理,如果创建一万个ThreadLocal同时访问会出现什么结果?只是内存溢出吗?哪部分内存溢出?还有吗?(回答:CPU的利用率会降低)CPU利用率会出现怎样的变化?这样会出现什么问题?JVM会执行哪些操作?(GC操作)
6.我看你用到了Kafka做消息队列,说一下你对消息队列的理解,为什么要用kafka?你是如何进行技术选型的?(回答:也考虑过用Redis的list结构)前一个版本为什么用的Redis的list?你是为了用kafka而用kafka么?(回答:不是)kafka有什么优势?(回答:支持TB级别的消息发送和接受)你说支持TB级别的流量发送,为什么?你知道kafka消息队列的内部结构吗?(回答:底层有多个brokers并行处理消息)为什么并行操作?你说到了broker,谈谈你对broker的理解?
7.你最近在看什么书?学到了什么技术?说一下你对JVM的理解?什么是空间分配担保策略?
8.对JVM调优有了解吗?用过吗?(回答:用过xxxxx)你这个不太好,我不建议你这样做,因为xxxxxxx。
9.你有什么想问我的吗?(我问:我还有什么需要提升的吗?)答:基础还不错,建议多看一下kafka的底层原理,看一下Redis的开源代码加深理解。
(我以为这就结束了,准备走的),面试官说:哎哎哎,你别走,就在这等着,我去汇报我的领导,等下二面。
-----------------------------------------------------------我是分界线---------------------------------------------------------------------
二面(两个人,一个技术leader 一个技术大佬):(40分钟)
自我介绍
技术leader:
1.你爱好挺多啊,怎么这么多爱好?
2.我看你项目做得挺好啊,ES搜索怎么做的,如何做到高亮处理,如何做分词处理(我回答 ik分词器),说说你对ik分词器的理解。
3.我看你用了kafka,简述一下kafka,如果不用kafka,你如何实现一个消息队列?(我说用Redis的list)不,不能用Redis,自己设计一个,如何设计生产者 消费者 消息模块,你把消息模块实体类给我写一下。哦,这是单消费者实现,现在我要多消费者实现,你如何设计消息模块实体类?如何设计字段?如何保证多消费者能够分流处理消息任务。(我说根据type来设计专门的commer类),那如果只有一种type的消息呢?其他的consumer不是都用不了了吗(我说那就用轮询算法)OK,我懂了,这个算你过。
4.无限子菜单如何设计数据库表?比如中国,湖北,武汉,洪山,关山街道,无限个子级菜单,如何设计数据库表结构,几张表?(我说一张),怎么设计?哪些字段?你给我写一下。OK,这个我知道了,但是还有更好的解决方案,你下去了解一下。
技术大佬:
5.假设斗鱼鱼吧的帖子需要缓存,马上又被删除,如何解决缓存和数据库中的数据不一致问题?
6.假设斗鱼会员在某个时刻大量访问缓存,缓存被穿透到数据库,如何解决?(我回答:mycat集成分布式数据库,分库分表)这个不对,还有更好的解决方案。
技术leader:
7.这个项目是你做的,这个项目给你影响最深的点在哪?最大的提升在哪?
8.你最近在看什么书?有什么收获?
9.说一下你印象最深的点(Spring解决循环依赖),为什么Spring解决循环依赖的策略给你很深的映像?
10.你对斗鱼的了解如何?(回答:喜欢看大司马和LPL联赛)那你会打LOL吗?打得好吗?(回答:很菜)
技术leader问技术大佬:你还有什么要问的吗?技术大佬说没有什么了,然后技术leader对我说:今天就到这吧,等下HR给你联系。基础还行,细节还需要提升。
现在在焦虑的等HR面....人生第一次面试,求过......
-----------------------------------------------------------我是分界线---------------------------------------------------------------------
6月22日
更新一下上次二面的结果,技术面一二面都过了,面试官评价比较高,但是部门没有HC,在我的主动申请和HR小姐姐的积极推进下,我被转投到另外一个部门,另外一个部门HR小姐姐说还有最后一个HC,但是技术boss要加面一次技术面,所以.......
三面(事业部技术boss面)
自我介绍:
开场白:我拿到了你前两面的面试评价,还不错,但是我这边要给你加面一面技术面,这是最后一面。
1.看你项目用了缓存,了解过Mybatis的三级缓存吗?使用过吗?
2.画出线程的状态,并详细说明哪个状态可以到哪个状态,哪个状态不可逆到哪个状态。
3.知道死锁吗?说一下死锁,手写多线程死锁的代码(伪代码即可)。
4.了解过Java的锁吗?说一下synchronized和ReentrantLock底层实现的区别。(monitor和AQS)
5.Mybatis的#{}和${}的区别?
6.看你项目用了Redis,说一下Redis连接池的详细配置,需要哪些配置,如何配置?
7.说一下你在项目中如何使用了Redis。
8.Linux如何查询某一个应用程序的端口号?哪一个命令?
9.top -H能查到哪些信息?
10.说一下SpringBean的生命周期,都经过了哪些阶段?
11.Spring IOC是怎么实现的?
12.Spring AOP是怎么实现的?什么是动态代理?有哪几种动态代理的方式?
13.你了解武汉还有哪些互联网公司?
14.能实习多久?
好,你在这等消息吧,喝口水,看你挺紧张的。
这一面感觉挺难的,每一部分都问到最深的地方。
然后一个人在小会议室里面等结果,祈祷能过,不能过就当攒经验了,五分钟后,HR小姐姐进来,通知我技术面通过,等待HR面试...
-----------------------------------------------------------我是分界线---------------------------------------------------------------------
HR面:
1.自我介绍
2.说一下你在做项目过程中的收获是什么?遇到了哪些问题?如何解决的?
3.说一下你的考研经历,考研给你带来了什么?
4.说一下你是一个怎样的人,给自己的性格一个客观的评价。
5.入职时间?入职打算?
6.短期目标,长期目标?
end 第一家公司面试结束,offer~
全部评论
(11) 回帖