-
自我介绍
-
口述反转链表的实现
-
说说 Lambda 表达式
-
缓存雪崩,缓存击穿,缓存穿透
-
缓存一致性
-
Redis 的持久化机制
-
MySQL 的语句执行顺序
-
事务隔离级别以及 MVCC 实现原理
-
事务失效的场景
-
CAS 以及存在的问题
-
SpringBoot 自动装配原理
-
AOP 应用
-
说说 SpingBoot 在开发中的常见注解
-
JVM 的类加载机制
-
RabbitMQ 的五种工作模式
-
挖项目(25 min 左右)
说说项目的架构以及技术选型,细节方面(Gateway 网关,RPC 框架,SDK 的开发步骤)——API 项目
如何实现的滚动分页查询,简单说说分布式锁实现原理,RabbitMQ 异步下单,如何解决缓存击穿——点评项目
-
无重复字符的最长子串
-
买卖股票的最佳时机
-
HTTP 0.9 ~ HTTP 3.0 的发展历程
-
HTTP 和 HTTPS 的区别
-
OSI 七层模型是什么
-
TCP 与 UDP 的区别
-
虚拟内存
-
进程间的通信方式
-
进程和线程的区别
-
JVM 的类加载机制,并说说每个类加载器加载什么
-
JVM 的内存区域
-
synchronized 的实现原理
-
反问面试官问题
-
Sping 和 SpringBoot 区别
-
说说自动装配的原理
-
Bean 的生命周期
-
缓存击穿和缓存雪崩以及对应的解决方法
-
什么场景下使用分布式锁,设计一个分布式锁(参数以及实现过程) redis 底层如何实现的分布式锁
-
说说平常设计数据库表的字段
-
数据库的索引数据结构
-
B+Tree 索引的底层原理以及是如何保证平衡的
-
ThreadLocal 的使用场景以及常见问题
-
内存泄漏如何排查
-
young GC和Full GC 的区别以及为什么这样设计
-
https 实现原理(SSL 认证过程)
-
POST 和 GET 请求的区别,POST 和 PUT 请求的区别(以及什么情况下使用 POST,PUT,GET)
-
说一说什么是幂等性,产生幂等性的场景,以及幂等性的解决方案(例如交易订单的幂等性问题,需要什么字段)
-
支付宝在支付的时候,最开始余额不够,支付下单失败,后来转入钱后就可以下单,让我如何解决这种幂等性问题(大概这意思,当时忘录音了)
-
项目遇到的问题?
-
zookeeper 和 nacos
-
分布式锁(深挖)
-
Zset 的底层数据结构是什么?底层实现原理,跳表
-
Redis 持久化机制
-
缓存一致性
-
为什么用滚动分页
-
深度分页
-
MySQL 原子性
-
MySQL 间歇锁
-
回表概念
-
索引下推
-
联合索引的最左前缀匹配
-
创建(a,b,c)联合索引,where a > 0 and b = 0 and c < 0。这种情况是走a索引回表之后判断b和c,还是走 ab 索引或者走 abc 索引?
-
Sping 中事务使用场景
-
Stram 流的 filter
-
Spring 初始化 bean 的三种方式
-
设计模式了解过哪些,说说策略模式
加快,就可以从索引覆盖、聚集索引、二级索引切入了)
25.什么情况下需要建索引
通过慢查询判断 sql 慢的时候
26.慢查询指令说一下
show variables like '%slow_query_log';
27.查询单条 sql 是否走索引应该用什么关键字
explain
28.数据库的锁说一下
行锁、表锁、全局锁。共享锁、排他锁、意向锁。
update、delete、insert、select for update 加排他锁,select lock in shard mode 加共享锁,普通 select 不加锁
29.开发的时候什么情况下会产生锁和锁冲突
行锁、意向锁、表锁、共享锁、排他锁
参考回答:
在 MySQL 中,当一个事务正在对一行数据进行修改时,如果另外一个事务也要对该行数据进行修改,就会产生锁冲突。此时,MySQL 会自动给其中一个事务加锁,使其等待另一个事务执行完毕后再继续执行。产生锁和锁冲突的情况如下:
-
行锁冲突:当多个事务同时修改同一行数据时,就会产生行锁冲突。
-
表锁冲突:当多个事务同时修改同一张表的不同数据行时,也会产生表锁冲突。
-
死锁:当多个事务同时持有资源(如行锁或表锁)并互相等待对方释放资源时,就会产生死锁。
其他情况:如使用 LOCK TABLES 等语句主动加锁时也会产生锁。
为避免锁和锁冲突,开发人员应该尽量避免使用不必要的锁,避免长时间占用资源,并合理设置事务隔离级别等参数,保证事务的正确性和并发性。
30.后端的性能优化有哪些方面?从影响性能的方面考虑一下。上线之后有一个接口响应特别慢,从哪里开始排查,有哪些切入点
完全不了解
参考回答:
后端性能优化可以从以下几个方面考虑:
-
数据库性能优化:对 SQL 语句进行优化,增加索引,减少锁的使用等;
-
系统配置优化:优化服务器硬件配置,调整操作系统参数,合理分配资源等;
-
代码质量优化:消除代码中的资源浪费,减少重复计算,优化算法等;
-
缓存优化:增加缓存机制,减少 IO 操作,加速数据访问等;
-
并发控制优化:采用线程池,减少线程上下文切换,采用锁的优化机制等;
对于一个接口响应特别慢的问题,可以从以下几个方面排查:
-
查看系统日志,分析是否存在异常,如是否有大量的 GC、OOM 等情况;
-
使用监控工具对系统 CPU、内存、IO 等指标进行监控,查看是否存在性能瓶颈;
-
查看数据库执行计划,分析 SQL 语句的性能;
-
对代码进行分析,查找是否存在死循环、重复计算、资源浪费等情况;
-
查看系统线程的情况,是否存在线程池拒绝服务等情况。
针对性能问题,可以从以上方面入手,逐步定位问题,并进行优化。
31.什么时候用缓存?Redis 是什么数据库?数据存在哪里
性能优化的时候可以考虑使用缓存,举例子;nosql;内存,也可以持久化,aof,rdb
32.如何从业务逻辑角度进行优化
其实提示我了,可以从 redis 的穿透、穿刺、雪崩三个角度去讲,也可以从 sql 的索引优化去讲。可惜当时还是太紧张了
33.java的业务逻辑实现在哪一层
service层
34.service 层的代码怎么去优化,怎么方式去写会有性能问题
完全不理解
参考回答:
-
mysql 数据量大怎么进行优化
分库分表,没背
参考回答:
-
git 出现代码冲突怎么处理 没了解
参考回答:
-
git 和 sdk 的区别 没了解
参考回答:
-
git 的分支什么时候用 开发、测试、上线不同的分支发布
-
说一下 springcloud 的理解,说一下 springcloud 和 spring boot 的理解
没了解,回答了 springcloud 是分布, springboot 是单体,讲了 springcloud 用了 nacos、feign、gateway 组件
参考回答:
40.我们什么时候使用 springcloud
没了解
参考回答:
41.说一下mp
说了简单模式、工作队列模式、发布订阅、路由模式、通配符模式
42.有没有关注技术网站
掘金
43.码云和 github 是否有关注
有,但是不多
44.前端有了解过吗?vue 了解吗
不了解,html 有用过,js 用过一下
-
问对哪个项目熟悉,为什么想要用java去写关系型数据库?
-
这个数据库体现了Spring的事务传播机制吗?
-
可重复读,已提交读,这两个隔离级别表现的现象是什么,区别是什么样的?
-
数据管理里,数据文件大体分成哪几种数据文件?
-
日志文件是分成了哪几种?
-
说下MVCC机制的原理?
-
索引的类型有哈希索引,B+树索引,而hash索引的时间复杂度是o1,那为什么我们一般情况下不使用哈希索引,而使用b+树索引呢?
-
对一个慢sql怎么去排查?
-
索引字段是不是建的越多越好?
-
java这一块对框架都是熟悉的吧?
-
MyBatis运用了哪些常见的设计模式?
-
MyBatis中创建了一个Mapper接口,在写一个xml文件,java的接口是要实现的,为什么这没有实现呢?
-
与传统的JDBC相比,MyBatis的优点?
-
还记得JDBC连接数据库的步骤吗?
-
怎么理解SpringIoc?
-
如果让你设计一个SpringIoc,你觉得会从哪些方面考虑这个设计?
-
Spring给我们提供了很多扩展点,这些有了解吗?
-
servlet有写过简单的代码吗?
-
大致了解SpringMVC的处理流程吗?
-
Handlermapping 和 handleradapter有了解吗?
-
SpringAOP主要想解决什么问题
-
SpringAOP的原理了解吗
-
动态代理和静态代理的区别
-
代理模式和适配器模式有什么区别?
-
java线程的生命周期有了解吗?
-
使用多线程要注意哪些问题?
-
保证数据的一致性有哪些方案呢?
-
线程池有了解吗?线程池大概的原理?
-
ArrayList和LinkedList有什么区别
-
对面向对象的理解?
网络
-
http协议的报文的格式有了解吗?
-
http常用的状态码?