大厂后端场景题总结

#秋招面试通关锦囊# 最新的文章有解答思路,优化了排版。
链接:https://www.nowcoder.com/discuss/733322587777888256?sourceSSR=users
1. 淘宝,在你商品的购物车页面,有几个商品,点击商品购物之后点击支付会跳转到第三方页面不管是微信还是支付宝,从你点击支付跳转到支付页面,输入支付码,完成支付之后返回响应的订单列表页面,在这个业务场景中试着想想会有什么问题?架构方面你会怎么设计?
问题总结:
​支付状态同步延迟​(第三方回调不及时,订单状态不一致);
​网络中断或用户中途退出​(支付未完成,订单状态卡在“处理中”);
​重复支付或超时失效​(用户重复操作或支付超时未更新);
​数据一致性风险​(订单、库存、支付系统间状态冲突);
​第三方支付回调失败​(网络抖动或接口异常导致状态丢失)。
架构设计思路:
​异步通知 + 主动查询:用MQ监听第三方支付结果,同时定时任务补偿未确认订单;
​幂等设计:订单ID与支付流水号绑定,防止重复处理;
​分布式事务最终一致性:通过状态机驱动订单流转,结合日志和补偿机制;
​前端兜底:支付完成后强制刷新订单列表,并引导用户手动查询;
​容灾降级:第三方支付异常时,提供延迟跳转或本地订单状态缓存。

2. 大文件小内存,文件内存储的是数字,要求对文件内容进行排序,详细说明每一步干什么?
假设有10GB数字文件,内存1GB:
​分割:生成11个临时文件(每个约0.9GB)。
​内部排序:每个文件排序后保存。
​归并:若系统允许同时打开10个文件,则每次归并10路,两轮完成(10→1)。
​输出:得到最终有序文件,删除临时数据。

3. 在表上新增一个字段时,如果这个表正在进行读写操作,应该如何处理以确保不影响现有操作?
用工具绕过锁表

✅ ​在线DDL:MySQL用ALGORITHM=INPLACE;SQL Server用ONLINE=ON。
✅ ​无锁工具:pt-online-schema-change或gh-ost(影子表同步,秒级切换)。
​代码与数据兼容

⚠️ ​先发代码:应用层兼容新字段(允许NULL/默认值)。
⚠️ ​默认值必填:如DEFAULT 0,避免脏读。
​低风险操作

⏰ ​低峰执行:监控流量,避开业务高峰。
🔄 ​备回滚方案:工具自动备份原表,异常时快速回退。

4. 在Linux命令行敲下一行命令,会进行哪些事情?
Shell解析:处理别名、变量、通配符、重定向和管道。

命令类型判断:检查是内建命令还是外部可执行文件。

创建子进程:通过fork()和exec()加载并执行命令。

执行命令:程序运行,可能调用系统调用与内核交互。

结束与清理:返回状态码,回收资源。

返回Shell:重新进入交互状态,等待下一条命令。

