面试题001-Java-Java基础

面试题001-Java-Java基础

题目自测

  • 1. Java 中的几种基本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢?
  • 2. String、StringBuffer 和 StringBuilder的区别是什么?String为什么是不可变的?
  • 3. String s1 = new String(“abc”); 这段代码创建了几个字符串对象?
  • 4. == 与 equals?hashCode 与 equals ?
  • 5. 包装类型的缓存机制了解么?
  • 6. 自动装箱与拆箱了解吗?原理是什么?
  • 7. 深拷贝和浅拷贝区别了解吗?什么是引用拷贝?
  • 8. 谈谈对 Java 注解的理解,解决了什么问题?
  • 9. Exception 和 Error 有什么区别?
  • 10. Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?
  • 11. Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?
  • 12. 内部类了解吗?匿名内部类了解吗?
  • 13. BIO,NIO,AIO 有什么区别?

题目答案

1. Java 中的几种基本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢?

答:Java包含8种基本数据类型,分别为字节类型byte占1字节,短整型short占2字节,整型int占4字节,长整型long占8字节,单精度浮点型float占4字节,双精度浮点型double占8字节,字符型char占2字节,布尔型boolean、官方没有明确定义、不同的JVM有不同的实现机制。
其对应的包装类型分别为:Byte、Short、Integer、Long、Float、Double、Character、Boolean。

2. String、StringBuffer 和 StringBuilder的区别是什么?String为什么是不可变的?

答:三者的区别主要体现在可变性、线程安全和性能这三方面。
1.String是不可变的,创建后无法修改。StringBuffer和StringBuilder是可变的,可以在原对象上进行修改。
2.String由于它的不变性和StringBuffer中的方法被 ‘synchronized’ (同步)修饰所以他两是线程安全的,StringBuilder中的方法不是同步的、因此在多线程环境中不安全。
3.String在频繁修改字符串时,每次修改都会创建新的对象,因此性能较差。StringBuffer由于有同步开销,性能会比StringBuilder差。
String不可变的原因是因为类中使用final修饰且为私有的字符数组来保存字符串,并且没有提供修改这个字符串的方法。被final修饰导致其不能被继承,进而避免了之类破坏它的不可变性。
扩展内容:
从 JDK 1.5 开始,编译器对字符串拼接进行了优化。当你在代码中使用 + 拼接字符串时,编译器会将这些操作转换为使用 StringBuilder 的 append 方法。在 JDK 9 及以后版本中,编译器进一步优化了字符串拼接,使用了 invokedynamic 字节码指令。这使得在运行时可以根据实际情况选择最优的拼接策略,从而提高性能。对于一般的字符串拼接任务,建议直接使用 +,这样代码更简洁易读。只有在非常高频的字符串拼接操作中,才可能考虑手动使用 StringBuilder 来进一步优化性能。

3. String s1 = new String(“abc”); 这段代码创建了几个字符串对象?

答:会创建1个或2个字符串对象。如果字符串常量池中不存在字符串对象"abc"的引用,会首先在常量池中创建一个"abc"对象(如果存在就不会创建),然后会在堆中创建一个新的字符串"abc"对象。

4. == 与 equals() ? hashCode() 与 equals() ?

答:== 用于比较基本类型的值是否相等,比较引用类型的引用是否相等(对象的地址)。
equals() 用于比较对象的内容是否相等,需要重写方法来比较对象的内容,默认是使用 ==。
hasdCode() 返回对象的哈希码,如果重写equals(),必须重写hashCode(),并确保相同的对象有相同的哈希码。

5. 包装类型的缓存机制了解么?

答:在Java中,为了提高性能,某些包装类型(如Integer、Byte、Short、Character和、Boolean)实现了缓存机制。这种机制对一定范围内如常用值进行了缓存,减少了频繁创建对象的开销。

6. 自动装箱与拆箱了解吗?原理是什么?

