【Java核心面试宝典】Day1、先给大家来几个面试开胃菜

2023-10-07 00:30

本文主要是介绍【Java核心面试宝典】Day1、先给大家来几个面试开胃菜,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Hello,你好呀,我是灰小猿!一个超会写bug的程序猿!

用坚持缔造技术、用指尖敲动未来!

和很多小伙伴们一样,我也是一名奔波在Java道路上的“创造者”。也想靠技术来改变未来,改变世界!因为我们坚信每一次敲动键盘都能让生活变得更智能、世界变得更有趣!

在此专栏《Java核心面试宝典》记录我们备战梦想的【day 1】!

开胃菜谱

1、JDK、JRE、JVM是什么?

2、什么是面向对象

3、Java的数据类型有哪些?

4、解释一下构造方法

5、如何理解方法的重载和重写?

6、解释this和super关键字

7、解释字符串三剑客(String、StringBuilder、StringBuffer)

8、equals和 == 的区别

9、解释接口和抽象类


Hello,你好呀,我是灰小猿,一个超会写bug的程序猿,

经过多方面的深思熟虑,我还是开了这样一个专栏“Java高薪面试宝典”,听着名字可能有些浮夸了,毕竟在坐的各位肯定都是技术领域的大佬呀,在这个专栏中,我想和大家分享一些在java面试中常见的一些面试问题,还有我们众多Java程序猿经常容易忽略或者在开发中常常会用到的一些问题,包括技术和管理等众多方面。

毕竟很多的面试都并不会让你直接的去讲述一个完整的项目的完成过程,而是对于在项目开发中经常会被程序员们忽略反而又比较重要的一些问题,甚至有时候还会拿一个看似很简单的问题来让我们交智商税。但是很多时候呢,又恰恰是那些不太起眼的面试题,却让我们与心爱的offer失之交臂。

所以考虑了很久之后,还是想在这里出一个关于Java面试的专栏,来帮助大家解决和应对在面试中可能会遇到的那些坑,同时也是在对我自己在Java学习之路进行一个记录和总结,之前我也和大家分享了几个互联网面试常见的应对技巧,感兴趣的小伙伴可以看我的这篇文章“互联网面试六大常见问题及应对技巧,2021不再入坑!”

在进行完整的学习之前,我先来和大家分享开胃小菜,Java面试中常见的几个小问题:

1、JDK、JRE、JVM是什么?

JDK:开发者提供的开发工具箱,是给程序开发者用的,它包括完整的jre、Java运行环境,还包括了其他供开发者使用的工具包。

JRE:运行时所必须的包依赖的环境都在jre中

JVM:当我们运行一个程序时,JVM负责将字节码转换为特定机器代码,JVM提供了内存管理、垃圾回收和安全机制等,他独立于硬件和操作系统,正是java程序可以一次编写多处执行的原因。

2、什么是面向对象

封装:封装把一个对象的属性私有化、同时提供一些可以被外界访问的属性的方法。

继承:

  • java是多单继承的,

  • 子类拥有父类非private的属性和方法

  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展

  • 子类可以用自己的方式实现父类的方法

多态:父类的引用指向子类

3、Java的数据类型有哪些?

很多人都会在这个看似简单的问题中入坑,一说到数据类型,很多人第一时间想到的就是int、char等类型,但是我们仔细看题就会发现,题中所问的问题是数据类型,而不是基本数据类型。

数据类型有两种,分别是“基本数据类型”和“引用数据类型”

基本数据类型包括的内容如下表:

byte

short

int

long

double

float

char

boolean

字节大小

1

2

4

8

8

4

2

1

占位大小

8

16

32

64

64

32

16

8

而引用数据类型包括的是三种:类、接口、数组

那么在Java中为什么会有“基本数据类型”和“引用数据类型”?

原因是因为引用类型在堆里,基本类型在栈里,

栈空间小且连续,往往会被放在缓存。引用类型的高速缓存率高且要多一次解引用。

而且对象还要再多储存一个对象头,对基本数据类型来说空间浪费率太高。

4、解释一下构造方法

构造方法有哪些规定?

  • 构造方法名必须与类名一致

  • 构造方法不举办任何返回值类型、关键字void也不能加入

  • 任何类都有构造方法,如果没有显示的定义,则系统会为该类定义一个默认的无参构造器

  • 如果显示的定义了构造器,系统就不会创建默认的不含参数的构造器了,

  • 一个类中可以编写多个构造方法,构造方法之间构成重载关系。

5、如何理解方法的重载和重写?

