25年12月天阳科技Java后端开发工程师 一面

1. String a="test" 和 new String("test"),a==b 和 a.equals(b) 结果?

思路

核心区分“字符串常量池”和“堆对象”,讲清==(地址)和equals(内容)的本质。

回答示例

面试官您好,结果分两种:

  • a == b:结果是false。因为a指向字符串常量池里的"test"对象,new String("test")会在堆里新建一个对象,b指向堆对象,两者地址不同;
  • a.equals(b):结果是true。因为String的equals重写过,比较的是字符串内容,两者内容都是"test"。

补充:如果执行b = b.intern(),再比较a==b就会是true,因为intern()会把堆字符串引用指向常量池。

2. final、finally、finalize 三者区别?

思路

从“用途、归属、执行时机”三个维度区分,避免混淆。

回答示例

三者完全不同,核心区别:

  1. final:关键字,修饰类(不能被继承)、方法(不能被重写)、变量(赋值后不可改);
  2. finally:异常处理关键字,try-catch-finally块里的部分,除非JVM崩溃(如System.exit(0)),否则必执行,常用于释放资源;
  3. finalize:Object类的方法,GC回收对象前会调用(不保证执行时机),用于清理非堆资源(如文件句柄),已被标记为过时。

3. ArrayList 与 LinkedList 底层结构及适用场景?

思路

对比底层结构,结合“增删改查”效率说场景,直观易懂。

回答示例

底层结构

  • ArrayList:动态数组,底层是Object[]数组,扩容时复制新数组;
  • LinkedList:双向链表,每个节点存数据+前后节点引用。

适用场景

  • ArrayList:适合随机访问(get/set)多的场景(如按索引查数据),数组下标访问效率O(1);
  • LinkedList:适合频繁增删(非首尾) 的场景(如中间插入/删除),链表修改只需改引用,效率O(1);

注意:LinkedList首尾增删也高效,但随机访问效率O(n),远不如ArrayList。

4. HashMap 扩容机制?JDK1.8 为何链表超8转红黑树?

思路

先讲扩容核心规则,再解释红黑树的性能考量(统计规律+效率平衡)。

回答示例

扩容机制(JDK1.8)

  1. 初始容量16,负载因子0.75,当元素数≥容量×负载因子(如16×0.75=12),触发扩容;
  2. 扩容后容量翻倍(16→32),重新计算每个元素的哈希槽位,JDK1.8做了优化,槽位要么留在原位置,要么移到“原位置+旧容量”位置;
  3. 扩容时如果链表长度≤6,红黑树会转回链表。

链表超8转红黑树的原因

  • 哈希冲突的链表长度遵循“泊松分布”,长度超过8的概率极低(约0.00000006);
  • 链表查询效率O(n),红黑树查询O(logn),当链表过长时,转红黑树提升查询性能;
  • 阈值设8而非更小,是避免频繁树化/退化(树化有额外内存开销),平衡性能和内存。

5. ConcurrentHashMap JDK1.7 与 1.8 实现差异?

思路

从“锁机制、数据结构、并发度”三个核心维度对比,突出1.8的优化。

回答示例

维度

JDK1.7

JDK1.8

锁机制

分段锁(Segment),每个Segment是ReentrantLock

CAS + synchronized,锁粒度降到单个哈希桶

数据结构

Segment数组 + 哈希桶数组 + 链表

哈希桶数组 + 链表/红黑树

并发度

取决于Segment数量(默认16),最多16线程并发

理论上无上限,只要访问不同桶就无锁竞争

扩容

分段扩容,每个Segment独立扩容

整体扩容,迁移时用CAS+自旋

核心优化:1.8去掉分段锁,锁粒度更小,并发效率更高,还引入红黑树提升查询性能。

6. 线程创建方式?Runnable 与 Callable 区别?

思路

先讲线程创建的3种方式,再聚焦Runnable和Callable的核心差异(返回值、异常)。

回答示例

线程创建方式(3

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏在精不在多,内容分为八股文、大厂真实面经,面试通过后将offer和面试题私发给我,可退还专栏的收益部分费用。欢迎大家共建专栏

全部评论

相关推荐

📍面试公司:中科星图🕐面试时间:2026.4.29💻面试岗位:前端日常❓面试问题:1.自我介绍2.刚才你介绍就是在学校也学习了这个前端三件套,那你能介绍一下对于Vue3你的一个理解和学习的情况吗3.那你了解这个ts和js它有什么不一样吗?你使用过ts吗,还是用js更多4.vue3组件通信的主要形式(回答了父子props,Pinia,事件总线)5.你的项目有对接实际接口吗,前后端联调一般是什么样的过程,会出现什么问题,出现问题怎么解决?(说了axios发起请求那一套)6.RAG医疗系统项目的智能体UI交互机制具体怎么做的7.你现在常用的编程工具主要有哪几种,介绍使用体验(trae,cursor,codex)8.你了解AI工作流吗(回答了问题重写,子查询拆分,检索生成,MCP,skills那一套)场景题(这种之前没怎么遇到过,回答的不好):9.我们现在这个视频面试的这个页面,如果你拿到这样的一个设计图,你要实现这个咱们目前视频这个会议上展示这种效果,你是一个什么样的一个实现思路?10.那比如说我们具体要实现这个布局,你会采用哪种CSS写法来实现这个布局?11.那比如说我们最底部相当于左边有一个视频,有一个这个说话的这个话筒,这个然后中间是一些功能,比如说共享参加会议,然后有最右边是一个离开会议,那我要实现这样一个布局,你用CSS 要怎么实现?12.那比如说有这个需求,目前就是说给你了,就比如说让你做这个底部中间这个功能,让你实现这个页面,那你比如说你现在说可能有些CSS不是说太深入掌握的,那你怎么解决这种情况?(因为上面我被拷打的有点晕,实在不知道这个应该怎么实现,然后我说的是问AI查资料)13.那比如说你要拿到这个需求,你去问AI的话,你的提示词,你比如说现在你就需要你来问这个AI了,你的提示词是什么?14.那比如说咱们底部这个,就这个需求你自己要问他的时候,你会怎么组织语言,把这个需求描述给他?反问1.面试评价基础知识和AI掌握的还行,CSS欠缺一些(说实话我没怎么手敲过代码,全vibe coding了,代码手写能力巨差...)业务测雨雷达相关的一些项目,水利行业工作时间早8:30-晚18:30,偶尔大小周🙌面试感想:感觉还是有很多不会的啊...
查看14道真题和解析
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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