后端
·05-27 13:15宏鼎汇 中小厂面经,公司主要业务是做电商供应链的
面试问题
1. 平常你们开发过程中有用过一些 AI 工具?
2. 你用 AI 生成代码,平常生成完之后,你怎么保证这个代码是没问题的?你怎么验证的?
3. 你有没有碰到过那种情况?就是说我让他帮我生成一个什么逻辑,生成完了以后,那不是我想要的。告诉他怎么改,但是一直改不对。你怎么处理?
4. 我写了一个方法,我怎么保证我这个方法是线程安全的?
5. 你刚说synchronized, synchronized 它这个锁是重量级还是轻量级的?那它一开始就是轻量级的,还是一直就是轻量级的?
6. 我写了一个public 方法,上面加了一个 @Transactional 注解。运行到测试环境之后,它方法里面有抛异常,但是数据库提交了,并没有回滚,你怎么分析这个问题?
7. 调用同类的方法,为什么会事务失效?事务嵌套为什么会事务失效?
8. 事务的传播机制有几种?事务的特性有哪些?那事务的原子性怎么理解的?
9. Spring的AOP,它发生在 Spring Bean 生命周期的哪一个阶段? Spring的循环依赖问题是怎么解决的?
10. 你们项目中平常是怎么使用线程池的?为什么要先用这个线程池呢?它帮它解决了什么问题?
11. 你们项目中导出的数据量有多少?如果我想在导出过程中我需要能够看到导出的进度,比如说目前导出1%,5%。这个功能你会怎么去实现。基于你项目中刚才那个场景。
12. 什么情况下会发生死锁?然后如果说我们碰到死锁应该怎么处理?然后还有我们写代码过程中应该怎么避免发生死锁?
13. 你自己平常写了一个SQL。然后里面有一条排他锁,刚开始我就查询了一下。然后比如说有两个人访问,第一个人操作就请求接口。我正在执行,还没执行完,第二个人进来了,还是访问这请求这个接口。你说他是会往下面走,还是说会阻塞在这个地方。
14. 读锁和写锁,这两个锁有什么区别?
15. MySQL 你们平常使用过程中是怎么调优的?MySQL 索引的话,索引的数据结构有了解过吗?
16. 像 B +树的话,它有哪些特点呢? 相比B 树较起来,它们有什么不一样?
17. 平常你们代码开发过程中。有没有用过一些什么设计模式?说一个就具体的场景,使用哪种模式,然后解决什么问题了?
18. 比如说还有一个就是我订单这边,有一个分页查询,然后特别慢,也是要十几秒。主要问题的话就是说他查的是订单的主表。订单主表的话就是数据量特别大,有千万级别。还这个宽表有上百个字段。会数据量大了,会导致这个分页查询特别慢。查询条件也比较多,可能也有关联别的表,查询条件的话有一二十个。让你去优化,你会怎么优化?
19. 刚才说的,他这个是分页查询。分页查询应该是有两条 sql 吧,比如说汇总那个count,每次条件都不一样,我都会去全量数据,去查找,那这个问题怎么解决呢?这个就很慢,比如说你刚才说要加索引,该加的我都加了,但是这个汇总,就是很慢,每次因为都要去全量数据。你这个问题怎么解决?
20. 刚才你俩说到了分库分表。那为什么要分库?为什么要分表?就是他们分别是解决什么问题的?
21. 反问
面试总结
1. synchronized 锁升级这一块太久没看说的含糊其辞
2. 第9题隐隐约约好像知道是在初始化之前会生效,但面试官追问Spring Bean的生命周期哪个方法之后会生效。有点回答不上来了
3. 第11题业务扩展,只知道一个设计思路。但具体实现步骤就讲不出来了
4. 第18题,刚开始回答以为只是查询一张订单表,查询这张订单表很慢。但其实这个回答没有理解到面试官的问题,忽略了关联别的表。这个地方回答。我的回答思路是,查询慢肯定是索引失效了,走了全表扫描。可以通过Explain命令去解析这条SQL语句,然后去创建合适的索引。但是这样回答不够具体,面试官也不是很满意这个回答,应该在详细说一下分析线上 Top 高频查询条件,把等值条件放前面、范围条件放最后。尽量打造覆盖索引
5. 关于19题,我当时也不知道该怎么回答了,按到理count去统计不应该会很慢。就想着可能是数据表数据太多了,可以分表来减少一些数据量。把冷数据分离出去,从而减少count次数。但是脑子一热直接说的分库分表。这种情况应该直接说分表会更好点
41
52
分享
操作
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