5. 比如说 42 亿个 QQ 号,然后有 10 万行数据。那比如它这个数据量就比较大了,查阅效率比较低。那你要提升查阅效率的话,采用分库的方法,你觉得要怎么分?比如前5万行放到一个库里,然后5万行放到一个库里。这里有个问题,比如说想要查找名字叫做abc的所有账号,可能前五万行外行里边有 10 个,后五万个行里边有 3 个,然后你要查出名字叫abc的用户,你就要查两次?
6. 从前端页面到Java后台再到数据库,有一张表,表存在上百万条数据,从这三个层面,去做一个查询方面的优化,单表查询。
7. 假设现在还有挺多内存,有什么情况还会频繁fullgc?
8. 如何判断语言是面向对象的还是面向过程的?
9. 使用普通的互斥锁实现读写锁
10. 后端项目的集群部署,如果在使用canal同步数据库binlog的时候发生了宕机,从节点的同步方案?
11. 如果服务和mq之前发送消息进行数据同步的过程意外暂停了,如何去排查?
12. 把面试官看成是一个小白的话,如何去给他讲解mysql的作用和底层实现?对比使用文本文件存储
13. 选课,课的人数不能超,人的时间段不能重
14. 设计表的时候,关联表和在一个表中加冗余字段关联各有什么优势
15. 分库分表方案(题目:淘宝购物场景-区分用户订单和商家订单)
16. 库存系统设定(讲到了分为读和写。高并发读的情况下怎么扛住。数据一致性怎么保证。怎么加锁的,锁的粒度在流程中锁了什么?)
17. 遇到内存泄露有什么排查方式
18. 看堆内存溢出的时候会看那些指标?
19. 解决超卖问题的思路
20. 为什么你数据库的ID不用自增ID而是用雪花ID?
21. 单例模式有没有线程安全情况
22. 编写Java程序到到运行经历了什么
23. viloate关键字作用,为什么jvm会指令重排序,我说加快运行速率,为什么可以加快?
24. 防抖和节流如何实现
25. 服务器大量请求超时,怎么排查
26. 栈溢出会对其他进程造成影响吗?
27. 程序是如何在计算机上跑起来的?
28. 需要启动一个线程去完成某一个工作,耗时是不确定的,我需要设置一个超时时间,不管运不运行完都要返回,如何设计呢?
29. 假如mysql和redis使用kafka解耦之后,有一部分失败导致数据不一致怎么办
30. bitmap的作用,及常见使用场景
31. 对于微博成千上万的评论,一个评论可能还会有很多回复,你会如何设计这个评论系统?
32. 业务上 什么情况使用悲观锁,什么情况使用乐观锁?
33. .我用了一个多线程去查多个结果集,主线程使用线程池获取多个结果集,主线程如何知道前面的线程执行完了,并且得到结果集?
34. 你怎么对帖子按照最热进行排行?用户点赞/关注这个三元组(如果数据量很大)怎么存储查询?
35. 1000w url排序,10M内存
36. 一个商品1000万库存,20w秒杀,只用设计减库存环节
37. 怎么快速定位到五分钟内重复登录了两次的QQ号,用什么数据结构。
38. 两个500G的文件存ip地址,给30G内存,求两个文件的交集
39. 设计一个 QPS 一百万的分布式数据库的订单号方案。
40. 我现在有一些海外业务,从国内将数据发送到海外延迟比较大,有没有什么改善方法?
41. 主题里面假如有1万条消息,这个 topic 的 badcase 有 10 个,那我这个1万条消息是怎么分布的?Kafka为什么要有这个 partition 这个概念?消费者是按照 topic 去消费的还是按 position 去消费的?consumer group有了解吗?一个 consumer group 下面有 5 个节点,就比方说刚才那个 topic 下面有十个partition,有五个这个消费节点,它这个五个消费节点是怎么去消费这些 partition?Kafka 它的性能比用 其它mq 那些都要快,那你了解过Kafka 为什么能实现高吞吐量吗?
42. 场景:设计一个网络服务器,现在有【多线程 + 每个线程内部阻塞IO】 和 【单线程 + Epoll】这两种方案
(1)这两种方案在cpu负载,时间效率,内存资源占用这三个方面各有什么特点?
(2)现在有大量的就绪socket需要处理,使用单线程模型有什么问题?该怎么优化?
(3)开放题:如果让你来设计一个网络服务器,你有什么方案?
43. 场景:现在有一天内的大量日志,每条日志记录了用户id, 登陆时间,登出时间 {userid, login_time, logout_time}, 时间单位是秒。
(1)怎么求出一天内的最大在线人数?
(2)怎么求出维持在最大在线人数的最长持续时间?
全部评论
1 回复 分享
发布于 2025-03-15 21:42 上海
mark住这个帖子
点赞 回复 分享
发布于 03-23 13:51 河南
mark
点赞 回复 分享
发布于 2025-11-09 13:37 浙江
mark住这个帖子
点赞 回复 分享
发布于 2025-10-24 22:03 吉林
mark住这个帖子
点赞 回复 分享
发布于 2025-10-15 00:06 广东
mark住这个帖子
点赞 回复 分享
发布于 2025-08-22 20:10 四川
mark
点赞 回复 分享
发布于 2025-07-16 14:52 辽宁
mk
点赞 回复 分享
发布于 2025-06-06 03:11 北京
mark住这个帖子
点赞 回复 分享
发布于 2025-05-26 00:52 江苏
mark住这个帖子
点赞 回复 分享
发布于 2025-05-26 00:49 江苏
mark住这个帖子
点赞 回复 分享
发布于 2025-05-09 21:54 陕西
mark住这个帖子
点赞 回复 分享
发布于 2025-05-06 20:54 辽宁
mark住这个帖子
点赞 回复 分享
发布于 2025-04-24 12:14 山西
mark住这个帖子
点赞 回复 分享
发布于 2025-04-10 18:37 陕西
mark
点赞 回复 分享
发布于 2025-04-10 17:21 云南
mark
点赞 回复 分享
发布于 2025-04-10 12:15 陕西
mark学习一下
点赞 回复 分享
发布于 2025-04-09 16:03 天津
mark住这个帖子
点赞 回复 分享
发布于 2025-04-09 10:34 天津
m
点赞 回复 分享
发布于 2025-04-08 10:33 福建
Mark
点赞 回复 分享
发布于 2025-04-07 18:00 湖北

