2020年Java面试题(基础版)

1. 在开发中你用的IDE版本是什么?

提示: 这个题的考点在于”版本”, 千万不要回答成: 我用的是IDEA, JDK, VMware…这种无效回答.
答: IDEA2019.3, JDK14, VMWare14.2, CenterOS7.0, MySQL5.8, Zookeeper3.4.5等.

2. JDK和JRE的区别是什么?

提示: 最好按照范围从大到小来回答.
答: JDK是Java开发工具包, 包含开发Java程序所需的工具和JRE.
JRE是Java运行环境, 包含运行Java程序所学的核心类库和JVM.
JVM是Java虚拟机, 它是用来保证Java程序跨平台的.

3. main是关键字吗?

答: 不是, main是主函数的名字, 可以被JVM识别, 也是程序的主入口, 所有代码的执行都是从这里开始的.

4. Java程序的特点是什么?

答: 开源, 跨平台, 多线程, 面向对象,继承,多态.

5. Java程序的三大思想特征是什么?

答: 封装, 继承, 多态.

6. 进行运算的时候, 变量和常量有什么区别?

答: 变量指的是在程序运行过程中, 其值可以在一定范围内变化的量, 可以被多次赋值. 常量指的是在程序运行过程中, 其值不能发生改变的量, 且只能赋值一次.

7. final的作用是什么?

答: 它是一个关键字, 表示”最终”的意思, 可以修饰类, 修饰变量, 修饰方法.

  • 被它修饰的类: 不能被继承, 但是可以继承其它类.
  • 被它修饰的方法: 子类可以继承, 但是不能重写.
  • 被它修饰的变量: 其实是一个常量.
8. Java中常量有几种?

答: 有两种, 分为自定义常量和字面值常量. 其中字面值常量又分为6种:
整数常量, 小数常量, 字符常量, 字符串常量, 布尔常量, 空常量.

9. Java中的数据类型有几种?

答: 有两种, 分为基本类型和引用类型. 其中:
引用类型: 指的是数组, 集合, 自定义类型等.
基本类型: 有四类八种.
四类: 整型, 浮点型, 布尔型, 字符型.
八种: byte, short, char, int, long, float, double, boolean.

10. 标识符的组成由哪些? 命名规则和规范分别是什么?

答: 标识符由: 英文大小写字母, 数字, 下划线, 美元符 这四部分任意拼接组成.

  • 命名规则:
  1. 必须由英文大小写字母, 数字, _, $这四部分任意拼接组成.
  2. 不能以数字开头.
  3. 不能和Java中关键字重名.
  4. 最好做到见名知意.
  • 命名规范:
  1. 类, 接口: 大驼峰命名法, 所有单词的首字母都大写, 其他全部小写.
  2. 方法, 变量: 小驼峰命名法, 从第二个单词开始所有单词的首字母都大写, 其他字母全部小写.
  3. 常量: 所有字母都大写, 单词之间用下划线隔开.
  4. 包: 所有字母都小写, 多级包之间用.隔开, 一般是公司的域名反写.
11. ASCII码表中, 字符‘a’, ‘A’,’0’对应的int值分别是多少?

答: ‘a’: 97 ‘A’: 65 ‘0’: 48

12. ++ 和 – 用法是什么?

答: 它们的用法分为两类: 此处以++举例(–类似)

  1. 单独使用, 前加后加没有任何区别, 都是自身+1.
  2. 参与运算, 前加是: 变量自身先加1, 然后用新值参与运算. 后加是: 先以变量的原值参与运算, 然后变量值再自身+1.
13. & 和 &&的区别是什么?

答: &: 逻辑与, 有false则整体为false, 不会发生短路效应, 不管前边时候出现false, 整个表达式都会执行.
&&: 短路与, 有false则整体为false, 会发生短路效应. 前边出现false, 后边不执行.

14. for, while, do.while 这三种循环之间的区别是什么?

:for和其他两个循环的区别在于:
for循环执行完毕后, 初始化条件不可以继续使用, 而其他两个循环执行完毕后, 初始化条件还可以继续使用.
do.while循环和其他两个循环的区别在于:
do.while循环是: 不管判断条件是否成立, 循环体都会执行一次. 而其他两个循环是判断条件不成立, 循环体不执行.

15. break 和 continue的区别是什么?

