美团成都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...想起来再补充
全部评论
约二面了吗
点赞 回复 分享
发布于 2024-03-26 14:34 四川
没问实习项目吗
点赞 回复 分享
发布于 2024-03-25 22:19 四川

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-21 11:33
昨天是学校最后一场招聘会,鼠鼠去参加了,全场只有一个招聘java的岗位,上来先做一份笔试题,做完后他拿张纸对答案,然后开始问简历上的问题,深圳小厂,6-8k(题目如下),后面还有两轮面试。然后我就在招聘现场逛呀逛,看到有公司招聘电商运营,给的比上年的小厂还多,鼠鼠就去了解了下,然后hr跟鼠鼠要了份简历,虽然我的简历上面全是求职Java开发相关的内容,但是hr还是鼓励我说没关系,她帮我把简历给老板看看,下周一会给我通知。招聘会结束后鼠鼠想了一段时间,也和朋友聊了聊,发现我可能是不太适合这个方向,然后就跟爸爸说回家了给我发条微信,我有些话想跟他说说。晚上爸爸到家了,跟我发了条微信,我立马跑出图书馆跟他打起了电话,这个通话长达一个小时,主要是跟爸爸坦白说我不想找这行了,是你的儿子太没用了,想试试其他行业。然后爸爸也跟我说了很多,说他从来没有希望我毕业后就赚大钱的想法,找不到就回家去,回家了再慢慢找,实在找不到就跟他干(帮别人装修房子,个体户),他也知道工作不好找,让我不要那么焦虑,然后就是聊一些家常琐事。对于后面的求职者呢我有点建议想提一下,就是如果招实习的时间或者秋招开始,而你的简历又很差的情况下,不要说等做好项目填充完简历之后再投,那样就太晚了,建议先把熟悉的项目写上简历,然后边投边面边完善,求职是一个人进步的过程,本来就比别人慢,等到一切都准备好后再投岂不是黄花菜都凉了。时间够的话还是建议敲一遍代码,因为那样能让你加深一下对项目的理解,上面那些说法只是针对时间不够的情况。当然,这些建议可能没啥用,因为我只是一个loser,这些全是建立在我理想的情况下,有没有用还需其他人现身说法。上篇帖子没想到学校被人认了出来,为了不丢脸只能匿名处理了。
KPLACE:找研发类或技术类,主要还是要1.多投 2.多做准备,很多方面都要做准备 3.要有心理准备,投累了就休息一两天,再继续,要相信自己能找到
投递58到家等公司10个岗位
点赞 评论 收藏
分享
评论
7
48
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务