【Java基础面试题(2)】

本文提供了Java基础面试的各类题目,包括填空题、选择题、判断题、简答题和程序题,涵盖了类与接口、面向对象、异常处理、关键字等核心概念。适合Java初学者和面试者复习准备。
摘要由CSDN通过智能技术生成

填空题

  1. java类或接口继承时使用————关键字,类实现接口时使用————关键字。
  2. 面向对象的三大特征:____________。
  1. java源程序代码是有若干————组成。
  1. ————是关键字,是用来定义类的。
  2. 异常处理的五大关键字:——、—— 、——、——、—— 。
  3. 声明接口使用的关键字———— 。
  4. 抽象方法可以出现在———— 和————。

选择题

  1. 使用Java 语言编写的源程序保存时的文件扩展名是( )
    a) .class
    b) .java
    c) .cpp
    d) .txt

  2. 设有数组的定义int[] a = new int[3],则下面对数组元素的引用错误的是( )
    a) a[0]
    b) a[a.length-1]
    c) a[3]
    d) int i=1; a[i]

  3. 在类的定义中可以有两个同名函数,这种现象称为函数( )
    a) 封装
    b) 继承
    c) 覆盖
    d) 重载

  4. 设有说明语句int[] a = new int[6],则数组a包括了___ 个元素( )
    a)0
    b)5
    c)6
    d)7

  5. 下列类定义中,不正确的是( )
    a)class x { … }
    b)class x extends y { … }
    c)class x implements y1,y2 { … }
    d)public class x extends String { … }

  6. 下列哪个声明是错误的:( )
    a) int i = 10;
    b) float f = 1.1;
    c) double d = 32.2;
    d) byte b = 127;

  7. 有关于抽象方法的说法正确的是( )
    a) 可以有方法体
    b) 可以出现在非抽象类中
    c) 是没有方法体的方法
    d) 抽象类中的方法都是抽象方法

  8. 下列哪个不是java的关键字:( )
    a) public
    b) extends
    c) main
    d) class

  9. 在java中,定义接口的关键是( )
    a) abstract
    b) interface
    c) class
    d) extends

  10. 在java中,类可派生自一个父类,并实现( )个接口
    a) 1
    b) 2
    c) 3
    d) 任意多

判断题

  1. java抽象类是声明时必须使用abstract关键。( )
  2. java程序中,java.lang.Object是基类( )
  3. java中数组对象的长度是固定长度( )
  4. java程序类声明可以是多继承的( )
  5. 程序代码int[] a = new int[3];int b = a[3];是可以编译的,但不可以执行。()
  6. 类中声明的方法可以定义在类体外( )
  7. 在类体内声明成员变量时不允许赋值( )
  8. 抽象方法是一种只有说明而无具体实现的方法( )
  9. 抽象方法一定出现在抽象类中( )
  10. 最终类,最终方法和最终变量的修饰符都用final( )
  11. java编程语言中,finalize是一个关键字。( )
  12. java程序中,有抽象方法的类必须声明为抽象类。( )
  13. java ArrayList实现对象,下标索引总是从0开始的。( )
  14. java1.8规范中,接口只能包括全局常量和全局抽象方法。( )
  15. 程序代码List a=List.of(1,2,3);System.out.println(a[0]);程序输出结果1。( )
  16. ArrayList集合对象的元素可以是重复的。( )
  17. 接口声明中,声明变量可以不初始化。( )
  18. 接口方法全部是抽象的,不能有实现方法,可以不写abstract关键字。( )
  19. 抽象方法一定出现在接口中,只能出现一次。( )
  20. 最终类,最终方法和常量的修饰符都用finally关键声明。( )

简答题

  1. 简述方法的重载和方法的重写?
  2. java中实现多态的机制是什么?
  3. 什么是抽象类?什么是抽象方法?有什么特点?
  4. 请说出作用域public,private,protected,以及不写时的区别
  5. 是否可以从一个static方法内部发出对非static方法的调用?
  6. 简述this,super关键字用法
  7. 简述ArrayList和LinkedList特点?
  8. 简述final、finally、finalize特点及用法?

程序题

  1. 编程实现猜数游戏案例
  2. 编程实现对一个int[] a = new int[10]数组排序(排序方式没有要求,顺序没有要求)
  3. 判断输入的字符串是中文,英文,数字,其它字符(使用Scanner、正则表达式)
  4. 编程实现证明ArrayList和LinkedList优缺点?
  5. 编程实现猜数游戏,使用try catch处理异常。

答案

填空题

  1. extends implements
  2. 抽象(封装)、 继承、 多态
  3. class
  4. try catch finally throw throws
  5. interface
  6. 抽象类(abstract class) 接口(interface)

选择题

1.b 2.c 3.d 4.c 5.d 6.b 7.c 8.c 9.b 10.d

判断题

1.T 2.T 3.T 4.F 5.T 6.F 7.F 8.T 9.F 10.T
11.F 12. T 13. T 14.F 15.F 16.T 17.F 18.F 19.F 20.F