:break是用来终止循环的, 循环不再继续执行, 而且它还可以应用到switch语句中. continue是用来结束本次循环, 进行下一次循环的, 循环还会继续执行.

16. 方法重写和方法重载的区别是什么?

:方法重写指的是: 子类出现和父类一模一样的方法时, 称为方法重写, 方法重写要求子父类方法返回值的数据类型也必须一致或者有子父类关系.
方法重载指的是: 同一个类中出现方法名相同, 参数列表不同的两个或以上的方法时, 称为方法重载. 方法重载和返回值的数据类型无关.

17. 数组和集合的区别是什么?

:数组: 长度固定, 既可以存储基本类型的数据, 也可以存储引用类型的数据.
集合: 长度可变, 只能存储引用类型的数据.

18. 局部变量 和 成员变量的区别是什么?

:它们的区别有以下4点:

  1. 定义位置不同.
    (1)局部变量定义在方法中, 或者方法的形参上.
    (2)成员变量定义在类中, 方法外.
  2. 在内存中的存储位置不同.
    (1)局部变量存储在 栈内存.
    (2)成员变量存储在 堆内存.
  3. 初始化值不同.
    (1)局部变量没有默认值, 必须先定义, 再赋值, 然后才能使用.
    (2)成员变量有默认初始化值.
  4. 生命周期不同.
    (1)局部变量是随着方法的调用而存在, 随着方法的调用完毕而消失.
    (2)成员变量是随着对象的创建而存在, 随着对象的消失而消失.
19. 什么是面向对象?

:面向对象是一种编程思想, 强调的是以对象为基础完成各种操作, 它是基于面向过程的. 说到面向对象不得不提的就是它的3大思想特点:

  1. 更符合人们的思维习惯.
  2. 把复杂的事情简单化.
  3. 把程序员从执行者编程指挥者.
    万物皆对象.
20. 什么是封装?

:封装就是隐藏对象的属性和实现细节, 仅对外提供公共的访问方式.

21. 构造方法能不能重载?

:可以, 虽然构造方法没有返回值的数据类型, 但是方法重载和返回值的数据类型无关.

22. 构造方法的特点是什么?

  1. 方法名和类名完全一致.
  2. 没有明确的返回值, 连void也没有.
  3. 没有明确的返回值, 但是可以有return.
23. 静态代码块和构造代码块的区别是什么?

:静态代码块中的内容是随着类的加载而加载, 且只加载一次.
构造代码块中定义的是所有构造方法的共性内容, 每个构造方法执行之前, 都会先执行一次构造代码块中的内容.

24. 什么是继承?

:当多个类中有很多共性内容时, 每次写很麻烦. 我们可以把这些共性内容抽取出来单独的放到一个类中, 然后让那多个类和这个类产生一个关系, 这个关系就是: 继承.

25. 继承的好处和弊端分别是什么?


好处: 提高了代码的复用性, 扩展性和可维护性;让类与类之间产生了关系, 是多态的前提.
弊端:类与类之间的耦合性增强了, 和”高内聚, 低耦合”这一开发原则相违背.

26. Java中继承的特点是什么?

:类与类之间: 只能单继承, 不能多继承, 但是可以多层继承.
接口与接口之间: 既可以单继承, 也可以多继承.

27. this和super的区别是什么?

:this表示当前对象的引用, 谁调用, this就代表谁.
super表示当前对象的父类的内存空间标识.

28. 什么是多态, 它的前提条件是什么?

:同一个事物在不同时刻表现出来的不同形态, 状态就叫: 多态.
多态的前提条件有三个:

  1. 要有继承或者实现关系.
  2. 要有父类(父接口)引用指向子类对象.
  3. 要有方法重写.
29. 多态的好处和弊端分别是什么?


好处: 提高了代码的可扩展性, 维护性.
弊端: 父类(父接口)引用不能直接使用子类的特有成员.

30. abstract不能和那些关键字共存?

:不能和private共存. 因为抽象方法要求子类必须重写, 而私有方法子类根本无法直接方法, 谈何重写.
不能和static共存. 因为抽象方法没有方法体, 而静态方法可以被类名点的形式调用, 假设可以共存, 则类名点的形式调用无方法体的方法没有意义, 所以他们不能共存.
不能和final共存. 抽象方法要求子类必须重写, 而final修饰的方法子类不能重写.

你可能感兴趣的:(Java面试)