2022Java笔试题选择题整理(附答案解析)走过路过不要错过了喂!

article/2025/10/30 21:36:36

2022Java笔试题选择题(一)

 🏠个人主页:@编程ID 
 🧑个人简介:大家好,我是编程ID,一个想要与大家共同进步的程序员儿
 🧑如果各位大佬在准备面试,找工作,刷算法,刷选择题,可以使用我找工作前用的刷题神器哦![面试刷题神器🎁]
 💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,望能帮到各位想要找工作或者提高自己的小伙伴儿们,如果有什么需要改进的地方,还请大佬不吝赐教🤞🤞

真正做错的题,不会做的题价值才最大!!!

1、有如下一段代码,请选择其运行结果()

public class StringDemo{private static final String MESSAGE="csdn";public static void main(String [] args) {String a ="cs"+"dn";String b="cs";String c="dn";System.out.println(a==MESSAGE);System.out.println((b+c)==MESSAGE);}
}  

A.true true

B.false false

C.false true

D.true false

★为了给大家思考的空间,答案放在在下一题下方!

2、java中的哪些包不需要手动导入(自动导入)?()

A.java.lang

B.java.util

C.java.applet

D.java.awt

★为了给大家思考的空间,答案放在在下一题下方!

☝第一题解析
答案:D
要注意两个问题:
1,字符串在java中存储在字符串常量区中(不属于堆和栈)
2,==判断的是对象引用是否是同一个引用,判断字符串相等要用equals方法
首先判断a==MESSAGE 
String a = "tao" + "bao";
此时的a会存放在常量池区域内 
同一份字符串常量在内存中只有一份,据题意 , a会和定义的静态常量指向的是同一地址,返回true
再次比较(b+c)==MESSAGE 这相当于 new String(b+c)==MESSAGE 这里new了一个String对象,所以返回false
扩展知识:
1.堆(heap)在JVM中只有一个堆,在虚拟机开启时创建,所有的线程都共用这一个堆。类的对象会储存在堆内存中,而new对象的引用地址会储存在stack栈中。堆中只存储对象本身和数组。2.栈(stack)Java栈与堆不同每一个线程都有一个stack,栈的区域非常小,大概只有1M左右,但是存储速度非常快,所以我们把快速执行的任务存储在stack。栈中存储的就是基本数据类型和对象的引用(地址,而不是实例!)。3.方法区(method)方法区(method)又叫静态区,这里主要存储的就是类(class)、静态方法、静态变量、常量以及成员方法。我们可以发现在方法区中存储的都是整个程序中唯一存在的元素,所以方法区与堆一样被所有线程共享。我们常说的常量池也是方法区的一部分。

 

3、根据以下代码段,执行new Child("John", 10); 要使数据域data得到10,则子类空白处应该填写(    )。

A.data = d;

B.super.data = d;

C.Parent(d);

D.super(d);

★为了给大家思考的空间,答案放在在下一题下方!

☝第二题解析
答案:A
本题考查Java中包的概念。Java中用import语句来导入包,但需注意的是,Java语言中的java.lang包是由编译器直接自动导入的,
因此,编程时使用该包中的类,可省去 import导入。使用其他包中的类,必须用import导入。

扩展知识:

java.lang:java.lang包是Java语言的核心,它提供了java中的基础类。包括基本Object类、Class类、String类、基本类型的包装类、基本的数学类等等最基本的类。

Java 8中的java.lang包。主要类如下图:

4、以下代码的输出结果是?

public class B
{public static B t1 = new B();public static B t2 = new B();{System.out.println("构造块");}static{System.out.println("静态块");}public static void main(String[] args){B t = new B();}
}

A.静态块 构造块 构造块 构造块

B.构造块 静态块 构造块 构造块

C.构造块 构造块 静态块 构造块

D.构造块 构造块 构造块 静态块

★为了给大家思考的空间,答案放在在下一题下方!

