java初级重点面试题整理2022

又到了金三银四招聘季节,今天为大家整理一下java初级面试干货,助大家找到满意的高薪工作。

面向对象与类
java是一门面向对象的语言,什么是面向对象?java中,把一切事物看作是对象(Object),对象是一个具体的东西,它有自己的属性与行为动作。举一个例子,张三是一个具体的对象,他有自己的属性与行为动作,属性包括:姓名、年龄、身高、体重等,动作包括:吃饭、走路、跑步、说话、唱歌等等;李四也是一个具体的对象,他拥有与张三不同的属性,因为每个对象是有差别的,除了张三会的动作外,他还会写作。面向对象编程则是,对这些具体的对象来进行编程,你可以给创建出来的对象赋予一些属性与行为动作,要根据你的业务场景来设计。

什么是类?对象可以有很多个,这些同一类的对象就称作为类(Class),例如张三、李四是具体的对象并且他们是学生身份,那么这一类对象就构成学生类,先有类后有对象,因为要根据类来创建具体的对象。

java三大特征:封装、继承、多态
封装:把对象的属性与方法封装起来,保护对象的安全性。例如:把属性声明为private,那么在new 出对象时,该属性不能被修改,只有声明的get和set方法可以修改,方法亦是如此,这样就可以起到保护对象安全性的作用。

继承:如果有两样同一类事物并且有承上启下的关系,则是属于继承关系。例如:水果和苹果是同一类的东西,然后苹果是水果的一个分类,那么说苹果继承于水果,水果是父类,苹果是子类。子类继承父类,会拥有父类的属性与方法,除此之外,子类还可以拥有更多自己的属性与方法。

多态:继承是多态的基础,有继承关系才存在多态。例如:乐器是一个父类,那么乐器的子类有:钢琴、小提琴、吉他等等,父类乐器有一个共同的方法:play()。钢琴继承的play()方法是发出钢琴声,小提琴继承的play()方法是发出小提琴声,吉他继承的play()方法是发出吉他声,它们都有play()方法,但是方法的实现却是不同,这就叫多态,即同一方法的不同实现。例如(伪代码):

Class Instruments{
    play();
}
Class piano extends Instruments{
  public play(){
   System.out.println("piano play");
  }
}
Class guitar extends Instruments{
  public play(){
    println("guitar play");
  }
}
Class test{
  public test(Instruments instrument){
    instrument.play();
    //如果instrument指向piano,则输出piano play
    //如果instrument指向guitar,则输出guitar play
  }
}

接口和抽象类
实现:抽象类的子类使用 extends 来继承;接口实现用 implements 。
构造函数:抽象类可以有构造函数;接口不能有。
实现数量:类可以实现很多个接口;但是只能继承一个抽象类。
访问修饰符:接口中的方法默认使用 public 修饰;抽象类中的方法可以是任意访问修饰符。
Java8以后,接口也可以有实现的方法,default method。

String、StringBuilder、StringBuffer
String不是java的基本数据类型,它是一个对象并且是final修饰的对象,它的值是不可变的,因为它的值是存储在JVM内存模型中的字符串常量池。但是下面这样的代码也是没问题的,

String s = "123"; //这里s指向字符串常量池中123这个常量
s = "456"; //这里s指向字符串常量池中456这个常量

StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的对象。速度快慢:StringBuilder > StringBuffer > String。

StringBuilder 和 StringBuffer 最大的区别在于 StringBuilder 的方法是线程不安全的,而StringBuffer 则是线程安全的。

java集合类
集合类存放于 Java.util 包中,主要有 3 种:Set、List和 Map。
Collection:集合 List、Set、Queue 的最基本的接口。
Iterator:迭代器,可以通过迭代器遍历集合中的数据。
Map:是映射表的基础接口。

在这里插入图片描述

List
ArrayList:长度可变,有序、可重复,查询快、增删慢,因为底层存储用数组,线程不安全。

LinkedList:长度可变,有序、可重复,查询慢、增删快,因为底层存储用双向链表,线程不安全。

Vector:长度可变,有序、可重复,查询快、增删慢,因为底层存储用数组,线程安全但效率低。

Set
HashSet:长度可变,无序、不可重复,查询慢、增删快,因为底层存储用hash表,内部是HashMap。

TreeSet:长度可变,无序、不可重复,底层存储用二叉树,内部是TreeMap的SortedSet。

Map
HashMap:无序、键不可重复,值可重复(覆盖),键值都可以为null,底层存储用hash表,线程不安全。

HashTable:无序、键不可重复,值可重复(覆盖),键值都不可为null,底层存储用hash表,线程安全。

TreeMap:排序、键不可重复,值可重复(覆盖),键值都可以为null,底层存储用二叉树。

最后给大家推荐一本java界的葵花宝典,助大家系统学习,挑战高薪工作!
在这里插入图片描述
想学习更多java技术与资讯,请微信搜索公众号:yhjzixun。定时分享更多干货知识与常用开发工具。关注微信公众号发送idea、mysql获取下载链接。
在这里插入图片描述

Java初级开发面试题涵盖了Java语言基础、程序设计思想、常用开发框架等多个方面,以下是2022Java初级开发面试题的参考答案: 1. Java中的四种访问权限是什么?它们分别代表什么含义? 答:Java中的四种访问权限分别是private、default、protected和public。private表示私有访问权限,只能在当前类中被访问;default表示默认访问权限,只能在当前包中被访问;protected表示受保护的访问权限,可以在当前包和子类中被访问;public表示公共访问权限,可以在任何地方被访问。 2. Java中的多态是什么?它有哪些使用场景? 答:Java中的多态是指同一种类型的对象,在不同的情况下可以以不同的形态呈现出来的能力,主要是通过继承、接口和重载实现的。多态具有灵活性和可扩展性的特点,常见的使用场景包括:对象的类型不确定时,可以使用父类引用指向子类对象,以便进行各种操作;同一类对象在不同状态下的操作,可以使用方法重载和重写实现不同的行为。 3. 请简要介绍Java中常见的数据结构和算法。 答:Java中常见的数据结构包括数组、链表、栈、队列、树、图等,这些数据结构主要用于存储和操作数据。而算法则包括排序算法、查找算法、动态规划算法、贪心算法等等,这些算法用于解决不同的问题,提高程序的效率。 4. 什么是Java虚拟机(JVM)?它的作用是什么? 答:Java虚拟机(JVM)是Java程序运行的环境,它可以将Java源代码编译成字节码,再由JVM将字节码翻译成机器码来执行。JVM的作用主要包括:跨平台性,通过JVM可以将一份Java代码在不同的平台上执行;垃圾回收,JVM能够自动回收程序中无用对象的内存;安全性,JVM可以对字节码进行动态检查和验证,保证程序的安全性和健壮性。 5. 请介绍至少两种Java开发框架,以及它们的特点和使用场景。 答:Spring是目前最流行的Java开发框架之一,它提供了很多易用的组件和工具,包括依赖注入、AOP、DAO、事务管理等等,可以快速开发出高质量的Java应用程序。另外一个比较常用的框架是Hibernate,它是一个以ORM为核心的框架,可以将Java类和数据库表进行映射,提供了很多方便的API和工具,可以大大简化数据库操作的流程。Spring和Hibernate在很多Java项目中被广泛使用,它们的主要特点是易用性和可扩展性,适用于不同规模和复杂度的项目开发
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新之助Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值