美团成都saas一面(寄)
2024.03.25
大部分忘了,常规八股多,但是问的很广。redis,mysql,jvm,juc,设计模式等
算法:无重复最长子序列(没写出来,寄。我算法废物,多半因为这个挂)
很多常规八股,还记得的大概有:
1.mysql底层怎么去执行的sql的
连接器->查询缓存->解析器->预处理器->优化器->执行器->返回结果
2.orderby走不走索引,需要注意什么
3.volatile能不能保证原子性,为什么
只能可见性和有序性
4.说一下知道的垃圾回收器;cms哪个阶段暂停(stw)
初始标记,重新标记
5.优化项目中的大量if else用什么设计模式
创建不同类就用工厂模式,执行不用方法逻辑就策略模式
6.双重检查锁定的单例模式为什么要双重检查
A线程拿到锁但未创建完成,B线程也进入第一个逻辑块。A线程此时创建完成释放锁,B由于先前绕过了第一个检查块,立马去获取锁并成功。如果没有第二次检查,B又会再去创建一个实例对象
7.java IO模型。select,poll,epoll底层是什么数据结构,为什么select限制1024而poll不限制,如何改进的
8.数组为什么就是比链表遍历快
9.什么时候对象会到老年代(答了第16次到老年代以及大对象到老年代他问还有没有)
S区空间不足也会提前过去
10.jvm优化调参命令
11.一个请求的全过程(从DNS说到SpringMVC)
12.为什么不二握,为什么不三挥
13.redis分布式锁实现方式以及可能出现的问题
14.从AOP角度说一下@Transaction可能失效的情况以及原因(cglib子类继承方式代理无法代理私有方法)
15.说一下ThreadLocal
16.java是引用传递还是值传递
17.慢查询explain分析的时候,type和extra出现什么内容表示不太优
Type:从最优到最差的顺序如下
system: 表只有一行数据(实际上可能没有这样的情况)。
const: MySQL使用索引查找行,最多返回一个匹配的行。如果表中有多个匹配行,则不会使用此类型。
eq_ref: 对于每个来自前面的表的行,使用索引搜索当前表。
ref: 对于每个来自前面的行,使用索引进行访问。
fulltext: 全文索引查找。
index_merge: 使用两个或更多的索引来返回结果集。
unique_subquery: 内层表使用IN子查询,外层表使用const。
index/subquery: 内层表使用IN子查询,外层表使用ref。
range: 数据仅检索索引的一部分。
index: 数据检索整个索引。
ALL: MySQL对整个表进行全扫描。
Extra:
Using temporary: MySQL需要创建一个临时表来存储结果集。这通常是因为排序或分组操作。
Using filesort: MySQL需要对结果进行额外的排序操作,通常是由于排序或LIMIT语句。这通常发生在不能完全利用索引的情况下。
Using index:使用索引覆盖的情况下,执行计划的 extra 会显示为 Using index
Using index condition:查询数据时如果使用 index condition down 索引条件下推就会在执行计划的 extra 字段中出现 Using index condition;。
Using where:就是前面说的 MySQL 服务层可以把属于索引的一部分但又无法使用索引的条件下推到存储引擎层,而其他条件还是得在 MySQL 服务层应用来过滤存储引擎层返回的数据。当出现这的情况,执行计划的 extra 字段就会出现 Using where;,它可以和 Using indext; 一起出现,也可以和 Using index condition; 一起出现。
18.多线程为什么会出现并发问题(JMM角度答了下)
19.AtomicInteger原理
cas
20.垃圾回收里面的安全点,代码进不了安全点怎么办
安全点的作用
安全点是一个可以被JVM暂停执行的位置,在这个位置上所有线程都会达到一致的状态,这样GC操作就可以安全地发生而不会干扰程序的正常执行。通常情况下,编译器会在诸如方法调用结束、循环体结束等位置插入安全点。
代码无法进入安全点的原因
如果代码无法进入安全点,可能是由于以下几种原因:
非阻塞操作:某些操作如系统调用、I/O操作或者等待锁等,可能会导致线程暂时无法响应JVM的暂停请求。这些情况下,线程可能暂时不在任何已知的安全点上。
长时间运行的操作:如果代码块中包含长时间运行且没有自然暂停点(如循环)的操作,那么就可能需要等待直到该操作完成或者强制中断,这可能会导致GC延迟。
自定义的JNI代码:如果使用了本地方法(JNI)编写的部分代码没有正确实现响应JVM暂停请求的能力,那么这部分代码在执行期间将不会被视为安全点。
N...想起来再补充
大部分忘了,常规八股多,但是问的很广。redis,mysql,jvm,juc,设计模式等
算法:无重复最长子序列(没写出来,寄。我算法废物,多半因为这个挂)
很多常规八股,还记得的大概有:
1.mysql底层怎么去执行的sql的
连接器->查询缓存->解析器->预处理器->优化器->执行器->返回结果
2.orderby走不走索引,需要注意什么
3.volatile能不能保证原子性,为什么
只能可见性和有序性
4.说一下知道的垃圾回收器;cms哪个阶段暂停(stw)
初始标记,重新标记
5.优化项目中的大量if else用什么设计模式
创建不同类就用工厂模式,执行不用方法逻辑就策略模式
6.双重检查锁定的单例模式为什么要双重检查
A线程拿到锁但未创建完成,B线程也进入第一个逻辑块。A线程此时创建完成释放锁,B由于先前绕过了第一个检查块,立马去获取锁并成功。如果没有第二次检查,B又会再去创建一个实例对象
7.java IO模型。select,poll,epoll底层是什么数据结构,为什么select限制1024而poll不限制,如何改进的
8.数组为什么就是比链表遍历快
9.什么时候对象会到老年代(答了第16次到老年代以及大对象到老年代他问还有没有)
S区空间不足也会提前过去
10.jvm优化调参命令
11.一个请求的全过程(从DNS说到SpringMVC)
12.为什么不二握,为什么不三挥
13.redis分布式锁实现方式以及可能出现的问题
14.从AOP角度说一下@Transaction可能失效的情况以及原因(cglib子类继承方式代理无法代理私有方法)
15.说一下ThreadLocal
16.java是引用传递还是值传递
17.慢查询explain分析的时候,type和extra出现什么内容表示不太优
Type:从最优到最差的顺序如下
system: 表只有一行数据(实际上可能没有这样的情况)。
const: MySQL使用索引查找行,最多返回一个匹配的行。如果表中有多个匹配行,则不会使用此类型。
eq_ref: 对于每个来自前面的表的行,使用索引搜索当前表。
ref: 对于每个来自前面的行,使用索引进行访问。
fulltext: 全文索引查找。
index_merge: 使用两个或更多的索引来返回结果集。
unique_subquery: 内层表使用IN子查询,外层表使用const。
index/subquery: 内层表使用IN子查询,外层表使用ref。
range: 数据仅检索索引的一部分。
index: 数据检索整个索引。
ALL: MySQL对整个表进行全扫描。
Extra:
Using temporary: MySQL需要创建一个临时表来存储结果集。这通常是因为排序或分组操作。
Using filesort: MySQL需要对结果进行额外的排序操作,通常是由于排序或LIMIT语句。这通常发生在不能完全利用索引的情况下。
Using index:使用索引覆盖的情况下,执行计划的 extra 会显示为 Using index
Using index condition:查询数据时如果使用 index condition down 索引条件下推就会在执行计划的 extra 字段中出现 Using index condition;。
Using where:就是前面说的 MySQL 服务层可以把属于索引的一部分但又无法使用索引的条件下推到存储引擎层,而其他条件还是得在 MySQL 服务层应用来过滤存储引擎层返回的数据。当出现这的情况,执行计划的 extra 字段就会出现 Using where;,它可以和 Using indext; 一起出现,也可以和 Using index condition; 一起出现。
18.多线程为什么会出现并发问题(JMM角度答了下)
19.AtomicInteger原理
cas
20.垃圾回收里面的安全点,代码进不了安全点怎么办
安全点的作用
安全点是一个可以被JVM暂停执行的位置,在这个位置上所有线程都会达到一致的状态,这样GC操作就可以安全地发生而不会干扰程序的正常执行。通常情况下,编译器会在诸如方法调用结束、循环体结束等位置插入安全点。
代码无法进入安全点的原因
如果代码无法进入安全点,可能是由于以下几种原因:
非阻塞操作:某些操作如系统调用、I/O操作或者等待锁等,可能会导致线程暂时无法响应JVM的暂停请求。这些情况下,线程可能暂时不在任何已知的安全点上。
长时间运行的操作:如果代码块中包含长时间运行且没有自然暂停点(如循环)的操作,那么就可能需要等待直到该操作完成或者强制中断,这可能会导致GC延迟。
自定义的JNI代码:如果使用了本地方法(JNI)编写的部分代码没有正确实现响应JVM暂停请求的能力,那么这部分代码在执行期间将不会被视为安全点。
N...想起来再补充
全部评论
没问实习项目吗
约二面了吗
相关推荐
2024-11-26 00:10
门头沟学院 Java chenxinxu:现在招聘的都学精了,你光学点数据库和中间件做个应用型项目人家看不上,你得有点可以“吹水”的高谈阔论的“高大上”的玩意,比如写点什么“基于分布式 Raft 共识性算法的XXX”balabala 的,然后做了什么详尽的 benchmark 怎么优化的吞吐率性能之类的,看起来就是科研论文研究领域。现在人不都这样吗,他知道的知识都是白菜,他不知道的领域都是高端,找点让大部分人看起来高端的玩意写
点赞 评论 收藏
分享