Java面试题基础模块

一、Java 基础

1.JDK 和 JRE 有什么区别?

       JRE是Java Runtime Environment的缩写,顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的,还有所有的Java类库的class文件,都在lib目录下,并且都打包成了jar。

       JDK是Java Development Kit的缩写,顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。

      总结:JRE可以支撑Java程序的运行,包括JVM虚拟机(java.exe等)和基本的类库(rt.jar等),JDK可以支持Java程序的开发,包括编译器(javac.exe)、开发工具(javadoc.exe、jar.exe、keytool.exe、jconsole.exe)和更多的类库(如tools.jar)等。如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。

   详解:https://www.cnblogs.com/lsw9/p/8685623.html

2.== 和 equals 的区别是什么?

    通俗讲,==比较对象的值和内存地址,只有同时满足时才为true,否则为false;equals比较的是值相等,通常用于字符串的比较

Integer x =10,y=10;
int a=10,b=10;
Integer既可以使用==也可以使用equals来进行比较,但是int只能使用==

    详解:https://www.cnblogs.com/wangzn/p/7121159.html

    https://juejin.im/post/5c7ddcd06fb9a04a06059bea

3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?

    错误,两个对象equals相等,则它们的hashcode必须相等,反之则不一定。

    详解:https://www.jianshu.com/p/17a02ad2f62b

4.final 在 java 中有什么作用?

    a) final可以修饰类,这样的类不能被继承

    b) final可以修饰方法,这样的方法不能被重写。 

    c) final可以修饰变量,这样的变量的值不能被修改,是常量

    详解:https://blog.csdn.net/m0_37695351/article/details/78201776

5.java 中的 Math.round(-1.5) 等于多少?

    结果:-1,个人理解round(负值)相当于取Math.ceil(-1.5);四舍五入的原理是在原基础上+0.5然后取整就是最后的结果。

6.String 属于基础的数据类型吗?

    String不是基础数据类型,并且String不能被继承。

    详解:https://www.jianshu.com/p/1184a2e5929f

7.java 中操作字符串都有哪些类?它们之间有什么区别?

    String、StringBuffer、StringBuilder

    1、在字符串不经常发生变化的业务场景优先使用String(代码更清晰简洁)。如常量的声明,少量的字符串操作(拼接,删除等)。

    2、在单线程情况下,如有大量的字符串操作情况,应该使用StringBuilder来操作字符串。不能使用String"+"来拼接而是使用,避免产生大量无用的中间对象,耗费空间且执行效率低下(新建对象、回收对象花费大量时间)。如JSON的封装等。

    3、在多线程情况下,如有大量的字符串操作情况,应该使用StringBuffer。如HTTP参数解析和封装等。

    详解:https://baijiahao.baidu.com/s?id=1629804867201303563&wfr=spider&for=pc

8.String str="i"与 String str=new String("i")一样吗?

9.如何将字符串反转?

  StringBuiler的reverse()的方法,最快的方式

  详解:https://blog.csdn.net/cghu1201/article/details/78490934

10.String 类的常用方法都有那些?

    详解:https://www.cnblogs.com/ABook/p/5527341.html

11.抽象类必须要有抽象方法吗?

12.普通类和抽象类有哪些区别?

13.抽象类能使用 final 修饰吗?

14.接口和抽象类有什么区别?

    a 接口里只能包含抽象方法,静态方法和默认方法,不能为普通方法提供方法实现,抽象类则完全可以包含普通方法。

    b 接口里只能定义静态常量,不能定义普通成员变量,抽象类里则既可以定义普通成员变量,也可以定义静态常量。

    c 接口不能包含构造器,抽象类可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。

    d 接口里不能包含初始化块,但抽象类里完全可以包含初始化块。

    e 一个类最多只能有一个直接父类,包括抽象类,但一个类可以直接实现多个接口,通过实现多个接口可以弥补Java单继承不足。

    参考:https://baijiahao.baidu.com/s?id=1622053733155304478&wfr=spider&for=pc

15.java 中 IO 流分为几种?

    Java中IO流分成两大类,一种是输入流,所有的输入流都直接或间接继承自InputStream抽象类,输入流作为数据的来源,我们可以通过输入流的read方法读取字节数据;另一种是输出流,所有的输出流都直接或间接继承自OutputStream抽象类,输出流接收数据,可以通过write方法写入字节数据。

    https://blog.csdn.net/iispring/article/details/46821033

    https://blog.csdn.net/tang834133957/article/details/81271514

    https://www.cnblogs.com/QQ846300233/p/6046388.html

16.BIO、NIO、AIO 有什么区别?

17.Files的常用方法都有哪些?

    https://www.cnblogs.com/wangjinlong-padan/p/6382924.html

