当前位置:首页>java>突然发现会面试的Java前同事真的好会说啊..

突然发现会面试的Java前同事真的好会说啊..

  • 2026-08-25 09:59:16
突然发现会面试的Java前同事真的好会说啊..

突然发现会面试的Java前同事真的好会说啊..

突然发现会面试的Java前同事真的好会说啊..

很厉害的java同事离职了,跳槽到了一家更好的公司,笔试面试都是一把过,同事人太好了,直接自己总结好的笔试题都给我发来了,大致看了下真的很有用,大四准备找工作或者是想年末跳槽的,可以直接照着背!
.
1、HashMap的扩容机制是啥?JDK1.8做了啥优化?
普通回答:到负载因子就扩容,大概两倍。1.8加了红黑树。
✅高分回答:触发扩容是看元素数量 > 容量 * 负载因子。核心优化有三点:一是数据结构,链表过长(>8)且数组够长(>=64)会转成红黑树,防止超长链表影响查询效率;树节点过少(<=6)时再转回链表。二是插入方式,1.7是头插法(多线程下可能死循环),1.8改成了尾插法。三是扩容算法,1.8通过高位运算(e.hash & oldCap) == 0来判断元素新位置,要么在原下标i,要么在i + oldCap,避免了1.7中全部重新计算哈希,效率更高。
.
2、Spring的@Transactional在哪些常见场景下会失效?
普通回答:异常不对、方法不是public可能会失效。
✅高分回答:失效本质是Spring AOP代理没生效。常见坑有:一是自调用,类里A方法没加注解,调了本类有注解的B方法,这叫“自调用”,事务不生效,因为调用没走代理对象。二是异常被吃了,默认只回滚RuntimeException和Error,如果你在方法里try-catch了异常却没抛出去,或者抛了Exception这种受检异常,都不会回滚。三是方法非public,@Transactional基于代理,对非public方法不好使。四是数据库引擎,比如MySQL用了MyISAM,它本身就不支持事务。
.
3、线上服务CPU突然飙升到100%,你的排查思路是啥?
普通回答:重启一下,或者看看日志。
✅高分回答:这是标准操作题。第一步定位进程和线程:用top找到最耗CPU的Java进程PID,再用top -Hp
[PID]找到这个进程里最耗CPU的线程ID(TID)。第二步看线程在干嘛:把TID转成16进制,然后用jstack [PID]打印所有线程栈,在输出里搜这个16进制ID,就能看到是这个线程的哪行代码、执行哪个方法最吃CPU。第三步结合分析:如果是GC线程疯狂跑,就用jstat -gcutil [PID]看是不是频繁Full GC;如果是业务线程,大概率是代码里有死循环或者计算太密集的逻辑。用Arthas的thread命令能更快定位热点方法。
#java #编程 #计算机专业 #后端开发 #java学习 #java面试 #程序员 #计算机 #前端后端开发 #应届生

最新文章

随机文章