java基础面试题1

news2024/12/23 16:47:31

目录

Java语言有哪些特点

Java都有那些开发平台?

Jdk和Jre和JVM的区别【重要】

面向对象和面向过程的区别  

什么是数据结构?Java的数据结构有哪些?

1.数组:

2.队列 Queue

 3.链表  Linked List

4.栈Stack

 5.树Tree

什么是OOP?

类与对象的关系?

面向对象的特征?【重要】

Java中的基本数据类型?

 什么是隐式转换,什么是显式转换 ?【重要】

 char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型

float f=3.4;是否正确?

自动拆箱和自动装箱[重要]

 Java中的包装类都是那些?

 instanceof关键字的作用

 一个java类中包含那些内容?

访问修饰符 public,private,protected,以及不写(默认)时的区别?【重要】

 局部变量和成员变量的区别?

重载(Overload)和重写(Override)的区别?【重要】

equals与==的区别?【重要】

++i与i++的区别

数组实例化有几种方式?

 Java中各种数据默认值

 Java常用包有那些?【重要】

 Object类常用方法有那些?

 java中有没有指针?

构造方法能不能显式调用?

 内部类与静态内部类的区别?

Static关键字有什么作用?【****】

 final在java中的作用,有哪些用法?【****】

 StringString StringBuffer 和 StringBuilder 的区别是什么?【重要】

 讲下java中的math类有那些常用方法?

 String类的常用方法有那些?

 什么是接口?为什么需要接口?接口特点?

 抽象类和接口的区别?【重要】


Java语言有哪些特点

1.简单易学,有丰富的类库

2.面向对象(Java最重要的特性,让程序耦合度更低)

3.跨平台(JVM实现)

4.支持多线程

Java都有那些开发平台?

 

1. JAVA SE :主要用在客户端开发
2. JAVA EE :主要用在 web 应用程序开发
3. JAVA ME :主要用在嵌入式应用程序开发

JdkJreJVM的区别【重要】

1、JDK是java开发工具包,是整个java的核心,包含了java运行环境JRE,java开发工具(是开发人员所需要安装的环境)

2.JRE是运行Java程序所必须的环境集合,包含了JVM和核心类库(java的运行环境,java程序运行所需要安装的环境)

3.JVM是Java虚拟机的缩写,是整个Java实现跨平台的最核心部分

 

 

面向对象和面向过程的区别  

1.面向过程

一种较早的编程思想,顾名思义就是该思想是站着过程的思想强调的就是功能行为,功能的执行过程,即先后顺序,而每 一个功能我们都使用函数(类似于方法)把这些步骤一步一步实现。使用的时候依次调用函数就可以了。

2.面向对象

一种基于面向过程的新编程思想,顾名思义就是该思想是站在对象的角度思考问题,我们把 多个功能合理放到不同对象里 ,强调的是 具备某些功能的对象。
具备某种功能的实体,称为对象。面向对象最小的程序单元是:类。
面向对象更加符合常规的思维方式, 稳定性好,可重用性强,易 于开发大型软件产品,有良好的可维护性。
在软件工程上,面向对象可以使工程更加模块化,实现更低的耦合和更高的内聚。

什么是数据结构?Java的数据结构有哪些?

1.数据结构,简单的就是计算机存储,组织数据的集合

(精心选择的数据结构可以带来更高的运行或者存储效率)

2. 

1.数组:

数组是最简单,使用最频繁的数据结构。它是一种线性表 数据结构用一组连续的内存空间来储存一组相同类型的数据

(数据是按照顺序储存在内存的连续空间内,由于数据是储存在连续空间内的,所以每个数据的内存地址都可以通过数组下标计算出来,从而直接访问数据)

 优点:按照索引查询元素速度快,按照索引遍历方便

缺点:

1.数组储存空间的大小固定后无法扩容了,

2.数组只能存一种类型的数据,

3.添加,删除的操作慢,因为要移动其他元素

2.队列 Queue

特点是,先入先出,操作是两段进行的(相当于排队做核酸)

 3.链表  Linked List

