2023年java春招面试题
- 1、下面有关jdbc statement的说法错误的是?
- 2、下面有关JVM内存,说法错误的是?
- 3、下面有关servlet service描述错误的是?
- 4、下面有关servlet和cgi的描述,说法错误的是?
- 5、下面有关SPRING的事务传播特性,说法错误的是?
- 6、看以下代码:
- 7、下面哪一项不是加载驱动程序的方法?
- 8、关于sleep()和wait(),以下描述错误的一项是( )
- 9、根据下面的程序代码,哪些选项的值返回true?
- 10、下面哪个不对?
- 11、关于以下程序代码的说明正确的是?
- 12、下列LINUX系统的键盘命令中,显示当前工作目录的命令是
- 13、下面哪种方式不可以实现数据约束
- 14、在往个表插入记录时,有10条成功,5条失败,数据还没有提交,需要把所有数据回退,选择下面的命令
- 15、要计算表student中score*0.8的值,并生成别名ScoreA的SQL语句是
- 16、下列数组初始化正确的是
- 17、提供Java存取数据库能力的包是
- 18、代码int[] arr = new int[5]执行后,关于数组arr描述正确的是
- 19、避免死锁的一个著名的算法是
- 20、设一组初始关键字序列为(31,65,82,76,13,27,10),则第4趟冒泡排序结束后的结果为
- 21、关于ArrayList,初始化指定容量为10,在添加第11个元素时,会发生什么
- 22、关于抽象类叙述正确的是?
- 23、java 中哪个关键字可以对对象加互斥锁?
- 24、以下 _____ 不是 Object 类的方法
- 25、下面关于构造方法的说法不正确的是 ()
🏠个人主页:@编程ID
🧑个人简介:大家好,我是编程ID,一个想要与大家共同进步的程序员儿
🧑如果各位在准备面试,找工作,刷算法,刷选择题,可以使用我找工作前用的刷题神器哦![面试刷题神器🎁]
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,望能帮到各位想要找工作或者提高自己的小伙伴儿们,如果有什么需要改进的地方,还请大佬不吝赐教🤞🤞
上一篇–2023春招java面试题及答案(上)》》》》》》
1、下面有关jdbc statement的说法错误的是?
A、JDBC提供了Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程
B、对于PreparedStatement来说,数据库可以使用已经编译过及定义好的执行计划,由于
PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象”
C、PreparedStatement中,“?” 叫做占位符,一个占位符可以有一个或者多个值
D、PreparedStatement可以阻止常见的SQL注入式攻击
正确答案:C
2、下面有关JVM内存,说法错误的是?
A、程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的
B、虚拟机栈描述的是Java方法执行的内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
C、方法区用于存储JVM加载的类信息、常量、静态变量、以及编译器编译后的代码等数据,是线程隔离的
D、原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的
正确答案:C
参考答案:方法区在JVM中也是一个非常重要的区域,它与堆一样,是被 线程共享 的区域。
在方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常
量以及编译器编译后的代码等。
3、下面有关servlet service描述错误的是?
A、不管是post还是get方法提交过来的连接,都会在service中处理
B、doGet/doPost 则是在 javax.servlet.GenericServlet 中实现的
C、service()是在javax.servlet.Servlet接口中定义的
D、service判断请求类型,决定是调用doGet还是doPost方法
正确答案:B
参考答案:B doGet/doPost 则是在 javax.servlet.http.HttpServlet 中实现的
4、下面有关servlet和cgi的描述,说法错误的是?
A、servlet处于服务器进程中,它通过多线程方式运行其service方法
B、CGI对每个请求都产生新的进程,服务完成后就销毁
C、servlet在易用性上强于cgi,它提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等
D、cgi在移植性上高于servlet,几乎所有的主流服务器都直接或通过插件支持cgi
正确答案:D
参考答案:选择D,servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请
求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
5、下面有关SPRING的事务传播特性,说法错误的是?
A、PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行
B、PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就抛出异常
C、PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起
D、PROPAGATION_NESTED:支持当前事务,新增Savepoint点,与当前事务同步提交或回滚
正确答案:B
6、看以下代码:
文件名称:forward.jsp
<html>
<head><title> 跳转 </title> </head>
<body>
<jsp:forward page="index.htm"/>
</body>
</html>
如果运行以上jsp文件,地址栏的内容为
A、http://127.0.0.1:8080/myjsp/forward.jsp
B、http://127.0.0.1:8080/myjsp/index.jsp
C、http://127.0.0.1:8080/myjsp/index.htm
D、http://127.0.0.1:8080/myjsp/forward.htm
正确答案:A
参考答案:forward和redirect是最常问的两个问题 forward,服务器获取跳转页面内容传给用户,用户地址栏不变
redirect,是服务器向用户发送转向的地址,redirect后地址栏变成新的地址 因此这个题是A
7、下面哪一项不是加载驱动程序的方法?
A、通过DriverManager.getConnection方法加载
B、调用方法 Class.forName
C、通过添加系统的jdbc.drivers属性
D、通过registerDriver方法注册
正确答案:A
参考答案:答案:A DriverManager.getConnection方法返回一个Connection对象,这是加载驱动之后才能进行的
8、关于sleep()和wait(),以下描述错误的一项是( )
A、sleep是线程类(Thread)的方法,wait是Object类的方法;
B、sleep不释放对象锁,wait放弃对象锁
C、sleep暂停线程、但监控状态仍然保持,结束后会自动恢复
D、wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态
正确答案:D
参考答案:D Java中的多线程是一种抢占式的机制,而不是分时机制。抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行。 共同点 : 1. 他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回。 2. wait()和sleep()都可以通过interrupt()方法 打断线程的暂停状态 ,从而使线程立刻抛出InterruptedException。 如果线程A希望立即结束线程B,则可以对线程B对应的Thread实例调用interrupt方法。如果此刻线程B正在wait/sleep/join,则线程B会立刻抛出InterruptedException,在catch() {} 中直接return即可安全地结束线程。 需要注意的是,InterruptedException是线程自己从内部抛出的,并不是interrupt()方法抛出的。对某一线程调用 interrupt()时,如果该线程正在执行普通的代码,那么该线程根本就不会抛出InterruptedException。但是,一旦该线程进入到 wait()/sleep()/join()后,就会立刻抛出InterruptedException 。 不同点 : 1.每个对象都有一个锁来控制同步访问。Synchronized关键字可以和对象的锁交互,来实现线程的同步。 sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。 2.wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用 3.sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常 4.sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 5.wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
9、根据下面的程序代码,哪些选项的值返回true?
public class Square {
long width;
public Square(long l) {
width = l;
}
public static void main(String arg[]) {
Square a, b, c;
a = new Square(42L);
b = new Square(42L);
c = b;
long s = 42L;
}
}
A、a == b
B、s == a
C、b == c
D、a.equals(s)
正确答案:C
参考答案:答案:C a = new Square(42L); b = new Square(42L); 这里new了两个对象,所以a,b不是同
一个引用a!=b s的类型跟a,b不同类型,所以s!=a,s!=b c = b; 这里b,c是同一个对象的引用,所以b==c是true
10、下面哪个不对?
A、RuntimeException is the superclass of those exceptions that can be thrown during the normal operation of the Java Virtual Machine.
B、A method is not required to declare in its throws clause any subclasses of RuntimeExeption that might be thrown during the execution of the method but not caught
C、An RuntimeException is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch.
D、NullPointerException is one kind of RuntimeException
正确答案:C
参考答案:运行时异常: 都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、
IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以
不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。
运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch
语句捕获它,也没有用throws子句声明抛出它,也会编译通过。 非运行时异常 (编译异常): 是
RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如
果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不
自定义检查异常。
11、关于以下程序代码的说明正确的是?
public class HasStatic{
private static int x=100;
public static void main(String args[]){
HasStatic hs1=new HasStatic();
hs1.x++;
HasStatic hs2=new HasStatic();
hs2.x++;
hs1=new HasStatic();
hs1.x++;
HasStatic.x--;
System.out.println("x="+x);
}
}
A、程序通过编译,输出结果为:x=103
B、10行不能通过编译,因为x是私有静态变量
C、5行不能通过编译,因为引用了私有静态变量
D、程序通过编译,输出结果为:x=102
正确答案:D
参考答案:此题选择D。 首先要了解static的意思。 static表示“全局”或者“静态”的意思,用来修饰成员变量和成员
方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。 static变量在第一次使用的时候初始
化,但只会有一份成员对象。 所以这里不仅可以调用,而且每一次调用都确实修改了x的值,也就是变化情况是这样
的: x=101 x=102 x=103 x=102
12、下列LINUX系统的键盘命令中,显示当前工作目录的命令是
A、ls命令
B、cd命令
C、pwd命令
D、cat命令
正确答案:C
13、下面哪种方式不可以实现数据约束
A、NOT NULL
B、UNIQUE INDEX
C、PRIMARY KEY
D、非唯一索引 INDEX
正确答案:D
14、在往个表插入记录时,有10条成功,5条失败,数据还没有提交,需要把所有数据回退,选择下面的命令
A、DELETE
B、ROLLBACK
C、UNCOMMIT
D、TRUNCATE TABLE
正确答案:B
15、要计算表student中score*0.8的值,并生成别名ScoreA的SQL语句是
A、SELECT SCORE*0.8 ‘ScoreA’FROM student
B、SELECT SCORE*0.8 “ScoreA”FROM student
C、SELECT SCORE*0.8 AS ScoreA FROM student
D、SELECT SCORE*0.8 AS‘ScoreA’FROM student
正确答案:C
16、下列数组初始化正确的是
A、int[5] a= {1,2,3,4,5};
B、Integer[2][2] a = {{new Integer(1), new Integer(2)},{new Integer(3),new Interger(4)}};
C、char[][] a = {{‘2’,’3’,’4’,’5’},new char[3]};
D、Float[][] a = new Float[][5];
正确答案:C
17、提供Java存取数据库能力的包是
A、java.sql
B、java.awt
C、java.lang
D、java.swing
正确答案:A
18、代码int[] arr = new int[5]执行后,关于数组arr描述正确的是
A、arr[4]为0
B、arr[4]未定义
C、arr[5]为0
D、arr[5]为空
正确答案:A
19、避免死锁的一个著名的算法是
A、先入先出法
B、银行家算法
C、优先级算法
D、资源按序分配法
正确答案:B
20、设一组初始关键字序列为(31,65,82,76,13,27,10),则第4趟冒泡排序结束后的结果为
A、(13,27,10,31,65,76,82)
B、(10,13,27,31,65,76,82)
C、(31,13,27,10,65,76,82)
D、A. (31,27,13, 65, 10,76,82)
正确答案:A
21、关于ArrayList,初始化指定容量为10,在添加第11个元素时,会发生什么
A、通过新建一个数组(容量是原来的1.5倍),再将旧数组的数据循环拷贝至新数组中。
B、可以直接将元素添加到容器中,因为它实现的是List接口。
C、通过新建一个数组,再通过System.arrayCopy的方式将就数据移植新数组中。
D、抛出异常,容量是不允许变化的。
正确答案:C
22、关于抽象类叙述正确的是?
A、抽象类不能实现接口
B、抽象类必须有“abstract class”修饰
C、抽象类必须包含抽象方法
D、抽象类也有类的特性,可以被实例化
正确答案:B
23、java 中哪个关键字可以对对象加互斥锁?
A、transient
B、synchronized
C、serialize
D、static
正确答案:B
24、以下 _____ 不是 Object 类的方法
A、clone()
B、finalize()
C、toString()
D、hasNext()
正确答案:D
25、下面关于构造方法的说法不正确的是 ()
A、构造方法也属于类的方法,可以创建对象的时候给成员变量赋值
B、构造方法不可以重载
C、构造方法没有返回值
D、构造方法一定要和类名相同
正确答案:B
参考答案:1.构造方法也是类的方法,可以在创建对象时为成员变量赋值 2.构造方法可以进行重载,但是参数列表必须不相同,不以返回值和访问级别进行区分 3.构造方法没有返回值 4.构造方法一定要与定义为public的类同名 综上所述,B不正确
结束语 🥇🥇🥇
发现非常好用的一个刷题网站,可以检测大家的基础!大家一起努力!加油!!!
包含数据库、Java、C++、C、Python、前端等等题目,难度可以自行选择
在线编程出答案,(也可自行查看答案),也有选择题,非常方便
程序员刷题神器网站点击链接注册即可刷题
祝大家早日找到满意的工作!