☝第三题解析(喜欢就点赞收藏起来趴♥♥♥)
答案: D
1.子父类存在同名成员时,子类中默认访问子类的成员,可通过super指定访问父类的成员,格式:super.xx  (注:xx是成员名);
2.创建子类对象时,默认会调用父类的无参构造方法,可通过super指定调用父类其他构造方法,格式:s uper(yy) (注:yy是父类构造方法需要传递的参数)

5、下列代码输出结果为(      )

class Animal{public void move(){System.out.println("动物可以移动");}
}
class Dog extends Animal{public void move(){System.out.println("狗可以跑和走");}public void bark(){System.out.println("狗可以吠叫");}
}
public class TestDog{public static void main(String args[]){Animal a = new Animal();Animal b = new Dog(); a.move();b.move();b.bark();}
}

A.动物可以移动

狗可以跑和走

狗可以吠叫

B.动物可以移动

动物可以移动

狗可以吠叫

C.运行错误

D.编译错误

★为了给大家思考的空间,答案放在在下一题下方!

☝第四题解析
答案:C
开始时JVM加载B.class,对所有的静态成员进行声明,t1 t2被初始化为默认值,为null,又因为t1 t2需要被显式初始化,
所以对t1进行显式初始化,初始化代码块→构造函数(没有就是调用默认的构造函数),咦!静态代码块咋不初始化?因为
在开始时已经对static部分进行了初始化,虽然只对static变量进行了初始化,但在初始化t1时也不会再执行static块了,
因为JVM认为这是第二次加载类B了,所以static会在t1初始化时被忽略掉,所以直接初始化非static部分,也就是构造块
部分(输出''构造块'')接着构造函数(无输出)。接着对t2进行初始化过程同t1相同(输出'构造块'),此时就对所有
的static变量都完成了初始化,接着就执行static块部分(输出'静态块'),接着执行,main方法,同样也,new了对象,
调用构造函数输出('构造块')

6、往OuterClass类的代码段中插入内部类声明, 错误的是:

public class OuterClass{private float f=1.0f;//插入代码到这里
}
A.class InnerClass{
public static float func(){return f;}
}
B.abstract class InnerClass{
public abstract float func(){}
}
C.static class InnerClass{
protected static float func(){return f;}
}
D.public class InnerClass{static float func(){return f;}
}

★为了给大家思考的空间,答案放在在下一题下方!

☝第五题解析(喜欢就点赞收藏起来趴♥♥♥)
答案: D  
编译看左边,运行看右边。也就是是编译的时候会把它当成左边的类型,运行的时候看右边类型的方法体。
父类型引用指向子类型对象,无法调用只在子类型里定义的方法

7、以下代码的运行结果是什么(  )

class Supper{     public int get()    {          System.out.println("Supper");         return 5;     }    }     public class Sub{     public int get()    {         System.out.println("Sub");        return new Integer("5");          }      public static void main(String args[]) {          new Supper().get();        new Sub().get();          }   }
A.Supper Sub
B.Supper 5 Sub
C.Supper 5 5 Sub
D.Supper Sub 5 5

★为了给大家思考的空间,答案放在在下一题下方!

☝第六题解析(喜欢就点赞收藏起来趴♥♥♥)
答案:  A B C D 
A  静态内部类中才能含有静态属性,静态方法当中不能引用非静态变量。
B 抽象类不能有方法体。
C 静态方法当中不能引用非静态变量
D  静态方法当中不能引用非静态变量

8、java用()机制实现了线程之间的同步执行

A.监视器
B.虚拟机
C.多个CPU
D.异步调用

★为了给大家思考的空间,答案放在在下一题下方!

☝第七题解析(喜欢就点赞收藏起来趴♥♥♥)
答案: A
要相信自己,明明都没有打印返回值,哪来的5

9、以下哪个式子有可能在某个进制下成立()

A.13*14=204
B.12*34=568
C.14*14=140
D.1+1=3

★为了给大家思考的空间,答案放在在下一题下方!

