百度后端提前批一面 凉经
7.19投递 7.22发测评 7.23约面试时间 7.25一面
无手撕。面试官是一位小哥哥,很温柔。在此之前,我主要是背八股和把复习项目是怎么做的,但面试中问了比较多为什么要这么做的问题,由于八股也没准备得特别好以及之前对为什么要这么做这类问题思考较少,感觉整个面试过程回答得比较混乱,第二天也发现简历处于共享中了。
1.自我介绍
2.面向对象和面向过程的区别
3.面向对象的特点是封装、继承、多态,在你的项目中你是如何去运用这些特点的,有哪些地方涉及到抽象、继承、多态等
4.对于上一个问题,我回答抽象了一个返回给前端的结果类,面试官问其中的data字段是不是一个泛型,我用的是Object类,面试官就问用泛型和Object类分别有什么优点和不足,然后又问到了解泛型的擦除机制吗
5.上一个问题中,我的回答涉及到了反射,于是面试官问在项目开发过程中有用到反射吗
6.我的回答涉及了spring,于是问spring是如何管理bean的
7.还了解其他的依赖注入框架吗
8.springmvc框架和springboot框架的关系
9.你的秒杀系统项目里哪些地方使用了java并发编程技术
10.会不会发生大家都秒杀到或者都没秒杀到的情况
11.为什么把线程池数量设置为20,我说我随机设的没考虑太多,面试官就说那假设现在这个机器是两核四线程的cpu,那么在秒杀场景下20个线程的数量是多还是少
12.让你设计一个线程池的话,你会考虑些什么。已有的创建线程池方法可以传入核心线程数量、最大线程数量、存活时间、任务队列、拒绝策略这些参数,那在秒杀系统中,这些参数够用吗,有没有什么可以改进的地方,比如当秒杀系统闲时,线程池中依然有20个线程,是不是会造成资源浪费。
13.项目中的多级缓存是怎么实现的,如何处理数据一致性的问题
14.rockemq和rabbitmq的区别,分别适合什么场景
15.建数据库的表的时候有没有什么原则,有什么考虑
16.库存表和商品信息表之间有没有用外键,不用外键会有什么问题
17.对maven、git、docker的了解程度
18.Linux的相关命令
通过这次面试还是学习到了很多,发现了知识上的不足,以及语言组织能力的不足,回答问题都好磕磕绊绊,要多练习完整地回答一个问题的技能。