链表是 一种物理储存单元上非连续,非顺序的储存结构,链表有一系类节点组成,节点就是指链表中的每一个元素,每个节点包含两个数据(一个是存储元素的数据域(值) 另一个存储下一个节点地址的指针域)

 

 假设上图中100-108是一块内存中连续地址的内存分布,假设101、103、106、107这几个内存地址都已经存储数据了,那剩下的100、102、104、105、108是不是就浪费呢,答案是否定的,我们可以使用链表的方式存储数据。

 优点:

添加或者删除元素只需要改变前后两个元素节点的指针域指向地址即可,添加,删除比数组快

缺点:

因为有大量的指针域,占用空间大

查找时,要遍历,比数组慢

4.栈Stack

栈是一种数据程线性排列的数据结构,和上边的队列相反,特点是   先进后出 常说LIFO (Last in First Out)

 栈的结构就像一个集装箱,越先放进去的东西越晚才能拿出来,所以,栈常应用于实现递归功能方面的场景,例如斐波那契数列。

 5.树Tree

树形结构是一种层级的数据结构,由顶点(节点) 和 连接他们的边组成

 1.二叉树 (如果是顺序插入的,则会形成一个单向链表)

缺点:顺序插入时,会形成一个链表,查询性能大大降低(大数据也慢)

 2.红黑树(平衡二叉树)

特点:

 缺点:

大数据量情况下,层级较深,检索速度慢

 3.B-Tree(是一种多叉路衡查找树,相对于二叉树)

 以一颗最大度数(max-degree)为5(5阶)的b-tree为例,那这个B树每个节点最多存储4个key,5个指针

 特点:

        5阶的B树,每一个节点最多4个Key,5个指针

        一旦节点存储的key数量到达5,就会裂变,中间元素向上分裂。

        非叶子节点和叶子节点都会存放数据。

 4.B+Tree

 B+Tree是B-Tree的变种,我们以一颗最大度数(max-degree)为4(4阶)的b+tree为例,

 绿色框框起来的部分,是索引部分,仅仅起到索引数据的作用,不存储数据。

红色框框起来的部分,是数据存储部分,在其叶子节点中要存储具体的数据。

 特点:

1.所有节点都会出现在叶子节点

2.叶子结点形成一个单向链表

3.非叶子节点仅仅起到索引数据作用,具体的数据都是在叶子节点存放的

 数据结构还有好多。。

什么是OOP?

 面向对象编程

类与对象的关系?

类是对象的抽象,对象是类的具体,类是对象的模板,对象是类的实例

面向对象的特征?【重要】

封装:隐藏实现的细节,对外暴露公共的访问方式,将公共的代码封装,private修饰的属性,封装Getter,Setter方法
继承:子类继承父类的数据属性和行为,并能根据自己的需求扩展出新的行为,提高了代码复用性,子类所有的构造方法都会访问父类中的无参构造方法
多态:同一个对象在不同时刻表现出来的多种形态
多态产生条件:
1.有继承或者实现的关系
2.有方法的重写
3.父类的引用指向子类对象

多态下成员变量 和 方法:

*******成员变量: 编译看左边  执行看左边******
*******成员方法: 编译看左边  执行看右边******

多态的好处 和 弊端:

好处:

1.作为形参 : 扩大了形参 接收 范围。

2.作为返回值:扩大了接收返回值类型的范围。 

弊端:

        不能使用子类特有特征;

多态转型:
1.向上转型:

        zi 》fu

        举例:Father f = new Son();   多态

2.向下转型:

        需要强转:

                Son s = (Son)f;

                        强转有风险

                                有类型转换异常可能 ClassCastExeption

                                dog 无法转换 cat

                        引用关键字  instanceof 判断 是XXX 类型的吗

Java中的基本数据类型?

Java语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的 数据类型 也分配了不同的 内存空间 ,

所以它们表示的 数据大小 也是不一样的。

 

 什么是隐式转换,什么是显式转换 ?【重要】

 

 基本数据类型之间的运算