☝第八题解析(喜欢就点赞收藏起来趴♥♥♥)
答案: A
首先jvm中没有进程的概念 ,但是jvm中的线程映射为操作系统中的进程,对应关系为1:1。那这道题的问的就是jvm中线程如何异步执行。在jvm中 是使用监视器锁来实现不同线程的异步执行,在语法的表现就是synchronized  。

10、下列说法正确的是()?

A.我们直接调用Thread对象的run方法会报异常,所以我们应该使用start方法来开启一个线程
B.一个进程是一个独立的运行环境,可以被看做一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序的单一进程。线程可以被称为轻量级进程。线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源
C.synchronized可以解决可见性问题,volatile可以解决原子性问题
D.ThreadLocal用于创建线程的本地变量,该变量是线程之间不共享的

★为了给大家思考的空间,答案放在在下一题下方!

☝第九题解析(喜欢就点赞收藏起来趴♥♥♥)
答案: A  
(3+x)*(4+x)=2x^2+4
.....x=8或-1

11、在Spring事务的ISOLATION_REPEATABLE_READ隔离级别下,有可能出现以下哪种情况(   )

A.脏读
B.幻读
C.不可重复读
D.都有可能发生

★为了给大家思考的空间,答案放在在下一题下方!

☝第十题解析(喜欢就点赞收藏起来趴♥♥♥)
答案: B D
A:可以直接调用run方法, 但就起不到多线程的目的了。A选项错在调用Thread的run方法不会抛出异常。
C:volatile不能保证原子性问题

12、下面代码创建了多少个对象()

String s = "a"+"c"+"+"d"

A.1

B.2

C.3

D.4

★为了给大家思考的空间,答案放在在下一题下方!

☝第十一题解析(喜欢就点赞收藏起来趴♥♥♥)
答案: B 
ISOLATION_REPEATABLE_READ隔离级别下,对同一字段的多次读取结果都是一致的,除非数据是被本身事务自
己所修改,这种隔离级别可以阻止脏读和不可重复读,但幻读仍有可能发生。

13、以下哪些类是线程安全的()

A.Vector
B.HashMap
C.ArrayList
D.StringBuffer
E.Properties

★为了给大家思考的空间,答案放在在下一题下方!

☝第十二题解析

如果你比较一下Java源代码和反编译后的字节码文件,就可以直观的看到答案,只创建了一个String对象。

关于这个问题很多人面试的时候都遇见过,我看了网上很多论坛对于这个问题都是不统一的。有的人说创建了一个对象,有的人说创建了五个对象,也有的人说创建了两个对象。

先说说创建一个的吧。当初面试的时候我跟面试官说创建了一个,他用非常疑惑的语气告诉我说,不只是一个哦,然后这道面试题我就被pass掉了。好在过了技术面试了,但是对于这个问题我还是耿耿于怀,直到后来我看了《深入理解JVM》这本书之后有种豁然开朗的感觉。

其实网上的很多大佬们说创建了一个对象,这个答案是没有问题的!!!
但是面试的时候为什么会被说是错误的呢?其实面试官真正想问的并不是这个,而是你对于JDK版本的理解,不同的JDK版本对于字符串常量池有不同的优化!!感兴趣的自己再去查查吧!这里就不多阐述了
 

14、下列java程序的输出结果为()。

public class Example{String str=new String("hello");char[]ch={'a','b'};public static void main(String args[]){Example ex=new Example();ex.change(ex.str,ex.ch);System.out.print(ex.str+" and ");System.out.print(ex.ch);}public void change(String str,char ch[]){str="test ok";ch[0]='c';}
}
A.hello and ab
B.hello and cb
C.hello and a
D.test ok and ab
E.test ok and cb
F.test ok and c
☝第十三题解析
答案:ADE
A,Vector相当于一个线程安全的List
B,HashMap是非线程安全的,其对应的线程安全类是HashTable
C,Arraylist是非线程安全的,其对应的线程安全类是Vector
D,StringBuffer是线程安全的,相当于一个线程安全的StringBuilder
E,Properties实现了Map接口,是线程安全的
源码看下图所示

 

 

15、下列有关Servlet的生命周期,说法不正确的是?

