0Offer二本和一百多人公司之间的面经(我太难了)
1.自我介绍?(bababa,主要从学校,专业,技术栈扯)
2.介绍一下你的项目及架构?(bababa)
3.乐观锁的概念,以及在数据库上是怎么实现的?(回答了添加version字段,项目中正好用到)
4.乐观锁与悲观锁比较?(bababa)
5.当一条sql很慢的时候,你怎么排查原因(答了索引,又问索引的实现,最后问到了B+树和B树的区别)
6.java线程池用过吗?线程池有哪几个参数?(核心线程数,最大线程数,空闲时间,拒绝策略。。。)
7.redis为什么那么快(答了单线程,数据放在内存速度快,多路复用),后续问到了多路复用的select,poll,epoll的区别
8.redis有哪几种数据类型?项目中用到了哪几种?(bababa,项目中用到了string记录商品库存)
9.说一说redis的哨兵高可用模式的工作原理?(哨兵的工作流程说了一波)
10.数据库有哪几种锁?(答了X锁和S锁)
11.数据库的Lock锁的实现原理?(不会)
12.在浏览器上输入一条url到页面加载的流程是什么?(DNS,TCP三次握手,HTTP请求响应报文,浏览器渲染,TCP四次挥手)
13.了解GC吗?(bababab)
14.GC主要针对哪个区域(堆,用来存放对象)
15.堆的区域是怎么分配的?(答了新生代(eden,s0,s1),老年代)
16.新生代和老年代的回收叫什么?(只答出来了老年代是Full GC,新生代的Minor GC死活想不起来)
17.GC的时候会发生什么?(答了stop the world)
18.哪几种垃圾收集器会和用户并发执行,不会stop the world(bababa)?
19.项目中为什么要用到消息中间件?(异步下单,响应快)
20.项目中用的消息中间件是哪一个?(答了rabbitmq)
21.为什么要用到消息中间件?(异步处理事务,应用解耦,然后扯项目)
22.你在项目中是怎么使用rabbitmq的?(用来异步下单和异步减库存)
23.你知道rabbitmq怎么做集群吗?(以前做过,但是忘了,面试官没有刁难)
24.rabbitmq的执行过程是什么?(bababa)
25.用户登录怎么做的?(都会,面试官应该是想引出session的共享问题)
26.共享session除了token还有别的实现方式吗?(不会,面试官说还可以用cookie和redis实现,框架封装好了,直接用)
27.spring事务了解吗?怎么实现的?(不会,扯了事务的传播行为)
28.商品减库存的时候会不会有线程安全的问题?(我说没有,他说有,因为我只是执行了一条redis命令判断返回值是否大于零)
29.承接上一条,那你的命令是什么?(bababa)
30.你知道http2.0吗?(黑人问号脸???只答了2.0有传输内容的压缩)
31.http1.0和http1.1的区别?(答了长连接,流水线,状态码)
32.https和http的区别?(主要从安全和证书方面扯)
33.你知道缓存击穿吗?(不知道,探讨了好几分钟为什么会出现缓存击穿和怎么处理)
34.你为什么做这个秒杀项目?(为了巩固知识nginx,redis,rabbitmq)
35.是否上线使用?(没有)
36.你是怎么学习新知识的?(官方文档->demo->应用到项目->实现原理)
37.你还有什么要问我的吗?(感觉这次面试回答的不太好,你有什么学习建议给我吗?)
面试官让我把项目中的技术栈多用,用熟,底层吃透,了解一下分布式,比如Spring Cloud。
结束。全程44mins,聊得还可以。
#Java工程师##面经##校招#