java基础篇面试模拟

问题

1.Java 8 你知道有什么新特性?

2.八种基本的数据类型,对应字节数

3.八种基本的数据类型对应字节数

4.自动装箱和拆箱是什么?

5.面向对象的三大特征

6.多态体现在哪几个方面?

7.抽象类和普通类的区别

8.抽象类可以用final修饰吗

9.为什么静态变量不能访问非静态变量

10.java中final关键字的作用

11.Object类有哪些方法?

12.== 与 equals 有什么区别?

13.JVM、JDK、JRE三者关系?

14.long和int可以互转吗 ?

15.为什么用bigDecimal 不用double ?

16.重载与重写有什么区别?

17.深拷贝和浅拷贝的区别?

18.什么是反射?

回答

1.

Java 8 核心是引入函数式编程

语言层:

Lambda 表达式((a,b) -> a+b 代替匿名内部类)

函数式接口(只有一个抽象方法的接口)

方法引用(Lambda 的简写)

接口默认方法与静态方法(接口可定义默认实现和静态方法)

重复注解、类型注解。

类库层:

Stream API(链式处理集合)

Optional(防 空指针异常(NPE))

新的日期时间 API java.time(不可变、线程安全)

CompletableFuture(增强异步编程能力)

并行数组排序 Arrays.parallelSort

2.

  • 数值型:整数类型(byte、short、int、long)和浮点类型(float、double)
  • 字符型:char
  • 布尔型:boolean

3.

byte1 / short2 / char2 / int4 / long8 / float4 / double8 / boolean

4.

装箱(Boxing)和拆箱(Unboxing)是将基本数据类型和对应的包装类之间进行转换的过程。

自动装箱主要发生在赋值和方法调用时

5.

封装,继承,多态

6.

方法重载,方法重写,接口与实现,向上转型和向下转型

7.

实例化:普通类可以直接实例化对象,而抽象类不能被实例化,只能被继承。

方法实现:普通类中的方法可以有具体的实现,而抽象类中的方法可以有实现也可以没有实现。

实现限制:普通类可以被其他类继承和使用,而抽象类一般用于作为基类,被其他类继承和扩展使用。

8.

不能,Java中的抽象类是用来被继承的,而final修饰符用于禁止类被继承或方法被重写,因此,抽象类和final修饰符是互斥的,不能同时使用。

9.

根本原因是生命周期不同:静态成员随「类加载」而生,实例成员随「new」而生,类存在的时候可能一个对象都还没有,自然访问不到"还没出生"的东西。

10.

修饰类:当final修饰一个类时,表示这个类不能被继承

修饰方法:用final修饰的方法不能在子类中被重写。

修饰变量:当final修饰基本数据类型的变量时,该变量一旦被赋值就不能再改变。

11.

Object 是所有类的父类,提供 11 个方法,分成四组记:

  • 对象信息组:

toString():默认返回 类名@十六进制hashCode

getClass():返回运行时真实类型

hashCode():返回哈希值

  • 比较组:

equals()

  • 拷贝与回收组:

clone():默认浅拷贝

finlize():自Java 9起 废弃

  • 线程协作组:

wait() × 3 个重载 + notify() + notifyAll(),必须在 synchronized 块里调用

quals 比不比内容,取决于这个类有没有重写它。

12.

== 是运算符,equals 是方法 ------这是最根本的区别。

== :比基本类型 时比的是值 ;比引用类型 时比的是内存地址 (是不是同一个对象)。

equals :是 Object 的方法,默认实现就是 == (也是比地址),只有重写过的类(String、Integer)才比内容------所以"equals 比内容"这个说法有前提。

13.

JVM是Java虚拟机,是Java程序运行的环境。

JDK(Java Development Kit)是Java开发工具包,是开发Java程序所需的工具集合。

JRE是Java运行时环境,是Java程序运行所需的最小环境。

14.

Java中的long和int可以相互转换。由于long类型的范围比int类型大,因此将int转换为long是安全的,而将long转换为int可能会导致数据丢失或溢出。

15.

double 是二进制浮点数,0.1 在二进制里是无限循环小数

**BigDecimal**全程整数运算,所以完全精确,一般牵扯到金钱的计算 , 都使用 BigDecimal

16.

重载(Overloading)指的是在同一个类中,可以有多个同名方法,它们具有不同的参数列表(参数类型、参数个数或参数顺序不同),编译器根据调用时的参数类型来决定调用哪个方法。

重写(Overriding)指的是子类可以重新定义父类中的方法,方法名、参数列表和返回类型必须与父类中的方法一致,通过@override注解来明确表示这是对父类方法的重写。

17.

浅拷贝是指只复制对象本身和其内部的值类型字段,但不会复制对象内部的引用类型字段。

深拷贝是指在复制对象的同时,将对象内部的所有引用类型字段的内容也复制一份,而不是共享引用。

18.

Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性;

相关推荐
ShineWinsu4 小时前
对于JavaScript:操作元素的解析
开发语言·前端·javascript·面试·web·dom·元素
1m555555557 小时前
RAG 工程实战(五):正确知识已经进入 Prompt,为什么大模型还是会答错?
后端·面试
CoderYanger7 小时前
Java EE 进阶:4.Spring Web MVC 入门(第一弹)
java·开发语言·前端·spring·面试·java-ee·mvc
招聘背调实务专家杨宏7 小时前
上级评价出现主观偏差与口径冲突时如何校准
职场和发展
白露与泡影8 小时前
后端 Java 面试核心八股汇总|高频面试题 + 解析,覆盖基础到进阶
java·开发语言·面试
花间相见9 小时前
【计算基础|MySQL09】索引(下):失效与设计
数据库·后端·面试
前端小万9 小时前
探索副业五个月,最终以放弃告终
前端·后端·面试
学到老活到老10 小时前
CAS:不加锁,AtomicInteger 怎么把计数加对?
面试
职豚求职小程序10 小时前
中国铁塔2027届校招开启,网申怎么投、笔试面试怎么准备?
面试·职场和发展
弈栈录10 小时前
向量化、召回与重排序服务的实现
后端·面试·架构