A.在创建自己的Servlet时候,应该在初始化方法init()方法中创建Servlet实例
B.在Servlet生命周期的服务阶段,执行service()方法,根据用户请求的方法,执行相应的doGet()或是doPost()方法
C.在销毁阶段,执行destroy()方法后会释放Servlet 占用的资源
D.destroy()方法仅执行一次,即在服务器停止且卸载Servlet时执行该方法

☝第十四题解析
答案:B
解析如下图所示

 

16、以下关于JAVA语言异常处理描述正确的有?()

A.throw关键字可以在方法上声明该方法要抛出的异常。
B.throws用于抛出异常对象。
C.try是用于检测被包住的语句块是否出现异常,如果有异常,则捕获异常,并执行catch语句。
D.finally语句块是不管有没有出现异常都要执行的内容。
F.在try块中不可以抛出异常

☝第十五题解析
正确答案: A 
创建Servlet的实例是由Servlet容器来完成的,且创建Servlet实例是在初始化方法init()之前
☝第十六题解析
答案: C D 
Java语言中的异常处理包括声明异常、抛出异常、捕获异常和处理异常四个环节。
throw用于抛出异常。
throws关键字可以在方法上声明该方法要抛出的异常,然后在方法内部通过throw抛出异常对象。
try是用于检测被包住的语句块是否出现异常,如果有异常,则抛出异常,并执行catch语句。
cacth用于捕获从try中抛出的异常并作出处理。
finally语句块是不管有没有出现异常都要执行的内容。

 结束语 🥇🥇🥇
发现非常好用的一个刷题网站!大家一起努力!加油!!!
题目难度可以自行选择,有选择题,编程题
在线编程出答案,(也可自行查看答案)非常方便
程序员刷题神器网站[点击链接注册即可刷题 ]
祝大家早日找到满意的工作!


http://chatgpt.dhexx.cn/article/lCMSOeCZ.shtml

相关文章

第三章 软件项目范围管理

项目范围对项目的影响是决定性的,它确定了软件项目工作内容的多少。有效的范围管理可以保证项目只做必须做的事情,避免范围蔓延和做无用功,同时也避免不清晰的需求所导致的严重的系统缺陷。 本章内容提要 n 3.1 需求获取 n 3.2 范围定义 n…

软件项目管理 8.4.软件项目质量计划

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

软件项目进度计划