对于方法的重载和重写,这是两个非常容易混淆的概念,所以在这里做了一个表格的对比:

重载

重写

  1. 发生在同一个类中

  2. 方法名必须相同、参数不同,包括类型、个数、顺序,方法返回值和访问修饰符可以不同。

  3. 发生在编译时

  1. 发生在父子类中

  2. 方法名、参数列表必须相同

  3. 返回值范围小于等于父类

  4. 访问修饰符范围大于等于父类

  5. 抛出的异常范围小于等于父类

以上是几个在Java面试中常见的概念型面试题,接下来再和大家分享几个对比类的面试题

6、解释this和super关键字

在this和super关键字使用过程中有以下这些注意事项:

  • Super关键字用于从子类访问父类的变量和构造方法,也包含构造方法

  • Super调用父类中的其他构造方法时,调用时要放在构造方法的首行

  • this关键字用于引用类的当前实例,this可以调用当前类的构造方法

  • this调用本类中的其他构造方法时,也要放在首行

  • this和super都不能用在static方法中
     

7、解释字符串三剑客(String、StringBuilder、StringBuffer)

可变性

线程安全

性能

String

由final修饰,不可变

安全的

进行改变时,重新指向

StringBuilder

char[] value 可变

不安全

比StringBuffer有10%-15%的提升

StringBuffer

char[] value 可变

加锁、安全的

8、equals和 == 的区别

这个问题也是我们在开发时常用的两个进行比较的方法,但是这两种方法你真的了解吗?

==:判断两个基本数据类型的值是不是相等,或两个引用类型对象的地址是不是相等

equals():判断是否用一个对象,更加灵活

接下来我们来看一个经典的面试题实例:

public static void main(String[] args) {
Integer x = new Integer(500);
Integer y = new Integer(500);
System.out.println(x == y);Integer i = 128;
Integer j = 128;
System.out.println(i == j);Integer a = 127;
Integer b = 127;
System.out.println(a == b);}

上面这个实例的运行结果如下:

第一个是false,原因是因为:x和y是两个新的对象,所以这两个对象的地址是不同的

而对于第二个和第三个,为什么第一个是false,而第二个是true呢?原因是因为integer在常量池中的存储范围是[-128、127],127在这个范围之内,因此直接存储于常量池中,128不在这范围之内,所以会在堆中创建一个新的对象

9、解释接口和抽象类

接口是对行为的抽象,他是抽象方法的集合

  • 接口不用被实例化,所有成员默认被public static final所修饰

  • 接口中所有的方法,要么是抽象方法、要么是静态方法

  • 抽象类和接口一样不能被实例化

  • 抽象类中可以有一个或多个抽象方法,也可以不含有抽象方法

  • 抽象类是对共有方法实现或者共有成员变量的抽取,主要通过继承的方式用于代码重用

在这里需要注意的是:从Java8开始,接口增加了对default method方法的支持,

Java9之后增加了对private default method方法的支持。也就是说在java8中接口中的default方法和static方法都可以有方法体的

以上就是我和大家分享的几个Java面试中常见的开胃小菜,其实从很多Java相关的面试中就可以看出,很多面试官更会注重于对Java基础的考核,毕竟任何的Java高级技术都是建立在基础框架之上的,之后我也会继续在这个专栏和大家分享关于在Java面试中常见的核心考点。

觉得有用的小伙伴可以订阅专栏,

灰小猿陪你一起进步!

这篇关于【Java核心面试宝典】Day1、先给大家来几个面试开胃菜的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/154920

相关文章

Spring IOC的三种实现方式详解

《SpringIOC的三种实现方式详解》:本文主要介绍SpringIOC的三种实现方式,在Spring框架中,IOC通过依赖注入来实现,而依赖注入主要有三种实现方式,构造器注入、Setter注入... 目录1. 构造器注入(Cons编程tructor Injection)2. Setter注入(Setter

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

java中的HashSet与 == 和 equals的区别示例解析

《java中的HashSet与==和equals的区别示例解析》HashSet是Java中基于哈希表实现的集合类,特点包括:元素唯一、无序和可包含null,本文给大家介绍java中的HashSe... 目录什么是HashSetHashSet 的主要特点是HashSet 的常用方法hasSet存储为啥是无序的

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://

解决Spring运行时报错:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

《解决Spring运行时报错:Considerdefiningabeanoftype‘xxx.xxx.xxx.Xxx‘inyourconfiguration》该文章主要讲述了在使用S... 目录问题分析解决方案总结问题Description:Parameter 0 of constructor in x

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内