美团日常面经-Java后端一面

1. 布隆过滤器;缓存空结果;参数校验。
2. 延迟双删;基于binlog监听;设置合理缓存过期时间兜底。
3. RDB。AOF
4. RDB更快。
5. 单线程处理命令 + I/O多路复用。单线程避免锁竞争;I/O多路复用使单线程高效管理大量连接,仅当socket就绪时处理IO。
6. 读未提交、读已提交、可重复读、串行化
7. 可重复读。解决脏读、不可重复读;通过MVCC和间隙锁减少幻读发生。
8. 默认 B+树。
9. 红黑树的二叉搜索树,树高较高;范围查询需中序遍历效率低;节点存储利用率较低。 B+树的更矮胖;叶节点链表结构使范围查询/全表扫描极高效;节点存储更多键。
10.使用二级索引查询时,若所需列不在该索引中,需根据索引中存储的主键值,回到聚集索引 树中查找完整行数据。额外磁盘IO是主要性能损耗。
11.查询:连接器、查询缓存、分析器、优化器、执行器、返回结果。更新:额外涉及事务开启、写undo log、执行器调引擎修改内存数据、写redo log、写binlog、提交事务。
12.更新:写undo/redo,改内存,写binlog,提交redo;两阶段提交。
13.继承Thread类,实现Runnable接口,实现Callable接口,使用线程池提交任务。
14.核心线程数、最大线程数、存活时间、时间单位、工作队列、线程工厂、拒绝策略。
15.CountDownLatch要求子线程主动存结果到共享集合后countDown(),主线程await()阻塞等待;CyclicBarrier由线程在await()前存结果,最后到达的线程触发汇总;而线程池通过主线程收集Future并调用get()阻塞获取结果。
16.start() 启动新线程,run()普通方法调用。
17.数组+ 链表/红黑树。
18.非线程安全。
19.JDK8 ConcurrentHashMap:改用 synchronized 锁单个桶 + CAS + volatile,替代 JDK7 分段锁,并发度更高。
20.MQ 消息可靠:依赖生产者可靠投递(含重试)、Broker 持久化与高可用、消费者手动 ACK 与幂等处理三方协同保障。
21.消费者幂等性:通过唯一约束(如 DB/REDIS 记录消息 ID)防止重复处理,确保多次消费结果一致
全部评论
过了吗,回答的挺好的
点赞 回复 分享
发布于 2025-12-24 17:17 北京

相关推荐

2025-12-31 21:22
南昌大学 前端工程师
【心路历程:从热血到迷茫】 大一下,我很庆幸刷到了优雅爷的学习路线,立志通过 Java 后端进大厂。那时我很自律,从不敢翘课,全靠挤课余时间,每天自学 3-6 小时。直到暑假结束,我把路线里的视频刷了一遍,跟着老师一敲完了外卖和点评。但这时我感到学得很吃力,特别是到了项目和八股阶段,基本上一窍不通。【初试水:残酷的现实】大二开学不久,原以为有了学校光环在本地好找实习,结果现实给了我一记重锤。去面一家小厂时,面试官看我项目太简单,连八股都没问,就因为性别和项目深度直接劝我转前端。【转战前端:陷入二次自我怀疑】 这次失败让我动摇了。看着后端深不见底的技术栈和自己平平无奇的代码能力,我跟风转向了“听说回暖”的前端。三个月时间,我突击了 HTML/CSS/JS 和 Vue,用vue做了简单的学习项目,React 也过了一遍语法。 但在 Boss 上投递后,基本石沉大海。这时我才发现,换赛道并没有解决核心问题:我的项目依然太浅,我还是很难独立写出像样的代码。【现状与反思】我陷入了深深的内耗。我发现自己陷入了“假勤奋的陷阱”:习惯了“跟敲”,没有独立思考,导致代码能力停滞不前。 八股文看不懂, 频繁更换赛道,导致两边都只学了皮毛。我也曾怀疑自己是否真的不适合做开发。但想想对口的专业和薪资,我还是想再拼一把。【寒假计划】- 认真琢磨一个有深度的项目- 背八股- 坚持刷 LeetCode最后的最后,想送给自己:既然选择了远方,便只顾风雨兼程。
点赞 评论 收藏
分享
评论
3
7
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务