*   1.自动数据类型的提升(不包含boolean)
*       byte . char . short --> int --> long --> float --> double

2.强制数据类型的转换(格式:(目标类型) 数据)
*       double d1 = 12.9;
*       int i1 = (int)d1;
 
 
强制类型转换 (范围大的 转 范围小的)
 
举例:int a = (int)1.5;
        将 double 类型的1.5 强转为1;
        在 赋值给 a 

 char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型

Char<int<long<flfloat<double Char 类型可以隐式转成 int,double 类型,但是不能隐式转换成 string
如果 char 类 型转成byte short 类型的时候,需要强转

float f=3.4;是否正确?

: 不正确。 3.4 是双精度数,将双精度型( double )赋值给浮点型( flfloat )属于 下转型( down-casting ,也称为窄化)会造成精度损失,
因此需要强制类型转换 flfloat f =(flfloat)3.4; 或者写成 flfloat f =3.4F;

自动拆箱和自动装箱[重要]

自动装箱: 将  基本数据类型  自动转换 为 对应的包装类型(valueof)

 /*
        * 自动 装箱:
        *       将  基本数据类型  自动转换 为 对应的包装类型
        *       比如: Integer i = 123;
        *           底层: 将基本数据类型 的123  自动转换(valueOf) 为  包装类型
        *       叫自动装箱
        *
        *
        * */
        Integer i = 123;
        Integer integer = Integer.valueOf(122);

 自动拆箱: 包装类 类型 转换 为对应的   基本数据类型(XXX.intValue())

/*
        * 自动拆箱  : 包装类 类型 转换 为对应的   基本数据类型
        *
        *   比如说: int  a = 1;
        *   将引用类型i 自动转换 (i.intValue())  成基本数据类型
        *
        *
        *
        * */

 Java中的包装类都是那些?

 

 instanceof关键字的作用

 instanceof关键字是判断instanceof左边的对象是否属于右边的类型(用于引用类型的判断结果为true或false)

instanceof前面的对象所属的类是后面类型的类或者是其子类的话,判断结果为true,否则为false

 一个java类中包含那些内容?

 属性、方法、内部类、构造方法、代码块。

访问修饰符 public,private,protected,以及不写(默认)时的区别?【重要】

 局部变量和成员变量的区别?

1.局部变量:方法内,没有默认值(使用前必须赋值),栈中,方法调用

2.成员变量:类中方法外,有默认值,堆中,对象创建而创建

重载(Overload)和重写(Override)的区别?【重要】

重载(Overload)发生在同一个类中,同一方法名,不同的形参列表(个数,顺序,参数类型)

(与返回值和访问修饰符无关)

重写(Override)父子类中,子类对父类方法进行重写,方法体不同,方法声明一样

equals==的区别?【重要】

== 作用:

        基本数据类型:比较的是值是否相同

        引用数据类型:比较的是地址值是否相同

equals作用:

        引用类型:默认情况下,比较的是地址值

        特:String,Integer,Date这些类库中equels被重写,比较的是内容而不是地址值

++ii++的区别

i++ :先赋值,后计算
++i :先计算,后赋值

数组实例化有几种方式?

静态实例化:创建数组的时候已经指定数组中的元素 ,
动态实例化:实例化数组的时候,只指定了数组程度,数组中所有元素都是数组类型的默认值

 Java中各种数据默认值

Byte,short,int,long 默认是都是 0
Boolean 默认值是 false
Char 类型的默认值是 ’’
Float double 类型的默认是 0.0
对象类型的默认值是 null

 Java常用包有那些?【重要】

Java . lang
Java . io
Java . sql
Java . util
Java . awt
Java . net
Java . math

 Object类常用方法有那些?

Java中所有的类都有一个共同的祖先。这个祖先就是Object类

Equals
Hashcode
toString
wait
notify
clone
getClass

 java中有没有指针?

有指针,但是隐藏了,开发人员无法直接操作指针,由jvm来操作指针  

构造方法能不能显式调用?