相关推荐

面试时间:4.22下午3点 时长1h道心破碎了,对项目进行非常深度的拷问,还考了性能监测这一部分,以及一个音乐播放的场景题,全程基本无八股无手撕,最没有悬念的一次面试,g的不能再g,基本上考的都是我没有了解的知识,反问我直接问前面的答案了,还是太菜了,录音还忘记录了,算了反正也不敢听1. 自我介绍2. 虚拟列表怎么实现的3. 一道性能指标采集代码找错误,力竭了,根本找不出来,根本没了解过这部分知识4. 文件上传是怎么实现的5. 大文件分片上传时,计算 5MB 分片 MD5 大概要多久6. 如果文件很大,计算完整文件 MD5 很耗时,有什么性能优化方案7. Web Worker 在大文件 MD5 计算里能怎么用8. 服务端保存所有分片索引和分片文件,会不会导致碎片文件越来越多9. 分片合并完成后,服务端临时分片目录应该怎么清理10. 如果清理了分片,下次上传同一个文件还能不能做分片级别的秒传11. 秒传应该基于完整文件 hash 还是分片 hash12. 服务端怎么设计分片管理,才能避免既存完整文件又存所有分片造成空间浪费13. 如果两个文件部分分片相同、整体文件不同,怎么判断和复用分片14. 歌曲列表页点击歌曲后,如何打开一个独立播放页15. 如果播放页已经存在,列表页怎么通知已有播放页切换歌曲16. 怎么判断播放页是否已经存在或是否被关闭17. 如何用 LocalStorage 实现跨页面通信18. 如何用 LocalStorage 实现页面间心跳检测19. LocalStorage 轮询方案有什么性能问题20. 除了 LocalStorage,跨页面通信还有哪些更好的方案21. postMessage 和 Service Worker 怎么用于跨页面通信22. 歌曲列表中大量图片加载时,如何先展示占位图23. 图片加载成功后怎么切换为真实图片24. 图片加载失败后怎么展示失败图25. 如何通过图片的 load 和 error 事件判断加载状态26. 你接触过 React Native 或 Flutter 这类跨端技术吗27. Vite 相比 Webpack,为什么开发阶段启动更快28. Webpack 能不能也配置成使用 ES Module29. Vite 的热更新 HMR 是怎么实现的30. WebSocket 和 SSE 有什么区别31. 反问
查看30道真题和解析
点赞 评论 收藏
分享
评论
132
1129
分享

创作者周榜

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