答:自动装箱是将基本类型转换为对应的包装类型,自动拆箱是将包装类型转换为对应的基本类型。
自动拆装箱的原理是通过编译器在编译期自动插入相应的方法调用来实现的,自动处理了基本类型和包装类型之间的转换。装箱是调用valueOf(),拆箱是调用xxValue()方法。

7. 深拷贝和浅拷贝区别了解吗?什么是引用拷贝?

答:他们说三种不同的对象复杂策略。
浅拷贝 只复制对象的属性值,如果属性是引用类型则只复制引用的地址。
深拷贝 递归地复制对象及其引用类型所引用的对象,生成一个完全独立的新对象。
引用拷贝 是复制对象的引用,两个变量指向一对象。

8. 谈谈对 Java 注解的理解,解决了什么问题?

答:注解是一种特殊的注释,用于描述代码的属性或行为。它不会直接影响代码的执行,但可以被编译器,开发工具、框架或运行时环境使用来进行某些处理或生成额外的代码。它解决了配置复杂、代码可读性差和缺乏编译时检查等问题,通过注解开发者可以更清晰的表达代码意图,并借助工具和框架进行更高效的开发。

9. Exception 和 Error 有什么区别?

答:在Java中Exception和Error都是继承自Throwable类的子类。他们的用途和处理方式不同。
Excepiton表示可以预期和处理的错误,程序应该通过捕获和处理这些异常来保证系统的稳定性,如空指针异常(NullPointerException)等。
Error表示严重的系统错误,程序一般无法处理这些错误,如内存不足(OutOfMemoryError)等。

10. Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?

答:Java反射是一种在运行时动态的获取类的信息,调用类中的方法和访问类中字段的机制。
它的缺点主要在性能和安全方面,反射需要在运行时查找、解析类的方法、属性等信息,相比直接方法调用会耗费更多的时间。反射可以绕过正常的访问控制,例如访问私有的方法和属性,可能会导致安全漏洞。
反射可以使得框架更加灵活、简洁地处理配置和依赖管理,支持动态代理,实现序列化和反序列化,并支持框架自身的扩展和自动配置。

11. Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?

答:泛型是JDK5中引入的新特性,允许在定义类、接口和方法时使用类型参数(T、E、K、V),在编译的时候进行类型检查,从而实现类型安全和代码重用。
类型擦除是Java泛型的一种实现机制,在编译时会将泛型信息擦除,类型参数会被替换为原始类型。
泛型提供了三种主要的通配符:<?> 无界通配符,表示可以持有任何类型的对象。<? extends T>上界通配符,表示泛型类型必须是T或其子类。<? super T>下界通配符,表示泛型类型必须是T或其超类。

12. 内部类了解吗?匿名内部类了解吗?

答:Java中内部类是定义在一个类内部的类。可以分为成员内部类、静态内部类、局部内部类和匿名内部类。内部类可以访问其外部类的所有方法和变量(包括私有的)。
匿名内部类是一种没有名字的内部类,通常用于实现接口或者继承类一个类,并且只需要使用一次的情况。通常用于事件处理、多线程编程等场景。

13. BIO,NIO,AIO 有什么区别?

答:BIO是同步阻塞I/O,适用于低并发、短连接的场景,每个连接需要一个独立的线程,线程消耗大。例传统的Socket编程。
NIO是同步非阻塞I/O,适用于高并发、长连接的场景,通过多路复用(Selector)实现,编程复杂度高。例聊天服务器、网络游戏等。
AIO是异步非阻塞I/O,适用于超高并发,大数据量大场景,通过异步回调机制处理I/O操作,编程模型相对简洁。例高性能服务器、消息中间件等。

参考资料

  • JavaGuide
  • 牛客网-Java面试宝典

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/39252.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

甄选版“论软件系统架构评估”,软考高级论文,系统架构设计师论文