不能,构造方法当成普通方法调用,只有在创建对象(实例化对象)的时候它才会被系统调用

 内部类与静态内部类的区别?

 定义在一个类内部的类叫内部类,包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制,可以声明 为abstract的供其他内部类或外部类继承与扩展,或者声明为static、final的,也可以实现特定的接口。外部类按常规的类访问方式使用内部 类,唯一的差别是外部类可以访问内部类的所有方法与属性,包括私有方法与属性。
 

1.静态内部类可以有静态成员(方法,属性),而非静态内部类则不能有静态成员(方法,属性)。
 * 2.静态内部类只能够访问外部类的静态成员,而非静态内部类则可以访问外部类的所有成员(方法,属性)。 

Static关键字有什么作用?【****】

 Static可以修饰内部类、方法、变量、代码块

Static修饰的类是静态内部类
Static修饰的方法是静态方法,表示该方法属于当前类的,而不属于某个对象的,静态方法也不能被重写,可以直接使用类名来调用。在 static方法中不能使用this或者super关键字。
Static修饰变量是静态变量或者叫类变量,静态变量被所有实例所共享,不会依赖于对象。静态变量在内存中只有一份拷贝,在JVM加载类 的时候,只为静态分配一次内存。
Static 修饰的代码块叫静态代码块,通常用来做程序优化的。静态代码块中的代码在整个类加载的时候只会执行一次。静态代码块可以有多 个,如果有多个,按照先后顺序依次执行。

 finaljava中的作用,有哪些用法?【****】

final 也是很多面试喜欢问的地方 , 但我觉得这个问题很无聊 , 通常能回答下以下 5 点就不错了 :
1. final修饰的类不可以被继承
2. final修饰的方法不可以被重写
3. final修饰的变量不可以被改变【常量】 . 如果修饰引用 , 那么表示引用不可变 , 引用指向的内容可变 .
4. final 修饰的方法 ,JVM 会尝试将其内联 , 以提高运行效率
5. final修饰的常量,在编译阶段会存入常量池中 .
除此之外 ,
编译器对 final 域要遵守的两个重排序规则更好 :
在构造函数内对一个 final 域的写入 , 与随后把这个被构造对象的引用赋值给一个引用变量 , 这两个操作之间不能重排序
初次读一个包含 final 域的对象的引用 , 与随后初次读这个 final , 这两个操作之间不能重排序

 StringString StringBuffer StringBuilder 的区别是什么?【重要】

String是字符串常量,用final修饰,不能继承(少量操作)

StringBuffer字符串变量(线程安全)(多线程大量操作) synchronized关键字

StringBuilder字符串变量(非线程安全)

 讲下java中的math类有那些常用方法?

Pow() :幂运算
Sqrt() :平方根
Round() :四舍五入
Abs() :求绝对值
Random() :生成一个 0-1 的随机数,包括 0 不包括 1

。。。。

 String类的常用方法有那些?

charAt :返回指定索引处的字符
indexOf() :返回指定字符的索引
replace() :字符串替换
trim() :去除字符串两端空白
split() :分割字符串,返回一个分割后的字符串数组
getBytes() :返回字符串的 byte 类型数组
length() :返回字符串长度
toLowerCase() :将字符串转成小写字母
toUpperCase() :将字符串转成大写字符
substring() :截取字符串
format() :格式化字符串
equals() :字符串比较

 

 什么是接口?为什么需要接口?接口特点?

 接口就是某个事物对外提供的一些功能的声明,是一种特殊的java类,接口弥补了java单继承的缺点

接口中声明全是 public static fifinal 修饰的常量
接口中所有方法都是抽象方法
接口是没有构造方法的
接口也不能直接实例化
接口可以多继承

 抽象类和接口的区别?【重要】

抽象类:
1. 抽象方法,只有行为的概念,没有具体的行为实现。使用 abstract 关键字修饰,没有方法体。子类必须重写这些抽象方法。
2. 包含抽象方法的类,一定是抽象类。
3. 抽象类只能被继承,一个类只能继承一个抽象类。
接口:
1. 全部的方法都是抽象方法,属性都是常量
2. 不能实例化,可以定义变量。
3. 接口变量可以引用具体实现类的实例
4. 接口只能被实现,一个具体类实现接口,必须实现全部的抽象方法
5. 接口之间可以多实现
6. 一个具体类可以实现多个接口,实现多继承现象

 不断更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/194920.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