软件项目进度计划 进度的基本知识任务定义任务关系历时估算历时估算的基本方法-传统定额估算法经验导出模型工程评估评审技术(PERT)预留分析Jones的一阶估算准则类比估算专家判断基于承诺的进度估算 历时估算的基本方法-敏捷敏捷历时估算 进度计划编排进度编制的基本方法超前(L…

软件项目成本计划

软件项目成本计划 项目规模估算方法 代码行估算法(误差较大) 软件项目规模: 即工作量,例如软件规划,软件管理,需求分析,系统设计,编码,测试,以及后期维护等任务。 规模单位&…

「软件项目管理」软件项目范围计划——需求管理与任务分解

软件项目范围计划——需求管理与任务分解 序言一、软件需求定义及层次1、定义2、层次 二、软件需求管理过程1、管理过程2、需求获取3、需求分析4、需求规格编写5、需求验证6、需求变更(1)需求变更管理的主要工作(2)需求变更控制流…

软件项目管理第二篇:项目计划 (1)——范围计划

第二篇:项目计划 第四章:软件项目范围计划——需求管理 1.软件需求: (1)定义: 是指用户对软件的功能和性能的要求,就是用户希望软件能做什么事情,完成什么样的功能。 &#xff0…

推荐开源项目计划管理软件 kanboard

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/79467918 1,关于kanboard 是一个看板管理软件。 是php写的。是一个开源项目管理软件。按照敏捷开发设计的。 项目地址: https://hub.docker.com/r/kanboard/kanboard/ 官方网站…

软件项目管理–进度计划

软件项目管理–进度计划 项目初始–项目计划–项目执行控制–项目结束 项目计划: 范围计划成本计划进度计划质量计划配置管理计划人员与沟通计划风险计划合同计划集成计划 软件项目进度计划 进度计划的重要性 按时完成项目是项目经理最大的挑战之一时间是项目规…

项目管理必备的软件,实用方便

在管理项目的过程中,选择一款好用的项目管理软件是特别的重要的。作为项目经理,我总结了几年来的工作经验和最近的行业发展的角度相结合,总结了4款超级好用的产设项目管理软件,希望对大家有所帮助: 1.Pixso Pixso是一款功能强大…

盘点40余款好用的项目管理软件

本表单按照产品顺序排序,为大家介绍Zoho Projects项目管理软件等40余款产品,帮助大家了解项目管理软件有哪些。 项目管理软件 在这些产品中,Zoho Projects非常适合中小型企业,它的主要功能: 进度管理公开透明 项目群…

电力系统负荷预测基于神经网络模型

电力系统负荷预测是电力系统调度、实时控制、运行计划和发展规划的前提,是电网调度部门和规划部门所必须具有的基本信息。准确的负荷预测有助于提高系统的安全性和稳定性,能够减少发电成本。随着电力市场的建立和发展,短期负荷预测技术已成为…

基于决策树的电网负荷预测

1、情景问题提出及分析 电力系统的作用是对系统内各用户尽可能经济的提供可靠而合乎标准要求的电能。现代电网以系统运行的经济性为首要目标,再加之电能不能大量存储的特点,因此对电力系统的负载预测变得十分重要。 随着技术不断发展,当今越来…

【负荷预测】基于灰色预测算法的负荷预测(Python代码实现)

目录 1 概述 2 流程图 3 入门算例 4 基于灰色预测算法的负荷预测(Python代码实现) 1 概述 “由于数据列的离散性,信息时区内将出现空集(不包含信息的定时区),因此只能按近似的微分方程条件,…

时间序列特征构造:以电力负荷预测为例讲解(python语言)

个人电气博文目录传送门 学好电气全靠它,个人电气博文目录(持续更新中…) 时间序列特征构造 时间序列问题,首先不管是回归问题,还是分类问题。 一个模型的好坏,决定因素由数据集的大小,特征值…

[负荷预测]基于灰色GM(1,1)模型的中长期电力负荷预测

目 录 一、灰色模型GM(1,1)原理 二、模型构建前检验 三、预测精度的检验 3.1 残差检验 3.2 后验差检验 四、灰色模型GM(1,1)算法 五、Matlab编程实现 5.1 程序代码 5.2 输出结果 5.3 结果检验 5.4 预测泛化 六、Python编程实现 6.1 程序…

基于注意力机制的 CNN-BiGRU 短期电力负荷预测方法

提出了一种基于 Attention 机制的CNN -BiGRU(卷积神经网络双向GRU注意力机制)短期电力负荷预测方法,该方法将历史负荷数据作为输入,搭建由一维卷 积层和池化层等组成的 CNN 架构,提取反映负荷复杂动态变化的高维特征…

电力负荷预测任务(基于GRU模型)

数据:2000-2002三年每小时的电力负载 程序以及数据链接(如果受益,请给个关注和star):https://github.com/xzdLYL/electrical_load_prediction 任务目标:以2000,2001年数据训练模型&#xff0c…

机器学习练手---负荷数据预测

纸上得来终觉浅,得知此事要躬行 文章目录 前言一、数据清洗查看特征与label的关联程度查看特征自身的差异性。特征筛选 二、引入模型1.选择多元线性回归模型2.尝试预测 总结 前言 提示:这里可以添加本文要记录的大概内容: 简单记录一下机器…

电力负荷短期预测模型(基于ARIMA)

电力负荷预测 电力分析与预测一.导入数据二.数据的预处理三.基本描述性统计四.构建特征,模型准备①系统聚类法②K-means聚类 五.构建特征,建立预测模型①预测未来一天,各时段的电力负荷②预测未来几天总体电力负荷 电力分析与预测 根据提供的…