论文真题 对于软件系统,尤其是大规模的复杂软件系统来说,软件的系统架构对于确保最终系统的质量具有十分重要的意义,不恰当的系统架构将给项目开发带来高昂的代价和难以避免的灾难。对一个系统架构进行评估,是为了:分析现有架构存在的潜在风险,检验设计中提出的质量需求,…

mac软件卸载后的残留文件删除 mac如何卸载应用程序

很多人都不知道&#xff0c;mac使用系统方式卸载后会有残留文件未被删除&#xff0c;久而久之就会占用大量的磁盘空间。今天小编就来教大家如何删除mac软件卸载后的残留文件&#xff0c;如果你想不留痕迹的删除&#xff0c;mac又该如何正确卸载应用程序&#xff0c;本文将一一为…

Python 获取字典中的值(八种方法)

Python 字典(dictionary)是一种可变容器模型&#xff0c;可以存储任意数量的任意类型的数据。字典通常用于存储键值对&#xff0c;每个元素由一个键&#xff08;key&#xff09;和一个值(value&#xff09;组成&#xff0c;键和值之间用冒号分隔。 以下是 Python 字典取值的几…

嵌入式软件工程应该学些什么?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;毕业后相当嵌入式软件工程…

从理论到实践的指南:企业如何建立有效的EHS管理体系?

企业如何建立有效的EHS管理体系&#xff1f;对于任何企业&#xff0c;没有安全就谈不上稳定生产和经济效益&#xff0c;因此建立EHS管理体系是解决企业长期追求的建立安全管理长效机制的最有效手段。良好的体系运转&#xff0c;可以最大限度地减少事故发生。 这篇借着开头这个…

C++ (第二天下午---面向对象之类与对象)

一、面向过程与面向对象 1、面向过程 面向过程是一种以事件为中心的编程思想&#xff0c;编程的时候把解决问题的步骤分析出来&#xff0c;然后用函数把这些步骤实现&#xff0c;在一步一步的具体步骤中再按顺序调用函数。 举个例子&#xff0c;下五子棋&#xff0c;面向过程…

LLM大模型工程师面试经验宝典--进阶版2(2024.7月最新)

目录 1 大模型怎么评测&#xff1f; 2 大模型的honest原则是如何实现的&#xff1f;模型如何判断回答 的知识是训练过的已知的知识&#xff0c;怎么训练这种能力&#xff1f; 3 如何衡量大模型水平&#xff1f; 4 大模型评估方法 有哪些&#xff1f; 5 大模型评估工具 有哪…

3115. 质数的最大距离

Powered by:NEFU AB-IN Link 文章目录 3115. 质数的最大距离题意思路代码 3115. 质数的最大距离 题意 给你一个整数数组 nums。 返回两个&#xff08;不一定不同的&#xff09;质数在 nums 中 下标 的 最大距离。 思路 正常筛即可 代码 Author: NEFU AB-IN Date: 2024-0…

解锁数据资产的无限潜能:深入探索创新的数据分析技术,挖掘其在实际应用场景中的广阔价值,助力企业发掘数据背后的深层信息,实现业务的持续增长与创新

目录 一、引言 二、创新数据分析技术的发展 1、大数据分析技术 2、人工智能与机器学习 3、可视化分析技术 三、创新数据分析技术在实际应用场景中的价值 1、市场洞察与竞争分析 2、客户细分与个性化营销 3、业务流程优化与风险管理 4、产品创新与研发 四、案例分析 …

【AHK】两句代码实现语音播报

操作系统&#xff1a;Windows10 源代码&#xff1a;AHK V2 spovice:ComObject("sapi.spvoice") spovice.Speak("世界你好") spovice.Speak("You can read simple text.")AHK v1 spovice:ComObjCreate("sapi.spvoice") spovice.Speak…

Python处理Excel文件的实用技巧使用详解

概要 在数据分析和处理的过程中,Excel 是一种广泛使用的数据存储和交换格式。Python 提供了多个强大的库来处理 Excel 文件,如 pandas、openpyxl 和 xlrd 等。本文将详细介绍如何使用这些库进行 Excel 文件的常用操作,包括读取、写入、修改和格式化等。 使用 pandas 处理 E…

