大厂后端场景题总结
最新的文章有解答思路,优化了排版。
链接: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)怎么求出维持在最大在线人数的最长持续时间?
链接:https://www.nowcoder.com/discuss/733322587777888256?sourceSSR=users
1. 淘宝,在你商品的购物车页面,有几个商品,点击商品购物之后点击支付会跳转到第三方页面不管是微信还是支付宝,从你点击支付跳转到支付页面,输入支付码,完成支付之后返回响应的订单列表页面,在这个业务场景中试着想想会有什么问题?架构方面你会怎么设计?
支付状态同步延迟(第三方回调不及时,订单状态不一致);
网络中断或用户中途退出(支付未完成,订单状态卡在“处理中”);
重复支付或超时失效(用户重复操作或支付超时未更新);
数据一致性风险(订单、库存、支付系统间状态冲突);
第三方支付回调失败(网络抖动或接口异常导致状态丢失)。
架构设计思路:
异步通知 + 主动查询:用MQ监听第三方支付结果,同时定时任务补偿未确认订单;
幂等设计:订单ID与支付流水号绑定,防止重复处理;
分布式事务最终一致性:通过状态机驱动订单流转,结合日志和补偿机制;
前端兜底:支付完成后强制刷新订单列表,并引导用户手动查询;
容灾降级:第三方支付异常时,提供延迟跳转或本地订单状态缓存。
2. 大文件小内存,文件内存储的是数字,要求对文件内容进行排序,详细说明每一步干什么?
分割:生成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命令行敲下一行命令,会进行哪些事情?
命令类型判断:检查是内建命令还是外部可执行文件。
创建子进程:通过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)怎么求出维持在最大在线人数的最长持续时间?
全部评论
mark住这个帖子
mark
mark
mark学习一下
mark住这个帖子
m
Mark
mark住这个帖子
m
mark住这个帖子
mark住这个帖子
mark住这个帖子
mark住这个帖子
mark住这个帖子
mark住这个帖子
m
mark住这个帖子
mark住这个帖子
mark住这个帖子
相关推荐
点赞 评论 收藏
分享
03-29 18:04
湖南科技大学 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享