13薪|初级测试工程师

"众推职聘”以交付结果为宗旨的全流程化招聘服务平台&#xff01;今日招聘信息↓【工作内容】1、制定、编写软件测试方案与计划2、根据需求文档编写测试用例&#xff0c;组织测试用例评审3、按时完成软件测试工作任务&#xff0c;执行测试&#xff0c;跟踪缺陷状态&#x…

第十四章 集合(集合框架体系、List)

一、集合框架体系 &#xff08;1&#xff09;可以动态保存任意多个对象 &#xff08;2&#xff09;提供了一系列方便的操作对象的方法&#xff1a;add、remove、set、get等 集合框架体系&#xff1a; 二、Collection 1. Collection 接口常用方法 &#xff08;1&#xff09;add…

学习QCustomPlot【3】库结构

文章目录一、前言二、库结构三、图层3.1、坐标轴层一、前言 学习一个陌生的库&#xff0c;我们首先要明确它有什么用&#xff0c;可以结合库官方examples&#xff0c;学习怎么简单的用。 但是如果要对该库有一个全面的认识&#xff0c;还是需要了解它的开发思路和库结构。 例…

2、计算机视觉之图像分类算法基础(笔记)

什么是图像分类&#xff1f; 识别图像所表示内容的任务称为图像分类。我们可以对图像分类模型进行训练以识别各类图像。例如&#xff0c;您可以训练模型来识别表示三种不同类型动物的照片&#xff1a;兔子、仓鼠和狗。 下面几个神经网络重点关注准确率的问题 上图只是训练方式…

java—for结构

for循环语句1.1循环结构循环结构的组成&#xff1a;初始化语句条件判断语句循环体语句条件控制语句循环结构对应的语法&#xff1a;初始化语句条件判断语句循环体语句条件控制语句1.2for循环语句格式//格式 for (初始化语句;条件判断语句;条件控制语句){ 循环体语句; }执行流程…

记录每日LeetCode 环形链表II Java实现

题目描述&#xff1a; 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xf…

06_PyTorch 模型训练[学习率与优化器基类]

当数据、模型和损失函数确定&#xff0c;任务的数学模型就已经确定&#xff0c;接着就要选择一个合适 的优化器(Optimizer)对该模型进行优化。 PyTorch 中所有的优化器(如&#xff1a;optim.Adadelta、optim.SGD、optim.RMSprop 等)均是 Optimizer 的子类&#xff0c;Optimizer…

STM32串口收发、串口中断、串口波特率的理解、普通IO模拟串口

STM32串口收发、串口中断一 、串口中断二、使用DMA三、串口波特率的理解开发环境&#xff1a;stm32cubuMax Keil5一 、串口中断 1.当收到消息的时候&#xff0c;立即进入控制程序,实现通过串口控制硬件&#xff1b; 2.在stm32cubeMax中配置串口 配置全局中断 2.在main函数中…

Django项目搭建_修改目录结构

1.安装环境 使用conda下载Django项目需要的依赖 pip install django2.2.6 -i https://pypi.douban.com/simple/pip install djangorestframework -i https://pypi.douban.com/simple/pip install PymySQL -i https://pypi.douban.com/simple/pip install Pillow -i https://p…

CSDN为什么会发展社区?看看官方怎么说

文章目录&#x1f31f; 课前小差&#x1f31f; 23年可兼收名利&#xff1f;&#x1f31f; 博客之星&#x1f31f; 红包活动&#x1f31f; 相聚线下&#x1f31f; 妙笔生花&#x1f31f; 原力计划&#x1f31f; 个人定位&#x1f31f; 为什么要发展社区&#xff1f;&#x1f31f…

100种思维模型之决策树思维模型-004