转载于:https://my.oschina.net/marlon520/blog/3056522

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 2023年的Java面试题肯定会更加注重应用场景和实际项目经验,技术栈也会更加多元化。以下是可能会涉及到的面试题: 1. 谈谈你对Java 9以上版本的了解和使用经验 这一题目主要考察你是否有使用Java 9以上版本的经验并能分享你的实践经验。其中Java 9引入的模块化开发、集合工厂方法等话题可能会涉及到。 2. 如何实现无锁化的数据结构 面试官可能会让你具体阐述ConcurrentHashMap、AtomicArray等无锁工具的实现机制,这需要你对Java并发包中的库过于熟练。 3. 谈谈你对Spring Cloud的理解和实践经验 Spring Cloud已经成为了分布式微服务架构的标配之一,面试时需要你对Spring Cloud各组件的作用有清晰的认知和对实际项目中的应用情况有足够的实践经验。 4. 解释一下什么是Java虚拟机以及Java内存结构 对于一名Java开发者来说,Java虚拟机是基础中的基础,内存结构则是实现Java虚拟机进行性能优化的关键。通过讲解Java内存结构可以展示你的Java基础知识掌握情况。 5. 解释一下Java中的反射机制 Java反射机制可以在运行状态中获取的完整信息,它是实现Java高级特性(如Spring AOP、Hibernate等)的重要基础。通过阐述Java反射机制,能显示你的Java编程水平。 ### 回答2: 2023年的Java面试,可能会涉及到以下主题: 1. Java SE Java标准版将仍然是Java开发的基础Java SE 13或更高版本的API将会被要求熟练掌握。面试官可能会问一些关于Java集合框架、多线程、IO、异常处理等基础知识的问题,以及JVM调优、性能优化等。 2. Java EE Java企业版是企业级应用开发的基本框架,Java EE 9或更高版本将会涉及到面试题中。应聘者需要熟悉JSP、Servlet、EJB、JMS、Web服务、Hibernate、Spring等框架,以及需要了解企业级开发中的安全性、可用性以及可维护性方面的知识。 3. 数据库 Java应用程序通常需要与数据库进行集成。除了需要了解基本的SQL语言外,应聘者还应该了解数据库设计、索引优化、数据库事务以及分布式数据库等方面的知识。面试官可能会针对具体问题提问,例如高并发下如何保证数据的一致性。 4. 前端开发 Java要求应聘者也具备一定的前端开发技能,例如HTML、CSS、JavaScript、React、Angular等技术。对于前后端分离的应用,需要了解RESTful API、Ajax等相关技术。 5. 数据结构与算法 Java开发人员需要掌握数据结构与算法的基本知识,例如链表、二叉树、图论、排序算法等。面试官可能会提出一些与该领域相关的问题,并要求应聘者用Java代码解决。 6. 其他技术 随着技术的不断发展,Java生态圈也越来越庞大。Java应聘者需要掌握如Docker、Kubernetes、Spark等技术的基本知识。 综上,Java开发的领域愈发广泛,要求面试者除了掌握Java编程语言本身,还要拥有一定的前端开发技能和多领域的知识。实际上,很难通过传统的培训方式来学习,需要应聘者自学并实践,将所学知识应用到实际项目中。 ### 回答3: 2023java面试题 2023年,Java语言仍然是互联网应用开发和企业级应用开发的首选语言。根据这一趋势,Java开发工程师的需求也在不断增加。作为Java技术的从业者,如果想在面试时脱颖而出,需要掌握一些跨越语言以及垂直领域的技能。下面是一些可能用到的常见问题: 问题1. Java8中支持的新特性有哪些? Java 8中引入了Lambda表达式、Stream API、日期/时间API、Optional 、ConcurrentHashMap改进等新特性。了解这些特性可以在开发中提高效率和程序的性能。 问题2. 说说你对Java虚拟机的理解? Java虚拟机(JVM)是Java程序在计算机上运行的关键组件。它将Java字节码转换为可理解的二进制代码来执行。了解JVM有助于开发人员进行性能调优,如设置最大内存、垃圾回收等。 问题3. 你如何防止Java对象被销毁? Java中每个对象都由垃圾收集器自动管理销毁。如果需要保护对象不被销毁,可以通过使用强引用、软引用或弱引用等方式来进行管理。例如,使用ThreadLocal可以将对象绑定到线程本地,以防止被垃圾回收器销毁。 问题4. 你是否了解Spring框架? Spring框架是Java Web开发中最流行的框架之一。使用Spring可以提高开发效率、简化代码和依赖注入等。在面试中表达对Spring的理解,包括Ioc容器、AOP切面等,是提高面试评分的关键。 问题5. 你如何掌控Java应用的内存? Java内存管理是一个非常重要的主题。开发人员需要了解堆和栈的区别,以及如何调优垃圾回收器和使用内存管理工具,如VisualVM。在面试中,回答这些问题将有助于展现你的技能水平。 问题6. 如何在Java中进行序列化和反序列化? Java中有许多方式可以进行对象序列化和反序列化,如使用Java标准库中的ObjectOutputStream/ObjectInputStream、使用Google的Protocol Buffer等方式。在面试中,理解序列化和反序列化的概念,以及了解如何按需使用不同的库,将是一个亮点。 总结 Java作为应用广泛的编程语言,吸引了越来越多的开发人员进入这个领域。为了取得优秀的Java开发岗位,开发人员不仅需要在Java语言的基础上掌握各种工具和框架,还需要对内存管理、垃圾收集器、Ioc容器、序列化和反序列化等方面有深入的掌握。在面试时,面试官可能会提出多个方面的问题,只有全面掌握Java这个领域的知识点,才能在面试中表现得更为强势和自信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值