大厂后端场景题总结

最新的文章有解答思路,优化了排版。
链接: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 回复 分享
发布于 03-15 21:42 上海
mark住这个帖子
点赞 回复 分享
发布于 04-10 18:37 陕西
mark
点赞 回复 分享
发布于 04-10 17:21 云南
mark
点赞 回复 分享
发布于 04-10 12:15 陕西
mark学习一下
点赞 回复 分享
发布于 04-09 16:03 天津
mark住这个帖子
点赞 回复 分享
发布于 04-09 10:34 天津
m
点赞 回复 分享
发布于 04-08 10:33 福建
Mark
点赞 回复 分享
发布于 04-07 18:00 湖北
mark住这个帖子
点赞 回复 分享
发布于 04-04 14:44 四川
m
点赞 回复 分享
发布于 04-04 10:54 陕西
mark住这个帖子
点赞 回复 分享
发布于 04-04 01:42 浙江
mark住这个帖子
点赞 回复 分享
发布于 04-03 11:57 重庆
mark住这个帖子
点赞 回复 分享
发布于 04-03 08:42 天津
mark住这个帖子
点赞 回复 分享
发布于 04-03 07:54 河南
mark住这个帖子
点赞 回复 分享
发布于 04-02 19:32 北京
mark住这个帖子
点赞 回复 分享
发布于 04-02 18:50 湖北
m
点赞 回复 分享
发布于 04-02 08:23 山西
mark住这个帖子
点赞 回复 分享
发布于 03-31 14:08 四川
mark住这个帖子
点赞 回复 分享
发布于 03-31 09:32 黑龙江
mark住这个帖子
点赞 回复 分享
发布于 03-25 19:06 北京

相关推荐

经历了几周的痛苦折磨,终于上岸了字节,简直像梦一样,愿每个在路上的你们都有好的归属2.24 腾讯S3一面(40min)(挂)感觉是kpi,下一个3.3 字节飞书一面(60min)1. 算法:两数之和2. Arrays.sort()底层算法、链表排序底层算法3. 数据库主从读写如何保证缓存一致(项目拷打)4. Fork/Join框架原理,如何自己实现一样的效果(项目拷打)5. ThreadLocal解决了什么痛点,FastThreadLocal了解吗(项目拷打)6. 雪花算法原理,服务器时间回退导致ID重复或不连续怎么办(项目拷打)7. 什么是中断、中断时CPU做什么8. CPU调度策略9. 用户向ChatGPT提问到回答的过程中发生了什么10. 域名如何解析为IP地址11. 网络无法访问怎么排查解决12. Redis的Hash底层结构、扩容过程13. Redis如何实现高可用14. MySQL执行更新语句发生了什么15. redolog和binlog如何保证一致16. MySQL查询语句发生了什么17. 联合索引的底层结构18. 消息队列如何保证消息不丢失19. 反问3.5 腾讯PCG-应用开发一面(60min)1. 自我介绍2. HashMap底层数据结构3. HashMap什么时候转为红黑树,为什么用红黑树,链表和红黑树搜索时间复杂度4. HashMap初始容量/扩容容量5. 什么是操作系统6. 操作系统有什么用7. 进程和线程的区别8. 什么是僵尸进程9. 进程间、线程间如何通信10. 进程分配的内存大小是多少11. 进程的内存有哪些部分组成12. 什么是协程13. 网站输入URL返回结果的具体过程,越详细越好14. HTTP的结构,属于哪一层15. HTTPS和HTTP区别16. HTTPS的握手过程17. TCP是否安全,有哪些特点,和UDP有什么区别18. TCP如何保证不丢包19. TCP滑动窗口有什么用20. 数据库的事务特性有哪些21. 事务的隔离性是什么意思22. 数据库的事务隔离级别23. 索引的数据结构24. 联合索引abc查询b/ab会不会生效25. 索引为什么不使用Hash、二叉树26. 会哪些设计模式27. 知道哪些设计原则28. 算法:151. 反转字符串中的单词29. 反问3.6 字节飞书二面(60min)1. 自我介绍2. 实习拷打3. 项目拷打4. 算法:402. 移掉 K 位数字5. 反问3.7 腾讯PCG-应用开发二面(60min)(挂)聊天、聊实习、聊发展3.12 字节飞书套件三面(60min)1. 自我介绍2. 算法:2134. 最少交换次数来组合所有的 1 II3. 算法:611. 有效三角形的个数4. SQL:查询第二高的不同薪资5. 代码修正:多线程金额累加6. 实习拷打7. 反问3.13 腾讯云一面(60min)1. 自我介绍2. RocketMQ有哪些特性3. RocketMQ和Kafka对比4. RocketMQ如何保证顺序消息5. RocketMQ如何保证消息不丢失6. Java有哪些集合,HashMap底层结构,ArrayList扩容机制7. JVM的内存结构8. 双亲委派机制9. CG回收主要是针对哪部分内存10. synchronized和volatile的区别,volatile可以保证原子性吗11. Redis常用数据类型,字符串底层结构,为什么阈值是44字节12. Redis的Hash如何解决hash冲突13. Redis有哪些持久化方式,AOF和RDB如何结合、性能比较14. Redis内存汰机机制15. 操作系统物理内存和虚拟内存有什么区别16. 4G内存申请8G内存会发生什么,具体讲内存置换17. IO模型有哪些,select和epoll有什么区别,epoll具体如何实现获取已完成任务的18. UDP和TCP有什么区别,分别用在哪些场景19. TCP三次握手,TCP每个连接的SYN是不同的吗,为什么,TCP什么时候会拒绝SYN包20. 算法:15. 三数之和21. 反问3.14 腾讯云二面(60min)(挂)1. 自我介绍2. 编程题:写一个组件,可以缓存请求,请求到达一定数量或者过一段时间统一入库等操作。(核心是使用BlockingQueue实现)3. MySQL有哪些锁,insert语句会有哪些锁4. select语句直接limit分页会有什么问题,怎么优化5. 有一个网关,负责将HTTP请求分发到下游无数服务,会出现哪些网络相关问题6. 实习介绍7. 实习介绍,详细说一下对项目中核心的一些设计架构的理解,不一定是自己做的8. 实习拷打9. RocketMQ 如何实现高可用的,聊了 CommitLog / mmap / 索引 / 队列负载 / 缓存读取10. 未来规划11. 在工作室的职责12. 反问3.17 字节飞书HR面(40min)正常的自我介绍、未来规划、项目&实习经历情况、优缺点等等。
车仔仔面:接好孕
点赞 评论 收藏
分享
评论
96
932
分享

创作者周榜

更多
牛客网
牛客企业服务