简答题

  1. 简述方法的重载和方法的重写?
    override(重写)
    (1)方法名、参数、返回值相同。
    (2)子类方法不能缩小父类方法的访问权限。
    (3)子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)
    (4)存在于父类和子类之间。
    (5)方法被定义为final不能被重写。

    overload(重载)
    (1)参数类型、个数、顺序至少有一个不相同。
    (2)不能重载只有返回值不同的方法名。
    (3)存在于同类中。

  2. java中实现多态的机制是什么?

Java实现多态有三个必要条件:继承、重写、向上转型。
继承:在多态中必须存在有继承关系的子类和父类。
重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。
java中实现多态的机制是依靠父类或接口的引用指向子类。从而实现了一个对象多种形态的特性。其中父类的引用是在程序运行时动态的指向具体的实例,调用该引用的方法时,不是根据引用变量的类型中定义的方法来运行,而是根据具体的实例的方法。

  1. 什么是抽象类?什么是抽象方法?有什么特点?
    抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类。
    对象不能由抽象类直接创建,只可以通过抽象类派生出新的子类,再由其子类来创建对象
    抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体

  2. 请说出作用域public,private,protected,以及不写时的区别
    public 声明的为公共成员变量和函数成员,在整个类内类外都可使用。
    private 声明的为私有成员变量和函数成员,只在声明的类内可以使用。
    protected声明的为受保护成员变量和函数成员,类外不可使用。类内可以使用。
    不使用关键字默认为类内使用
    另外注意在继承的时候,他们的区别。
    public 声明的在子类变为public
    protected 声明的子类变为private
    private 声明的在子类中不可用
    在这里插入图片描述

  3. 是否可以从一个static方法内部发出对非static方法的调用?

不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,
才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以
直接调用

  1. 简述this,super关键字用法
    (1) this调用本类中的属性,也就是类中的成员变量;
    (2 )this调用本类中的其他方法;
    (3) this调用本类中的其他构造方法,调用时要放在构造方法的首行。
    (4) this 也可以调用你类的方法(本类没有的方法)
    (5) super()调用父类无参构造方法,必须在子类的构造方法的第一行上,默认是可以不显示写super();
    (6) super(参数列表),调用父类的指定的构造方法。

  2. 简述ArrayList和LinkedList特点?

1.ArrayList是Array(动态数组)的数据结构,LinkedList是Link(链表)的数据结构。
2.当随机访问List(get和set操作)时,ArrayList比LinkedList的效率更高,因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。
当对数据进行增加和删除的操作(add和remove操作)时,LinkedList比ArrayList的效率更高,因为ArrayList是数组,所以在其中进行增删操作时,会对操作点之后所有数据的下标索引造成影响,需要进行数据的移动。
3.ArrayList自由性较低,因为它需要手动的设置固定大小的容量,但是它的使用比较方便,只需要创建,然后添加数据,通过调用下标进行使用;而LinkedList自由性较高,能够动态的随数据量的变化而变化,但是它不便于使用。
4.ArrayList主要控件开销在于需要在lList列表预留一定空间;而LinkList主要控件开销在于需要存储结点信息以及结点指针信息。

  1. 简述final、finally、finalize特点及用法?
    一、定义上的区别
    final是java关键字,用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。
    finally是java中异常处理语句结构的一部分,表示总是执行。
    finalize是Object类的一个方法,如果子类中重写了该方法,在垃圾收集器执行的时候会调用被回收对象的此方法。

    二、用法上的区别
    final
    如果一个类被声明为final,就意味着它不能再派生出新的子类,不能作为父类被继承。因此,一个类不能同时被abstract和final修饰,被final修饰的类不能做为父类被继承但是它却可以继承其它的类。
    如果一个方法被声明为final,那么该方法是不能被重写的,因此一个方法也不能同时被abstract和final修饰,被final修饰的方法可以被子类继承。
    被声明为final的变量必须要进行初始化,而在以后的引用中只能读取,不可修改。
    final变量未被初始化,编译时就会报错
    非静态final变量初始化可以是直接赋值、代码块赋值、构造函数赋值
    静态final变量初始化可以通过直接赋值、静态代码块赋值

finally
finally在异常处理语句中总是会被执行,只要程序进了异常处理语句,finally语句就一定会执行,就算try catch中存在return、continue、break这些可以改变程序执行顺序的关键字也不会影响finally语句执行,fianlly语句通常被用来关闭IO流、关闭数据库连接。

finalize
finalize在垃圾回收中,如果被回收的对象重写了finalize方法并且在finalize方法中重新建立了该对象与GC ROOT的连接,那么该对象是可以被复活一次的,也就是该对象会从收集阶段重新回到应用阶段

程序题

  1. 编程实现猜数游戏案例

import java.util.Random;
import java.util.Scanner;
public class While5 {
   
    public static void main(String[] args) {
   
        Random rand = new Random();
        //.nextInt(int i) 返回int类型
        //int num = rand.nextInt(10); //返回 0-9范围内的数字

        //返回1-100范围内的随机整数数字
        int start = 100;
        int end = 1000;
        int num = rand.nextInt(end-start+1) + start;
        Scanner sc = new Scanner(System.in);
        int i = 0;
        while (true) {
   
            ++i;
            System.out.printf("请输入数字[%d - %d]:", start, end);
            //Scanner 类的实例对象 .nextInt() 是无参方法没有参数,返回一个int,内容是你键盘输入的数字
            int t = sc.nextInt
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值