1、自我介绍
2、介绍一下 RPC 项目
3、服务如何注册以及客户端如何发现
4、介绍一下客户端调用、服务端响应的一个完整流程
5、客户端进行远程调用的时候是每一次都要去访问注册中心进行服务发现吗?
6、获取结果是同步还是异步的(目前做的同步,也可以返回promise由用户自行调用)
7、客户端是否知道什么时候结果已经返回了???
8、介绍下第二个项目,你做了什么工作
9、讲述一下订单业务的整个流程。
10、RabbitMQ发送消息的整个流程。
11、RabbitMQ消息太多导致积压怎么处理(要防止丢失)?
12、订单支付模块用到了事务吗?
13、Spring事务如何实现的?
14、如果有一个新技术,你是怎么考虑融合到你的项目当中的?
在一般情况下,初步考虑将新技术应用于项目中需要进行以下步骤:
确定技术的特点和目标:了解新技术的运行方式、功能、优势和局限性。
评估技术与项目的匹配度:分析新技术是否适合项目的需求、成本和时间限制。
确定实施计划:确定技术的实施流程、资源需求和可行性评估。
实施和测试:对技术进行实施并进行相应测试,根据结果进行调整和优化。
持续监测和改进:跟踪技术的表现和发展趋势,在必要时进行更新和改进。
总之,将新技术应用到项目中需要认真考虑和精心计划,提高项目效率和质量。
15、你有什么想问我的?
面试,官自我介绍 + 个绍部门 自己做自我介绍 1、ArrayList和LinkedList
2、Integer i1 = 1000; lnteger i2 = 1000;问: i1 是否 equals i2 拆箱装箱?
3、Mysql隔离级别,以及每个隔离级别是如何去保证的, nnodb 和 Mylsam,聚索和非聚族索引 B+树 ? B树?
4、mysql是否解决了幻读? 如何解决的? 如何实现可重复读? MVCC?
4、redis 数据类型有哪些? 各自底层的数据结构? 主从复制? 兵集群?
5、AQS原理? Synchronized 原理? ReentrantLock? 区别? 原理?
6、HashTable 的扩容过程? HashMap ? concurrenthashmap?
7、创建对象的方法有哪些? clone 方法? 深浅克隆? clone方法是哪里的?
8、操作系统:死锁的四个条件?进程调度的方式?
9、线程池的七大参数? 线程池处理任务的整个流程说一下?
10、JVM内存模型? 作用? 分代?
11、spring如何处理循环依赖? 三级缓存? spring装配过程? MyBatis 相关?AOP ? I0C?
12、知道哪些设计模式? spring里面用了哪些?
13、说一下代理模式? spring里面用到的代理模式的地方? 代理的分类?
14、CAP原理? base理论?
15、hashcode方法的值是什么? (是内存地址吗? ) hashcode 和 equal方法的重写问题? hashcode是用来干嘛的?
16、== 和 equal的区别?
17、volatile ? MM? 如何保障可见性? 有序性? 能否保障原子性?
1、自我介绍
2、介绍项目中MySQL、Redis和ES如何使用的?
3、为什么选用Redis而不是直接存储在DB中?
4、Redis+Lua脚本进行优惠券资格判断做了什么校验?
5、预减库存如何实现?(Redis的hash结构的 hincrby key filed -1)
6、将消息发送到RabbitMQ失败的情况,如何处理?(可靠传输)
7、RabbitMQ中间过程中消息丢了如何处理?(持久化)
8、线程池的参数以及线程池的原理?
9、线程池的核心线程池的个数怎么设置的?
10、ES如何使用的,怎么存储?(倒排索引)
11、Redis哨兵模式的主从集群的选主机制?
12、ThreadLocal用过吗?原理是什么?
13、子线程可以获取父线程的ThreadLocal的值吗?
14、项目中Redis除了做缓存还应用到了什么场景?
15、项目中Redis+Lua实现防刷限流的原理?
16、maven冲突如何解决?
17、Java使用的版本,有了解最新的Java版本的特性?
18、Java8的垃圾回收器用的是哪个
19、说一下ParallelScavenge?
20、标记整理算法的流程?
21、为什么要用AOP去实现防刷限流?
22、AOP的类型?
23、描述一下快速排序?
24、有没有碰到AOP不生效的情况?(事务调用失效场景)
25、HTTP响应码301、302,哪种对搜索引擎比较友好(301)?
26、TCP和UDP的区别?
27、TCP如何保证可靠传输?
28、TPC的三次握手流程?
29、如果第三次握手失败会发生什么?
30、反问。
1、面试官自我介绍和部门介绍
2、自我介绍
3、介绍第二个项目
4、讲一下缓存穿透、缓存击穿、缓存雪崩的区别以及解决方法
5、解决缓存穿透的第二种方法(布隆过滤器)
6、布隆过滤器的缺点(1、误判;2、无法删除)
7、介绍一下Redis的数据结构有哪些?
8、讲解一下ZSet的底层实现?
9、讲解一下跳表的实现原理
10、项目中缓存内容的缓存时间设置
11、Redis的过期策略以及内存淘汰策略
12、Redis的数据分片(Redis分片集群)
13、计算某个数据得到哈希槽位置如何去访问到目标节点(节点内部会负责转发到目标节点)
14、一致性哈希算法如何解决数据倾斜问题?
15、介绍一下ES的倒排索引
16、MySQL事务的基本要素?
17、简单描述一下对索引的理解?
18、为什么MySQL要选用B+树而不是B树或者红黑树?
19、项目的量级。。。
20、了解MySQL的分库分表吗?
21、对于订单量已经到达了一定的规模,如何去对订单表做分表操作?(水平分表,根据交易日期分)
22、描述一下乐观锁和悲观锁。
23、乐观锁存在的问题?
24、如何解决ABA问题?
25、说一下事物的隔离级别,分别解决了什么问题?
26、Nacos如何避免读写冲突?(不会,答了一个Nacos数据更新通知的实现。。)
27、介绍一下适配器模式
28、项目中使用到了什么设计模式
29、了解模板方法和策略模式吗,区别是什么?
30、TCP和UDP的区别,在七层模型中位于哪一层?
31、TCP的滑动窗口和拥塞窗口和分别解决了什么问题?
32、TCP为什么不是三次挥手?
33、TCP的粘包和拆包问题,如何解决?
34、Netty的线程模型,主从线程模型?
35、SpringIOC和AOP介绍?
36、Spring框架常见的设计模式?
37、SpringBoot相对于Spring多了什么?(自动配置一顿乱讲)
38、除了RabbitMQ,还知道其他的MQ吗?为什么选择RabbtiMQ?
39、线程和进程的区别?
40、进程的调度算法?描述一下多级反馈队列???
41、描述一下死锁的条件,如何避免死锁?
42、平常用的比较多的Linux的命令
43、平常用的JDK几,说一下Java8的新特性???(lambda、接口有default方法)
44、了解菱形继承吗????
45、平常用的比较多的集合类,说一下ConcurrentMap的实现原理
46、描述一下类加载机制
47、synchronized和ReentrantLock的区别?
48、Java的引用类型有哪些?
49、简单说一下ThreadLocal
50、JVM的内存划分
51、描述一下分代回收算法
52、描述一下线程池的参数以及拒绝策略
53、maven的依赖原则?(最短路径优先等...)
54、了解一些排序算法,描述一下用得比较多的。
55、简单说一下延时队列(说得过于简单。。。)
56、了解Netty当中的时间轮吗???
57、算法题:1、判断链表是否有环;2、数组中前k个频率的数
58、反问
1、自我介绍
2、手写 HashMap;
3、equals和==的区别?
4、描述一下GCRoots的概念;
5、为什么不使用引用计数算法?
6、你了解的设计模式有哪些;
7、Java创建Thread然后start运行起来之后操作系统也会创建对应的线程吗?
8、用过什么网络框架吗?
9、听说过网络当中的C10K吗,能介绍一下吗?
10、如果让你设计一个接受大量请求的网络框架,你会选用什么模型?
11、两个数组递增求交集元素;
12、说一说SpringIOC;
13、说一说虚拟机和Docker镜像的区别?
14、Docker中每次运行一个镜像都会创建一个内核吗?
15、一个高版本内核的操作系统去运行低版本内核的镜像,可以运行起来吗?
16、函数调用和系统调用的区别是什么?
17、低版本的镜像在运行时如何向操作系统去申请资源?
18、你觉得你自己的优势是什么?
19、反问。
1、自我介绍
2、介绍一下你自己的项目;
3、描述一下服务注册到注册中心和服务下线的一个具体流程;
4、如果zk中的服务节点退出了,服务还能访问吗,怎么做?
5、如果一个正在被客户端请求的服务提供方准备下线,有什么方法能保证客户端这次能正常通信?
6、描述一下JVM?
7、元空间为什么移到直接内存中了?
8、元空间在什么情况下会达到很大的容量?
9、如果你的程序频繁发生GC,你怎么去进行优化?
10、MySQL的 in、where 和 exist 怎么用,说说各种情况下如何使用?
11、对ES了解吗,你项目中ES做了什么,为什么?
12、对于一个Spring程序,如果我想对某一批接口的入参和结果进行某些关键字匹配处理,你有什么方案?
13、将一个分数转化成小数,对于循环小数打印出循环部分。
14、反问。
1、自我介绍
2、系统的学习过什么Java体系知识?
3、介绍一下项目
4、分布式事务和分布式定时任务是什么逻辑?
5、除了本地信息表加任务调度保证分布式事务,还有什么思路去做,为什么选择这种思路?
6、TCC和两阶段提交解决什么问题,这两种方式和你项目的述求是一样的吗?
7、你的项目中的述求和其他方式不一样的点是因为不是都是涉及DB吗?
8、本地信息表+任务调度的方式有什么缺点?
9、其它微服务模块监听MQ中的支付记录有什么问题考量?
10、为什么不用【本地消息表+MQ】的方式去实现【本地信息表+任务调度】的方式分布式事务?
11、RabbitMQ的特征介绍一下?
12、RabbitMQ和Kafka的关键区别是什么?(推拉模式)
13、Redis的哨兵模式和分片集群有什么区别?
14、客户端如何能够正确的请求到指定哈希槽的master节点?(节点内容进行转发,得到数据后再返回给客户端)
15、ES是什么部署架构?
16、Redis、ES和DB的数据一致性如何做的?
17、秒杀的核心瓶颈是什么?
18、MySQL的间隙锁是什么?
19、什么情况下不会加间隙锁?
20、如果where id = xxx 和 where id > xxx 分别加的什么锁?
21、MySQL当中的主从复制的机制;
22、主库和从库出现比较严重的主从延迟如何处理?
23、什么情况下会出现主从延迟?
24、CMS和G1的区别?
25、G1使用什么类型的垃圾收集算法?
26、Java中的双亲委派机制的目的?
27、如何打破双亲委派?
28、什么是热部署?
29、算法:实现LRU
30、如何针对你实现的LRU保证线程安全?
31、反问。
1、算法:小于 n 的最大数;
2、自我介绍;
3、介绍一下 Netty、Socket、Http 三种通信方式的区别?
4、如何用Socket去实现Netty的线程模型?
5、Socket的阻塞和线程的阻塞的区别是什么?
6、自定义协议和编解码的具体做法;
7、五种序列化算法的体积的比较?
8、为什么 Kryo 的体积小?(原理)
9、使用这种方式进行序列化反序列化的问题是什么?
10、几种序列化算法时间上的对比;
11、Netty通信的心跳机制如何实现的?
12、使用zk做服务注册和发现中心,具体实现流程?
13、zk的一致性算法?(原理)
14、针对游戏客户端登录服务器的问题,每个客户端进行登录都要先去服务端申请id,当出现大量客户同时登录如何处理,当登录失败如何处理,如何提高id申请的可用性解决方案?
15、假设针对上述问题失败率从10%降到了1/1000,但是还是存在失败概率,你如何去处理呢?
16、对 RPC 压力测试的具体实现过程;
17、假设有3台服务器,性能比为 1: 2: 3 ,设计一个负载均衡算法能合理进行负载均衡?
18、针对每个接口,业务执行的时间在某一个范围之内随机跳动,你如何去设计负载均衡算法?
19、反问
1、自我介绍
2、能说一下你对实习的期望是什么?
3、你的职业规划?
4、说一下遇到的困难或者挑战,如何解决的?
5、你认为你刚刚说的困难,假设现在回想一下,有没有什么措施能避免或者降低带来的影响?
6、在项目开发过程中有遇到过团队内意见不一致的情况吗,最后如何解决的?
7、为什么选择携程?
8、你目前投了其他公司吗,有其他公司的offer吗?
9、给你offer你会来吗?
10、介绍部门业务和情况还有实习工资、转正情况等;
11、反问
主管面,全是为什么?为什么?为什么????(全程50多分钟)
1、自我介绍
2、介绍第一个项目
3、Socket和Netty的区别
4、为什么Netty更优呢?Socket为什么
5、为什么非阻塞式的会更优呢,阻塞之后不是会让出CPU资源吗?
6、一致性哈希算法优点,为什么会出现不平衡,如何解决,和其他几种负载均衡算法是否是均匀的分配?
7、一个Java程序是多进程还是单进程,为什么一个Java程序不能使用多进程?
8、Redis为什么比MySQL快?
9、MySQL基于什么语言实现的呢?
10、Redis有什么高效的数据结构?所以说SDS优点?
11、Redis是单进程的,为什么设计成单进程?假设我把MySQL数据不多,设计成基于内存的,那它和Redis哪个快?为什么?????,单线程不是吞吐量更低吗?为什么还会比MySQL多线程更快???
12、说一说GC?(能讲多少讲多少)
13、说一说复制算法和标记整理算法的区别?为什么新生代要用复制算法而不用标记整理,标记整理为什么比复制算法多个步骤,为什么当我把存对象移动到一端之后,不使用一个地址表之类的直接做个指定地址范围回收,这样不是更高效?
14、算法题,给定一个kvs数组,格式为:k1,v11,k2,v21,v22,k3,v31,v32,v33,...,kn,vn1,...,vnn
,指定 key
,当 key
存在返回对应的下标,不存在返回 -1
。要求空间 O(1)
时间 O(logn)
最优。
15、反问
1、自我介绍
2、介绍项目
3、项目中用了哪些Redis的数据结构?
4、为什么用Redis做缓存?
5、多线程好还是单线程好?为什么Redis单线程反而更快呢?
6、Redis是完全单线程的吗?
7、能简单说一说Nio吗?
8、Nio如何提升效率的?
9、什么是内核态和用户态?
10、项目中的缓存雪崩、缓存穿透的情况和处理?
11、布隆过滤器是什么?
12、布隆过滤器的缺点?
13、当布隆过滤器错误过比较高如何进行优化?
14、ES在项目中怎么使用的?
15、ES和MySQL如何进行技术选型?
16、当前系统的峰值?
17、系统的吞吐量的瓶颈是什么?
18、通过什么方式去提升数据库的能力?
19、为什么选择RabbitMQ?
20、RabbitMQ和Kafka有什么区别?
21、RabbitMQ消息堆积的情况?
22、说一下Map(HashMap1.7、1.8,ConcurrentHashMap1.7、1.8)
23、算法题:矩阵旋转
24、什么时候能入职
25、反问
1、自我介绍
2、介绍一下项目
3、知道哪些比较成熟的RPC框架?
4、你的RPC和Dubbo对比有哪些区别(优缺点)?
5、差距点在哪?
6、哪种序列化方式损耗的性能最低?为什么?
7、粘包拆包怎么解决?
8、说一说Netty的原理?
9、三种线程模型如何选型?主从多线程模型一定更快吗?
10、并发量小就不能用多线程模式吗?
11、两个节点有海量数据传输用哪种线程结构?(把他拆成多线程去传输还是什么,怎么选型?)
12、TPS压测,了解过哪些系统指标?(CPU切换频率、连接数等)
13、写一个多线程的生产者消费者
14、算法:用栈实现队列
15、一个类两个方法,方法A有注解,方法B调方法A,注解能生效吗?
16、JVM的线程状态和操作系统的进程状态的主要区别是什么?
17、知道ThreadLocal吗?有什么坑?(内存泄漏,InheritableThreadLocal)
18、设计模式问题:开闭原则、依赖倒置?举例,怎么实现等等
19、讲讲自己的职业规划
20、平常怎么学技术的
21、你的老师和同学怎么评价你的?
22、有哪些不足?
23、反问
1、父母工作情况;
2、本人情况;
3、是否独生子女;
4、将来工作地点;
5、女朋友在哪工作,做什么的?
6、目前有哪些offer?为什么不选择其他offer呢?
7、如何看待拼多多的工作时间?可以接受吗?
8、父母能接受来上海工作吗?
9、比较看重拼多多什么?
10、实习时间大概是多少?
11、为什么没有投阿里、腾讯这些公司?为什么不选择小红书、B站这些公司?
12、转正后对薪资的预算是多少?
13、反问。
1h7min
1、自我介绍
2、第一个项目遇到的难点以及如何解决的?
3、当客户端掉线一段时间再连上来,心态机制还存在吗,或者说是怎么一个过程?
4、当A调用B服务,B服务假设有10台节点,当其中一台宕机了,怎么做的服务调用的可靠性?(失败重试,本地服务列表缓存监听)
5、有了解过市面上一些比较成熟的RPC框架吗?比如Dubbo、gRPC之类的。
6、Dubbo默认使用的是Hessian2序列化算法,你知道实现原理吗?
7、实现一个RPC框架最主要看重哪些点?是自己实现的还是小组一起做的?
8、性能压测是怎么实现的?
9、介绍一下第二个业务项目最有亮点的模块?
10、分布式事务怎么实现的?(本地消息表+MQ)
11、订单结构怎么设计的,考虑什么因素?
12、假设当有人支付成功后立马又发起了退款,并且还没有完成分布式事务,如何处理,订单状态应该如何修改?(新增退款中状态)
13、消息重复消费怎么避免?
13、当有人恶意使用脚本多台机器多个账号去进行抢购,达到一个十几万的并发量,如何应对做限流措施?(令牌桶)
14、抢购业务中的难点以及如何解决的?
15、整个项目的架构怎么设计的,怎么考量的?做了分库分表之类的操作吗?
16、你订单的id号是根据什么生成的?
17、ISO七层模型
18、TPC的三次握手和四次挥手
19、五种IO模型
20、进程和线程的区别
21、创建线程的几种方式
22、线程池的创建方式?你平时用哪种?你怎么考虑核心线程池个数和最大线程池个数的?
23、多线程下的并发安全如何实现?
24、ThreadLocal的原理,如何避免内存泄露?
25、MySQL的事务机制
26、分布式事务实现有哪几种协议?
27、ArrayList、HashMap、ConcurrentHashMap
28、反问
35min
1、自我介绍
2、聊了一下个人情况
3、MySQL的索引,为什么不使用哈希等算法?
4、MySQL的行锁和表锁(详细)
5、第一个项目为什么要做Netty、Socket和Http三种方式呢?
6、针对项目的缓存穿透业务怎么做的?
7、布隆过滤器原理和作用
8、又开始闲聊
9、未来的发展方向
10、有没有实际企业开发经验啥的
11、平时怎么学习,有没有技术博客
12、反问
25min
1、针对前面两轮面试,自己的评价
2、前两轮面试有没有问到针对底层源码的内容,答得怎么样?
3、简单介绍下项目,针对自己的两个项目,有什么提升和优化的地方
4、来实习自己觉得可能遇到的最大的挑战
5、简历上的自我评价,同学对你的评价、女朋友对你的评价,女朋友在哪工作?
6、为什么选择在杭州工作?
7、为什么选择去东北大学?
8、现在的学校有没有达到你当初的预期?
9、自己的这种性格可能对工作有什么好处和坏处?
10、应聘的岗位对自己有什么吸引力?
11、实习时长是多少?
12、反问
1、自我介绍
2、静态方法和非静态方法的区别?
3、final、finally 和 finalize 区别和具体用法?
4、try catch 通常什么情况下会用到?
5、死锁了解吗?
6、同步和异步的区别?
7、项目中哪些地方使用到了异步?
8、多线程对同一个资源的访问如何控制?
9、socket的通信流程是什么?
10、TCP和UDP的区别是什么?
11、负载均衡算法怎么实现的?
12、操作系统了解多少?常用的Linux命令有哪些?
13、Linux文件的权限有什么,怎么给用户分配权限?
14、算法题(金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出)。
15、设计模式了解吗?项目中哪些地方用到了设计模式。
16、反问
1、自我介绍
2、毕设题目是什么,怎么确定的?对自己未来的就业岗位有什么帮助?
3、说一说参加过的比赛
4、平时间如何学习新技术?
5、怎么看待自己研究的内容和工作内容直接的联系?
6、有没有投过其他公司?互联网公司和华为文化的异同,如何看待?
7、互联网公司的培养和华为之间的异同?
8、自己未来的职业规划是什么?
9、为什么选择做后端?
10、为什么选择保研到现在的学校?
11、反问
1、自我介绍
2、挑选项目中的一个模块来讲使用到的技术、遇到了什么问题已经如何解决?
3、项目中的分布式事务控制如何实现的?
4、消息丢失的情况如何处理?
5、MQ支持事务消息的流程如何实现的?
6、RabbitMQ的消费模式。
7、消费的模式是推模式还是拉模式,两者的区别和优缺点?
8、HashMap的扩容流程?
9、为什么要求容量为2的幂次方,扩容过程中是头插法还是尾插法?
10、使用HashMap实现LRU。
11、说一下G1。
12、有没有jvm调优的实战经验
13、算法题
14、反问
1、自我介绍
2、介绍一下客户端向服务端发起远程过程调用的完整流程
3、为什么使用Netty来做网络通信?
4、说一说Netty高性能、低延迟的具体实现?
5、序列化算法的指标,几种序列化算法的区别和实现?
6、自定义通信协议的优缺点?
7、和当前主流的rpc框架的对比?
8、dubbo的特性?
9、dubbo的SPI如何实现的?
10、服务容灾如何实现的?服务雪崩如何处理?
11、服务列表缓存如何做的?缓存的数据不一致怎么解决?
12、介绍一下第二个项目
13、什么是幂等性,如何实现幂等性,项目里使用什么方法做的?
14、之前有没有实习过?
15、ThreadLocal的实现原理
16、undo log 和 redo log 的作用
17、MVCC的实现原理
18、反问
1、自我介绍
2、介绍一下第一个项目
3、序列化的指标,各种序列化算法的比较以及实现原理
4、一致性哈希怎么实现的
5、Netty的优点,原理,NIO和BIO的区别,什么是IO多路复用,实现原理?
6、Netty‘的线程模型
7、Netty的零拷贝
8、标记接口有哪些
9、final关键字的作用
10、有哪些并发安全的集合
11、ConcurrentHashMap实现原理
12、垃圾回收算法有哪些?
13、静态变量存放在哪里?
14、反问
1、自我介绍
2、介绍实习经历
3、如何快速上手实习工作
4、实习过程中遇到最棘手的问题,如何解决的?
5、挑一个最熟悉的系统介绍一下系统的整体架构
6、对当前数据库的设计觉得有什么不足或者可以改进的地方
7、当前的数据是分库分表吗?怎么做的?分库分表的路由规则是什么?
8、分库分表需要考虑什么问题?如何解决?
9、如何实现唯一id?雪花算法的实现原理?不同机房的数据库如何实现分布式id(Redis也不同)?
10、公司单张表最多的数据量是多大?
11、拥塞控制原理?流量控制原理?有哪些限流算法,分别介绍,漏桶算法和令牌桶算法的区别?
12、执行一条SQL的具体流程和原理?
13、知道哪些存储引擎,Innodb和Myisam的区别是什么?
14、公司里面的MySQL用的是什么存储引擎,是什么隔离级别?有没有进行修改?
15、目前电商很多都把隔离级别设置为了读已提交,为什么这样设置,优缺点?你们公司的是什么级别?
16、MVCC是什么,解决了什么问题?如何实现?
17、算法题:接雨水(最优解法)
1、自我介绍
2、拼多多的实习经历
3、如何实现的序列化反序列化,自定义通信协议以及完整的传输流程
4、NIO、BIO、AIO的区别
5、Netty和NIO之间有什么关系
6、订单业务主要做了什么?
7、如何防止超卖和重复购买的?如何保证秒杀过程中Redis和MySQL的库存一致性?[参考方案](
8、当一张优惠券去同时去购买两个课程,如何保证优惠券不会被重复使用?(分布式锁)
9、index(a,b,c),查询 a=1,c=1,b=1
什么情况,a=1,b>1,c=1
情况(是从a下的所有b都找还是有优化),a>1
呢?
unique_index(a,b,c)
EXPLAIN SELECT * FROM
abcd
WHERE a > 1; # key_len=5EXPLAIN SELECT * FROM
abcd
WHERE a = 1 AND b > 1 AND c = 1; # key_len = 10EXPLAIN SELECT * FROM
abcd
WHERE a = 1 AND b = 1 AND c > 1; # key_len = 15EXPLAIN SELECT * FROM
abcd
WHERE a = 1 AND b = 1 AND c = 1; # key_len = 15
10、怎么查看一条语句是否走了索引
11、extra 字段中的 using index
和 using where
的区别?
12、Java和C++有什么区别?
13、以下代码运行结果
void test(int a) { a++; } Integer a; test(a); System.out.println(a);void test(int a) { a++; } Integer a = 0; test(a); System.out.println(a);
14、算法题:剑指 Offer 46. 把数字翻译成字符串
15、反问
1、自我介绍
2、介绍一下自己的第一个项目的亮点(可以体现你技术的)
3、如何实现序列化的,序列化的原理是什么,为什么要序列化
4、自定义通信协议和传统的TCP通信有什么区别?
5、自己是如何解决粘包半包的?
6、Netty 和 Nio,为什么要使用Netty。
7、如何保证缓存数据一致性,实现缓存的原理,缓存使用的更新策略
8、出现不一致的情况如何处理,如何提高缓存的命中率
9、缓存击穿的原理以及如何去避免
10、介绍第二个项目的亮点
11、如何保证订单和支付记录的状态一致性?
12、对于一个支付系统而言,如何使其达到强一致性?(同一把分布式锁)
13、算法题,最大峰值流量
14、反问
1、自我介绍
2、介绍实习经历
3、详细叙述一下任务调度系统,以及具体做了什么?
4、SQL优化怎么实现的,出现慢查询的原因是什么?
5、订单系统中为什么要使用缓存?数据库压力大的表现是什么?
6、如何保证缓存一致性问题的?
7、订单异步削峰如何做的,线程池如何消费的,针对订单失败如何做的?
8、订单失败,使用本地消息表处理的缺点是什么?使用死信队列怎么做?
9、订单失败如何给用户进行反馈的?
10、当有大量失败订单,如果让你来设计如何去调度处理,你会怎么做?
11、算法题:逆序对数量
1、自我介绍
2、介绍第一个项目
3、zookeeper和nacos做配置中心有什么区别?
4、项目中超时调用,超时时间是如何设置的,怎么实现的?
5、远程过程调用的过程是同步还是异步进行的?
6、项目中使用的网络通信模型是什么,具体原理?
7、服务端这边如何去处理请求的?
8、Netty的时间轮?
9、项目中的线程池使用什么方式创建的,线程池参数?线程池的工作原理,max-core的线程如何回收的?
10、当线程池队列满了新任务到来会发生什么?
11、线程池的额外线程如何销毁?
12、tcp连接,当客户端断开连接会发生什么?
13、Timewait状态是什么,为什么要有这个状态?
14、Timewait状态过多会导致什么问题?
15、Integer a = 128, b = 128; a == b ?
16、两张表,学生表和课程表,求每个学生所有课程都小于60分的学生信息;
17、表 table tb(a, b, c), index(a), index(a,b)
,sql语句 select * from tb where a > 123;
执行过程。
using index conditoin
意味着查询列的某一部分无法直接使用索引。
explain select * from tb where a = 123; // key_len=5, NULL explain select * from tb where a > 123; // key_len=5, using index condition explain select * from tb where a > 123 and c = 100; // key_len=5, using index condition, using where explain select a from tb where a = 123; // key_len=5, using index explain select * from tb where c = 100; // key_len=NULL, using where explain select a from tb where a > 123; // key_len=5, using where, using index(使用索引a定位到第一个满足的位置,然后再从当前位置一直往后找到所有满足的索引)
18、假如结果有100条数据,服务层调用了多少次?
19、JVM调优
20、垃圾回收算法有哪些,你项目中用的是什么?
21、内存分配的方式有哪些?
22、卡表是什么?
23、jvm内存区域中哪些不会发生oom?
24、永久代为什么要变成元空间移到堆外内存中?
25、Redis有哪些用途?缓存一致性这么做的?
26、跳表的实现原理是什么?
27、8个球,一个更重,一个天平需要称几次能找到?
28、算法题:最长有效括号
29、反问
1、自我介绍
2、介绍第一个项目,做这个项目的背景是什么?
3、本地方法调用和远程过程调用有什么区别?
4、服务降级和服务熔断怎么实现?
5、服务链路追踪怎么实现?
6、压测这么做的?
7、一致性哈希算法如何实现的?他和普通的哈希算法有什么区别?一致性哈希在rpc调用中适合什么场景?
8、面向对象设计原则是什么?开闭原则在实际开发中可以实现吗?
9、说出了解的设计模式?
10、多个线程的执行结果如何进行汇总?
11、实习所做的内容以及最大的难点和挑战?
12、实习过程中收到的负反馈?如何去解决?
13、实习过程中有什么可以提升或者觉得没做好的地方?
14、团队合作发生意见不合时怎么解决的?
15、多个骑手抢一个订单,怎么保证线程安全?
16、反问
1、自我介绍
2、在校期间的项目经历,实习经历和竞赛经历;
3、选择offer看重什么;
4、能不能提前去实习;
5、现在还有哪些流程;
6、实习期间收获到了什么?
7、反问