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中的longint可以相互转换。由于long类型的范围比int类型大,因此将int转换为long是安全的,而将long转换为int可能会导致数据丢失或溢出。

15.

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

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

16.

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

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

17.

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

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

18.

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

相关推荐
程序员清风1 小时前
为什么不推荐走Agent开发?
java·后端·面试
黄敬峰3 小时前
一文搞懂 LangGraph:从单 Agent 到多 Agent 协作的进化
面试
leo_messi943 小时前
面试知识点梳理及相关面试题(十六)-- 分布式设计
分布式·面试·职场和发展
David猪大卫3 小时前
【C++修炼】异常
开发语言·c++·经验分享·笔记·学习·考研·面试
再吃一根胡萝卜4 小时前
05 · Agent 编排:LangGraph 状态图与降级内核
面试
再吃一根胡萝卜4 小时前
01 · 开篇:需求分析与技术选型
面试
再吃一根胡萝卜4 小时前
06 · 工具调用:Text2SQL 与四层护栏
面试
再吃一根胡萝卜4 小时前
02 · 项目总览与 5 分钟跑起来
面试
再吃一根胡萝卜4 小时前
10 · 踩坑记录与优化清单
面试