仪器校准的概念与定义,计量校准是什么?

仪器校准的定义&#xff0c;在之前所颁布的《国际计量学词汇 基础和通用概念及相关术语》文件中&#xff0c;已经有了明确说明&#xff0c;而该文件做了修改以后&#xff0c;在后续新的定义中&#xff0c;仪器校准具体被分为两部分&#xff0c;第一步是将被计量仪器和计量校准的…

Unity发布PC限制本地访问exe次数

Unity发布PC限制本地访问exe次数 1.当打开次数大于3次时&#xff0c;unity会执行自动退出代码 int mi 1;//限制本地访问exe次数if (PlayerPrefs.GetInt("miwen") > 3){Application.Quit();}mi PlayerPrefs.GetInt("miwen");mi 1;PlayerPrefs.SetInt…

数据库测试数据准备厂商 Snaplet 宣布停止运营

上周刚获知「数据库调优厂商 OtterTune 宣布停止运营」。而今天下班前&#xff0c;同事又突然刷到另一家海外数据库工具商 Snaplet 也停止运营了。Snaplet 主要帮助开发团队在数据库中生成仿真度高且合规的测试数据。我们在年初还撰文介绍过它「告别手搓&#xff01;Postgres 一…

中英双语介绍北卡的研究三角区:Research Triangle Park (RTP)

中文版 研究三角区简介 研究三角区&#xff08;Research Triangle Park&#xff0c;简称RTP&#xff09;是美国最大的研究园区之一&#xff0c;位于北卡罗来纳州的罗利&#xff08;Raleigh&#xff09;、达勒姆&#xff08;Durham&#xff09;和教堂山&#xff08;Chapel Hil…

vue3中若v-model绑定的响应字段出现三级,该如何实现rules验证规则

比如以下内容&#xff1a; 配置的rules内容 const rulesref({title:[{required:true,message:"请输入标题",trigger:"blur"},{max:50,message:"最大不能超过256个字",trigger:"blur"}],Category:[{required:true,message:"请选择…

竹云位居首位 |沙利文《2024年全球及中国IAM中间件市场报告》正式发布

7月2日&#xff0c;弗若斯特沙利文&#xff08;Frost & Sullivan&#xff0c;以下简称“沙利文”&#xff09;正式发布《2024年全球及中国IAM中间件市场报告》&#xff08;以下简称“报告”&#xff09;&#xff0c;从行业背景、市场规模、驱动因素、发展趋势等维度阐述当前…

让采购和工程师们既爱又恨的任务——BOM

在项目研发与生产过程中&#xff0c;有一个常常让采购经理和工程师们既爱又恨的任务&#xff0c;那就是整理BBOMB。BOM作为连接设计与制造的桥梁&#xff0c;其重要性不言而喻&#xff0c;它详细列出了产品构成所需的所有零部件、材料及其规格、数量&#xff0c;是成本估算、采…

丘成桐证明的正质猜想使用反证法是错误的

丘成桐在证明“正质量猜想”时也是使用错误的“反证法”&#xff1a; 假定A&#xff0c;推出B&#xff0c;B与C矛盾&#xff0c;得到非A。 但是&#xff0c;这个C也是假设的。 根据反证法推理规则&#xff0c;两个前提与一个结论&#xff0c;必须有两个是真实的并且经过证实的…

ArcGIS Pro SDK (七)编辑 10 捕捉

ArcGIS Pro SDK &#xff08;七&#xff09;编辑 10 捕捉 文章目录 ArcGIS Pro SDK &#xff08;七&#xff09;编辑 10 捕捉1 配置捕捉 - 打开或关闭捕捉2 配置捕捉 - 应用程序捕捉模式3 配置捕捉 - 图层捕捉可捕捉性4 配置捕捉 - 图层捕捉模式5 配置捕捉 - 组合示例6 捕捉选项…