Java面试题(基础)

20220805:

Q1:什么是 singleton class(单例类)?并给出其用法的实际例子。

解答:单例类只能有一个实例,必须自己创建自己的唯一实例,必须给所有其他对象提供这一实例。
单例使用场景的最佳实践是由于某些驱动程序限制或由于许可问题的限制只能连接数据库。

Q2:Java中的double和float变量有什么区别?

解答:float是单精度浮点数,内存中占用4字节,double是双精度浮点数,内存中占用8字节。

Q3:Java内部类和子类之间有什么区别?

解答:内部类是指在一个外部类的内部再定义一个类,内部类对外部类有访问权限,可以访问类中定义的所有变量和方法。
子类是从父类(superclass)中继承的类,子类可以访问父类所有public和protected的字段和方法。

Q4:Java语言中有哪些常见的访问说明符,有什么意义?

解答:Java中的访问说明符是放在类名之前,用于定义访问范围的关键字,常见的访问说明符有以下几类:
Public:公共,能被项目中的任何一个Class、Method、Field访问。
Protected:受保护,能被同类或子类访问,不能从外部访问。
Default:默认,只能被同一个包的Class、Method、Field访问。
Private:私有,只能被本类访问。

Q5:静态方法和静态变量的目的是什么?

解答::静态变量被类的所有实例共用,静态类只能访问类的静态变量,或调用类的静态方法。


20220806:

Q1:什么是数据封装及其意义?

解答:封装是面向对象编程中用于在单个单元中组合属性和方法。
封装可以帮助程序员遵循模块化方法进行软件开发,每个对象都有自己的一组方法和变量,并且可以独立于其他对象来执行其功能。另外,封装也有数据隐藏的目的。

Q2:什么是循环?Java中有哪些循环?

解答:循环用于编程中重复执行语句,Java中的循环有三类:
1、for循环
for循环用于执行指定重复次数的语句,当程序员明确知道循环次数可以使用for循环。
2、While循环
当语句满足条件时开始进行重复执行,直到语句不再满足条件退出循环。While循环中在执行语句之前先检查是否满足条件。
3、do while循环
Do while 和while循环基本类似,唯一不同的是do while是先执行语句再检查条件,也就是说do while循环至少会执行一次语句。

Q3:什么是无限循环?如何声明无限循环?

解答:无限循环是指无条件执行,无限运行。无限循环可以由定义中断语句块来结束。

Q4:continue和break语句有什么区别?

解答:break和continue都是循环中的重要关键词,break语句是结束整个循环过程,continue语句只结束本次循环,而不是终止整个循环的执行。

Q5:举一个在Java类中使用指针的例子。

解答:有指针,但是隐藏了,开发人员无法直接操作指针,由JVM来操作指针。


20220807:

Q1:使用继承有什么好处?

解答:使用继承的主要优点是代码的可重用性,因为继承使子类能够重用其父类的代码。多态性(可扩展性)是另一个好处,允许引入新的功能而不影响现有的派生类。

Q2:如何限制一个类不被继承?

解答:使用关键字Final。

Q3:栈和队列之间有什么区别?

解答:栈和队列之间的主要区别在于,栈基于“后进先出(LIFO)”原则,而队列基于FIFO(先进先出)原则。

Q4:可以有两个方法,它们方法名和参数都相同,但返回值类型不同?

解答:相同的方法指的是方法名、参数以及返回类型都相同,因此返回类型不同的两个方法是可以并存的。

Q5:我们可以在静态方法中调用非静态方法?

解答:非静态方法归类的对象所有,且具有对象的级别范围,所以如果想要在静态方法中调用非静态方法,首先要创建类的对象,然后使用对象引用,调用这些方法。


20220808:

Q1:如何在Java中生成随机数?

解答:使用Math.random()可以生成0.1到1.0范围内的随机数字,然后通过数学方法实现生成符合要求的随机数。

Q2:Java中所有派生类的基类是什么?

解答:java.lang.object

Q3:Java中的main()方法可以返回任何数据吗?

解答:java中的main()方法不能返回任何数据,它的返回类型始终是void。

Q4:Java中的抽象类和接口有什么区别?

解答:抽象类和接口之间的主要区别在于,抽象类可以拥有任意范围的成员数据,同时也可以拥有自己的非抽象方法,但是接口方式中,它仅能够有静态、不能修改的成员数据,同时它所有的方法都必须是抽象的。
抽象类是对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。
一个类可以实现多个接口,但它只能扩展一个抽象类。

Q5:接口对抽象类的性能影响是什么?

解答:与抽象类相比,接口性能较慢。一个类只能扩展一个抽象类,却能实现许多接口,随着接口在类中的实现,也会给开发人员带来额外负担。


20220809:

Q1:JDK 和 JRE 有什么区别?

解答:
JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。
JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。
具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。

Q2: String str="i"与 String str=new String(“i”)一样吗?

解答:不一样,因为内存的分配方式不一样。String str="i"的方式,Java 虚拟机会将其分配到常量池中;而 String str=new String(“i”) 则会被分到堆内存中。

Q3:如何将字符串反转?

解答:使用 StringBuilder 或者 stringBuffer 的 reverse() 方法。

Q4:说说Java 垃圾回收机制

解答:在 Java 中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在 JVM 中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。

Q5:java 中 IO 流分为几种?

解答:
按功能来分:输入流(input)、输出流(output)。
按类型来分:字节流和字符流。
字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流按 16 位传输以字符为单位输入输出数据。


20220810:

Q1:什么是多线程?

解答:多线程是一个编程概念,可以在单个程序中以并发方式执行多个任务。同一个进程的多个线程堆栈共享,有助于程序的性能改进。

Q2:Java中实现多线程的两种方法是什么?

解答:
1、通过使用Java.Lang.Runnable Interface,通过Run()方法来启用多线程。
2、编写一个扩展Java.Lang.Thread类的类

Q3:在多线程中,如何确保资源不会同时被多个线程使用?

解答:在多线程中,可以通过使用同步的概念来控制对多个线程之间共享的资源的访问。使用synchronized关键字,我们可以确保只有一个线程可以一段时间内使用共享资源。

Q4:可以在Main()方法前执行代码?

解答:如果我们要在类加载时,对象创建之前执行语句,可以在类中使用静态代码块,这样即使在main方法中创建对象之前,此静态代码块中的语句都将在加载类时执行一次。

Q5:如何在Java中完成垃圾回收?

解答:Java中,对象不被引用时,垃圾回收就会发生,对象会被自动销毁,调用System.gc()方法或Runtime.gc()方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值