选择决定了现状和未来&#xff0c;在生活中有很多选择的机会&#xff0c;但是真的选择对了吗&#xff1f;在该读书的年纪&#xff0c;却想着长大真好。在该工作奋斗的年纪&#xff0c;却后悔自己年轻时没好好读书&#xff0c;而悔恨。其实不是我们没有选择的权利&#xff0c;而…

2023年情人节浪漫表白神器(附源码下载)

2023年情人节将要来临&#xff0c;作为一名程序猿也不要落后了&#xff0c;快来用代码展示你的爱吧&#xff01;下面给大家准备了6款情人节表白神器&#xff0c;把说不出口的话&#xff0c;放到代码里送给你爱的人吧&#xff01;祝大家表白成功&#xff0c;俘获美人心&#xff…

Spring Boot集成 Swagger2 展现在线接口文档

一&#xff1a;swagger是什么&#xff1f; Swagger是一款RESTFUL接口的文档在线自动生成功能测试功能软件。Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。目标是使客户端和文件系统作为服务器以同样的速度来更新文件的方法,参数和模型紧…

浅析云边端协同框架下的“AI+”视频融合能力以及场景应用

随着边缘侧与终端侧业务的规模化落地部署&#xff0c;很多新的业务场景已经逐渐不满足于中心化的云端计算模式。尤其是在AI人工智能技术进一步落地应用的趋势下&#xff0c;基于云边端深度融合与协同的“AI”模式&#xff0c;在满足用户对视频服务的智能识别需求上&#xff0c;…

centos环境docker安装nexus3搭建maven私有仓库

拉取最新nexus3镜像docker pull nexus3创建宿主机上的映射文件目录&#xff0c;并授权[root1-0002 ~]# mkdir -p /mnt/lckj/nexus/data [root1-0002 ~]# chmod -R 777 /mnt/lckj/nexus/data运行redis&#xff0c;生成相应容器-d 后台启动[root1-0002 ~]# docker run -d --name …

Go并发读取string的Panic问题

上问题&#xff0c;先看下panic的函数栈信息&#xff0c;说现实strings.Count()发生了panic&#xff0c;来看下函数 第一个参数是字符串s&#xff0c;再结合函数栈信息的十六进制&#xff0c;0x0、0x9表示字符串s的地址和长度 这里来看一下string的底层数据结构&#xff1a;…

Spring Security OAuth2.0认证授权

目录 1.基本概念 1.1什么是认证 1.2什么是会话&#xff1f; 1.2什么是授权 1.3授权的数据模型 1.4.1基于角色的访问控制 1.4.2基于资源的访问控制 2.基于Session的认证方式 2.1认证流程 分布式系统认证方案 什么事分布式系统&#xff1f; 分布式认证需求 分布式认证…

行业安全解决方案 | 能源行业如何在新时期建设新安全?

伴随5G、人工智能、大数据、云计算等新技术的蓬勃发展&#xff0c;数智化成为传统电力能源转型发展的重要方向。与此同时&#xff0c;伴随着能源行业数字技术与电力技术、业务生产的愈发深度的融合&#xff0c;新时期的能源行业网络安全形势有了新变化&#xff0c;网络边界威胁…

DPDK实现的用户态协议栈(UDP)

DPDK实现的用户态协议栈背景NIC与DPDK的比较环境配置Windowe下配置静态IP表代码实现总结背景 DPDK接管NIC之后&#xff0c;接收到的数据都是原始数据&#xff0c;要实现一个协议栈就必须解析协议包和打包协议包&#xff0c;DPDK提供了丰富的API可以使用。 以UDP协议为例&#…

redis分布式集群

文章目录一、redis持久化1.1.RDB持久化1.1.1.执行时机1.1.2.RDB原理1.1.3.小结1.2.AOF持久化1.2.1.AOF原理1.2.2.AOF配置1.2.3.AOF文件重写1.2.4.小结1.3.RDB与AOF对比二、Redis主从集群2.1.集群结构2.2.准备实例和配置2.3.启动2.4.开启主从关系2.5.测试2.6.主从数据同步原理2.…