面经实战
面经实战合集
应届生/校招
Q: 24届,LLM应用开发,SpringAI?
面试者背景
面试者背景:
24届硕士毕业,上市公司,2年经验,AI平台构建,AI网关平台,大模型服务接入治理,10家厂商,百个大模型接入,企业级AI问答应用,也做传统后端开发。
AI****网关实现方案?apisix,java实现了哪些功能?费用计算,模型限流。
网关都有哪些功能介绍下?审批**&开放API****,API管理(限流、模型校验、KEY校验)**
项目难点是什么?模型厂商的模型规范不一样需要定制,日志聚合分析,报表,权限校验。
计费如何实现的?token数如何计算的。如果调用中间异常了怎么办?自己计算,常见的文生文模型, 一个中文大概占几个token?1.2-1.7,
对LLM的API的语义了解么?temperature,取值范围?所有模型都是0-1吗?大部分模型的默认值是多少?max-tokens、top-p呢?
大模型本身支持工具调用和记忆的能力吗?
限流是怎么实现的?请求速率限流。用户限流怎么实现的?clickhouse到mysql是如何同步的?1小时同步一次。能接受1小时延迟。
都对接了哪些模型 ?文生文,文**+**图生文,生图模型。开源模型有对接吗?自己部署的,也会走网关。
Cluade****有对接么?封杀怎么处理。多账号。哪个模型用量最大?cluade,ds,
**出口数据有做管控吗?如何避免数据泄露。用deepseek审查模型,部署用的什么方式?ollama,**vlm
**用ollama做模型部署的原因是什么?**方便。模型部署在显卡上,A100、模型部署经验?GPU限制,上下文大小限制。
可监测性这方面做啦哪些事情?grafana,Prometheus,CPU&磁盘&内存,模型部署服务器的GPU相关。
如果对接的某个模型厂商的服务挂了,如何做故障转移?
AI问答平台,技术栈是什么?spring ai + spring boot,主要是哪些内容的问答?spring ai用的哪个版本?1.0.0?chatclient和chatmodel区别是啥?spring ai中的advisor机制了解吗?有用过哪个advisor吗?
多轮对话是如何实现的?redis+mysql,为什么要存redis、和mysql两层、redis如何实现的只存最近的N轮对话?zset,手动维护最近N轮,mysql对话记忆表是如何设计的?用户问题、模型回答、用户信息、模型信息、对话id。会话ID起到了什么作用?回话ID如何保证唯一性 ?redisson???前缀**+随机数+username+时间戳----->base64****,为什么不考虑用uuid?如果并发更高场景,时间戳也可能重复怎么办?雪花算法,是怎么保证不重复的呢?数据库主键id、**
长期记忆**&**短期记忆
线上问题遇到过吗?CPU飙升,apisix没配连接池,日志文件很大(按天拆分),lua脚本插件内存溢出?
调用大模型API超时有哪些优化方案?流式输出,换小模型,max-token,
题目解析
对LLM的API的语义了解么?temperature,取值范围?所有模型都是0-1吗?大部分模型的默认值是多少?max-tokens、top-p呢?
大模型本身支持工具调用和记忆的能力吗?
限流是怎么实现的?请求速率限流。用户限流怎么实现的?clickhouse到mysql是如何同步的?1小时同步一次。能接受1小时延迟。
都对接了哪些模型 ?文生文,文**+**图生文,生图模型。开源模型有对接吗?自己部署的,也会走网关。
Cluade****有对接么?封杀怎么处理。多账号。哪个模型用量最大?cluade,ds,
**出口数据有做管控吗?如何避免数据泄露。用deepseek审查模型,部署用的什么方式?ollama,**vlm
**用ollama做模型部署的原因是什么?**方便。模型部署在显卡上,A100、模型部署经验?GPU限制,上下文大小限制。
可监测性这方面做啦哪些事情?grafana,Prometheus,CPU&磁盘&内存,模型部署服务器的GPU相关。
如果对接的某个模型厂商的服务挂了,如何做故障转移?
AI问答平台,技术栈是什么?spring ai + spring boot,主要是哪些内容的问答?spring ai用的哪个版本?1.0.0?chatclient和chatmodel区别是啥?spring ai中的advisor机制了解吗?有用过哪个advisor吗?
多轮对话是如何实现的?redis+mysql,为什么要存redis、和mysql两层、redis如何实现的只存最近的N轮对话?zset,手动维护最近N轮,mysql对话记忆表是如何设计的?用户问题、模型回答、用户信息、模型信息、对话id。会话ID起到了什么作用?回话ID如何保证唯一性 ?redisson???前缀**+随机数+username+时间戳----->base64****,为什么不考虑用uuid?如果并发更高场景,时间戳也可能重复怎么办?雪花算法,是怎么保证不重复的呢?数据库主键id、**
长期记忆**&**短期记忆
线上问题遇到过吗?CPU飙升,apisix没配连接池,日志文件很大(按天拆分),lua脚本插件内存溢出?
调用大模型API超时有哪些优化方案?流式输出,换小模型,max-token,
以上内容,建议通过AI项目课学习:
Q: 24届,美团1-3面面经?
候选人是北京某211大学的,参加了24届美团的面试,目前已经完成了1、2面及HR面。
一面
- 自我介绍
- 挑一个项目介绍一下
- 说一下你对计算机网络的了解
- 你有了解过Socket编程吗
- 了解Netty吗?面试官说如果要做 Java,建议去了解一下 Netty。
- 说一下你对操作系统的了解(感觉面试官问的问题都比较大)
- 了解 JVM 吗
- JVM的内存模型
- CMS如何优化空间
- 如果我要在 JVM 上跑一个项目,JVM 参数一般怎么设置?
- 什么时候用 G1 比 CMS 更好
- 了解线程池吗
- ThreadPoolExecutor参数的了解?哪些参数比较重要?
- MySQL 索引
- B+树和B树的性能谁更好
- 写题:给一个数组,输出前 N 大的元素(快排思想,堆排思想,ACM模式)
- 有什么兴趣爱好
- 学习方法
- 反问
一面基本上是纯八股,从计算机网络到JVM、再到线程池及MySQL,最后来一道算法题。整体难度都不大,以上这些算是大厂的常规面试题目,并没有特别为难候选人。
二面
- 自我介绍
- 项目来源
- 介绍一下项目
- redis怎么实现去重
- 如果去重的时候查询redis时网络波动导致查超时怎么办
- 项目遇到过什么问题
- kafka在什么情况下会导致消息丢失
- kafka和rabbitmq有什么区别
- 你对后台开发感兴趣吗
- 你对现在互联网这么卷有什么看法
- 你觉得你要怎么应对这种卷的就业环境
- 你用过美团吗,对美团有什么看法
- 现在面试的进展
- 美团和快手给你offer,你去哪里
- 反问
二面在八股的基础上增加了一些场景题、但是整体看上去也只是围绕redis和Kafka在问,并且问的也不算很多,基本上这些题如果背过一些八股文,也是可以回答的上来的。
HR面
- 自我介绍
- 老师为什么不放实习
- 你对自己的职业生涯规划是什么
- 将一个你提升自己技术点的经历
- 你老家是哪里的
- 你投了多少公司了
- 你选择工作一般考虑什么
- 你们学校考公和进私企的比例是多少
- 你自己在实验室所提升的能力是什么
- 你在做项目中遇到的最大的难点是什么
- 你觉得你最大的优点是什么
- 你是什么星座的
- 你觉得你有什么待提升的点
- 你对公司有什么排序
- 你为什么选择美团
- 反问
Q: 22年毕业,培训了2个月Java,多线程,Spring?
面试者背景
面试者背景:
22年毕业,培训了Java 2个月,双非二本,非科班
怎么理解面向对象?什么是多态?Java是值传递还是引用传递?值传递
AQS介绍一下?state是什么类型,state的修改是怎么改的?state=1表示什么?
AQS有哪些具体实现?reentrantLock和synchronized区别是啥?
公平锁和非公平锁区别是啥?公平锁的缺点?reentrantLock是如何实现公平锁和非公平锁的?
你觉得用synchronized和reentrant哪个好?synchronized锁的是什么?锁对象和锁类有区别吗?
同一个类中有两个synchronized方法,能被两个线程同时执行吗?同一个线程可以吗?重入怎么判断?为啥要做成可重入?死锁了解么?什么情况会发生死锁?如何解决死锁的问题?
如何创建一个线程?子线程抛异常,主线程能捕获到吗?start和run区别是啥
主子线程的执行顺序是怎么样的?守护线程知道吗?
实现功能:统计Spring的某个bean中的某个方法被调用多少次?如果不让改动bean的类呢?
用过spring中的哪些注解?@Service、@Compotent区别是啥?
同一个接口有多个实现,如何指定该注入哪个实现?
SpringEvent用过吗?IOC控制反转是啥意思?把什么反转了,谁反转给谁了?
Spring有几种注入方式?平常用哪个?字段注入IDEA有没有给警告?
Spring和SpringBoot最大的区别是啥?简化开发,内置web服务器?内置了哪些web服务器?
讲讲Spring的循环依赖问题?二级缓存就够了?
Mysql主键一定是自增的吗?建表一定要有主键吗?隐藏row_id干嘛用的?聚簇索引
如果没有创建主键,一定会创建隐藏主键吗?如果有这时候有唯一键一定就不会了吗?
主键用自增ID和UUID哪个好?自增ID有缺点吗?
分库分表字段怎么选的,雪花算法?按照ID分表?查询怎么办?
日志输出用的什么框架,slf4j只是个门面,日志怎么输出的?
Maven出现了jar冲突,该怎么解决?删一个,
题目解析
怎么理解面向对象?什么是多态?Java是值传递还是引用传递?值传递
AQS介绍一下?state是什么类型,state的修改是怎么改的?state=1表示什么?
AQS有哪些具体实现?
reentrantLock和synchronized区别是啥?
公平锁和非公平锁区别是啥?公平锁的缺点?reentrantLock是如何实现公平锁和非公平锁的?
你觉得用synchronized和reentrant哪个好?synchronized锁的是什么?锁对象和锁类有区别吗?
同一个类中有两个synchronized方法,能被两个线程同时执行吗?同一个线程可以吗?重入怎么判断?为啥要做成可重入?死锁了解么?什么情况会发生死锁?如何解决死锁的问题?
如何创建一个线程?子线程抛异常,主线程能捕获到吗?start和run区别是啥
主子线程的执行顺序是怎么样的?守护线程知道吗?
实现功能:统计Spring的某个bean中的某个方法被调用多少次?如果不让改动bean的类呢?
用过spring中的哪些注解?@Service、@Compotent区别是啥?
同一个接口有多个实现,如何指定该注入哪个实现?
@Qualifier注解
SpringEvent用过吗?IOC控制反转是啥意思?把什么反转了,谁反转给谁了?
Spring有几种注入方式?平常用哪个?字段注入IDEA有没有给警告?
Spring和SpringBoot最大的区别是啥?简化开发,内置web服务器?内置了哪些web服务器?
讲讲Spring的循环依赖问题?二级缓存就够了?
Mysql主键一定是自增的吗?建表一定要有主键吗?隐藏row_id干嘛用的?聚簇索引
如果没有创建主键,一定会创建隐藏主键吗?如果有这时候有唯一键一定就不会了吗?
主键用自增ID和UUID哪个好?自增ID有缺点吗?
分库分表字段怎么选的,雪花算法?按照ID分表?查询怎么办?
日志输出用的什么框架,slf4j只是个门面,日志怎么输出的?
Maven出现了jar冲突,该怎么解决?删一个,
Q: 23年毕业,电商运营平台,mysql,mq,redis?
面试者背景
23年毕业,项目是电商运营平台,主要技术mysql,mq,redis,负责过账单模块,
面试过程
面试者背景:
拉取订单数据,怎么保证订单不重复?insert or update ?
insert or update的SQL怎么写的?insert into on duplicate key update 的限制是什么?有影响吗?会有额外的加锁吗?
每天的订单量有多少?
项目的难点是什么?订单匹配,正则匹配。正则表达式判断字符串是不是邮箱怎么写?
MQ使用场景?异步导出,发MQ的应用和接MQ是同一个应用吗?不用MQ不行吗?线程池不行吗?
Rabbitmq的整体架构介绍一下。Exchange起到的作用是什么?转发路由。
RabbitMQ消息的一次生成&消费的流程是怎么样的?
死信队列用过吗?死信队列的消息需要走exchange吗?死信队列可以做什么?延迟消息。
Rabbitmq和KAFKA区别?kafka一定不丢消息吗?rabbitmq能保证不丢吗?
线程池用过吗?线程池都有哪些类型?线程池的核心参数,拒绝策略有哪些,如何选择?
线程池核心和最大线程数如何设定的?向线程池提交一个任务的处理流程是怎么样的?
Java中线程有几个状态?waiting和timed wating区别。什么时候会进入timed waiting
线程的start方法和run方法区别是什么?
如何在主线程中等子线程执行完?wait?
Completablefuture什么地方用到了?性能提升的原因是什么?编排。
Completablefuture实现原理?ForkJoinPool是啥?
AOP切面实现多数据源切换介绍一下?
金额的存储是怎么存的,decimal多少位?如何判断两个BigDecimal是否相等,为啥不用equals方法?
Bigdecimal如何做四舍五入?bigdecimal传给前端出现科学计数法怎么回事?bigdecimal转字符串?toString?为啥不用double和float?为啥他们会丢失精度?用double存整数有问题吗?
为啥有了基本类型还需要包装类?double Double
缓存的穿透、击穿和雪崩?bloom过滤器。
分布式锁加锁失败后怎么做的等待?
题目解析
拉取订单数据,怎么保证订单不重复?insert or update ?
insert or update的SQL怎么写的?insert into on duplicate key update 的限制是什么?有影响吗?会有额外的加锁吗?
因为他的项目中提到了做了订单拉取,所以问了下如何防止重复,本质上还是一个幂等问题。
涉及到insert or update的操作,就深入问一下具体用法和实现
项目的难点是什么?订单匹配,正则匹配。正则表达式判断字符串是不是邮箱怎么写?
提到自己项目中写了很多正则表达式,那就随便问一个正则的问题。
邮箱正则验证:^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+. [a-zA-Z]{2,}$
MQ使用场景?异步导出,发MQ的应用和接MQ是同一个应用吗?不用MQ不行吗?线程池不行吗?
这里是候选人的项目对MQ做了个自发自收,实现一个异步的场景,但是聊下来其实自发自收消息的必要性并没有特别大,完全可以用线程池来做异步,所以项目中的一些方案,需要了解前因后果,要知道为啥一定要这个方案,或者知道这个方案还有什么不足以及替代方案。
Rabbitmq的整体架构介绍一下。Exchange起到的作用是什么?转发路由。
RabbitMQ消息的一次生成&消费的流程是怎么样的?
死信队列用过吗?死信队列的消息需要走exchange吗?死信队列可以做什么?延迟消息。
Rabbitmq和KAFKA区别?kafka一定不丢消息吗?rabbitmq能保证不丢吗?
线程池用过吗?线程池都有哪些类型?线程池的核心参数,拒绝策略有哪些,如何选择?
线程池核心和最大线程数如何设定的?向线程池提交一个任务的处理流程是怎么样的?
Java中线程有几个状态?waiting和timed wating区别。什么时候会进入timed waiting
线程的start方法和run方法区别是什么?
如何在主线程中等子线程执行完?wait?
Completablefuture什么地方用到了?性能提升的原因是什么?编排。
Completablefuture实现原理?ForkJoinPool是啥?
AOP切面实现多数据源切换介绍一下?
金额的存储是怎么存的,decimal多少位?如何判断两个BigDecimal是否相等,为啥不用equals方法?
Bigdecimal如何做四舍五入?bigdecimal传给前端出现科学计数法怎么回事?bigdecimal转字符串?toString?为啥不用double和float?为啥他们会丢失精度?用double存整数有问题吗?
为啥有了基本类型还需要包装类?double Double
缓存的穿透、击穿和雪崩?bloom过滤器。
分布式锁加锁失败后怎么做的等待?
分布式锁加锁失败后等待其实是阻塞锁的实现,一般redis实现的都是非阻塞锁。zookeeper更适合实现阻塞锁。
Q: 26届,985,12306项目,redis,多线程?
面试者背景
面试者背景:
211本,985硕,设计模式,mq,中间件,26届。
12306****项目,登录,注册,增删改查,车票模块,车票购买,订单模块,支付,
**哪个模块最熟悉?车票模块。车票查询,redis存储,城市,车站,查询列车信息,余票,购票,防止超卖、分布式锁(锁列车、锁细分)****+**令牌桶,bitmap?
车次、余票、城市等信息是如何存储的?杭州出发,经过上海,到达南京,如何存储的?存储的key会不会很大?
余票是如何存储的?key是什么?我要查一等座、二等座怎么办?一等座靠窗呢?
北京**->杭州->南京,如何实现杭州->南京票售出之后,其他的票都一起-1****的?**
防超卖是怎么做的?令牌桶是是如何实现的?自己实现的。介绍下实现思路。
余票数量是什么时候扣减的?令牌桶的意义是什么?
令牌桶和漏桶的区别是什么?你的场景用漏桶可以吗?
JDK 17****用了啥新特性吗?
Redis的集群模式。主从节点分别是什么?哨兵模式(主观、客观下线、ping/pong),集群模式(hash槽、crc16、)、16384是怎么来的?哪种可能会存在脑裂的情况?脑裂有哪些问题?
介绍下redis的持久化机制?AOF、RDB、区别?File在磁盘上吗?AOF的写回策略、
Redis****支持事务嘛?不能回滚的事务?过程中某个命令失败了咋办?
用的哪个redis客户端?Redisson,jedis,
布隆过滤器是啥?缺点是什么?误判、无法删除。怎么解决?
Redis****除了用来作缓存,还能干啥?排名、消息队列、经纬度。
synchronized****是如何保证的原子性、有序性和可见性?
如果你要加锁,在syn和reentrantLock之间选哪个?为什么?偏向锁为啥别废弃、
线程池执行业务逻辑,如何实现3秒钟如果不返回就抛异常结束?
10个线程模拟赛马,实现功能:所有马ready之后一起开跑,全部到终点之后再宣布成绩?
题目解析
12306****项目,登录,注册,增删改查,车票模块,车票购买,订单模块,支付,
**哪个模块最熟悉?车票模块。车票查询,redis存储,城市,车站,查询列车信息,余票,购票,防止超卖、分布式锁(锁列车、锁细分)****+**令牌桶,bitmap?
车次、余票、城市等信息是如何存储的?杭州出发,经过上海,到达南京,如何存储的?存储的key会不会很大?
余票是如何存储的?key是什么?我要查一等座、二等座怎么办?一等座靠窗呢?
北京->杭州->南京,如何实现杭州->南京票售出之后,其他的票都一起-1的?
这部分是关于项目,这种项目可以讲,但是不要说所有模块都是你做的,要不然面试官可能会问你各种问题,你可能hold不住,建议是挑其中的重要模块介绍,把一个模块给他吃透了,而不是每个模块都模棱两可,一问细节就不知道了,那肯定就挂了。
防超卖是怎么做的?令牌桶是是如何实现的?自己实现的。介绍下实现思路。
余票数量是什么时候扣减的?令牌桶的意义是什么?
令牌桶和漏桶的区别是什么?你的场景用漏桶可以吗?
JDK 17用了啥新特性吗?
如果你写了JDK 17,那就要做好被问的准备,所以你要了解一点新特性,要不然被问了你不知道就很尴尬,要不然就老老实实写JDK8好了。
Redis****的集群模式。主从节点分别是什么?哨兵模式(主管、客观下线、ping/pong),集群模式(hash槽、crc16、)、16384是怎么来的?哪种可能会存在脑裂的情况?脑裂有哪些问题?
介绍下redis的持久化机制?AOF、RDB、区别?File在磁盘上吗?AOF的写回策略、
Redis****支持事务嘛?不能回滚的事务?过程中某个命令失败了咋办?
用的哪个redis客户端?Redisson,jedis,
布隆过滤器是啥?缺点是什么?误判、无法删除。怎么解决?
Redis除了用来作缓存,还能干啥?排名、消息队列、经纬度。
synchronized****是如何保证的原子性、有序性和可见性?
如果你要加锁,在syn和reentrantLock之间选哪个?为什么?偏向锁为啥别废弃、
线程池执行业务逻辑,如何实现3秒钟如果不返回就抛异常结束?
10个线程模拟赛马,实现功能:所有马ready之后一起开跑,全部到终点之后再宣布成绩?
Q: 26届,双一流硕士,2段大厂实习?
面试者背景
面试者背景:
26****届,双一流硕士,2段大厂实习(CICD系统、资金结算系统)
资金结算实习四个月,干的最难的工作是什么?数据库稳定性治理,分库分表、解决数据倾斜问题,
分表前多少数据?1000万、为啥要分,300万**/****月,参与实现了其中哪部分? **
分表键和分表算法介绍下?费用单,商户id,分了多少张表?128表,16库?怎么定出来的。
费用单的历史数据还有用吗?为啥不考虑归档或者搜索引擎。
分表后主键是怎么生成的?号段模式**、你这个sequence数据的存储在哪个库哪张表?某个单库中。**
数据倾斜问题,大商户。有多少量?5万**/**日,现在他有多少数据?
怎么解决的数据倾斜问题?二次分表。客商白名单、单独加时间二次分表。
客商的数据查询怎么办?为啥不干脆直接按照时间分?
分库分表之后数据迁移怎么做的?读旧双写(双写是怎么实现的双写?先写哪个库?失败了咋办?)、存量数据迁移(怎么定义存量数据?根据时间、开增量双写的时间?)
你做过的项目中,做过哪些比较好的设计模式吗?多渠道资金打款**>策略模式+模板+**工厂,分别起到了什么作用?三种工厂模式有什么区别?
AOP+自定义注解实现了啥功能?日志处理。如何实现的AOP****可以切到这个注解上?你这个直接里有参数吗?日志要打什么?
如何统计一个bean的某个方法被调用多少次?如果方法执行过程失败了怎么办?
finally****的代码什么情况可能会不执行?守护线程了解么?JAVA中可以创建守护线程吗?
JAVA****中多个线程做同步,有哪些方案?加锁、JUC,JUC中都有啥?原子类、并发控制工具、锁、并发容器、线程池。CoW是啥意思?你用过原子类么?使用场景是啥?
AQS中已经用了CAS**,为什么还需要CAS?volatile怎么保证的可见性。CAS本身不是基于CPU缓存一致性协议(MESI)做的吗,为啥还需要保证一致性?**
Mysql 定义varchar(10)和varchar(100),同时存6****个字符的时候,有区别么?存储无区别,排序有区别?排序上有啥区别?
如果是char(10)和char(100)呢?MySQL的深分页如何解决?子查询就没有深分页的问题了吗?用es。Es就没深分页了么?跳页咋办?
MySQL的主从同步是怎么做的?为什么需要relay log****中转一下?binlog是拉的还是推的?什么情况可能会主从延迟?
线上一个接口响应时间不符合预期,如何排查和解决?trace ,比如说是慢SQL可能是啥原因导致的。
自己不慢,下游接口慢怎么办?异步?
如果你trace发现你并不慢,但是上游就说你慢,怎么办?
题目解析
资金结算实习四个月,干的最难的工作是什么?数据库稳定性治理,分库分表、解决数据倾斜问题,
分表前多少数据?1000万、为啥要分,300万**/****月,参与实现了其中哪部分? **
分表键和分表算法介绍下?费用单,商户id,分了多少张表?128表,16库?怎么定出来的。
费用单的历史数据还有用吗?为啥不考虑归档或者搜索引擎。
分表后主键是怎么生成的?号段模式**、你这个sequence数据的存储在哪个库哪张表?某个单库中。**
数据倾斜问题,大商户。有多少量?5万**/**日,现在他有多少数据?
怎么解决的数据倾斜问题?二次分表。客商白名单、单独加时间二次分表。
客商的数据查询怎么办?为啥不干脆直接按照时间分?
分库分表之后数据迁移怎么做的?读旧双写(双写是怎么实现的双写?先写哪个库?失败了咋办?)、存量数据迁移(怎么定义存量数据?根据时间、开增量双写的时间?)
你做过的项目中,做过哪些比较好的设计模式吗?多渠道资金打款**>策略模式+模板+**工厂,分别起到了什么作用?三种工厂模式有什么区别?
AOP+自定义注解实现了啥功能?日志处理。如何实现的AOP可以切到这个注解上?你这个直接里有参数吗?日志要打什么?
如何统计一个bean的某个方法被调用多少次?如果方法执行过程失败了怎么办?
finally****的代码什么情况可能会不执行?守护线程了解么?JAVA中可以创建守护线程吗?
JAVA****中多个线程做同步,有哪些方案?加锁、JUC,JUC中都有啥?原子类、并发控制工具、锁、并发容器、线程池。CoW是啥意思?你用过原子类么?使用场景是啥?
AQS中已经用了CAS,为什么还需要CAS?volatile怎么保证的可见性。CAS本身不是基于CPU缓存一致性协议(MESI)做的吗,为啥还需要保证一致性?
Mysql 定义varchar(10)和varchar(100),同时存6****个字符的时候,有区别么?存储无区别,排序有区别?排序上有啥区别?
如果是char(10)和char(100)呢?MySQL的深分页如何解决?子查询就没有深分页的问题了吗?用es。Es就没深分页了么?跳页咋办?
MySQL的主从同步是怎么做的?为什么需要relay log中转一下?binlog是拉的还是推的?什么情况可能会主从延迟?
线上一个接口响应时间不符合预期,如何排查和解决?trace ,比如说是慢SQL可能是啥原因导致的。
自己不慢,下游接口慢怎么办?异步?
如果你trace发现你并不慢,但是上游就说你慢,怎么办?
Q: 26届,百度一面&二面美团一面?
美团一面八股
hashcode equal什么时候需要重写
hashmap原理
hashmap是线程安全的吗
不安全的话用什么?他的原理是什么样的
线程池使用过吗?怎么用的?什么场景?
spring事务怎么做到的
spring事务传播机制
mysql怎么建索引?怎么判断是否要建索引
mysql索引失效?
mysql慢查询排查
百度一面
JMM Java内存模型
mysql 索引 有哪些
你知道哪些设计模式,分别举例说明
《更多请直接查看设计模式专题》
三次握手
垃圾回收算法
抽象类,接口,普通类的区别
重载和重写
百度二面
mq如何防止丢失
mq如何防止重复消费
消费端如何保证消息不重复消费
redis实现分布式锁需要注意哪些?
redis 会删除错锁吗?
反射原理?在什么阶段?
你怎么理解幂等?
你开发了一个接口,如何保证幂等
加密,签名,摘要分别是什么?使用场景?摘要用的私钥还是公钥验签?
Q: 26届,阿里后端2面?
面试者背景
面试者背景:
1.平时做的项目属于什么业务
2.Java Object类有哪些方法,分别作用
3.HashMap原理,线程安全?
4.Java如何进行线程同步
5.CAS原理
6.JVM垃圾回收之GC算法
7.Mysql索引原理以及查询优化:
8.TCP,拥塞控制
9.算法: 给定一棵二叉树,找到这棵树最中最后一行中最左边的值。
10.电商平台中订单未支付过期如何实现自动关单?
11.如何设计一个秒杀系统
12.如果你的系统的 OPS 突然提升 10 倍你会怎么设计?
13.如何设计一个支持 10 万 OPS 的会员系统
14.关于索引的底层实现,为什么选择 B+Tree而不是红黑树?
15.你如何理解前后端分离
16.有哪些后端开发经验,做了什么
17.介绍HashMap,与TreeMap区别
18.用HashMap实现一个有过期功能的缓存,怎么实现
19.平时怎么学习新知识
20.最近看了什么书
题目解析
几乎都是原题,我甚至怀疑面试官看过我的面试宝典,好几个问题几乎都是一模一样的原题问法。直接贴链接了,
hashMap相关的太多了,直接搜一下吧,就在集合类的分类下。

