- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
2025年高频java基础面试题及答案
1.面向对象的三大特性是什么?请结合实际场景说明多态的实现机制
面向对象的三大核心特性是封装、继承和多态。封装通过访问控制(private、protected、public)隐藏对象内部状态,仅暴露必要接口;继承允许子类复用父类代码并扩展新功能;多态则指同一行为在不同对象上表现不同形态。多态的实现依赖于方法重写(Override)和动态绑定(DynamicBinding)。例如定义抽象类Animal,包含抽象方法cry(),子类Cat和Dog分别重写该方法。当通过Animal类型引用指向Cat对象时(Animala=newCat()),调用a.cry()会在运行时根据实际对象类型调用Cat的cry()方法,这一过程由JVM通过对象头的类型指针查找方法表(vtable)实现动态分派。
2.抽象类和接口的区别是什么?Java8之后接口有哪些新特性?
抽象类可包含抽象方法和具体方法,有构造方法,子类通过extends单继承;接口只能定义抽象方法(Java8前)或默认方法、静态方法(Java8后),无构造方法,类通过implements多实现。Java8为接口引入default方法(提供方法默认实现,解决接口升级时子类必须重写的问题)和static方法(可直接通过接口名调用);Java9增加private方法(用于封装接口内多个default方法的公共逻辑);Java16引入密封接口(sealedinterface),限制可实现该接口的类。例如:
```java
publicinterfaceMyInterface{
defaultvoiddefaultMethod(){
commonLogic();//调用private方法
}
privatevoidcommonLogic(){
System.out.println(公共逻辑);
}
}
```
3.HashMap的底层数据结构是什么?JDK7和JDK8有哪些主要差异?
HashMap底层采用“数组+链表+红黑树”的复合结构。数组作为哈希表的主干(table数组),每个元素是链表或红黑树的头节点。当插入元素时,通过hash(key)(n-1)计算桶索引(n为数组长度),若发生哈希冲突则以链表形式挂载;当链表长度≥8且数组长度≥64时,链表转换为红黑树(O(n)查询优化为O(logn));当红黑树节点数≤6时退化为链表。
JDK7与JDK8的核心差异:
数据结构:JDK7是“数组+链表”,JDK8引入红黑树;
插入方式:JDK7采用头插法(可能导致扩容时链表反转引发死循环),JDK8采用尾插法(避免多线程扩容的环链问题);
hash计算:JDK7的hash()方法通过4次异或+位移扰动,JDK8简化为(h=key.hashCode())^(h16)(保留高16位参与计算,减少低位碰撞);
扩容条件:JDK7先判断是否需要扩容再插入,JDK8先插入再判断是否需要扩容。
4.说说ArrayList和LinkedList的区别,以及如何选择?
ArrayList基于动态数组实现,支持O(1)时间的随机访问(通过索引定位),但插入/删除元素(非尾部)需要移动后续元素,时间复杂度O(n);LinkedList基于双向链表实现,节点包含prev和next指针,插入/删除元素只需修改相邻节点指针(O(1)时间,若已知节点位置),但随机访问需遍历链表(O(n)时间)。
选择建议:
频繁随机访问(如遍历、按索引查询)选ArrayList;
频繁插入/删除(尤其是中间位置)选LinkedList;
ArrayList默认初始容量10,扩容时新容量为原1.5倍(oldCapacity+(oldCapacity1)),大量数据时需注意扩容开销;LinkedList无容量限制,但节点额外占用内存(每个节点存储两个指针)。
5.解释synchronized的底层实现和锁升级过程
synchronized是Java的内置锁,基于对象头的Monitor(监视器)实现。Java对象头包含MarkWord(存储哈希码、GC分代年龄、锁状态等)和类型指针(指向类元数据)。锁升级过程为:
偏向锁:线程首次访问同步块时,MarkWord存储该线程ID(偏向状态),后续无竞争时直接进入同步块(无CAS操作);
轻量级锁:其他线程尝试获取锁时,偏向锁升级为轻量级锁(当前线程栈帧中创建LockRecord,MarkWord指向该记录),通过CAS竞争锁
您可能关注的文档
- (2025年)【道路运输企业安全生产管理人员】考试题及答案.docx
- (2025年)【真题试卷】山东事业单位公基考试真题及参考答案.docx
- (2025年)office考试试卷及答案.docx
- (2025年)安徽省淮南市遴选面试真题及答案大全解析.docx
- (2025年)白水县辅警协警笔试笔试真题(附答案).docx
- (2025年)亳州市蒙城县公安辅警招聘知识考试题(含答案).docx
- (2025年)昌吉回族自治州呼图壁县招聘警务辅助人员考试真题及答案.docx
- (2025年)成都地铁考试试卷及答案解析.docx
- (2025年)滁州市南谯区辅警考试真题及答案.docx
- (2025年)道县招聘协管员考试真题及答案.docx
最近下载
- 黑龙江省哈尔滨市高职单招2025-2026学年英语模拟试卷及答案 .pdf VIP
- 澄迈县加乐镇香炉岭建筑用花岗岩石料矿开采建设项目立项环境影响评价报告书.pdf VIP
- 《帕金森病的护理》课件.ppt VIP
- 国际贸易实务(英文版)教学课件(全)电子教案.ppt
- 露天矿山安全生产培训.pptx
- D-Z-T 0205-2020 矿产地质勘查规范 岩金(正式版).docx VIP
- JSP应用与开发技术第2版马建红课后参考答案.doc VIP
- 超详细高中生物实验总结及超详细知识点+习题+解析——高中生物学案.doc VIP
- 模型16 胡不归最值问题(教师版).docx VIP
- GB 55024-2022 建筑电气与智能化通用规范.docx VIP
原创力文档


文档评论(0)