Q: 27届,数藏项目(订单、交易、用户模块)?
面试者背景
面试者背景:
今日****面试者:27届,有一段物联网实习,智能设别接入,文件导入导出,自定义规则校验,数藏项目(订单、交易、用户模块),MQ事务消息,redis预扣减,秒杀压测,对账,分布式技术栈。
实习了多久?3个多月,
文件导入导出功能介绍下。EasyExcel,同一份文件**/**多份文件中有重复数据了,内存处理,去重怎么去的?
如果数据量很大,乜办法一次性导入内存,如何去重?
文件导入有用多线程吗?单线程读excel,多线程并发写数据库。占内存问题。
EasyExcel****有什么优势?
项目中还有其他的亮点么?规则校验?redis的key过期了,会如何处理?
Redis的内存如果满了,会怎么样?淘汰策略,LRU和LFU****有啥区别?
AOP****是如何实现切到一个自定义注解的?
数藏项目哪个模块最熟悉。交易模块和订单模块有啥关系和区别?为啥要搞个交易模块?编排了其他模块,用户、库存、订单。交易模块都提供了哪些方法?下单(秒杀**/**普通交易)、
交易和订单模块是不同的微服务,用dubbo通信,注册中心nacos。一个应用要接入dubbo,需要做哪些事情?导入依赖,
如何做订单防重?详情页生成token,并发情况下如何确保token只能用一次?用lua脚本,
Token如何防止伪造?加密。如何防止用户囤一批token刷下单接口?如何实现的一个用户+一个商品只能有一个token**?token的生成,用户id和商品id是前端传的么?**
下单防重还有其他方案么?前端置灰,购物车下单如何做防重?
订单的状态是怎么设计的?init、confirm、cancel、discard、paid。状态机是如何实现的?这样做的好处是什么?
订单号是怎么生成的?业务标识、随机数(雪花算法)、基因法。有没有重复的概率?概率低、
订单表的主键id是怎么生成的?为啥不直接用订单号?
分库分表了解么?单库多表,
项目中用过分布式锁?什么地方用了分布式锁。用户手机号分布锁避免短信重复发送?
分布式锁怎么实现的?redisson,lock,tryLock你用的哪个?redisson好处?看门狗机制,怎么实现的?还有其他的分布式锁实现方案么?分布式锁和单机锁主要区别是啥?
压测过程有遇到过什么问题么?日志被打满,logback?问题则呢么发现的?CPU占用率,问题怎么解决的?
题目解析
文件导入导出功能介绍下。EasyExcel,同一份文件**/**多份文件中有重复数据了,内存处理,去重怎么去的?
如果数据量很大,乜办法一次性导入内存,如何去重?
文件导入有用多线程吗?单线程读excel,多线程并发写数据库。占内存问题。
EasyExcel有什么优势?
项目中还有其他的亮点么?规则校验?redis的key过期了,会如何处理?
Redis的内存如果满了,会怎么样?淘汰策略,LRU和LFU有啥区别?
AOP是如何实现切到一个自定义注解的?
数藏项目哪个模块最熟悉。交易模块和订单模块有啥关系和区别?为啥要搞个交易模块?编排了其他模块,用户、库存、订单。交易模块都提供了哪些方法?下单(秒杀**/**普通交易)、
交易和订单模块是不同的微服务,用dubbo通信,注册中心nacos。一个应用要接入dubbo,需要做哪些事情?导入依赖,
如何做订单防重?详情页生成token,并发情况下如何确保token只能用一次?用lua脚本,
Token如何防止伪造?加密。如何防止用户囤一批token刷下单接口?如何实现的一个用户+一个商品只能有一个token**?token的生成,用户id和商品id是前端传的么?**
下单防重还有其他方案么?前端置灰,购物车下单如何做防重?
订单的状态是怎么设计的?init、confirm、cancel、discard、paid。状态机是如何实现的?这样做的好处是什么?
订单号是怎么生成的?业务标识、随机数(雪花算法)、基因法。有没有重复的概率?概率低、
订单表的主键id是怎么生成的?为啥不直接用订单号?
分库分表了解么?单库多表,
项目中用过分布式锁?什么地方用了分布式锁。用户手机号分布锁避免短信重复发送?
分布式锁怎么实现的?redisson,lock,tryLock你用的哪个?redisson好处?看门狗机制,怎么实现的?还有其他的分布式锁实现方案么?分布式锁和单机锁主要区别是啥?
压测过程有遇到过什么问题么?日志被打满,logback?问题则呢么发现的?CPU占用率,问题怎么解决的?
Q: 27届,数藏项目,交易链路开发,秒杀?
面试者背景
面试者背景:
27届,双一流本科,数藏项目,交易链路开发,秒杀,Java,
介绍下项目,秒杀下单,订单防重提交、订单超时关单。
订单的超时关单怎么实现的?主动关单**&被动关单。Xxl-job,关单扫表扫描条件?30分钟是代码中配置的?如果改成15分钟,怎么不改代码?SQL有用到索引吗?状态+时间,为什么这么设计?状态区分度不高为什么还建索引?除了XXL-JOB****还有其他 方案吗?MQ延时消息。**
SQL****扫表关单,有做分页吗?没做,那会不会把内存干爆呢?为啥不做分页。如果要做怎么做?
XXL-JOB****扫表有缺点吗?被动关单,同步的还是异步的?怎么实现的异步的?虚拟线程,
介绍下什么是虚拟线程?守护线程,你这里用守护线程没问题吗?
主动关单和被动关单,如果并发了,怎么办?状态机控制、乐观锁版本号,介绍下用乐观锁实现版本号的原理,CAS。关单的幂等怎么做?订单操作流水。主动**&**被动用的幂等号是同一个吗?用的订单号。Xxl-job如何确保只有一台实例可以执行任务,DB锁。Select for update,这个方案好吗。
**Select for update ****是乐观锁还是悲观锁,锁的是什么?锁的是哪个索引。**name <-> age
你的关单任务是单机的还是分布式。单机任务,什么时候会做优化?
秒杀的下单和非秒杀下单的难点是什么?数据库热点行更新,超卖问题。什么是超卖?
数据库热点行更新存在啥问题?锁等待、死锁检测、数据库链接被占用。耗CPU,
**怎么做的防超卖?redis预扣减、lua脚本做库存判断。****Sql **做库存检测。
为啥要在redis搞个库存?流量过滤做限流不行吗?不关心顺序呢?如果做限流器可以用什么方案?限流算法了解么?漏桶**&令牌桶,滑动窗口?短信验证码5****分钟内只能发一次。**
**Redis中什么时候做的初始化?手动set???**上架、
如果redis库存扣成功了,数据库扣失败了怎么办?一直重试**+人工对账。没办法保证一致性,少卖怎么办?秒杀方案中的MQ的作用是什么?削峰填谷。减少瞬时流程。订单的创建延迟问题怎么处理?怎么提高MQ消费速率,批量消费。MQ异步创单成功之后怎么通知前端,前端通过预生成的订单号轮询,前端一直轮训吗?大量的轮询任务+秒杀用户数多,对数据库造成很大压力?只能靠数据库抗。MQ用的RocketMQ****,RocketMQ如何保证的消息的可靠性的?怎么保证消息不丢。**
项目中用过线程池吗?用的哪个线程池,有哪些核心参数?核心线程数、最大线程数、工作队列、时间、拒绝策略。拒绝策略都有哪些?队列可以用哪些队列。ArrayBlockingQueue,LinkedBlockingQueue有啥区别?线程池和虚拟线程之间有必要配合使用么?
介绍下AQS?队列为啥用双向链表、
G1和CMS区别,ZGC知道么。介绍下垃圾清理的过程。GCRoot ,三色标记法、初始标记、并发标记、重新标记、垃圾清除。哪个过程是STW的?清理需要STW吗?为啥并发标记可以不需要STW**?**
从1TB的搜索日志,查询出搜索量最高的10个关键词
题目解析
订单的超时关单怎么实现的?主动关单**&被动关单。Xxl-job,关单扫表扫描条件?30分钟是代码中配置的?如果改成15分钟,怎么不改代码?SQL有用到索引吗?状态+时间,为什么这么设计?状态区分度不高为什么还建索引?除了XXL-JOB****还有其他 方案吗?MQ延时消息。**
SQL****扫表关单,有做分页吗?没做,那会不会把内存干爆呢?为啥不做分页。如果要做怎么做?
XXL-JOB扫表有缺点吗?被动关单,同步的还是异步的?怎么实现的异步的?虚拟线程,
介绍下什么是虚拟线程?守护线程,你这里用守护线程没问题吗?
主动关单和被动关单,如果并发了,怎么办?状态机控制、乐观锁版本号,介绍下用乐观锁实现版本号的原理,CAS。关单的幂等怎么做?订单操作流水。主动**&**被动用的幂等号是同一个吗?用的订单号。Xxl-job如何确保只有一台实例可以执行任务,DB锁。Select for update,这个方案好吗。
**Select for update ****是乐观锁还是悲观锁,锁的是什么?锁的是哪个索引。**name <-> age
你的关单任务是单机的还是分布式。单机任务,什么时候会做优化?
秒杀的下单和非秒杀下单的难点是什么?数据库热点行更新,超卖问题。什么是超卖?
数据库热点行更新存在啥问题?锁等待、死锁检测、数据库链接被占用。耗CPU,
**怎么做的防超卖?redis预扣减、lua脚本做库存判断。****Sql **做库存检测。
为啥要在redis搞个库存?流量过滤做限流不行吗?不关心顺序呢?如果做限流器可以用什么方案?限流算法了解么?漏桶**&令牌桶,滑动窗口?短信验证码5****分钟内只能发一次。**
**Redis中什么时候做的初始化?手动set???**上架、
如果redis库存扣成功了,数据库扣失败了怎么办?一直重试+人工对账。没办法保证一致性,少卖怎么办?秒杀方案中的MQ的作用是什么?削峰填谷。减少瞬时流程。订单的创建延迟问题怎么处理?怎么提高MQ消费速率,批量消费。MQ异步创单成功之后怎么通知前端,前端通过预生成的订单号轮询,前端一直轮训吗?大量的轮询任务+秒杀用户数多,对数据库造成很大压力?只能靠数据库抗。MQ用的RocketMQ,RocketMQ如何保证的消息的可靠性的?怎么保证消息不丢。
项目中用过线程池吗?用的哪个线程池,有哪些核心参数?核心线程数、最大线程数、工作队列、时间、拒绝策略。拒绝策略都有哪些?队列可以用哪些队列。ArrayBlockingQueue,LinkedBlockingQueue有啥区别?线程池和虚拟线程之间有必要配合使用么?
介绍下AQS?队列为啥用双向链表、
G1和CMS区别,ZGC知道么。介绍下垃圾清理的过程。GCRoot ,三色标记法、初始标记、并发标记、重新标记、垃圾清除。哪个过程是STW的?清理需要STW吗?为啥并发标记可以不需要STW?
从1TB的搜索日志,查询出搜索量最高的10个关键词
Q: 985应届生,并发编程底层原理?
面试者背景
985应届本科生,秋招中,最近在找工作,但是还没拿到满意的offer,自述主要技术栈:java后端,mysql,jvm,kafka
面试过程
面试者背景:
项目介绍一下,定时任务,采集数据,从哪个数据源采集数据。ES、kafka、
定时任务是用的开源框架,E-job,
预警模块的优化,线程池,批处理-》流处理,优化前和优化后的效果数据有吗?
之前10w条数据处理会崩溃的原因是什么?那你这个方案能解决的原因是什么?
线程池的原理介绍一下?JAVA中如何创建线程池?线程池有哪几种?线程数如何设置?核心线程数,最大线程数该该设置成多少该怎么定?IO密集、CPU密集?为什么IO密集型可以设置的多一些?
为什么不建议使用Executors创建线程池?
创建线程有哪些方式?Callable可以单独用吗?FutureTask
多线程的执行是同步的还是异步的?虚拟机会等线程执行完在shutdown吗?
Run方法和start方法有啥区别?守护线程了解吗?守护线程和用户线程的区别?
GC是有单独的线程吗?STW
WAITING和TIMED_WAITING
什么是CAS?CAS都有哪些应用?乐观锁、自旋
Synchronized的自旋是怎么实现的?代码上是如何实现的?
CAS有什么问题吗?ABA问题、忙等待。通过自旋的角度思考一下CAS的问题?
JAVA中的CAS怎么实现的?如何保证的原子性,
有了synchornized为什么还需要volatile?锁、
双重校验锁实现单例?volatile,
怎么实现的用了voaltile就会有内存屏障。
设计模式,用枚举实现单例有什么好处?为什么枚举可以防止单例被破坏?为什么枚举实现的单例就线程安全了?static修饰的对象特点?类加载的过程是线程安全的吗?为什么?
如何实现一个类加载器?为什么是LoadClass而不是findClass?
什么是聚簇索引?有什么避免回表的方式吗?下推、覆盖索引?
题目解析
Q:预警模块的优化,线程池,批处理-》流处理,优化前和优化后的效果数据有吗?
之前10w条数据处理会崩溃的原因是什么?那你这个方案能解决的原因是什么?
这个问题,主要是考察面试者对于自己做过的项目,尤其是技术改造是不是真的做到了掌握,对于这一类问题,是大厂面试官非常喜欢问的一类问题。
所以,如果你在简历、或者面试的时候提到自己做了一些技术改造、技术选型、线上问题的解决等 ,一定要想清楚下面这几个问题:
本次技术改造中遇到的问题是什么?
问题是怎么来的?
你是如何解决的?
你的方案为什么可以解决这个问题?
还有没有其他的方案可以选择?
你的方案还有没有什么改进的空间?
切忌类似回答:不知道为什么这么做,主管(架构师、老师)让我这么做的,我来的时候就是这样的
Q:线程池的原理介绍一下?JAVA中如何创建线程池?线程池有哪几种?线程数如何设置?核心线程数,最大线程数该该设置成多少该怎么定?IO密集、CPU密集?为什么IO密集型可以设置的多一些?
如果在项目中用到线程池,一定要能清楚为什么要用、不用行不行、他的原理是什么、用了之后还会不会带来其他的问题?
创建线程有哪些方式?Callable可以单独用吗?FutureTask
多线程的执行是同步的还是异步的?虚拟机会等线程执行完在shutdown吗?
Run方法和start方法有啥区别?守护线程了解吗?守护线程和用户线程的区别?
GC是有单独的线程吗?STW
WAITING和TIMED_WAITING
什么是CAS?CAS都有哪些应用?乐观锁、自旋
Synchronized的自旋是怎么实现的?代码上是如何实现的?
CAS有什么问题吗?ABA问题、忙等待。通过自旋的角度思考一下CAS的问题?
JAVA中的CAS怎么实现的?如何保证的原子性,
有了synchornized为什么还需要volatile?锁、
双重校验锁实现单例?volatile,
怎么实现的用了voaltile就会有内存屏障。
设计模式,用枚举实现单例有什么好处?为什么枚举可以防止单例被破坏?为什么枚举实现的单例就线程安全了?static修饰的对象特点?类加载的过程是线程安全的吗?为什么?
如何实现一个类加载器?为什么是LoadClass而不是findClass?
要想实现一个类加载器,可以继承ClassLoader类,并重写其中的loadClass或者findClass方法,如果想要遵循双亲委派的原则,则直接重写findClass就行了。如果想破坏双亲委派,则重写loadClass方法。
什么是聚簇索引?有什么避免回表的方式吗?下推、覆盖索引?
Q: 最强应届生,JVM,计算机网络?
面试者背景
面试者背景:
今日面试者:双非24届,准备春招,缓存组件项目,抖音短视频项目。
挑一个最复杂的模块介绍下流程。发视频&获得视频列表。MinIO,如何实现刷过的视频不会再刷到。
如果视频特别大,会做压缩吗?这两个模块你觉得哪里还能优化?
敏感词过滤怎么实现的?除了前缀树还有其他的吗?DFA算法知道吗?
登录密码增强怎么做的?MD5是加密算法吗?为啥可以防止彩虹表攻击?随机加盐、多次hash、
对称加密和非对称加密区别是啥?
视频的唯一的URL地址生成方式?雪花算法。为啥不用uuid?雪花算法用的哪个工具类?
进程和线程、协程有啥区别?Java是多进程还是多线程,Java的线程是如何实现的知道吗。什么语言支持协程?go、java
进程间通信方式有哪些?管道(半双工和全双工区别)、CPU和GPU有啥区别?为啥大模型训练用GPU。TCP为啥需要三次握手?TCP对头阻塞是啥?能解决吗?ping的原理是什么?ping localhost没网吗?ping需要端口吗?
CMS的垃圾回收过程。为啥要分成4步。为啥初始标记和重新标记需要STW?什么东西可以当做GC Root。跨代引用怎么办?fullgc和younggc都会吗?
安全点了解吗?如果有一段代码进不了安全点怎么办?什么是安全区域?除了GC还有其他场景用安全点吗?锁降级、Dump、jit、热替换
Java的类加载机制。双亲委派模型。有哪些类加载器?bootstrap、ext、app,哪个版本是这样的?后面有变化吗?
JDK 8以后的版本有哪些新特性?模块化知道吗?ZGC了解吗?G1知道吗,和CMS区别?位置、算法、AOT编译知道吗?
设计模式用过吗?多个支付渠道的实现,用什么设计模式实现?策略+模板+工厂
频繁FullGC排查如何做?dump、MAT。如何获取dump?dump之前发生了GC怎么办?不做dump能定位fullgc原因吗?
题目解析
登录密码增强怎么做的?MD5是加密算法吗?为啥可以防止彩虹表攻击?随机加盐、多次hash、
对称加密和非对称加密区别是啥?
视频的唯一的URL地址生成方式?雪花算法。为啥不用uuid?雪花算法用的哪个工具类?
进程和线程、协程有啥区别?Java是多进程还是多线程,Java的线程是如何实现的知道吗。什么语言支持协程?go、java
进程间通信方式有哪些?管道(半双工和全双工区别)、CPU和GPU有啥区别?为啥大模型训练用GPU。
TCP为啥需要三次握手?TCP对头阻塞是啥?能解决吗?ping的原理是什么?ping localhost没网吗?ping需要端口吗?
CMS的垃圾回收过程。为啥要分成4步。为啥初始标记和重新标记需要STW?什么东西可以当做GC Root。跨代引用怎么办?fullgc和younggc都会吗?
安全点了解吗?如果有一段代码进不了安全点怎么办?什么是安全区域?除了GC还有其他场景用安全点吗?锁降级、Dump、jit、热替换
Java的类加载机制。双亲委派模型。有哪些类加载器?bootstrap、ext、app,哪个版本是这样的?后面有变化吗?
JDK 8以后的版本有哪些新特性?模块化知道吗?ZGC了解吗?G1知道吗,和CMS区别?位置、算法、AOT编译知道吗?
设计模式用过吗?多个支付渠道的实现,用什么设计模式实现?策略+模板+工厂
频繁FullGC排查如何做?dump、MAT。如何获取dump?dump之前发生了GC怎么办?不做dump能定位fullgc原因吗?
1-3年经验
Q: 1年经验,数字藏品&电商项目?
面试者背景
面试者背景:
** 专升本,24年毕业,数字藏品项目,文化&IP数字化藏品,售卖&展示,spring clo****ud Alibaba(nacos、dubbo、sentinel、redis、mysql、shardingjdbc、es),高并发**
负责交易和订单模块,平台用户量多少?注册用户100万,交易用户60万,订单量多少?5000万存量。最近半年卖的最火的是哪一款?河南博物馆陶土小狗,预定量7W。
下单前都需要预定吗?VIP先购买,开启预定,预定后正常售卖。如何做的购买权限控制?布隆过滤器?刚开通vip还没来得及进入布隆过滤器怎么办?为啥这里要用布隆过滤器?才100万用户,直接查数据库不就行了么?过滤恶意攻击流量,布隆过滤器是基于内存的还是redis的?
如果用户的vip到期了,布隆过滤器没办法删除怎么办?预约怎么做的?redis,set,如何避免一个用户预约多次?
抗500 qps的方案介绍下?redis做流量拦截?lua扣减、创建订单、500QPS算高并发么?同一个商品抗3000-4000,阿里云数据库,订单创建为啥要搞2步?要一个订单号
订单的状态是怎么设计的?INIT,confirm,paid,
上链,链是自己开发的吗?以太坊
下单过程什么情况会出现数据不一致,redis扣成功,应用挂了。旁路验证,
Redis和数据库库存不一致问题怎么解决?核对告警,人工操作。核对任务怎么做的?redis流水存储什么数据结构?如何扫描同一个商品的流水?为啥不搞个hash****结构,
如何判断一个商品是否走秒杀链路,网关检查商品过热,如何切流?
藏品的唯一编号?雪花算法?不需要给用户展示吗?
藏品的持有编号(顺序)高并发情况下怎么生成的?编号生成好,写库失败了怎么办?藏品id加分布式锁。分布式锁怎么做的?注解**+aop切面+redisson****,**
分布式锁的自定义注解是你自己写的吗?怎么设计的?key&keyExpression(el表达式),waitTime,releaseTime。AOP拦截,如何确保解锁成功?finally,
注解的AOP顺序问题如何解决(锁和事务)?加锁了还是有重复数据(事务还没提交,锁就释放了),怎么解决的?order注解。
介绍下AOP的原理?代理的注册过程,
分表算法怎么选的?自定义算法,取模,分了多少表?4张???
介绍下redis的线程模型?单线程执行命令,为什么?原子性,为啥单线程也能很快?
Redis如何实现多个命令以原子性方式执行?lua脚本为啥能保证原子性?lua脚本执行过程中失败了咋办、lua会回滚吗?不回滚咋保证原子性?redis支持事务吗?不支持。
代码中写lua有什么缺点吗?不好debug**。Redisson框架,jedis用过吗?redisTemplate,各自适合什么场景?**
AI熟吗?RAG的原理是什么?向量库是怎么做检索的?怎么判断相似度?用过哪个向量数据库,FAISS。知道混合检索吗?如何判断一个rag效果好不好?
题目解析
如何做的购买权限控制?布隆过滤器?刚开通vip还没来得及进入布隆过滤器怎么办?为啥这里要用布隆过滤器?才100万用户,直接查数据库不就行了么?过滤恶意攻击流量,布隆过滤器是基于内存的还是redis的?
如果用户的vip到期了,布隆过滤器没办法删除怎么办?预约怎么做的?redis,set,如何避免一个用户预约多次?
抗500 qps的方案介绍下?redis做流量拦截?lua扣减、创建订单、500QPS算高并发么?同一个商品抗3000-4000,阿里云数据库,订单创建为啥要搞2步?要一个订单号
本方案在项目实战课中:
订单的状态是怎么设计的?INIT,confirm,paid,
上链,链是自己开发的吗?以太坊
下单过程什么情况会出现数据不一致,redis扣成功,应用挂了。旁路验证,
Redis和数据库库存不一致问题怎么解决?核对告警,人工操作。核对任务怎么做的?redis流水存储什么数据结构?如何扫描同一个商品的流水?为啥不搞个hash结构,
如何判断一个商品是否走秒杀链路,网关检查商品过热,如何切流?
本方案在项目实战课中:
藏品的唯一编号?雪花算法?不需要给用户展示吗?
藏品的持有编号(顺序)高并发情况下怎么生成的?编号生成好,写库失败了怎么办?藏品id加分布式锁。分布式锁怎么做的?注解+aop切面+redisson,
藏品编号适合用redis自增id,而不是雪花算法,因为用户要看到顺序的序号,如1 2 3 4。
失败的问题解决方式是加分布式锁,避免并发情况下出现序号乱序的问题。
分布式锁的自定义注解是你自己写的吗?怎么设计的?key&keyExpression(el表达式),waitTime,releaseTime。AOP拦截,如何确保解锁成功?finally,
注解的AOP顺序问题如何解决(锁和事务)?加锁了还是有重复数据(事务还没提交,锁就释放了),怎么解决的?order注解。
介绍下AOP的原理?代理的注册过程,
分表算法怎么选的?自定义算法,取模,分了多少表?4张???
介绍下redis的线程模型?单线程执行命令,为什么?原子性,为啥单线程也能很快?
Redis如何实现多个命令以原子性方式执行?lua脚本为啥能保证原子性?lua脚本****执行过程中失败了咋办、lua会回滚吗?不回滚咋保证原子性?redis支持事务吗?不支持。
代码中写lua有什么缺点吗?不好debug。Redisson框架,jedis用过吗?redisTemplate,各自适合什么场景?
AI熟吗?RAG的原理是什么?向量库是怎么做检索的?怎么判断相似度?用过哪个向量数据库,FAISS。知道混合检索吗?如何判断一个rag效果好不好?
Q: 2年985硕,直播业务,redis,kafka,?
面试者背景
面试者背景:
2年985硕,直播业务,JAVA技术,redis,kafka,
直播什么业务,哪部分复杂一点?点赞**&**连麦事件、spring消费事件,顺序消息,
Spring的事件和MQ****区别,各自有什么好处?Spring的事件默认是异步的吗?如何实现异步?
为什么用事件驱动的方案?好处是啥?异步通信、非阻塞,
Kafka****如果消费失败了怎么办?应用挂了怎么办?
如何能避免丢消息问题?落表,如何设计这张消息表?eventid、state、body、eventType,failReason、times、lastExTime
如果用了消息表了,有序如何保证?消息表如何设计索引?事件id唯一索引、状态索引,
状态区分度不高加索引有用吗?event执行会用什么设计模式?
策略模式好处是啥,公共的逻辑如何处理?模板方法模式。
点赞是每一次都会发个事件吗?靠kafka消息合并、
连麦有什么特别的难点吗?消息的严格有序是如何保障的?发送到同一分区、单线程消费、
如果发生了重平衡,有序还能保障吗?重平衡会带来什么问题?stw、消息堆积、重复消费、
Kafka****的渐进式重平衡知道吗?
你们的连麦支持同时连麦?如何支持优先连麦?最多同时可以连多少人?
如果避免并发操作连多?redis记录连麦人数?为啥用redis可以解决并发问题?单线程
工作中有封装过一些公共的组件吗?SimpleDateFormat做日期转换?
SDF****的线程安全问题知道吗。如何解决?
日志框架用的哪个?log4j,同步日志还是异步日志?你自己配置过log4j的配置文件吗?
看过哪些源码么?Spring、Spring的bean的初始化过程,实例化和初始化区别,
Bean****实例化的入口的方法和类名知道么。
有什么情况会导致一个bean无法被初始化么?构造器注入&循环依赖,@Lazy
Spring之前用的哪个版本?SpringBoot 3.0知道么?AOT编译,定义starter**,**
定义一个starter需要做什么?在starter里面如何做个开关控制bean的实例化?
**Spring的事务机制了解么?编程式&**声明式,你觉得声明式事务有啥缺点。
声明式事务,事务失效了,可能有哪些情况?private调用、this调用为啥不生效?AOP、final、rollbackFor、数据库不支持、多线程会导致事务失效吗?为什么?
Threadlocal****在哪些框架有应用?Spring、Mybatis有吗?全链路追踪框架
如何在线程池之间传递ThreadLocal?ITL、TTL,TTL的原理知道么?
**有最近看过哪些框架、技术的新版本么?****JDK **新版本有啥新特性?虚拟线程。用了虚拟线程后还有必要用线程池吗?守护线程、
堆上还有很大内存,但是还是有频繁的fullgc,可能是什么原因?system.gc被调用、CMS搞不定了要用G1?
题目解析
Spring的事件和MQ****区别,各自有什么好处?Spring的事件默认是异步的吗?如何实现异步?
为什么用事件驱动的方案?好处是啥?异步通信、非阻塞,
Kafka****如果消费失败了怎么办?应用挂了怎么办?
如何能避免丢消息问题?落表,如何设计这张消息表?eventid、state、body、eventType,failReason、times、lastExTime
如果用了消息表了,有序如何保证?消息表如何设计索引?事件id唯一索引、状态索引,
状态区分度不高加索引有用吗?event执行会用什么设计模式?
策略模式好处是啥,公共的逻辑如何处理?模板方法模式。
点赞是每一次都会发个事件吗?靠kafka消息合并、
连麦有什么特别的难点吗?消息的严格有序是如何保障的?发送到同一分区、单线程消费、
如果发生了重平衡,有序还能保障吗?重平衡会带来什么问题?stw、消息堆积、重复消费、
Kafka的渐进式重平衡知道吗?
你们的连麦支持同时连麦?如何支持优先连麦?最多同时可以连多少人?
如果避免并发操作连多?redis记录连麦人数?为啥用redis可以解决并发问题?单线程
工作中有封装过一些公共的组件吗?SimpleDateFormat做日期转换?
SDF的线程安全问题知道吗。如何解决?
看过哪些源码么?Spring、Spring的bean的初始化过程,实例化和初始化区别,
Bean****实例化的入口的方法和类名知道么。
有什么情况会导致一个bean无法被初始化么?构造器注入&循环依赖,@Lazy
Spring之前用的哪个版本?SpringBoot 3.0知道么?AOT编译,定义starter**,**
定义一个starter需要做什么?在starter里面如何做个开关控制bean的实例化?
**Spring的事务机制了解么?编程式&**声明式,你觉得声明式事务有啥缺点。
声明式事务,事务失效了,可能有哪些情况?private调用、this调用为啥不生效?AOP、final、rollbackFor、数据库不支持、多线程会导致事务失效吗?为什么?
Threadlocal****在哪些框架有应用?Spring、Mybatis有吗?全链路追踪框架
如何在线程池之间传递ThreadLocal?ITL、TTL,TTL的原理知道么?
**有最近看过哪些框架、技术的新版本么?****JDK **新版本有啥新特性?虚拟线程。用了虚拟线程后还有必要用线程池吗?守护线程、
堆上还有很大内存,但是还是有频繁的fullgc,可能是什么原因?system.gc被调用、CMS搞不定了要用G1?
Q: 工作1年,大数据开发平台,seata贡献者?
面试者背景
面试者背景:
今日面试者:23年毕业,大数据开发平台、数据安全**&**质量监控、seata开源贡献、
权限管控是自建的吗?介绍下权限管控功能设计。一个用户想要执行SQL,如何判断能不能执行?
权限模型是如何设计的?审批流是怎么做的?流程引擎。
不同的表的审批流程不一样,如何实现的?责任链。不同的策略如何实现的?跨BU、外包、等级等。
项目中有并发场景吗?审批通过回调并发,授权抢锁、都用了状态判断为啥还需要加分布式锁?乐观锁
分布式锁如何实现的?redisson、自定义注解**+**切面。要锁什么东西,怎么配置?spel表达式。怎么写
为啥用redisson而不是用setnx?超时时间、自动续期。Redisson自动续期实现原理?watchdog是咋实现的?定时是怎么实现的?
加锁的时候,redis不可用了咋整?降级处理。
什么叫做幂等?想要实现幂等需要做什么?唯一识别号、状态机。查询接口怎么实现幂等?
如果请求中没有一个唯一的识别号怎么做幂等?表单提交没有幂等号怎么防止重复提交?
项目中解决like无法走索引问题,展开介绍下。扫表。这个地方有必要做分库分表吗?1-2亿申请记录?分了多少张表?如何基于用户id后两位分16张表?后两位直接取模、不均匀怎么办?为啥不直接用用户id取模16?
为啥** like %xx****不走索引?like xx%xxx走索引吗?为啥可以走?**
a,b都有索引,select * from table where a = xx order by b。走哪个索引?
介绍一个问题排查过程,GC问题。。。。。gc次数,dump,大对象。报警情况。Dump用什么工具看的?dump是如何获取到的?jmap、
给seata提交过什么代码?seata 2.1的rocketmq事务消息方案,rocketmq回滚后,全局事务怎么回滚。这个方案相比AT有啥区别?
Undo_log****存在性校验是干了啥?
介绍下seata各种模式的特点和适用场景?xa强一致性、at本地事务先提交、undo-log回滚,tcc空回滚、事务悬挂,saga长事务。什么情况只能用TCC不能AT?
题目解析
分布式锁如何实现的?redisson、自定义注解**+**切面。要锁什么东西,怎么配置?spel表达式。怎么写
为啥用redisson而不是用setnx?超时时间、自动续期。Redisson自动续期实现原理?watchdog是咋实现的?定时是怎么实现的?
加锁的时候,redis不可用了咋整?降级处理。
什么叫做幂等?想要实现幂等需要做什么?唯一识别号、状态机。查询接口怎么实现幂等?
如果请求中没有一个唯一的识别号怎么做幂等?表单提交没有幂等号怎么防止重复提交?
项目中解决like无法走索引问题,展开介绍下。扫表。这个地方有必要做分库分表吗?1-2亿申请记录?分了多少张表?如何基于用户id后两位分16张表?后两位直接取模、不均匀怎么办?为啥不直接用用户id取模16?
为啥** like %xx****不走索引?like xx%xxx走索引吗?为啥可以走?**
a,b都有索引,select * from table where a = xx order by b。走哪个索引?
介绍一个问题排查过程,GC问题。。。。。gc次数,dump,大对象。报警情况。Dump用什么工具看的?dump是如何获取到的?jmap、
这种问题,一定不能上来就说你的排查过程,那样就像是背的,一定要从背景,问题的发现开始讲起来。
给seata提交过什么代码?seata 2.1的rocketmq事务消息方案,rocketmq回滚后,全局事务怎么回滚。这个方案相比AT有啥区别?
Undo_log****存在性校验是干了啥?
介绍下seata各种模式的特点和适用场景?xa强一致性、at本地事务先提交、undo-log回滚,tcc空回滚、事务悬挂,saga长事务。什么情况只能用TCC不能AT?
Q: 工作2年,电商网站开发,负责购物车、详情页?
面试者背景
2年后端JAVA经验,代销平台,订单模块,购物车,详情页,分布式架构,简历上写了自己做过分布式系统、对于分布式事务、分布式锁等有了解、
面试过程
面试者背景:
项目自己负责的购物车模块介绍一下?未登录、redis存储,临时用户->登录用户的购物车合并,购物车限制,
登录用户的购物车存储,在redis中Key和value都是什么?除了SKUID为什么还需要存商品的信息?价格、库存改的时候怎么办?为什么要保存而不是直接查一下?
登录用户和未登录用户,购物车限制有区别?存储时间的区别,
如何实现登录用户可以存1000 sku,未登录用户只能存200 sku,如何实现?
有没有可能并发情况导致超过购物车限制?
购物车只存在Redis里面,数据会丢吗?AOF、
AOF能保证不丢吗?混合模式为什么数据就不丢?
如果需要实现一个凑单的功能,你会考虑哪些功能?或者系统上可能会做哪些改动?凑单凑满之后,优惠券失效了怎么办?
分布式系统之间的数据一致性的问题如何保证的?订单创建成功,但是购物车删除商品失败了怎么办?
分布式事务的方案都有哪些?SEATA、mq最终一致性、
MQ实现最终一致性,具体是怎么做的?补偿机制怎么做?
Redis都在哪些场景中用?缓存、token,
商品详情页快照的设计可以介绍一下吗?每一个订单都对应一个详情页快照?有什么优化的方案吗?
分布式锁有用过吗?商品详情并发加锁?分布式锁能解决缓存穿透吗??
介绍一下threadlocal?弱引用,threadlocal能解决并发的问题吗?threadlocal会有内存泄露的问题吗?threadlocalMap和普通的hashmap有什么区别?
Hashmap在1.8中除了引入红黑树、还有其他改动吗?为什么头插法要改成尾插法?hashmap的方法的具体实现,比如put?hashcode是怎么取到的?
扩容是怎么实现的?
1.8里面concurrenthashmap有改动吗?
题目解析
登录用户的购物车存储,在redis中Key和value都是什么?除了SKUID为什么还需要存商品的信息?价格、库存改的时候怎么办?为什么要保存而不是直接查一下?
登录用户和未登录用户,购物车限制有区别?存储时间的区别,
如何实现登录用户可以存1000 sku,未登录用户只能存200 sku,如何实现?
有没有可能并发情况导致超过购物车限制?
这里是对于面试者负责的业务的讨论,主要考察一下他对于自己负责的购物车业务是不是足够了解,并且探讨一下他们当前的实现方式是不是合理的。
通过交流,有经验的面试官很容易就能发现其实他现在的购物车的存储方式是存在很大的问题的,他把商品所有信息都保存在缓存中,而这其实是完全没有必要的。其实只需要保存商品的skuid+数量就行了。
而且,对于未登录的用户和已登录用户的存储,其实也完全可有采用不同的存储架构。所以整个项目看上去还有很大的优化空间。
面试中,如果面试官发现候选人的项目中技术方案存在很大的问题的时候,就会开始怀疑项目的真实性以及面试者在项目中的参与度的问题。所以这方面一定要注意。尤其是自己负责的项目的一些细节问题,比如存储方式、表结构设计、分层架构等等。
购物车只存在Redis里面,数据会丢吗?AOF、
AOF能保证不丢吗?混合模式为什么数据就不丢?
如果需要实现一个凑单的功能,你会考虑哪些功能?或者系统上可能会做哪些改动?凑单凑满之后,优惠券失效了怎么办?
这其实是一个场景题,主要考察一个面试者在实现一个新的功能的时候,考虑的是否全面。
可能的思路:
1、用用户的购物车商品的价格、或者已勾选的购物车商品的价格和用户已有的优惠券的门槛进行比较。
2、当触发一定的凑单阈值的时候,根据用户的购物车信息进行凑单推荐
3、凑单商品要经过算法选择,需要是价格不高、并且实用或者和已加购商品有关的
4、在选择优惠券的时候,因为要凑单,所以需要考虑优惠券的失效的问题,要么就选择距离失效时间还有几小时以上的优惠券,或者就先进行优惠券的预锁定。
5、对于因凑单加购并购买成功的商品,做打标,方便后面用户自查,以及数据分析,并且还可以智能的推荐给其他用户。
6、考虑一键凑单功能,让用户提前设置凑单喜好,在用户需要凑单的时候,一键凑单
7、增加凑单商品购物车,可以让用户在看到一些价格不高,也不急用的商品,先放到凑单购物车中,后面在日常下单的时候,优先从凑单购物车选择商品进行拼单凑单。
分布式系统之间的数据一致性的问题如何保证的?订单创建成功,但是购物车删除商品失败了怎么办?
分布式事务的方案都有哪些?SEATA、mq最终一致性、
MQ实现最终一致性,具体是怎么做的?补偿机制怎么做?
这里考察的其实是分布式系统的数据一致性问题,也就是分布式事务的问题。
Redis都在哪些场景中用?缓存、token,
缓存、排行榜、计数器应用、共享Session、分布式锁、社交网络、消息队列、位操作
商品详情页快照的设计可以介绍一下吗?每一个订单都对应一个详情页快照?有什么优化的方案吗?
分布式锁有用过吗?商品详情并发加锁?分布式锁能解决缓存穿透吗??
介绍一下threadlocal?弱引用,threadlocal能解决并发的问题吗?threadlocal会有内存泄露的问题吗?threadlocalMap和普通的hashmap有什么区别?
Hashmap在1.8中除了引入红黑树、还有其他改动吗?为什么头插法要改成尾插法?hashmap的方法的具体实现,比如put?hashcode是怎么取到的?
扩容是怎么实现的?
1.8里面concurrenthashmap有改动吗?
3-5年经验
Q: 3年经验,2本,物流调度系统,mq,mysql?
面试者背景
面试者背景:
21年2本,Java开发,物流运输系统,物流调度,支付,运费计算,模板生成、运单,视频流、
项目的难点是什么?解决啥问题?觉得是难点原因是什么?技术挑战?
可以整体介绍下项目,多少模块,模块间关系是什么??对哪个模块最受。
物理信息处理模块的功能?如何选择最合适的承运商?报价表。异步线程的方案介绍下?信号量的作用?除了信号量还有别的方案吗?信号量的作用是什么?
支付是自己做的,还是对接第三方支付?不同的支付渠道的金额是什么?为啥一个用元、为啥一个用分?对接第三方支付的最终支付结果是如何获取的?回调接口。
如果回调丢了怎么办?多久轮询一次?1-3秒???轮询是如何实现的?扫订单表。有没有支付单表?
没有支付单表,怎么对账?支付明细上记录啥了?订单号、渠道、金额、状态、
有一笔支付单不付了,会不会一直轮询?定时关单如何实现的?假如让你实现,你怎么做?redis?rocketmq延迟队列?为啥选择用rocketmq的延迟队列?这个方案有缺点吗、
美团leaf生成订单号的方案介绍下。号段模式。步长是多少?什么是步长。号段相比雪花算法的好处是什么?号段模式有缺点吗?号段模式生成的单号是自增的吗?
Xxl-job****做什么用了?分片任务是如何实现的?
Mysql和oracle主要的区别是什么?mysql支持哪些存储引擎,innodb和myisam****区别?
啥叫聚簇索引?如果没有主键怎么办?用非聚簇索引的查询过程是怎么样的?
**A****有索引,****where a = xxx and b =xxx 和 where b= xxx and a =xxx **有区别?
A,b,c三个字段的联合索引,按照ab**、ac、bc查询走索引吗?**
Mysql****如何实现分页查询、limit的原理知道吗
Hashmap是如何解决hash冲突的?二次hash**???hashmap的结果,数组****+**链表、红黑树。
Java中的stream了解么?用过哪些方法?map、filter、并行流。一个userList转成map如何实现?看过spring哪里源码?ioc?如何实现bean****的注入?spring中有哪些设计模式?
公司的代码管理工具?开发模式怎么样的?一次需求交付流程。
题目解析
项目的难点是什么?解决啥问题?觉得是难点原因是什么?技术挑战?
可以整体介绍下项目,多少模块,模块间关系是什么??对哪个模块最受。
物理信息处理模块的功能?如何选择最合适的承运商?报价表。异步线程的方案介绍下?信号量的作用?除了信号量还有别的方案吗?信号量的作用是什么?
支付是自己做的,还是对接第三方支付?不同的支付渠道的金额是什么?为啥一个用元、为啥一个用分?对接第三方支付的最终支付结果是如何获取的?回调接口。
如果回调丢了怎么办?多久轮询一次?1-3秒???轮询是如何实现的?扫订单表。有没有支付单表?
没有支付单表,怎么对账?支付明细上记录啥了?订单号、渠道、金额、状态、
有一笔支付单不付了,会不会一直轮询?定时关单如何实现的?假如让你实现,你怎么做?redis?rocketmq延迟队列?为啥选择用rocketmq的延迟队列?这个方案有缺点吗、
美团leaf生成订单号的方案介绍下。号段模式。步长是多少?什么是步长。号段相比雪花算法的好处是什么?号段模式有缺点吗?号段模式生成的单号是自增的吗?
Xxl-job做什么用了?分片任务是如何实现的?
Mysql和oracle主要的区别是什么?mysql支持哪些存储引擎,innodb和myisam****区别?
啥叫聚簇索引?如果没有主键怎么办?用非聚簇索引的查询过程是怎么样的?
**A****有索引,****where a = xxx and b =xxx 和 where b= xxx and a =xxx **有区别?
A,b,c三个字段的联合索引,按照ab**、ac、bc查询走索引吗?**
Mysql如何实现分页查询、limit的原理知道吗
Hashmap是如何解决hash冲突的?二次hash**???hashmap的结果,数组****+**链表、红黑树。
Java中的stream了解么?用过哪些方法?map、filter、并行流。一个userList转成map如何实现?
看过spring哪里源码?ioc?如何实现bean的注入?spring中有哪些设计模式?
公司的代码管理工具?开发模式怎么样的?一次需求交付流程。
这个问题一般是在面试官怀疑候选人是纯包装,一天班都没上过的情况下才会问。
git
分支开发合并到主干
需求评审、设计评审、拉分支、分支开发、本地测试、联调、冒烟、体测、预发布验证、发布评审、发布、线上验证、监控&报警配置、复盘
Q: 3年经验,985本科,电商财务相关业务?
面试者背景
面试者背景:
3年经验,985本,2份工作(0.5+2.5),电商财务系统,财报相关,账户管理,银企直联,介绍下这个项目的主要流程?直接接的银行?大额支付。
银行的对接怎么做的?网关、前置机(盾、证书),如何能高效的对接银行?网关,模板**+**策略,
和银行的接口如何保证安全?单号幂等、异常case,核对。
银行的大额通道下班了怎么办?定时任务查询,对接时有遇到过一些问题么?
定时任务框架,多久调度一次?5分钟,支付单表多少数据?百万级。如果数据量更大的话,这个方案会有什么问题么?这张表是怎么建的索引?状态**+**发起支付时间,为什么要按照银行扫?
如果后面表中数据变大,扫表慢,如何优化?分片扫、归档、分表,
知道分片任务的原理?如何实现多线程同时扫表?按照银行,
项目中什么地方做了限流?哪个接口做了限流?咋实现的限流?redis+aop,有时间窗口吗?没有
如果finally还没来得及执行,机器就挂了。
为啥不用成熟的限流算法?漏桶、令牌桶区别?突发流量、令牌桶可以处理突发流量的原因是啥?
一个接口,什么情况用漏桶做限流、什么情况用令牌桶?
限流的数字是怎么定的?日常QPS?
你们和银行是怎么对账的?定时任务扫银行拉流水???支付单**&银行流水、支付单&**上游,
如果你没有支付单,但是银行有流水呢?银行账单,落库吗?然后如何核对的?
日切时间点,对账不一致怎么办?没有日切问题。如果有这种问题,怎么办呢?
对账这部分,你有什么最佳实践么?多方核对、及时告警、人工处理、
做过实时核对吗?代码中反查?
支付单是你设计的吗?有哪些设计的好,哪些有优化空间。支付单怎么设计的?code,bizno,id,时间,账号,银行,日期,状态(INIT、审批、支付中、支付成功、支付失败),有用状态机么?
支付单表和哪些表有关联关系?银行流水表(银行流水号、账号、银行code、时间、借贷方向、)。为什么不直接冗余到支付单上,要创建一张表?附言、
财务业务项关的做过哪些?关帐系统、发票系统,
**介绍下什么是借贷记账法。**ABS
工作中遇到过哪些线上问题么?消息堆积如何处理?
一个JAVA进程突然挂了,可能什么原因?OOM?OOM了进程一定会挂么?
题目解析
银行的对接怎么做的?网关、前置机(盾、证书),如何能高效的对接银行?
和银行的接口如何保证安全?
定时任务框架,多久调度一次?5分钟,支付单表多少数据?百万级。如果数据量更大的话,这个方案会有什么问题么?这张表是怎么建的索引?状态**+**发起支付时间,为什么要按照银行扫?
如果后面表中数据变大,扫表慢,如何优化?分片扫、归档、分表,
知道分片任务的原理?如何实现多线程同时扫表?按照银行,
项目中什么地方做了限流?哪个接口做了限流?咋实现的限流?redis+aop,有时间窗口吗?没有
如果finally还没来得及执行,机器就挂了。
为啥不用成熟的限流算法?漏桶、令牌桶区别?突发流量、令牌桶可以处理突发流量的原因是啥?
一个接口,什么情况用漏桶做限流、什么情况用令牌桶?
限流的数字是怎么定的?日常QPS?
你们和银行是怎么对账的?定时任务扫银行拉流水???支付单**&银行流水、支付单&**上游,
如果你没有支付单,但是银行有流水呢?银行账单,落库吗?然后如何核对的?
日切时间点,对账不一致怎么办?没有日切问题。如果有这种问题,怎么办呢?
对账这部分,你有什么最佳实践么?多方核对、及时告警、人工处理、
做过实时核对吗?代码中反查?
工作中遇到过哪些线上问题么?消息堆积如何处理?
一个JAVA进程突然挂了,可能什么原因?OOM?OOM了进程一定会挂么?
Q: 3年经验,智慧园区,mysql,Redis?
面试者背景
面试者背景:
3年经验,2家公司(新能源,to B业务),智慧园区-智慧物业-能耗管理
能耗管理业务介绍一下,智能控制、能耗统计、性能优化、数据准确度提升、稳定性,
性能优化、数据准确度、稳定性,分别做了哪些事情?换成adb、业务宽表拆解,
数据库切换如何保证的稳定?代码中多数据源的管理是怎么做的?
为啥adb查询快知道么?
项目中有难度的地方有吗?
Netty相比原生的IO模型有啥优势?封装NIO、粘包/拆包、IO多路复用、reactor模型
为啥Netty不基于AIO做呢。NIO用的是堆内内存还是堆外内存?directByteBuffer为啥用堆外内存?零拷贝,堆外内存溢出如何排查,dump对堆外内存有用吗?netty适合用在什么场景中?im、通信、
Innodb的索引介绍下?B+树。Innodb中的B+树长什么样?只有叶子节点之间有双向指针吗?叶子节点的没条记录之间是如何关联的?
Innodb的索引结构和myisam有区别吗?myisam有聚簇索引吗?
创建索引的时候需要考虑哪些问题?使用频率、查询条件、前缀长度、
什么时候会考虑用联合索引?如果只有一个条件查就没有建联合索引的必要了么?
索引是越多越好么?a,b联合索引,在写SQL的时候where a = xx and b=xx 的顺序有关系吗?
Mysql优化器都会做哪些方面的优化?索引选择。
如果优化器选错了索引怎么办?force index
有哪些情况会导致慢SQL?没走索引、索引失效、数据量大、多表join、
有没有可能走了索引还是很慢?如何确认一个SQL有没有走索引?type、extra,
using index是什么意思?using where一定没走索引吗?
Mysql的主从原理介绍一下。主从延迟如何排查?
Mysql中用like能走索引吗?‘abc%’可以,‘%abc’这种有办法优化吗?
Mysql了解过8.0吗?redis有一批key瞬时过期了,会导致什么问题?怎么解决呢?
redis有一批key瞬时过期了,除了影响数据库,还有其他影响吗?读写会变慢吗?单线程。
Key过期会立即删除吗?redis的big key问题?很大是多大?会有什么问题?如何解决呢?怎么拆?按照日期
分库分表介绍下?单表数据量大导致查询慢,除了考虑分表之外,还有哪些方案?归档(冷热分离)、缓存、
数据量的话,你觉得做分库分表一定是一个好的方案吗?
题目解析
Netty相比原生的IO模型有啥优势?封装NIO、粘包/拆包、IO多路复用、reactor模型
为啥Netty不基于AIO做呢。NIO用的是堆内内存还是堆外内存?directByteBuffer为啥用堆外内存?零拷贝,堆外内存溢出如何排查,dump对堆外内存有用吗?netty适合用在什么场景中?im、通信、
Innodb的索引介绍下?B+树。Innodb中的B+树长什么样?只有叶子节点之间有双向指针吗?叶子节点的没条记录之间是如何关联的?
Innodb的索引结构和myisam有区别吗?myisam有聚簇索引吗?
创建索引的时候需要考虑哪些问题?使用频率、查询条件、前缀长度、
什么时候会考虑用联合索引?如果只有一个条件查就没有建联合索引的必要了么?
索引是越多越好么?
a,b联合索引,在写SQL的时候where a = xx and b=xx 的顺序有关系吗?
Mysql优化器都会做哪些方面的优化?索引选择。
如果优化器选错了索引怎么办?force index
有哪些情况会导致慢SQL?没走索引、索引失效、数据量大、多表join、
有没有可能走了索引还是很慢?
如何确认一个SQL有没有走索引?type、extra,
using index是什么意思?using where一定没走索引吗?
Mysql的主从原理介绍一下。主从延迟如何排查?
Mysql中用like能走索引吗?‘abc%’可以,‘%abc’这种有办法优化吗?
Mysql了解过8.0吗?
redis有一批key瞬时过期了,会导致什么问题?怎么解决呢?
redis有一批key瞬时过期了,除了影响数据库,还有其他影响吗?读写会变慢吗?单线程。
Key过期会立即删除吗?
redis的big key问题?很大是多大?会有什么问题?如何解决呢?怎么拆?按照日期
分库分表介绍下?单表数据量大导致查询慢,除了考虑分表之外,还有哪些方案?归档(冷热分离)、缓存、
数据量的话,你觉得做分库分表一定是一个好的方案吗?
Q: 4年经验,上海某跨境电商,千万级大表经验?
面试者背景
面试者背景:
21年毕业,上海,跨境电商,多平台对接,核心功能从0到1实现,分布式经验,分布式限流、千万级大表分表经验,多级缓存。
业务介绍下。发布商品,同步,订单同步,状态变更。
第三方接口对接的难点是什么?调第三方接口超时如何处理?重试是如何实现的?spring,
你的分布式限流怎么做的?redis+guava rate limiter+aop,guava不是单机限流么?
讲一下一次请求进来,你的限流是怎么运转的?令牌桶、map?
介绍下你了解的限流算法?固定窗口、滑动窗口、令牌桶、漏桶?固定窗口vs滑动窗口?
那种算法适合应对突发流量?为什么?令牌桶允许积攒令牌。
什么时候用分布式限流,什么时候用单机限流。做了分布式限流后,还有必要做单机限流吗?为啥?
分库分表,只做了分表,分了10张表,一共多少数据?3000万。怎么定的分10张表。
分库分表是针对商品表吗?3000万商品。分表字段是哪个?店铺id,一个平台一张表,
同一个平台的不同店铺分到不同的表怎么办?用了shardingjdbc?
Shardingjdbc****除了分表路由,还有其他功能么?shardingjdbc支持哪几种分表策略?
商品是个单独微服务吗?如何实现的商品操作走分库分表,操作店铺不走分库分表?多数据源
做分库分表后,数据迁移是你做的吗?
你觉得做分库分表最大的难点是什么?选型,分表键、分布式id生成,动态数据源切换。
商品表有扫表任务吗**?分库分表后如何扫表?带店铺id****?**
分布式id用的什么方案?号段模式,维护号段表。
为啥不直接用shardingjdbc支持的雪花算法?workerid不好搞。时钟回拨问题。
介绍下工作中遇到的慢SQL情况?没加索引、大表join、json查询、in查询、
**如何定位到没加索引的问题的?执行计划看啥?type(rage、ref)、key、length、**extra
Extra=using index condition****是什么情况?索引下推是什么?using filesort是什么情况?
其他线上问题排查过吗?oom问题、消息堆积。
如果现在线上出现了oom,你会如何排查?
Chat项目和电商有啥区别么?为啥用netty**?netty的粘包,拆包。**
项目中用过设计模式么?哪种?工厂**+策略+模板方法。介绍下场景和背景。工厂的map****是如何初始化的?**
项目中为啥用多级缓存?商品-物流方式、redis宕机、只用本地缓存不行吗?
题目解析
第三方接口对接的难点是什么?调第三方接口超时如何处理?重试是如何实现的?spring,
你的分布式限流怎么做的?redis+guava rate limiter+aop,guava不是单机限流么?
讲一下一次请求进来,你的限流是怎么运转的?令牌桶、map?
介绍下你了解的限流算法?固定窗口、滑动窗口、令牌桶、漏桶?固定窗口vs滑动窗口?
那种算法适合应对突发流量?为什么?令牌桶允许积攒令牌。
什么时候用分布式限流,什么时候用单机限流。做了分布式限流后,还有必要做单机限流吗?为啥?
分库分表,只做了分表,分了10张表,一共多少数据?3000万。怎么定的分10张表。
分库分表是针对商品表吗?3000万商品。分表字段是哪个?店铺id,一个平台一张表,
同一个平台的不同店铺分到不同的表怎么办?用了shardingjdbc?
Shardingjdbc****除了分表路由,还有其他功能么?shardingjdbc支持哪几种分表策略?
商品是个单独微服务吗?如何实现的商品操作走分库分表,操作店铺不走分库分表?多数据源
做分库分表后,数据迁移是你做的吗?
你觉得做分库分表最大的难点是什么?选型,分表键、分布式id生成,动态数据源切换。
商品表有扫表任务吗?分库分表后如何扫表?带店铺id?
分布式id用的什么方案?号段模式,维护号段表。
为啥不直接用shardingjdbc支持的雪花算法?workerid不好搞。时钟回拨问题。
介绍下工作中遇到的慢SQL情况?没加索引、大表join、json查询、in查询、
**如何定位到没加索引的问题的?执行计划看啥?type(rage、ref)、key、length、**extra
Extra=using index condition是什么情况?索引下推是什么?using filesort是什么情况?
其他线上问题排查过吗?oom问题、消息堆积。
如果现在线上出现了oom,你会如何排查?
项目中为啥用多级缓存?商品-物流方式、redis宕机、只用本地缓存不行吗?
Q: 工作3年,分布式项目,实时数据分析功能?
面试者背景
普本,3年经验,IOT项目,微服务+大数据,SSM,redis,kafka,go,flink,实时分析,数据过滤,自定义规则,责任链模式
面试过程
面试者背景:
责任链模式的好处是什么?都哪些场景可以用责任链?
开通的分布式一致性怎么保障的?最大努力通知。如果超时的情况如何兼容?
重试是如何实现的?sleep?这个过程应用重启了怎么办?
除了Sleep还有其他方案吗?回滚操作调失败了怎么办?下游系统失败的原因可能是什么?失败人工介入?
最大努力通知为啥不用MQ?遇到什么问题会考虑用MQ?作用?异步、削峰、解耦。
MQ是如何实现的削峰填谷?消息投递数量会不会超过消费者的消费能力,pull,push?
Pull对MQ造成压力怎么办?拉的很慢消息堆积了怎么办?堆积之后如何解决?增加消费者、
Kafka的重平衡问题介绍下?重平衡的过程是怎么样?重平衡过程的问题有哪些?STW,重复消费。
如何避免重复消费对业务造成影响?
Kafka的消费者可能有哪些状态?kafka的高水位是什么?LEO
一句话总结HW的作用?
性能优化做过吗?介绍一下,arthas ,优化流程,CMS优化,
Mysql隔离级别默认是哪个?为啥是RR?RR解决了幻读吗?完全解决了吗?
RR的缺点是什么?RR相比RC多了什么?为啥很多大公司要把RR改成RC?
Mysql的行级锁到底锁的是什么东西?
Redis常用数据结构有哪些?hash、string、set、zset、list、geo、
Reids渐进式rehash过程是怎么样的?为啥要这么干?每次渐进rehash的时候怎么选择rehash哪些数据呢?
为什么redis有一批key过期,为啥其他的key读写效率降低?单线程
如何避免这种问题?被动删除、随机过期时间,
Redis的集群模式介绍下,主从、哨兵、分片。怎么避免脑裂的问题?能彻底避免吗?
题目解析
责任链模式的好处是什么?都哪些场景可以用责任链?
开通的分布式一致性怎么保障的?最大努力通知。如果超时的情况如何兼容?
重试是如何实现的?sleep?这个过程应用重启了怎么办?
除了Sleep还有其他方案吗?回滚操作调失败了怎么办?下游系统失败的原因可能是什么?失败人工介入?
最大努力通知为啥不用MQ?遇到什么问题会考虑用MQ?作用?异步、削峰、解耦。
这里面候选人提到自己用了最大努力通知,但是实现方式竟然是自己在代码中sleep,然后自己重试,这个方案肯定是不过关的。因为sleep这种一旦应用重启之后,数据就都丢失了,任务就没人继续调度重试了。
所以好一点的方案肯定是用MQ,依赖他的可靠性来实现。
MQ是如何实现的削峰填谷?消息投递数量会不会超过消费者的消费能力,pull,push?
Pull对MQ造成压力怎么办?拉的很慢消息堆积了怎么办?堆积之后如何解决?增加消费者、
Kafka的重平衡问题介绍下?重平衡的过程是怎么样?重平衡过程的问题有哪些?STW,重复消费。
如何避免重复消费对业务造成影响?
Kafka的消费者可能有哪些状态?kafka的高水位是什么?LEO
一句话总结HW的作用?
性能优化做过吗?介绍一下,arthas ,优化流程,CMS优化,
Mysql隔离级别默认是哪个?为啥是RR?RR解决了幻读吗?完全解决了吗?
RR的缺点是什么?RR相比RC多了什么?为啥很多大公司要把RR改成RC?
Mysql的行级锁到底锁的是什么东西?
Redis常用数据结构有哪些?hash、string、set、zset、list、geo、
Reids渐进式rehash过程是怎么样的?为啥要这么干?每次渐进rehash的时候怎么选择rehash哪些数据呢?
为什么redis有一批key过期,为啥其他的key读写效率降低?单线程
如何避免这种问题?被动删除、随机过期时间,
Redis的集群模式介绍下,主从、哨兵、分片。怎么避免脑裂的问题?能彻底避免吗?
Q: 工作3年,城市停车项目,保险理赔(财&人身)&电服业务?
面试者背景
面试者背景:
20年毕业,软工本科,城市停车项目,保险理赔(财&人身)&电服业务,
介绍下理赔业务流程,客户报案(立案)、查勘、定损、理算、核赔、账单,收付
理赔的时候还没投保遇到过吗?如何处理?暂存是如何做的?报案记录。
整个理赔环节有用流程引擎之类的吗?工作流等?状态(码表)、状态机?
用户敏感信息的脱敏、加密是如何做的?日志打印有做脱敏吗?脱敏工具类是自研的吗?如果要做怎么做?自定义注解、脱敏规则。
数据加密后能做模糊查询吗?分词、内存
设计模式用过吗?介绍下。策略**+**模板,装饰器,
理赔这部分是一个单独应用还是多个微服务?服务间调用用Dubbo?feign?
Dubbo和feign有啥区别?rpc vs http,为啥rpc快?他们的负载均衡是如何做的?ribbon,ribbon是客户端还是服务端的。后面ribbon****不支持咋办?限流做过吗?
当给第三方提供接口调用,需要注意哪些事情?限流(zset限流)、鉴权、加解密、合法性、幂等。
加解密是怎么做的?参数转换为啥用groovy?好处是什么?如何保证接口调用拿到的数据是完整的?中间有没有人篡改过?加密**&解密、加签&**验签做的事情一样吗?
Zset实现滑动窗口是如何做的?zcard、zremrangebyscore?负无穷是如何表示的?阈值是怎么配置的?配置中心吗?存在redis****中的阈值会不会被删掉?删掉再查库,阈值为啥不做本地缓存?
设计redis的key和value上,有哪些原则?命名规则、大小限制、避免大key、
大key会有啥问题呢?那如果有大key了咋办呢?拆分。拆分后查询怎么办?用cluster分片可以吗?
集群模式的原理?相比其他部署方式好处是什么?性能、
SQL****调优做过吗,介绍下。索引、长事务。长事务是如何优化的?事务是如何实现的?声明式事务、
事务失效遇到过吗?没走代理、异常处理、多线程事务能生效吗?为啥。
如何让子线程拿到主线程的数据?用threadlocal的时候有啥需要注意的嘛?remove,为啥?
Zk****创建节点如何保证节点唯一性?zk的使用场景?注册中心、分布式锁?
zk是ap是cp的?为啥CAP中AC不能同时满足?哪些系统是AP的?nacos注册中心?redis为啥是AP的?如果是同步复制就AP****了吗?
如果让你实现一个消息队列,你会考虑哪些问题?基本架构、推拉、持久化、ack策略。如何避免消息重投?
题目解析
用户敏感信息的脱敏、加密是如何做的?日志打印有做脱敏吗?脱敏工具类是自研的吗?如果要做怎么做?自定义注解、脱敏规则。
数据加密后能做模糊查询吗?分词、内存
设计模式用过吗?介绍下。策略+模板,装饰器,
理赔这部分是一个单独应用还是多个微服务?服务间调用用Dubbo?feign?
Dubbo和feign有啥区别?rpc vs http,为啥rpc快?他们的负载均衡是如何做的?ribbon,ribbon是客户端还是服务端的。后面ribbon不支持咋办?限流做过吗?
当给第三方提供接口调用,需要注意哪些事情?限流(zset限流)、鉴权、加解密、合法性、幂等。
加解密是怎么做的?参数转换为啥用groovy?好处是什么?如何保证接口调用拿到的数据是完整的?中间有没有人篡改过?加密&解密、加签&验签做的事情一样吗?
Zset实现滑动窗口是如何做的?zcard、zremrangebyscore?负无穷是如何表示的?阈值是怎么配置的?配置中心吗?存在redis中的阈值会不会被删掉?删掉再查库,阈值为啥不做本地缓存?
设计redis的key和value上,有哪些原则?命名规则、大小限制、避免大key、
大key会有啥问题呢?那如果有大key了咋办呢?拆分。拆分后查询怎么办?用cluster分片可以吗?
集群模式的原理?相比其他部署方式好处是什么?性能、
SQL****调优做过吗,介绍下。索引、长事务。长事务是如何优化的?事务是如何实现的?声明式事务、
事务失效遇到过吗?没走代理、异常处理、多线程事务能生效吗?为啥。
如何让子线程拿到主线程的数据?用threadlocal的时候有啥需要注意的嘛?remove,为啥?
Zk****创建节点如何保证节点唯一性?zk的使用场景?注册中心、分布式锁?
zk是ap是cp的?为啥CAP中AC不能同时满足?哪些系统是AP的?nacos注册中心?redis为啥是AP的?如果是同步复制就AP了吗?
如果让你实现一个消息队列,你会考虑哪些问题?基本架构、推拉、持久化、ack策略。如何避免消息重投?
Q: 工作4年,供应链相关,分库分表、分布式锁?
面试者背景
面试者背景:
20****年毕业,4年,供应链相关、分布式、微服务、
介绍下一个核心的业务流程,收发货,核心单据数据量有多少?流水表、5000万。
有做分库吗?分表怎么分的?shardingjdbc、发货子单号分表、64张表,
**发货单号:业务类型、时间戳、自增****ID-> hash -> **取模。列表查询怎么做?
Shardingjdbc**,如果没带分表字段还能查询吗?算法是如何实现的(配置还是实现了算法类)?**
如何实现去指定单表查询?hint知道吗?
主键是如何实现的?雪花算法。为啥不直接用redis的自增id?生成的雪花算法多少位?一定19位吗?什么情况下可能会重复?nanoid用过吗?
为啥只做了分表,没做分库?原因是什么?为啥没考虑用归档解决数据量大的问题?
后期如果64张表不够了,怎么办?
如何设计一个分库分表方案?选分表键、选中间件,同步方案、切流方案。。。除了insert,还有update怎么办?
项目中有哪些难点?springboot升级,兼容问题。
遇到过哪些线上问题?oom,excel导出,导出接口限流,poi->easyexcel。。dump是如何获取的?
导出接口限流是怎么做的?redisson,ratelimiter。
OOM排查流程、、除了内存泄漏还有其他原因吗?Java发生OOM后会立刻挂掉吗?先发生OOM还是先GC**?**
Nacos****用来做什么?应用如何感知到配置变化的?长轮询??为啥不建长连接?
Nacos是AP还是CP**?配置中心是哪种?为啥配置中心C比A更重要呢?**
分布式锁的粒度和事务粒度如何控制?平时是如何加事务的?编程式事务。
分布式如何做链路追踪、雪花算法,
分布式锁,乐观锁锁和悲观锁哪个适合高并发?乐观锁无锁吗?
题目解析
有做分库吗?分表怎么分的?shardingjdbc、发货子单号分表、64张表,
发货单号:业务类型、时间戳、自增ID-> hash -> 取模。列表查询怎么做?
为啥只做了分表,没做分库?原因是什么?为啥没考虑用归档解决数据量大的问题?
Shardingjdbc,如果没带分表字段还能查询吗?算法是如何实现的(配置还是实现了算法类)?
如何实现去指定单表查询?hint知道吗?
主键是如何实现的?雪花算法。为啥不直接用redis的自增id?生成的雪花算法多少位?一定19位吗?什么情况下可能会重复?nanoid用过吗?
后期如果64张表不够了,怎么办?
如何设计一个分库分表方案?选分表键、选中间件,同步方案、切流方案。。。除了insert,还有update怎么办?
遇到过哪些线上问题?oom,excel导出,导出接口限流,poi->easyexcel。。dump是如何获取的?
导出接口限流是怎么做的?redisson,ratelimiter。
OOM排查流程、、除了内存泄漏还有其他原因吗?Java发生OOM后会立刻挂掉吗?先发生OOM还是先GC?
Nacos****用来做什么?应用如何感知到配置变化的?长轮询??为啥不建长连接?
Nacos是AP还是CP?配置中心是哪种?为啥配置中心C比A更重要呢?
分布式锁的粒度和事务粒度如何控制?平时是如何加事务的?编程式事务。
分布式如何做链路追踪、雪花算法,
分布式锁,乐观锁锁和悲观锁哪个适合高并发?乐观锁无锁吗?
Q: 工作4年,自研流程引擎项目?
面试者背景
工作4年,springboot技术栈,工作在一家还不错的某个领域的头部公司,做过几个项目,最近一个项目在做一个自研的流程引擎。
面试过程
面试者背景:
流程引擎是完全自研,介绍一下这个项目。功能节点(异步)、
你们自研的流程引擎遵守了BPMN规范吗?流程节点支持重试吗?流程的重试是如何实现的?
整个项目中最大的技术难点是什么?数据库实现了发布/订阅的功能,有其他的方案吗?不想依赖MQ的原因是什么?redis可以实现发布/订阅的功能吗?
抗10W的实例执行做了哪些技术手段?
第三方想用你的流程引擎,是怎么用的?节点支持哪些协议?
调DUBBO的话是通过泛化调用实现的吗?泛化调用的原理是什么?GenericService和普通的调用方式,区别是什么?
DUBBO的一次服务调用过程是怎样的?代理、序列化、
DUBBO的负载均衡是如何实现的?服务端挂了怎么避免被调用到?心跳
服务端在服务执行过程中,重启了,怎么办?hook(钩子)
工作中有排查过哪些线上问题吗?OOM 内存泄漏、CPU飙高
应用中中什么情况会导致CPU飙高?CPU的哪个指标飙高了?
CPU利用率和负载有关系吗?LOAD 1 ,LOAD 5
业务中做了分库分库的场景介绍一下。2000w,为什么2000w要分表?如何分表的?
分库分表后回带来什么问题?分表查询、join问题、
订单库做分库分表,该选择哪个字段做分表字段(买家ID还是卖家ID?)?基因法。
选择分表字段的时候会考虑哪些因素?查询条件。
分库和分表有什么区别?分区是什么?
用过哪些设计模式?责任链、观察者、策略、享元
题目解析
流程引擎是完全自研,介绍一下这个项目。功能节点(异步)、
你们自研的流程引擎遵守了BPMN规范吗?流程节点支持重试吗?流程的重试是如何实现的?
这个地方主要是考察这个流程引擎的背景,这种东西一般面试官会比较重点考察自研而不是直接使用开源产品的必要性。
关于这一点,回答的时候需要注意,首先要能讲清楚自研的背景以及原因,并且还需要能够对开源的产品有所了解就最好了,能知道自己做的产品和开源的有什么区别,好处、坏处是什么,有什么需要改进的地方等等。
整个项目中最大的技术难点是什么?数据库实现了发布/订阅的功能,有其他的方案吗?不想依赖MQ的原因是什么?redis可以实现发布/订阅的功能吗?
这个地方是听上去很明显的方案不合理,使用数据库实现发布/订阅模式,这种方案一定有改进的空间,这对于候选人的要求就是:你要知道你的方案不好、并且你要知道好的方案是什么、否则,没戏。
抗10W的实例执行做了哪些技术手段?
这个是重点!而且是面试中很容易出彩的点。不管你工作中有没有遇到,或者你实际上有没有做过哪些技术手段,但是面试的时候都可以答。
调DUBBO的话是通过泛化调用实现的吗?泛化调用的原理是什么?GenericService和普通的调用方式,区别是什么?
DUBBO的一次服务调用过程是怎样的?代理、序列化、
DUBBO的负载均衡是如何实现的?服务端挂了怎么避免被调用到?心跳
服务端在服务执行过程中,重启了,怎么办?hook(钩子)
线上问题排查,是一个面试官很喜欢问的东西,所有人都需要准备几个,可以是OOM、FullGC、Load飙高,接口性能慢,慢SQL等等。重点是问题发生的过程,排查的思路,解决的方案,以及得到的结果。
工作中有排查过哪些线上问题吗?OOM 内存泄漏、CPU飙高
应用中中什么情况会导致CPU飙高?CPU的哪个指标飙高了?
CPU利用率和负载有关系吗?LOAD 1 ,LOAD 5
业务中做了分库分库的场景介绍一下。2000w,为什么2000w要分表?如何分表的?
分库分表后回带来什么问题?分表查询、join问题、
订单库做分库分表,该选择哪个字段做分表字段(买家ID还是卖家ID?)?基因法。
选择分表字段的时候会考虑哪些因素?查询条件。
分库和分表有什么区别?分区是什么?
用过哪些设计模式?责任链、观察者、策略、享元
策略、工厂、责任链、模板方法以及门面,这几种是一定能在工作中用到的设计模式,需要掌握!
5-8年经验
Q: 2本,9年经验(6-7年服务端),停车管理系统?
面试者背景
面试者背景:
2本,9年经验(6-7年服务端),停车管理系统
**停车管理系统干了多久?1年,管理****700+**停车场。系统是分布式的吗?
介绍下架构情况?接入层、网关、订单、支付、结算。
项目的难点是什么?数据一致性**(C),性能要求(A),如何保证CA****呢?最终一致性**
当前系统的性能要求是什么样的?入场性能要求更高,前置校验并发执行,策略模式、部分缓存,
高峰期QPS 400多,RT 1.5s,
当前支付方式都支持哪些?wx,alipay。如果要新增一种支付方式(比如ETC),需要哪些代码改动?设计方案、设计模式
如果极端的并发情况,比如ETC和手机支付同时发起,如何处理?订单主表、订单明细表,
结算系统介绍下?不需要分账。对账是谁和谁对?
如果一次付款包含积分和现金,结算这里是如何处理的?
涉及到营销打折么?没有营销账户出资,线下结算。
最终一致性都是通过MQ?有用过其他的一致性方案吗?
如何保证消息不丢?本地消息表、异步刷盘、
如果要做压测,怎么做?压测原因、压测过程,确定压测范围、准备压测数据**&脚本(预发、线上)****、执行压测,**
你最后一次压测的数据:QPS(600)、RT(tp99 1s)、持续时长、失败率、以及其他的系统指标。
**压测600没问题,上线后300就扛不住了,可能是什么原因?**冷启动(缓存预热、JIT优化、MQ堆积)、定时任务、全链路压测、外部系统影响、慢SQL(数据倾斜、数据堆积)、压测环境、其他接口QPS、其他基础设施?
对账是怎么做的?定时任务,拉支付订单数据,对比第三方渠道数据,
一天200万,靠定时任务对账?对比齐怎么处理?多次核对
分库分表是按照什么分的?时间+省份、全局ID、
题目解析
面试者背景:
项目的难点是什么?数据一致性**(C),性能要求(A),如何保证CA****呢?最终一致性**
当前系统的性能要求是什么样的?入场性能要求更高,前置校验并发执行,策略模式、部分缓存,
面试者背景:
如果极端的并发情况,比如ETC和手机支付同时发起,如何处理?订单主表、订单明细表,
面试者背景:
结算系统介绍下?不需要分账。对账是谁和谁对?
如果一次付款包含积分和现金,结算这里是如何处理的?
涉及到营销打折么?没有营销账户出资,线下结算。
面试者背景:
如何保证消息不丢?本地消息表、异步刷盘、
面试者背景:
如果要做压测,怎么做?压测原因、压测过程,确定压测范围、准备压测数据**&脚本(预发、线上)****、执行压测,**
你最后一次压测的数据:QPS(600)、RT(tp99 1s)、持续时长、失败率、以及其他的系统指标。
**压测600没问题,上线后300就扛不住了,可能是什么原因?**冷启动(缓存预热、JIT优化、MQ堆积)、定时任务、全链路压测、外部系统影响、慢SQL(数据倾斜、数据堆积)、压测环境、其他接口QPS、其他基础设施?
面试者背景:
对账是怎么做的?定时任务,拉支付订单数据,对比第三方渠道数据,
一天200万,靠定时任务对账?对比齐怎么处理?多次核对
面试者背景:
分库分表是按照什么分的?时间+省份、全局ID、
Q: 5年经验,流计算引擎、配置中心、流程编排、RPA?
面试者背景
5年经验,做过:低代码、组件、k8s开发,流计算引擎、配置中心、流程编排、RPA
面试过程
面试者背景:
为什么不用MQ,而是用Redis造轮子?消息丢的问题怎么解决?
Redis的集群模式是怎么样的?挂了就挂了?你了解哪些集群模式?
Redis的Stream底层实现原理与数据结构。唯一消息ID和内容,消费者。
Redis的Stream的消息怎么避免重复消费?XACK、XPENDING、XREADGROUP
Redis的Stream有重平衡的机制吗?
为啥要造轮子搞个配置中心?AP的还是CP的?
配置数据发生变化,客户端是如何感知到的?长轮询。
除了长轮询还有其他的方案吗?区别是啥?实时性、socket.io是长连接吗?
有高并发经验吗?高可用有保障吗?做了哪些事情保证高可用?集群架构、
SLA标准是什么?
流量突增100倍,如何解决?流量来源分析、限流(令牌桶)、
介绍下令牌桶的原理,为啥令牌桶可以应对突发流量?漏桶如果出现突发流量会怎么样
压测怎么做的?要做一次压测的步骤怎么样的?
压测怎么来探测系统水位?
题目解析
为什么不用MQ,而是用Redis造轮子?消息丢的问题怎么解决?
造轮子,一定要能说清楚:
1、为什么造轮子
2、已有的轮子为啥不能用
3、你造的轮子有什么好处
4、你造的轮子缺点是什么
5、已有的轮子中的XX特性让你实现你怎么做
Redis的集群模式是怎么样的?挂了就挂了?你了解哪些集群模式?
Redis的Stream底层实现原理与数据结构。唯一消息ID和内容,消费者。
Redis的Stream的消息怎么避免重复消费?XACK、XPENDING、XREADGROUP
Redis的Stream有重平衡的机制吗?
为啥要造轮子搞个配置中心?AP的还是CP的?
配置数据发生变化,客户端是如何感知到的?长轮询。
除了长轮询还有其他的方案吗?区别是啥?实时性、socket.io是长连接吗?
造了个配置中心的轮子,那么就需要能讲清楚,你的配置中心是怎么做的,一些方案是如何做的选择。
有高并发经验吗?高可用有保障吗?做了哪些事情保证高可用?集群架构、
流量突增100倍,如何解决?
介绍下令牌桶的原理,为啥令牌桶可以应对突发流量?漏桶如果出现突发流量会怎么样
压测怎么做的?要做一次压测的步骤怎么样的?
压测怎么来探测系统水位?
Q: 6年经验,电商平台,分布式事务,分布式?
面试者背景
面试者背景:
19年毕业,Java开发,国企,做电商平台
电商平台做了多久?2年,系统多大体量,日活5-6万。你负责了哪些业务?订单、库存、交易、
**介绍下这个系统的架构?分布式架构,springcloud Alibaba,nacos、dubbo、**sentinel
分了哪些微服务?支付、订单、交易、用户,营销有吗?么有营销???商品模块有吗?
交易模块和订单模块的区别是啥?订单**-订单生命周期管理,交易-**聚合模块。
一次下单流程都需要哪些模块的配合?交易、库存、订单。
商品上的库存是怎么设计的?可售库存数、冻结库存、库存总量。
冻结库存是干嘛的?TCC的try做冻结。订单、库存等模块在TCC的不同步骤中分别做了啥?
TRY**:库存做冻结、订单创建(用户看不到),Confirm:库存冻结转化成扣减,订单确认。**
Cancel**:库存解冻、订单废弃。Confirm之后的cancel呢?事务表、**
先操作库存还是订单?如何解决的TCC的空回滚和悬挂问题?怎么知道有空回滚过?
TCC过程中,还没来得及confirm****服务挂了怎么办?
自己实现的TCC吗,为啥不用seata中的?
TCC和XA相比区别,优缺点?效率。为啥TCC****是最终一致性?中间状态、
除了TCC还用过其他的分布式事务方案吗?事务消息、RocketMQ,为啥不用本地消息表。
项目中做了分库分表,订单表多大数据量?为啥不用分布式数据库?
分库分表后主键ID是怎么生成的?介绍下雪花算法。雪花算法什么时候会重复?时钟回拨、如果没有时钟回拨还可能重复么?如何解决时钟回拨的问题?抛异常、等待?切换机器码、提前准备一批id?
代码中雪花算法是用框架做的吗?hutool,机器码是怎么设置的?redis自增。Hutool的workerid不能超过32,如果超过了32台机器怎么办?
分库分表后,如何做扫表?没有分表字段,怎么查询?shardingjdbc如果没有分表键,怎么查的?
ShardingJdbc是你选的吗。知道其他的框架么?为啥不用mycat**,你在做技术选型的时候怎么考虑的**
订单号的生成逻辑是怎么样的?基因法,你怎么知道订单能分到哪张表?
分表算法怎么实现的?uid hash 取余,为啥要先hash再取余?
项目中解决过哪些线上问题?CPU高问题,arthas、获取数据库链接?连接失效?keep-alive,防火墙。
如果让你设计一个点赞系统,你会考虑哪些问题,难点可能是什么。你的方案是怎样的?并发、多少并发算高?如果是直播间点赞会有其他方案吗?
Free看到机器上内存还有很多,但是有频繁的fullgc,可能的原因是什么?JVM分配的内存少、
题目解析
**介绍下这个系统的架构?分布式架构,springcloud Alibaba,nacos、dubbo、**sentinel
分了哪些微服务?支付、订单、交易、用户,营销有吗?么有营销???商品模块有吗?
交易模块和订单模块的区别是啥?订单**-订单生命周期管理,交易-**聚合模块。
一次下单流程都需要哪些模块的配合?交易、库存、订单。
商品上的库存是怎么设计的?可售库存数、冻结库存、库存总量。
冻结库存是干嘛的?TCC的try做冻结。订单、库存等模块在TCC的不同步骤中分别做了啥?
TRY**:库存做冻结、订单创建(用户看不到),Confirm:库存冻结转化成扣减,订单确认。**
Cancel**:库存解冻、订单废弃。Confirm之后的cancel呢?事务表、**
先操作库存还是订单?如何解决的TCC的空回滚和悬挂问题?怎么知道有空回滚过?
TCC过程中,还没来得及confirm****服务挂了怎么办?
自己实现的TCC吗,为啥不用seata中的?
TCC和XA相比区别,优缺点?效率。为啥TCC****是最终一致性?中间状态、
除了TCC还用过其他的分布式事务方案吗?事务消息、RocketMQ,为啥不用本地消息表。
项目中做了分库分表,订单表多大数据量?为啥不用分布式数据库?
分库分表后主键ID是怎么生成的?介绍下雪花算法。雪花算法什么时候会重复?时钟回拨、如果没有时钟回拨还可能重复么?如何解决时钟回拨的问题?抛异常、等待?切换机器码、提前准备一批id?
代码中雪花算法是用框架做的吗?hutool,机器码是怎么设置的?redis自增。Hutool的workerid不能超过32,如果超过了32台机器怎么办?
分库分表后,如何做扫表?没有分表字段,怎么查询?shardingjdbc如果没有分表键,怎么查的?
ShardingJdbc是你选的吗。知道其他的框架么?为啥不用mycat**,你在做技术选型的时候怎么考虑的**
订单号的生成逻辑是怎么样的?基因法,你怎么知道订单能分到哪张表?
分表算法怎么实现的?uid hash 取余,为啥要先hash再取余?
项目中解决过哪些线上问题?CPU高问题,arthas、获取数据库链接?连接失效?keep-alive,防火墙。
如果让你设计一个点赞系统,你会考虑哪些问题,难点可能是什么。你的方案是怎样的?并发、多少并发算高?如果是直播间点赞会有其他方案吗?
Free看到机器上内存还有很多,但是有频繁的fullgc,可能的原因是什么?JVM分配的内存少、
Q: 6年经验,资产后台,汽车金融(贷款)SaaS?
面试者背景
面试者背景:
6年经验,资产后台,汽车金融(贷款)SaaS,对接第三方,
SaaS****的多租户是咋实现的?租户id
负责了什么功能?销售中心、订单,工作流,流程编排,业务模块拆分,
流程编排优缺点介绍下**,事件驱动、基于activiti封装,流程编排好处是啥?可扩展性,优缺点吗****?**
**节点如果业务流程有差异怎么办?**有了解过其他方式实现差异化问题的解决吗?插件化、扩展点?
流程执行到一半,恢复执行怎么实现的?
**项目难点?**严格控制状态流程如何实现的?如何避免状态覆盖?乐观锁、
分布式事务Seata AT模式,AT出现脏读的原因是什么?AT的实现原理是什么?
TCC和AT****有啥区别?代码侵入性、空回滚、事务悬挂,依赖事务,
Redis扣库存,MySQL订单创建,如何拆成TCC**?**
空回滚**&悬挂问题,怎么解决。状态、业务id****、时间、**
资产平台多少数据量要做分库分表?70亿,如何做的分表?会员id,分了多少表,128表,
分表后的全局ID是怎么做的?雪花算法、Redis自增id,为啥要全局分布式ID**,每张表自增不行吗?**
为啥分表128,而不选择100呢?为啥用2的幂?二次分表、
数据平滑迁移的方案介绍下?迁移字段,读旧写旧**->读旧双写(旁路验证)->存量迁移->读新双写(旁路验证)->灰度切流->****读新写新,切流开关如何实现的?nacos配置的。**数据迁移过程中有遇到啥问题么?
数据库中加字段会不会锁表?online ddl,
数据量多会遇到啥问题?限流、多级缓存、
**发券每天增量有多少?券的核销率有多少?写接口幂等是怎么做的?会员****id+**券号,
**update的顺序问题如何保证? **
项目中的SQL调优介绍一下,
题目解析
SaaS的多租户是咋实现的?租户id
流程编排优缺点介绍下**,事件驱动、基于activiti封装,流程编排好处是啥?可扩展性,优缺点吗****?**
**节点如果业务流程有差异怎么办?**有了解过其他方式实现差异化问题的解决吗?插件化、扩展点?
流程执行到一半,恢复执行怎么实现的?
项目难点?严格控制状态流程如何实现的?如何避免状态覆盖?乐观锁、
分布式事务Seata AT模式,AT出现脏读的原因是什么?AT的实现原理是什么?
TCC和AT有啥区别?代码侵入性、空回滚、事务悬挂,依赖事务,
分表后的全局ID是怎么做的?雪花算法、Redis自增id,为啥要全局分布式ID**,每张表自增不行吗?**
为啥分表128,而不选择100呢?为啥用2的幂?二次分表、
数据平滑迁移的方案介绍下?迁移字段,读旧写旧->读旧双写(旁路验证)->存量迁移->读新双写(旁路验证)->灰度切流->读新写新,切流开关如何实现的?nacos配置的。数据迁移过程中有遇到啥问题么?
数据库中加字段会不会锁表?online ddl,
发券每天增量有多少?券的核销率有多少?写接口幂等是怎么做的?会员id+券号,
项目中的SQL调优介绍一下,
Q: 7年后端技术专家,清结算,资损防控,架构设计?
面试者背景
Java7年,技术专家,供应链财务,开发+设计+管理,应收应付\清结算\dubbo,架构设计,资损防控有经验心得。
面试过程
面试者背景:
资损防控的平台的介绍。如何实现的?事前事中事后
事前:反查上游系统,做校验。(事务发消息,上游回滚了?)
事后:大数据平台,离线数据核对
事中:唯一键做幂等,分布式锁(脑裂?),乐观锁,(上游的后门,bops入口?)
你的系统做了很多反查的逻辑,帮上游系统做防错,这种高耦合的方案真的好吗?
校验规则的配置,脚本校验。
有考虑过遇到什么样的问题,或者业务上有什么变化后会考虑新的方案吗(准实时同步、准实时核对),
分布式锁会不会导致并发度降低?B端系统没有高并发?
分布式系统的数据一致性如何保证的?TCC最终一致性,还有其他的方案吗?
为什么不让下游提供一个原子性的冻结并转账接口?
Seata,2PC 3PC XA,
消息最终一致性,有哪些点需要的呢?有哪些问题需要考虑?
下游系统接受到消息的时候会落库么?如何防止消息的重复消费?
二阶段提交和三阶段提交有什么区别?解决什么问题呢?
二阶段提交和TCC是一回事么?
rocketMQ如何保证消息不丢的呢?异步发送、异步刷盘还能保证消息不丢吗?
MQ的顺序消息是如何保证有序的?接收方先接收到了后发送的消息,这种怎么办?
假如让你实现一个消息队列,会如何实现?考虑哪些问题呢?
消息的消费会采用推还是拉呢?消息的推的功能如何实现呢?注册监听器到MQ上?
消息中间件和消费者网络这块是如何处理呢?
题目解析
资损防控的平台的介绍。如何实现的?事前事中事后
事前:反查上游系统,做校验。(事务发消息,上游回滚了?)
事后:大数据平台,离线数据核对
事中:唯一键做幂等,分布式锁(脑裂?),乐观锁,(上游的后门,bops入口?)
这部分是因为候选人主要做了个资损防控平台,并且简历&自我介绍中提到了有资损防控相关经验,所以问了一下关于资损防控的细节,主要分事前、事中和事后。
你的系统做了很多反查的逻辑,帮上游系统做防错,这种高耦合的方案真的好吗?
校验规则的配置,脚本校验。
有考虑过遇到什么样的问题,或者业务上有什么变化后会考虑新的方案吗(准实时同步、准实时核对),
这里面试者说自己在和上游交互的时候,自己做了很多反查的逻辑来确保数据一致性及做资损防控。所以这里抛出个问题,毕竟他工作7年,所以问问他,自己有没有想过更好的方案。
这也是很多人平时不会考虑的问题,其实很多时候,应该跳出来看一看,站在第三方的视角看看自己已有的方案是否最优。
这里其实涉及到一个领域边界的问题,有些能力强的开发,总想着啥都自己多做一点,但是其实,我们应该想清楚,有些东西,到底放在哪里做才合适。让他该放在哪里就放在哪里。要有清晰的系统边界。
分布式锁会不会导致并发度降低?B端系统没有高并发?
分布式锁是一定会降低并发度的,这没啥说的,锁的机制就是要做排队,排队了并发就会有所影响。
分布式系统的数据一致性如何保证的?TCC最终一致性,还有其他的方案吗?
为什么不让下游提供一个原子性的解冻并转账接口?
这里候选人说下游提供了一个解冻接口和转账接口,有的是会出现解冻了转账失败的问题。其实,这就是我们作为工作7年的同学,要有的架构思维,其实只需要下游提供一个原子性的 解冻并转账 接口就能很大程度上解决这个问题了。而且对于下游系统来说,他们做这个即合理有简单。而这个问题如果交给上游系统做,那一定是很复杂的。
消息最终一致性,有哪些点需要的呢?有哪些问题需要考虑?
下游系统接受到消息的时候会落库么?如何防止消息的重复消费?
二阶段提交和三阶段提交有什么区别?解决什么问题呢?
二阶段提交和TCC是一回事么?
rocketMQ如何保证消息不丢的呢?异步发送、异步刷盘还能保证消息不丢吗?
MQ的顺序消息是如何保证有序的?接收方先接收到了后发送的消息,这种怎么办?
假如让你实现一个消息队列,会如何实现?考虑哪些问题呢?
消息的消费会采用推还是拉呢?消息的推的功能如何实现呢?注册监听器到MQ上?
消息中间件和消费者网络这块是如何处理呢?
Q: 工作5年,主要做计费项目?
面试者背景
5年开发,Java后端,计费项目
面试过程
面试者背景:
计费的项目介绍一下。实时计费。计费的主体是什么?支持多币种吗?
计费是累加的还是单条的?为啥不做成累加的?
如何避免重复计费?循环桶?雪花算法(时间+机器号+随机数)LEAF,时钟回调的问题如何解决的?
费用在数据库中什么类型存储的?bigint 单位为 分、代码中用的decimal,为什么要用decimal?
如何比较两个decimal是不是相等?0.1和0.10的equals相等吗?
为啥不用float或者double,精度问题?
计费的业务核心模型有哪些?计费单?有哪些核心的字段?计费类型、广告类型、金额、状态,
计费单的状态机的流转是怎么样的?反作弊、羊毛检测?
Tidb,数据库的锁用过吗?并发控制没有做吗?什么场景用到了redis分布式锁。幂等是如何控制的?
分布式锁如何实现?zk为什么可以实现分布式锁?
Redis和zk的分布式锁各自有什么优缺点?redis的分布式锁提前释放了怎么办?watch dog
Lua脚本能保证原子性?为什么?什么叫原子性?Lua执行到一半某个命令失败怎么办?
Redis的集群模型了解吗?有哪几种?主从、哨兵、cluster
Redis的数据分片?redis支持哪些数据类型?redis的SDS如何实现的?如何避免缓冲区溢出?
ZSET是如何实现的?跳表的查询、插入的时间复杂度是多少?
缓存穿透、雪崩、击穿问题。热key问题如何解决?二级缓存、拆分、预热。
如何实现一个”查找附近的人”的功能。GEO?
设计一个订单号的生产服务,会如何做?唯一性、自增、高可用,
唯一性如何保证?雪花。如何保证自增?如何保证高可用?主从、
什么样的架构算是好的架构?低耦合、功能性、
题目解析
计费的项目介绍一下。实时计费。计费的主体是什么?支持多币种吗?
计费是累加的还是单条的?为啥不做成累加的?
如何避免重复计费?循环桶?雪花算法(时间+机器号+随机数)LEAF,时钟回调的问题如何解决的?
计费业务以及业务中主要面对的问题 需要了解。
费用在数据库中什么类型存储的?bigint 单位为 分、代码中用的decimal,为什么要用decimal?
如何比较两个decimal是不是相等?0.1和0.10的equals相等吗?
为啥不用float或者double,精度问题?
计费的业务核心模型有哪些?计费单?有哪些核心的字段?计费类型、广告类型、金额、状态,
计费单的状态机的流转是怎么样的?反作弊、羊毛检测?
核心的业务单据模型以及主要的状态机流转,通过这个考察一个候选人对于自己的项目的熟悉程度
[
Tidb,数据库的锁用过吗?并发控制没有做吗?什么场景用到了redis分布式锁。幂等是如何控制的?
分布式锁如何实现?zk为什么可以实现分布式锁?
Redis和zk的分布式锁各自有什么优缺点?redis的分布式锁提前释放了怎么办?watch dog
Lua脚本能保证原子性?为什么?什么叫原子性?Lua执行到一半某个命令失败怎么办?
Redis的集群模型了解吗?有哪几种?主从、哨兵、cluster
Redis的数据分片?redis支持哪些数据类型?redis的SDS如何实现的?如何避免缓冲区溢出?
ZSET是如何实现的?跳表的查询、插入的时间复杂度是多少?
缓存穿透、雪崩、击穿问题。热key问题如何解决?二级缓存、拆分、预热。
穿透、雪崩、击穿:[
如何实现一个”查找附近的人”的功能。GEO?
设计一个订单号的生产服务,会如何做?唯一性、自增、高可用,
唯一性如何保证?雪花。如何保证自增?如何保证高可用?主从、
什么样的架构算是好的架构?低耦合、功能性、
Q: 工作6年,211本,2手平台,卖家业务,结算?
面试者背景
面试者背景:
今日面试者:6年经验,211本,spring技术栈,redis,sql调优,数据迁移,rocketmq,服务重构微服务,2手平台,卖家业务,结算,售后,大商家,
大商家有什么特点?库存之间做了系统对接吗?商品发布方式?接口对接
接口的鉴权,防刷是怎么做的?没做。。。限流做了么?如果要做怎么做?
项目中有哪些亮点?架构的演变,重复能力建设,通用能力抽象领域服务(物流、售后),为啥这两个服务可以单独抽象出来?售后产生的物流信息是属于物流域还是售后域?如何决定的?
抽象出领域之后,还有一些业务定制内容(比如售后XX天,物流分上门或者买家寄)如何实现?
状态机**+**事件做物品状态更新?from、to,cas。状态机自己实现的?方法是怎么样的实现?如何判断状态是否可以流转,具体如何做的状态控制?Spring的状态机有了解过吗?
分库分表做过吗?分表是水平的还是垂直分的?为了解决啥问题?按照月份分表。跨月查询怎么查。
SQL****调优介绍下,做了啥?宽表拆分成主表和扩展表,为啥要这么做?join比宽表慢怎么办?
索引优化做了哪些优化?加联合索引会考虑哪些问题?product、number、status哪个放左边为啥?为啥区分度更高的放前面?
SQL语句:where product= and number = and status = ,联合索引中,把number或者status****放前面有区别吗?
微服务的拆分,有哪些原则呢?通用能力、
分布式事务用过吗?用过哪种?TCC,最大努力通知,
TCC介绍下?try锁定资源,commit提交事务。Commit失败会需要cancel****吗?
TCC****有什么缺点?侵入性。cancel先到,commit后到。(事务悬挂、空回滚)
最大努力通知mq发失败了咋办?重试,重试过程挂了咋办?
还有其他的分布式方案吗?seata、本地消息表、事务消息。选择的依据是什么?
数据对账做过吗?怎么做。定时任务,跨天怎么办?数据不一致告警怎么做的?任务跑失败了如何感知?除了扫表还有其他方案吗?
String****有长度限制吗?
应用启动后的前几分钟,RT长、Load和CPU都高,如何定位?可能有哪些原因?
题目解析
大商家有什么特点?库存之间做了系统对接吗?商品发布方式?接口对接
接口的鉴权,防刷是怎么做的?没做。。。限流做了么?如果要做怎么做?
项目中有哪些亮点?架构的演变,重复能力建设,通用能力抽象领域服务(物流、售后),为啥这两个服务可以单独抽象出来?售后产生的物流信息是属于物流域还是售后域?如何决定的?
抽象出领域之后,还有一些业务定制内容(比如售后XX天,物流分上门或者买家寄)如何实现?
状态机+事件做物品状态更新?from、to,cas。状态机自己实现的?方法是怎么样的实现?如何判断状态是否可以流转,具体如何做的状态控制?Spring的状态机有了解过吗?
分库分表做过吗?分表是水平的还是垂直分的?为了解决啥问题?按照月份分表。跨月查询怎么查。
SQL****调优介绍下,做了啥?宽表拆分成主表和扩展表,为啥要这么做?join比宽表慢怎么办?
索引优化做了哪些优化?加联合索引会考虑哪些问题?product、number、status哪个放左边为啥?为啥区分度更高的放前面?
SQL语句:where product= and number = and status = ,联合索引中,把number或者status放前面有区别吗?
微服务的拆分,有哪些原则呢?通用能力、
分布式事务用过吗?用过哪种?TCC,最大努力通知,
TCC介绍下?try锁定资源,commit提交事务。Commit失败会需要cancel****吗?
TCC****有什么缺点?侵入性。cancel先到,commit后到。(事务悬挂、空回滚)
最大努力通知mq发失败了咋办?重试,重试过程挂了咋办?
还有其他的分布式方案吗?seata、本地消息表、事务消息。选择的依据是什么?
数据对账做过吗?怎么做。定时任务,跨天怎么办?数据不一致告警怎么做的?任务跑失败了如何感知?除了扫表还有其他方案吗?
String有长度限制吗?
应用启动后的前几分钟,RT长、Load和CPU都高,如何定位?可能有哪些原因?
Q: 工作7年,2家大厂经验,下单&导购核心开发?
面试者背景
面试者背景:
7年,Java后端,2家大厂工作各3****年,下单页、订单、性能,稳定性,民宿业务,导购、页面耗时优化,
导购页面性能优化方案,有哪些?有哪些技术手段?链路梳理、流程优化(异步)、代码性能优化、外调接口异步,线程池并行查询,completableFuture,
如果外部接口的RT无法保证,如何处理?弱依赖、降级。比如评价没查到,如何降级?
如果有一个外部接口必要降级,你自己会怎么做?
completableFuture用了它的什么功能?流式编程,他和executorService****区别是啥?线程窃取,
导购这部分的难点?性能,复用性,
分库分表做过吗?分库分表之后全局ID如何做的?雪花算法(时间戳、机器码、业务类型、标记位),时钟回拨问题?分表字段如何选的?分表算法是什么?假如128分表不够了怎么办?再扩容**+**迁移、数据清理。业务不中断情况下数据迁移如何做?存量迁移和增量双写之间如何避免丢数据?
如果有一个大的商户,导致数据倾斜,如何解决?
**幂等是什么?如何保证读幂等?读用做幂等吗?写请求的幂等如何保证?加锁、校验、执行。加锁用什么锁?不加锁有啥问题?如果有唯一性约束了,还需要加锁吗?f(x)= **f(f(x))
Redis****实现分布锁的时候,哪些问题需要考虑?超时时间、redisson(watchdog)、redlock解决的是什么问题?拿到锁的机器挂了会有啥问题吗?
**工作7年来,遇到的最大挑战是什么?稳定性,衡量稳定性指标?****SLA,**几个九(宕机时间)、
设计一个高可用的架构考虑哪些方案?异地多活、微服务、限流熔断降级、
限流、降级,熔断区别是啥?限流保护自己、给外部接口降级、
压测做过吗?什么是全链路压测?如何避免压测数据影响正常数据?压测标、影子表。压测标自己识别吗?
大促除了压测,预案怎么做的?大促封网状态,如何保证预案能执行?预案开关、
线上问题排查案例讲一个。Fullgc,如何用arthas定位到那个大的list的?
题目解析
导购页面性能优化方案,有哪些?有哪些技术手段?链路梳理、流程优化(异步)、代码性能优化、外调接口异步,线程池并行查询,completableFuture,
如果外部接口的RT无法保证,如何处理?弱依赖、降级。比如评价没查到,如何降级?
如果有一个外部接口必要降级,你自己会怎么做?
completableFuture用了它的什么功能?流式编程,他和executorService区别是啥?线程窃取,
导购这部分的难点?性能,复用性,
分库分表做过吗?分库分表之后全局ID如何做的?
雪花算法?(时间戳、机器码、业务类型、标记位),时钟回拨问题?分表字段如何选的?分表算法是什么?
假如128分表不够了怎么办?再扩容+迁移、数据清理。
业务不中断情况下数据迁移如何做?存量迁移和增量双写之间如何避免丢数据?
如果有一个大的商户,导致数据倾斜,如何解决?
幂等是什么?如何保证读幂等?读用做幂等吗?写请求的幂等如何保证?加锁、校验、执行。加锁用什么锁?不加锁有啥问题?如果有唯一性约束了,还需要加锁吗?f(x)= f(f(x))
Redis实现分布锁的时候,哪些问题需要考虑?超时时间、redisson(watchdog)、redlock解决的是什么问题?拿到锁的机器挂了会有啥问题吗?
工作7年来,遇到的最大挑战是什么?稳定性,衡量稳定性指标?SLA,几个九(宕机时间)、
设计一个高可用的架构考虑哪些方案?异地多活、微服务、限流熔断降级、
限流、降级,熔断区别是啥?限流保护自己、给外部接口降级、
压测做过吗?什么是全链路压测?如何避免压测数据影响正常数据?压测标、影子表。压测标自己识别吗?
大促除了压测,预案怎么做的?大促封网状态,如何保证预案能执行?预案开关、
线上问题排查案例讲一个。Fullgc,如何用arthas定位到那个大的list的?
Q: 工作7年,SaaS公司,架构师,技术负责人?
****面试者背景
人脸识别SaaS公司、7年工作经验,云平台核心业务开发,架构师,负责了项目0到1搭建
面试者背景:
支持1w并发是怎么做的?redis缓存、分库分表、future
如果让你支持10w并发,还能做哪些事情?消息队列解耦、打批处理、集群部署、
缓存用在什么场景?预热。用户的数据变了怎么感知?
一个租户特别大,热点问题怎么解决?缓存的热点问题怎么办?热key拆分、二级缓存。
近端缓存是什么?相比于本地缓存和分布式缓存有什么优缺点?一致性问题如何解决?
缓存和数据库的一致性该如何解决?更新数据库、删除缓存、延迟双删?为什么删除缓存而不是更新缓存?除了延迟双删,还有其他保证一致性方案吗?监听Bin log处理
如何实现一个本地缓存呢?map、guava,LRU是什么?LFU如何实现的?为啥要做缓存淘汰?
Redis相比memcached优势?
Redis的线程模型是怎样的?多路复用如何实现的?redis所有模块都是单线程的吗?为啥6.0要引入多线程?哪个模块是单线程的?多线程有什么缺点?
解决过OOM问题,介绍下过程。如何发现的?dump,如何解决的?
堆内存大小多大?8G,垃圾回收器用的是哪个?为什么不用CMS?CMS能降低STW?
G1 有哪些特点?garbage first,REGION是什么?STW时长如何预测?小内存为啥不适合用G1呢?
FullGC的触发条件是什么?老年代满了、空间分配担保失败、
什么是空间分配担保?
Dubbo一次服务调用过程是怎样的?
如果让你实现一个dubbo,会考虑用那些技术解决哪些问题?
Zk的选主过程是怎么样的?zk脑裂的问题?
Zk可以用来做什么?用在哪些场景中?注册中心、分布式锁、分布式ID、master选举
Seata框架用了干什么?分布式事务有哪些方案?TCC详细介绍下。Commit的时候失败了怎么办?
架构设计的时候,首先考虑的三个要素是什么?可扩展性、高内聚低耦合、可用性
题目解析
支持1w并发是怎么做的?redis缓存、分库分表、future
如果让你支持10w并发,还能做哪些事情?消息队列解耦、打批处理、集群部署、
因为简历中他提到负责的业务支持了1W的并发, 所以面试的时候会重点关注,如何抗高并发。
缓存用在什么场景?预热。用户的数据变了怎么感知?
一个租户特别大,热点问题怎么解决?缓存的热点问题怎么办?热key拆分、二级缓存。
近端缓存是什么?相比于本地缓存和分布式缓存有什么优缺点?一致性问题如何解决?
缓存和数据库的一致性该如何解决?更新数据库、删除缓存、延迟双删?为什么删除缓存而不是更新缓存?除了延迟双删,还有其他保证一致性方案吗?监听Bin log处理
如何实现一个本地缓存呢?map、guava,LRU是什么?LFU如何实现的?为啥要做缓存淘汰?
Redis相比memcached优势?
Redis的线程模型是怎样的?多路复用如何实现的?redis所有模块都是单线程的吗?为啥6.0要引入多线程?哪个模块是单线程的?多线程有什么缺点?
解决过OOM问题,介绍下过程。如何发现的?dump,如何解决的?
堆内存大小多大?8G,垃圾回收器用的是哪个?为什么不用CMS?CMS能降低STW?
G1 有哪些特点?garbage first,REGION是什么?STW时长如何预测?小内存为啥不适合用G1呢?
FullGC的触发条件是什么?老年代满了、空间分配担保失败、
什么是空间分配担保?
Dubbo一次服务调用过程是怎样的?
如果让你实现一个dubbo,会考虑用那些技术解决哪些问题?
Zk的选主过程是怎么样的?zk脑裂的问题?
Zk可以用来做什么?用在哪些场景中?注册中心、分布式锁、分布式ID、master选举
Seata框架用了干什么?分布式事务有哪些方案?TCC详细介绍下。Commit的时候失败了怎么办?
架构设计的时候,首先考虑的三个要素是什么?可扩展性、高内聚低耦合、可用性
8年以上经验
Q: 10年,深圳证券公司,系统架构组架构师,监控平台、电商平台,秒杀?
面试者背景
面试者背景:
10年,深圳证券公司,系统架构组架构师,监控平台、电商平台,秒杀
监控平台有多少应用接入了?整体多少台机器**?2-4台,**
监控平台建设介绍下?数据采集层、运行时监控、skywalking监控、数据展示层、告警治理层、消息推送层。
业务监控是如何实现的?websocket,业务其他方案了解过吗?
**机器上面的指标是如何采集的,****Prometheus exporter **原理知道吗?
推送平台、通过滑动窗口限流、lua脚本实现滑动窗口的大致内容是咋样的?
链路追踪的主要实现原理?traceId、Span都包含哪些信息?Span的作用是啥?耗时记录
你觉你做的这个监控系统,在业内处于什么样的水平?
你平常是如何做架构设计的?有哪些设计觉得自己做的比较好,有哪些如果重新设计可以做的更好的?
电商项目的整体秒杀方案介绍一下?前端:限流、置灰。** Token****防重,Redis库存预扣减,MQ,异步扣减。为哈异步扣数据库库存?热点行更新会有啥问题?行锁、具体的瓶颈在哪?**
Redis****和数据库分别如何防止超卖?redis lua脚本、乐观锁?
还有其他方案可以解决数据库热点扣减吗?库存拆分
分库分表做过吗?2000万,多少库多少表?为啥?一个库不行吗?分表字段?买家id,为啥不用订单号。订单号如何分表?基因法
分库分表后会带来哪些问题?不带分表键跨表查询问题、二次分表问题、数据倾斜问题、
卖家查询怎么解决?双写一张卖家表。卖家表倾斜怎么办?
除了分库分表,有其他方案解决数据量大的问题吗?冷热分离、
**分库分表后需要定时任务扫表,怎么办?**xxl-job
线上问题定位和排查有做过哪些?OOM。线程池,内存泄漏,
你在设计架构的时候,除了技术方面还会考虑其他因素吗?机器资源、
题目解析
推送平台、通过滑动窗口限流、lua脚本实现滑动窗口的大致内容是咋样的?
链路追踪的主要实现原理?traceId、Span都包含哪些信息?Span的作用是啥?耗时记录
你平常是如何做架构设计的?有哪些设计觉得自己做的比较好,有哪些如果重新设计可以做的更好的?
电商项目的整体秒杀方案介绍一下?前端:限流、置灰。** Token****防重,Redis库存预扣减,MQ,异步扣减。为哈异步扣数据库库存?热点行更新会有啥问题?行锁、具体的瓶颈在哪?**
Redis****和数据库分别如何防止超卖?redis lua脚本、乐观锁?
还有其他方案可以解决数据库热点扣减吗?库存拆分
分库分表做过吗?2000万,多少库多少表?为啥?一个库不行吗?分表字段?买家id,为啥不用订单号。订单号如何分表?基因法
分库分表后会带来哪些问题?不带分表键跨表查询问题、二次分表问题、数据倾斜问题、
卖家查询怎么解决?双写一张卖家表。卖家表倾斜怎么办?
除了分库分表,有其他方案解决数据量大的问题吗?冷热分离、
分库分表后需要定时任务扫表,怎么办?xxl-job
你在设计架构的时候,除了技术方面还会考虑其他因素吗?机器资源、
Q: 8年,双非一本,车企区块链项目(溯源、NFT商城-订单)?
面试者背景
面试者背景:
**8年,双非一本,非科班,车企区块链项目(溯源、NFT商城-**订单)
车企为啥会有区块链项目?有自己链么?有
这两个项目都做了多久?NFT 1年,溯源** 2****年,合约是自己写的吗?直接用的。**
项目有啥亮点么?没亮点干了2年?分布式项目么?架构介绍下。
定时任务为啥单独搞个服务**?xxl-job****分片任务的实现原理?**
多节点同时执行如何避免并发问题?分布式锁?如何避免状态不重复?能做优化么?
Xxl-job****如何避免多个节点同时执行同一个任务?怎么加的锁?该状态?
NFT****项目上线了么,现在还能访问么?主要卖啥?最多的藏品发行了多少份?
藏品还有哪些功能**?**转增,空投,空投你做了?订单量有多少?
**项目的技术栈?spring cloud Alibaba, **
下单这部分有啥亮点吗?流量集中,有并发问题。QPS最高有多少?6000 QPS,商品详情接口。
下单的QPS?** 1000****,单个商品最高多少?**
下单这部分你觉得有瓶颈么?redis预扣减**+**数据库扣减,为啥不直接扣数据库。
最开始就是这个方案么?这不是过度设计么?为啥数据库热点行扛不住?加行锁,慢。两次扣减不更慢么?redis扣减完就创建订单,再发MQ,数据库再扣减。
Redis****扣减成功,但是订单没创建成功怎么办?订单实际创建成功但是返回给你失败了怎么办?
超卖怎么解决?redis的库存和数据库库存的一致性怎么确保?
旁路验证是什么介绍一下?库存扣减流水,对比。如果对比不一致,怎么办。
**Redis中的流水是如何设计的?key:事件类型+**幂等号(uuid?),value:
怎么保证redis的流水写入成功?lua脚本,
有什么情况会需要加库存的么?业务一般不加库存,哪些异常情况会调加库存方法?关单的时候,取消订单时候。
用户取消订单流程,数据一致性方案?关单并发加分布式锁,检查流水,加库存。
介绍下事务消息的原理?本地事务。还没来得及发第二个半消息,挂了怎么办?回查
RocketMQ****要实现事务消息,需要哪些配置和代码?本地事务监听器?
分布式锁怎么实现的?redisson,tryLock,有啥好处。
介绍下订单表是怎么设计的?订单号、买卖家id、商品id、快照、金额、数量、支付单号???状态怎么设计的。(INIT CONFIRM TIMEOUT CLOSED PAID),退款怎么办?
**Confirm状态,同时来了TIMEOUT和PAID****的操作,怎么避免出问题?怎么检测状态?****SQL **中加当前转态
支付成功之后都需要干啥。发藏品、订单状态。藏品的序列号如何生成的?提前生成好。为啥要这么做?
项目做过压测么?介绍下。单机800。压测都关注哪些指标?RT、错误率、CPU、内存。
CPU**、load什么范围算正常?**
限流做过么?技术选型做过?考虑哪些因素?学习成本、社区**&**支持、性能、
AI接触过么?用过哪个AI****编程工具?TRAE,cursor。知道代码补全的原理是啥么?什么是大模型,大在哪里?数据集,成本大,
题目解析
定时任务为啥单独搞个服务**?xxl-job****分片任务的实现原理?**
多节点同时执行如何避免并发问题?分布式锁?如何避免状态不重复?能做优化么?
Xxl-job如何避免多个节点同时执行同一个任务?怎么加的锁?该状态?
NFT****项目上线了么,现在还能访问么?主要卖啥?最多的藏品发行了多少份?
藏品还有哪些功能**?**转增,空投,空投你做了?订单量有多少?
**项目的技术栈?spring cloud Alibaba, **
他这个是包装的我的数藏项目,具体介绍如下:
下单这部分有啥亮点吗?流量集中,有并发问题。QPS最高有多少?6000 QPS,商品详情接口。
下单的QPS?** 1000****,单个商品最高多少?**
下单这部分你觉得有瓶颈么?redis预扣减**+**数据库扣减,为啥不直接扣数据库。
最开始就是这个方案么?这不是过度设计么?为啥数据库热点行扛不住?加行锁,慢。两次扣减不更慢么?redis扣减完就创建订单,再发MQ,数据库再扣减。
Redis****扣减成功,但是订单没创建成功怎么办?订单实际创建成功但是返回给你失败了怎么办?
超卖怎么解决?redis的库存和数据库库存的一致性怎么确保?
旁路验证是什么介绍一下?库存扣减流水,对比。如果对比不一致,怎么办。
**Redis中的流水是如何设计的?key:事件类型+**幂等号(uuid?),value:
怎么保证redis的流水写入成功?lua脚本,
有什么情况会需要加库存的么?业务一般不加库存,哪些异常情况会调加库存方法?关单的时候,取消订单时候。
用户取消订单流程,数据一致性方案?关单并发加分布式锁,检查流水,加库存。
介绍下事务消息的原理?本地事务。还没来得及发第二个半消息,挂了怎么办?回查
RocketMQ要实现事务消息,需要哪些配置和代码?本地事务监听器?
分布式锁怎么实现的?redisson,tryLock,有啥好处。
介绍下订单表是怎么设计的?订单号、买卖家id、商品id、快照、金额、数量、支付单号???状态怎么设计的。(INIT CONFIRM TIMEOUT CLOSED PAID),退款怎么办?
Confirm状态,同时来了TIMEOUT和PAID的操作,怎么避免出问题?怎么检测状态?SQL 中加当前转态
支付成功之后都需要干啥。发藏品、订单状态。藏品的序列号如何生成的?提前生成好。为啥要这么做?
项目问题。
项目做过压测么?介绍下。单机800。压测都关注哪些指标?RT、错误率、CPU、内存。
CPU**、load什么范围算正常?**
限流做过么?技术选型做过?考虑哪些因素?学习成本、社区&支持、性能、
AI接触过么?用过哪个AI编程工具?TRAE,cursor。知道代码补全的原理是啥么?什么是大模型,大在哪里?数据集,成本大,
Q: 工作8年,游戏中厂,Redis,分布式?
面试者背景
面试者背景:
8年,中厂游戏,Java,go,spring,做过dbserver,游戏饰品商城(交易模块、第三方支付接入),压测系统(xml、protobuf、流程化配置、分布式压测,Prometheus、grafana),
如何实现的压测的并发数,场景化配置是如何实现的?作弊指令,
**压测时关注哪些指标?p90大概多少ms?**100ms
游戏账号是如何维护的?为啥不用开源的方案比如jemeter?
用过哪些中间件?redis、mongodb、mq、mysql。redis和mongodb区别?
Redis****什么地方用到了?
为啥mysql用B+树,mongodb为啥用B树,redis用跳表?
三种数据库该怎么选?一般是如何选择?
Redis的事务和mysql****的事务区别?
Redis****快的原因是什么?基于内存、单线程模型、多路复用,为啥单线程会更快?
Redis的热key****问题遇到过吗?有什么问题吗?多级缓存、拆分。本地缓存不一致问题怎么办?
热key变成了大key怎么办?你觉得多大可以认为是大key?
Redis的分布式锁,如何实现可重入?什么是可重入?如何避免解锁的时候把别人的锁解了?听说过redlock****吗?
Lua脚本用过吗?在集群模式下使用lua****脚本有问题么?有办法解决吗?
Zookeeper干什么用了?为啥zk可以用来做nameserver**?**
Zookeeper的CP****体现在哪里?强一致性,查询的时候一定会不一样呢?不一致了怎么体现强一致性?A的牺牲体现在哪里?
写完1/2节点之后,如果超过1/2节点都挂了怎么办?
Zk能用在什么场景下?zk的分布式锁和redis****的分布式锁区别是啥?性能、原理、一致性、
分布式锁,一致性和可用性哪个更重要?为啥市面上99%场景都用redis?数据库兜底,
分布式事务涉及过吗?介绍下TCC,你认为有必要做分布式事务吗?太重了,
不做分布式事务,怎么保证一致性呢?
“为什么要限流,不应该服务好用户么?”,如何反驳?恶意流量、上下游
题目解析
如何实现的压测的并发数,场景化配置是如何实现的?作弊指令,
压测时关注哪些指标?p90大概多少ms?100ms
用过哪些中间件?redis、mongodb、mq、mysql。redis和mongodb区别?
Redis****什么地方用到了?
为啥mysql用B+树,mongodb为啥用B树,redis用跳表?
三种数据库该怎么选?一般是如何选择?
Redis的事务和mysql的事务区别?
Redis****快的原因是什么?基于内存、单线程模型、多路复用,为啥单线程会更快?
Redis的热key****问题遇到过吗?有什么问题吗?多级缓存、拆分。本地缓存不一致问题怎么办?
热key变成了大key怎么办?你觉得多大可以认为是大key?
Redis的分布式锁,如何实现可重入?什么是可重入?如何避免解锁的时候把别人的锁解了?听说过redlock吗?
Lua脚本用过吗?在集群模式下使用lua脚本有问题么?有办法解决吗?
Zookeeper干什么用了?为啥zk可以用来做nameserver**?**
Zookeeper的CP****体现在哪里?强一致性,查询的时候一定会不一样呢?不一致了怎么体现强一致性?A的牺牲体现在哪里?
写完1/2节点之后,如果超过1/2节点都挂了怎么办?
Zk能用在什么场景下?
zk的分布式锁和redis的分布式锁区别是啥?性能、原理、一致性、
分布式锁,一致性和可用性哪个更重要?为啥市面上99%场景都用redis?数据库兜底,
分布式事务涉及过吗?介绍下TCC,你认为有必要做分布式事务吗?太重了,
不做分布式事务,怎么保证一致性呢?
“为什么要限流,不应该服务好用户么?”,如何反驳?恶意流量、上下游
大厂面经
Q: PDD海外用增一面?
背景:工作2年
面试问题:
为什么找机会
公司使用的技术栈是啥
项目的最高QPS有多高
遇到的开发问题有哪些?
觉得自己从校招到现在有哪些提升
项目-搭建的xx平台
如何处理下游超时,一致性怎么保证
RocketMq的特性
如何用Redis统计亿级网站的uv
遇到过什么线上问题,如何处理
分布式锁如何设计
分布式框架的服务发现怎么做
TheadLocal的使用场景,如何防止内存泄露
JVM的堆栈各存储什么内容
写过什么公共组件么?
反问:用增营销和交易营销的区别、技术栈,生活 作息等
写题:
import java.util.Arrays;
public class Main {
public static int[] findClosestElements(int[] arr, int k, int x) {
//书写算法逻辑
int left = 0, right = arr.length - 1;
int mid = (left + right)/2;
while(left < right) {
if(arr[mid] > x) {
right = mid;
} else if(arr[mid] < x) {
left = mid + 1;
} else {
break;
}
mid = (left + right)/2;
}
int lp = mid, rp = mid, count = 1;
while(count < k) {
if(rp > arr.length - 1) {
lp --;
}
if(lp < 0) {
rp ++;
}
if(x - arr[lp] > arr[rp] - x) {
rp ++;
} else {
lp --;
}
count ++;
}
int[] ans = new int[rp - lp + 1];
for(int i = lp; i <= rp; i ++) {
ans[i - lp] = arr[i];
}
return ans;
}
// 获取到离x最近的k个数
public static void main(String[] args) {
int[] arr = {0, 0, 1, 2, 3, 3, 4, 7, 7, 8};
int k = 3;
int x = 5;
int[] res = findClosestElements(arr, k, x);
System.out.println(Arrays.toString(res));
}
}Q: PDD海外用增二面?
背景:工作两年
问题:
- 看机会的原因
- 技术成长
- 业务机会
- QPS有多高
- 工作中遇到什么复杂的场景
- 目前的offer进展
- 为啥考虑pdd,譬如作息问题
- 一幅随机的扑克牌,找到同花顺
- 将扑克牌先按照花色再按照大小进行排序,然后双指针遍历扑克牌即可,复杂度为o(lgn)
- 100T数据,在4C8G的机器中如何找到出现频率最高的
这是典型的topK问题,可以利用分治思想处理
- 字符串中出现频率最高的单词(注意符号和其他非法字符)
这个问题是对于上一个问题分治后的处理,可以直接通过Map进行统计。这里有一个特殊点就是符号和其他非法字符,需要加上一行判断:if((s.charAt(i) > 'a' && s.charAt(i) < 'z') || (s.charAt(i) > 'A' && s.charAt(i) < 'Z'))
- 100W用户,100个商品(库存1000),设计思路
主要考虑安全,限流,缓存预热等问题
Q: 字节支付1-2-3-hr面?
一面
热点商家交易订单的写入如何处理?
分布式锁如何设计,锁超时,锁重入怎么设计
缓存一致性如何保证
leetcode 62, leetcode 122
二面
哪一块挑战比较大?
你觉得工作这么久最重要的技术相关的地方是啥,如何达成业务目标的
如何保证幂等,不用分布式锁如何保证
和外部机构交互如何防止外部机构服务不可用拖垮调用服务
微信运动排行榜如何设计
写扩散,通过zset排序
- leetcode,46题,全排列
三面
为什么出来看机会,目前在公司绩效怎么样?
Mysql事务(ACID)的原理
这几年有哪些成长?
如何降低软件复杂度?使用过哪些设计模式,举个例子?
抖音春节红包雨从展示到发放到领取的全链路设计思路
leetCode,旋转矩阵
HR面
- 为什么出来看机会,目前在公司绩效怎么样?
- 希望涨薪多少?
- 觉得在工作中挑战最大的哪件事情,怎么解决的,收获是什么?
- 如果协作过程中遇见不配合的同事怎么办
- 觉得自己是更像哪种动物
- 说出自己的三个优缺点
- 入职之后更关注哪些事情(薪资、业务、同事等)
Q: 字节本地生活?
背景:5年经验
问题列表
select a ,d where a=1 and b > 2 and c = 3 应用的哪个索引
select a, d where a =1 order by 2 limit 10 扫描多少行
mysql为什么双向链表
redis多大的key算热key?怎么解决
算法题 小于n的最大数
给定一个数字字符串S和一个数组nums,数组中的元素都在0~9之间,问从数组中选择元素组成的数字,小于N的最大值是多少?
例如:S = "24378",nums:{2,3,9},组成的最大值为23999
Q: 平安一面?
背景:不详
问题列表:
RPC的详细流程(从应用启动到服务调用)
2、怎么做负载均衡的(比如有s1,s2,s3 三个server端提供了同一个服务, 你client端什么时候建立连接?和全部建立连接吗?什么时候做负载均衡? )
3、负载均衡策略都有哪些?
4、加权轮询具体代码怎么写?
5、 加权轮询在应用节点上下线时有什么问题?有什么更好的处理方式?
6、 nacos 是怎么推送配置到本地的? 新增和修改有区别吗?
8、redis 里面 lru,lfu 缺点是什么? 有什么解决的办法?
Q: 白龙马科技2面?
强引用 、软引用、 弱引用、虚引用应用场景
threadlocal 线上遇到过执行顺序问题吗
redis分片 主从选举过程
kafka通信过程
kafka怎么保持高可用
怎么支持事物
Q: 白龙马科技一面?
背景:5年经验
问题列表:
rpc框架,区别及对比;
spring shutdownhook作用
aop 在什么场景下不生效;
事务性规范如何避免死锁场景;
算法:单列表倒数第n个节点;
Q: 百度一面?
char和varchar区别
mysql数据结构
为什么不选择红黑树和b树
select执行过程
MySQL 数据库 CPU 飙升到 500% 的话,怎么处理
limit 1000000 加载很慢的话,你是怎么解决的呢
jdbc 的连接过程
哪些情况会造成索引失效 bettwen会导致索引失效吗
@Transactional注解的失效场景
JDK 动态代理与 CGLIB 区别
aop执行顺序
过滤器和拦截器区别
说说自定义注解的场景及实现
算法
三数之和
Q: 百度二面?
什么是Java内存模型
同步异步
并发并行
了解哪些并发工具类
mybatis工作原理
说一下 mybatis 的一级缓存和二级缓存
处理过内存溢出问题吗
Java中的对象一定在堆上分配吗
被标记为垃圾的对象一定会被回收吗
(应该是问多标漏标的问题吧?)
为什么要把堆和栈区分出来呢?栈中不是也可以存储数据吗
算法题
买卖股票时机
Q: 菜鸟1-3面?
背景:3年
面试题:
Object中equals和hashcode为什么需要重写
JVM垃圾回收的时机
两个动作,下订单和扣钱,怎么保证只能扣一次钱
CPU使用率高,如何排查?
@Transactional注解怎么实现
缓存和数据库如何保持一致
Q: 阿里一面?
背景:工作5年
LinkedHashMap的应用
cloneable接口实现原理
异常分类以及处理机制
wait和sleep的区别
数组在内存中如何分配
AbstractQueuedSynchronizer
如何检测死锁?怎么预防死锁?
Java 内存模型?
如何保证多线程下 i++ 结果正确?
分析线程池的实现原理和线程的调度过程?
线程池如何调优,最大数目如何确认?
ThreadLocal原理,用的时候需要注意什么?
CountDownLatch 和 CyclicBarrier 的用法,以及相互之间的差别?
LockSupport工具
Condition接口及其实现原理
Fork/Join框架的理解
分段锁的原理,锁力度减小的思考
BIO、NIO和AIO
Netty 的各大组件
Netty的线程模型
TCP 粘包/拆包的原因及解决方法
了解哪几种序列化协议?包括使用场景和如何去选择
Redis的并发竞争问题如何解决
算法题
实现lru
Q: 顺丰一面?
背景:应届生
1 什么情况下做sql优化,具体点
2 怎么去定位用户问题
3 用什么代理管理工具,git分支怎么管理
4 如何定位bug,用实际项目说明
5 平时怎么做单体测试
6 什么情况下用get 和 post
7 多线程,aqs讲一下
8 商城项目
9 redis 有哪些基础数据结构
10 redis去缓存用户数据怎么操作,具体操作,怎么设置过期时间
11 设计模式 代理模式怎么用
12 用过linux指令吗,查登录接口的日志怎么查
Q: 大模型应用开发,RAG客服?
面试者背景
面试者背景:
30****岁,中途转行的,2本,制造业外包,全干工程师,PLM平台、RAG客服(langchain4j)、人才信息平台,HR管理平台,都是单机项目
哪个项目做的时间长,或者最有亮点?
介绍下智能客服都做了哪些功能?JDK 17,langchain4j,RAGFlow(分词**+embedding****),flux。分词是怎么分的?ragflow默认的分段。分段效果你觉得怎么样?**
PDF****中如果有图片如何处理?OCR,召回无法支持图片?
RAG****的完整流程是怎么样的?文档读取、分块、向量化、数据库、检索、混合检索
混合检索解决什么问题?
RAG****检索效果不好,有哪些优化手段?语料,rerank、
介绍下什么是rerank?怎么做的重排?
如果用户问题不好,不会问,怎么办?HyDE知道么?
RAG****的效果是什么?不能答非所问。准确率和召回率有啥区别?
Langchain4j****帮你做了啥?和大模型交互,FunctionCall,
Langchain4j的function call的实现原理?模型的function call****的原理?
@AiService的实现原理?低阶API&高阶API**?**
Langchain4j****是你选型的吗?为啥用他?如果现在让你选你怎么选?spring ai Alibaba?
这个项目干了多久?你觉得还有哪些优化方向?模型、知识图谱、提示词优化。
提示词都做过哪些优化?防止prompt注入、生成流程图、few shot?
怎么防止prompt注入的?
用的哪个向量数据库?
向量相似度是怎么算的?余弦相似度、
介绍下transformer的原理?Attention机制、
Q: 拼多多一面?
拼多多一面
Java线程池的状态流转;在关闭的时候有哪些方法可以关闭线程池(stop可以关闭线程池吗);
你说的那两个关闭线程池的时候是一个什么样的状态;
synchronized 用户线程和*内核线程;加锁比较耗性能的动作,
内核线程和用户线程区别th
;内核线程和用户线程之间的关系,一对一的关系,golong呢;
Java spi;double怎么去加载这些过滤器的,怎么处理这些请求;double和thrift哪个性能高;
redis里的数据结构;跳表底层查找的机制;版本和持久化方式;aof的文件重写的过程;大key;集群批量处理需要注意什么;
kafka和rRocketMQ最大的区别是什么:时效性(说的不全面);
kafka是实时的吗(有一定延迟的)?
算法
第k大的数
Q: 拼多多二面?
拼多多二面
网关的作用;网关如何挂了还能正常运行吗(用户还能正常访问吗);
投放广告条件与条件的交并叉/广告组买了开屏某种类型的广告,比如有两种 类型一定向河北省、类型二河北省保定市,有包含关系保目标量,最优分配是怎么解决的,
opc什么条件转ocpc
广告出现超投是怎么解决的;
618大促广告组接受补量会怎么办;技术层面可以去做什么,
怎样不超卖;超卖,库存本身就不够然后卖多了;
算法
填充矩阵
Q: 滴滴一面?
滴滴一面
场景题:卖书,我付钱了,没有抢到这个名额;1000个用户同时付钱呢;100本书,1000个用户可以同时发起付费吗;
点了一下没库存了会提示你什么呢);恶意刷,到时候全退了;
Q1:库存扣减方式有哪几种?各有什么特点?
A:目前有赞支持拍下减库存和付款减库存两种方式。
① 拍下减库存
买家提交订单,库存数量就相应减少,在订单取消时,恢复库存数量。
好处:保证买家只要拍下宝贝,就一定能买到。
坏处:a.在库存紧张时,买家拍下之后不付款,会影响其他买家购买;
b.可能有人恶意占用库存,导致商品售罄,给店家造成损失;
建议:库存充足的店家使用
② 付款减库存
买家提交订单,对可售库存的数量是否充足做一个校验,可售库存充足时,允许下单,同时会产生一个预占库存(目前默认占用10分钟,10分钟后自动释放,如果用户主动关闭订单,也会自动释放)。在买家支付成功后,再对库存进行扣减。
好处:库存不会被长时间占用,当库存紧张时,真正想买的客户有更多机会买到宝贝。
坏处:用户支付成功之后再扣减库存,可能会出现超卖的情况。
建议:库存紧张、需要防止被恶意占用库存的商家使用。
Q2:预占库存是指什么,和库存数量有什么区别?
A:消费者拍下商品订单后,库存先为该订单短暂预留,预留的库存即为预占库存。当订单预占超时或订单关闭时,预占库存会返回到商品原可售库存
页面加载快的是做了什么优化吗;
www.baidu.com过程越详细越好
说出下面执行结果
public static void main(String[] args) {
Integer int0 = new Integer(1);
Integer int1 = Integer.valueOf(1);
Integer int2 = 1;
System.out.println(int0.equals(int1));
System.out.println(int0 == int1);
System.out.println(int1.equals(int2));
System.out.println(int1 == int2);
}
算法 合并数组
Q: 滴滴二面?
滴滴二面
JAVA常用的集合借口;
线程同步和线程协作是怎么理解的
为什么k8s的设计里有pod,而不是直接用容器
k8s中pod和node是什么关系
k8s平滑上线
万能遥控器外观模式
一个遥控器可以同时控制空调和电视 现在实现两个按钮,第一个按钮切换空调或者遥控器,第二个按钮控制开关。 如果控制的电器多了怎么扩展
Q: 猿辅导一面?
猿辅导一面
mysql为什么一定要有一个主键
说一下MySQL的事务隔离级别
脏读和不可重复读有什么区别
mvcc真的解决了幻读吗
不同消息队列对比;
幂等的怎么设计;
广告系统整体的架构,模块(模块之间,投放侧流量进来底层召回、排序,从技术层面上有哪些核心的微服务;排序服务、召回服务)、
服务;推荐系统你会怎么做,包括流程,1️⃣用户的行为流,在系统上点了帖子卡夫卡的数据进来/2️⃣底层的数据库有很多文章或帖子做物料,用户个性化的推荐结果里面有什么逻辑以及模块,召回怎么做;
性能优化有哪些手段可以帮助优化服务的性能(先发现瓶颈和问题);
2叉树有多种遍历方式,基于便利序列重复2叉树你会选择哪种遍历结果去重建并且如何重建(不一定是递增的),
方法:基于中序和前序可以用递归来实现;
Q: 阿里二面?
阿里二面
JVM 中一次完整的 GC 流程(从 ygc 到 fgc)是怎样的
OOM错误,stackoverflow错误,permgen space错误
如果要你实现Spring IOC,你会注意哪些问题?
Spring 是如何管理事务的,事务管理机制?
Spring 的不同事务传播行为有哪些,干什么用的?
Spring 中用到了那些设计模式?
如何查询最热门的查询串
前缀树经常被用来统计字符串的出现次数。它的另外一个大的用途是字符串查找,判断是否有重复的字符串等
CompletableFuture
oom的排查流程
threadlocal参数如何传递,线程池如何传递
如何实现幂等
线程池如何顺序执行任务
g1回收并发标记流程
redis如何主从同步。
分布式锁如何防止业务执行时间过长导致锁过期
redis key/value结构有什么缺点
integer可以作为对象锁么
为什么用integer常量池
算法
反转二叉树
实现一个优先队列
Q: 阿里本地生活一面?
阿里本地生活一面
背景:工作5年
面试问题:
redis如何实现延迟队列
rocketMQ ;有序队列怎么保证是有序的;
数据库的配置;分表不分库如何保证稳定性;
检索场景ES和my sq 如何同步,如何保证稳定性;
jdk8函数器接口新特征(用原生)底层如何实现,如何生效的?;
rpc框架,怎么去设计一个框架进行无缝互调?他们的通信底层用什么来通信?多语言环境(比较小众的一些)都不支持sdk怎么办?序列化场景应该用什么?
spring和rpc如何结合的?(spring在什么契机下注册这个东西)闲置处理、后置处理、
算法,动态规划有没有使用过,动态规划的场景,如何解决的?
动态规划的思想怎么做的?
jvm的优化过程,降本最终怎么做的,有什么效果?