栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

java笔试题含答案总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java笔试题含答案总结

1、下面代码输出是?

enum AccountType
{
    SAVING, FIXED, CURRENT;
    private AccountType()
    {
        System.out.println("It is a account type");
    }
}
class EnumOne
{
    public static void main(String[]args)
    {
        System.out.println(AccountType.FIXED);
    }
}
 

正确答案: C
编译正确,输出”It is a account type”once followed by”FIXED”
编译正确,输出”It is a account type”twice followed by”FIXED”
编译正确,输出”It is a account type”thrice followed by”FIXED”
编译正确,输出”It is a account type”four times followed by”FIXED”
编译错误

答案:C 枚举类有三个实例,故调用三次构造方法,打印三次It is a account type

2、下列关于Java语言中String和char的说法,正确的是()

正确答案: C
String是Java定义的一种基本数据类型。
String是以“”结尾的char类型的数组char[]。
使用equals()方法比较两个String是否内容一样(即字符串中的各个字符都一样)。
Char类型在Java语言里面存储的是ASCII码。

A选项:Java基本数据类型共有八大类,这八大数据类型又可分为四小类,分别是整数类型(byte/short/int/long)、浮点类型(float、double)、字符类型(char)和布尔类型(boolean),其中并不包括String。

B选项中是C语言当中的String,Java的String虽然也是char类型的数组char[]实现的,但并不以“”结尾。

C选项正确,String类重写了Object类的equals()方法,使用equals()方法可以用于比较两个String是否内容一样。

D选项, char 类型的编码是Unicode 编码。

3、以下说法错误的是()

正确答案: D
虚拟机中没有泛型,只有普通类和普通方法
所有泛型类的类型参数在编译时都会被擦除
创建泛型对象时请指明类型,让编译器尽早的做参数检查
泛型的类型擦除机制意味着不能在运行时动态获取List中T的实际类型

4、说明输出结果。

import java.util.Date; 
public class SuperTest extends Date{ 
    private static final long serialVersionUID = 1L; 
    private void test(){ 
       System.out.println(super.getClass().getName()); 
    } 
      
    public static void main(String[]args){ 
       new SuperTest().test(); 
    } 
}

正确答案: C
SuperTest
SuperTest.class
test.SuperTest
test.SuperTest.class

C.
TestSuper和Date的getClass都没有重写,他们都是调用Object的getClass,而Object的getClass作用是返回的是运行时的类的名字。这个运行时的类就是当前类,所以
super.getClass().getName() 返回的是test.SuperTest,与Date类无关
要返回Date类的名字需要写super.getClass().getSuperclass()

5、
java中关于继承的描述正确的是()
正确答案: A C D
一个子类只能继承一个父类
子类可以继承父类的构造方法
继承具有传递性
父类一般具有通用性,子类更具体

子类不可以继承父类的构造方法,只可以调用父类的构造方法

6、下面有关forward和redirect的描述,正确的是() ?
正确答案: B C D
forward是服务器将控制权转交给另外一个内部服务器对象,由新的对象来全权负责响应用户的请求
执行forward时,浏览器不知道服务器发送的内容是从何处来,浏览器地址栏中还是原来的地址
执行redirect时,服务器端告诉浏览器重新去请求地址
forward是内部重定向,redirect是外部重定向
redirect默认将产生301 Permanently moved的HTTP响应

7、
下列哪些方法是针对循环优化进行的
正确答案: A B D
强度削弱
删除归纳变量
删除多余运算
代码外提

8、在 main() 方法中给出的整型数组,如果将其写到一个文件中,需要( )。

正确答案: B
A 、System.out.print (buffer[i]);
B、 DataOutputStream dout = new DataOutputStream(new FileOutputStream(this.filename));
C 、DataInputStream din = new DataInputStream(new FileInputStream(this.filename));。
D 、System.in.read(buffer)。

input和output指的是对于程序而言。input是从文件读取进来,output是输出到文件。

9、关于访问权限说法正确 的是 ? ( )

正确答案: B
外部类前面可以修饰public,protected和private
成员内部类前面可以修饰public,protected和private
局部内部类前面可以修饰public,protected和private
以上说法都不正确

( 1 )对于外部类而言,它也可以使用访问控制符修饰,但外部类只能有两种访问控制级别: public和默认。因为外部类没有处于任何类的内部,也就没有其所在类的内部、所在类的子类两个范围,因此 private 和 protected
访问控制符对外部类没有意义。

( 2 )内部类的上一级程序单元是外部类,它具有 4 个作用域:同一个类( private )、同一个包( protected)和任何位置( public )。

( 3 )因为局部成员的作用域是所在方法,其他程序单元永远不可能访问另一个方法中的局部变量,所以所有的局部成员都不能使用访问控制修饰符修饰。

10、下列有关Servlet的生命周期,说法不正确的是?
正确答案: A
在创建自己的Servlet时候,应该在初始化方法init()方法中创建Servlet实例

在Servlet生命周期的服务阶段,执行service()方法,根据用户请求的方法,执行相应的doGet()或是doPost()方法

在销毁阶段,执行destroy()方法后会释放Servlet 占用的资源

destroy()方法仅执行一次,即在服务器停止且卸载Servlet时执行该方法

答案:A 创建Servlet的实例是由Servlet容器来完成的,且创建Servlet实例是在初始化方法init()之前

11、关于Java的一些概念,下面哪些描述是正确的:( )
正确答案: B F
所有的Java异常和错误的基类都是java.lang.Exception, 包括java.lang.RuntimeException

通过try … catch … finally语句,finally中的语句部分无论发生什么异常都会得到执行

java中所有的数据都是对象

Java通过垃圾回收回收不再引用的变量,垃圾回收时对象的finallize方法一定会得到执行

Java是跨平台的语言,无论通过哪个版本的Java编写的程序都能在所有的Java运行平台中运行

Java通过synchronized进行访问的同步,synchronized作用非静态成员方法和静态成员方法上同步的目标是不同的

A.错误(Error)的基类是Throwable
C.基本类型不是对象
D.垃圾回收器并不总是工作,只有当内存资源告急时,垃圾回收器才会工作;即使垃圾回收器工作,finalize方法也不一定得到执行,这是由于程序中的其他线程的优先级远远高于执行finalize()函数线程的优先级。
E.低版本JRE无法运行高版本JRE

12、正确答案: A D
Statement sta=con.createStatement();
ResultSet rst=sta.executeQuery(“select * from book”);

Statement sta=con.createStatement(“select * from book”);
ResultSet rst=sta.executeQuery();

PreparedStatement pst=con.prepareStatement();
ResultSet rst=pst.executeQuery(“select * from book”);

PreparedStatement pst=con.prepareStatement(“select * from book”);
ResultSet rst=pst.executeQuery();

A,D是正确的;创建Statement是不传参的,PreparedStatement是需要传入sql语句

13、在开发中使用泛型取代非泛型的数据类型(比如用ArrayList取代ArrayList),程序的运行时性能会变得更好。()
正确答案: B
正确
错误

使用泛型的好处 1,类型安全。 泛型的主要目标是提高 Java
程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。

2,消除强制类型转换。 泛型的一个附带好处是,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。

3,潜在的性能收益。
泛型为较大的优化带来可能。在泛型的初始实现中,编译器将强制类型转换(没有泛型的话,程序员会指定这些强制类型转换)插入生成的字节码中。但是更多类型信息可用于编译器这一事实,为未来版本的
JVM 的优化带来可能。由于泛型的实现方式,支持泛型(几乎)不需要 JVM
或类文件更改。所有工作都在编译器中完成,编译器生成类似于没有泛型(和强制类型转换)时所写的代码,只是更能确保类型安全而已。

所以泛型只是提高了数据传输安全性,并没有改变程序运行的性能

14、下列正确的 Java 语言标识符是( )

正确答案: C
Sky
$Computer
for
NULL

15、当我们需要所有线程都执行到某一处,才进行后面的的代码执行我们可以使用?
正确答案: B
CountDownLatch
CyclicBarrier
Semaphore
Future

CountDownLatch:一个或者多个线程,等待其他多个线程完成某件事情之后才能执行;
CyclicBarrier:多个线程互相等待,直到到达同一个同步点,再继续一起执行。
对于CountDownLatch来说,重点是“一个线程(多个线程)等待”,而其他的N个线程在完成“某件事情”之后,可以终止,也可以等待。
而对于CyclicBarrier,重点是多个线程,在任意一个线程没有完成,所有的线程都必须互相等待,然后继续一起执行。
CountDownLatch是计数器,线程完成一个记录一个,只不过计数不是递增而是递减,而CyclicBarrier更像是一个阀门,需要所有线程都到达,阀门才能打开,然后继续执行。
按照这个题目的描述等所有线程都到达了这一个阀门处,再一起执行,此题强调的是,一起继续执行,我认为 选B 比较合理!

16、代码片段:

byte b1=1,b2=2,b3,b6; 
final byte b4=4,b5=6; 
b6=b4+b5; 
b3=(b1+b2); 
System.out.println(b3+b6);

关于上面代码片段叙述正确的是()
正确答案: C
输出结果:13
语句:b6=b4+b5编译出错
语句:b3=b1+b2编译出错
运行期抛出异常

C. 被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了
而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。
Java中的byte,short,char进行计算时都会提升为int类型。

17、关于下面一段代码,以下说法正确的是: ()

public class Test {
    private synchronized void a() {
    }
    private void b() {
        synchronized (this) {
        }
    }
    private synchronized static void c() {
    }
    private void d() {
        synchronized (Test.class) {
        }
    }
}

正确答案: A C
同一个对象,分别调用方法a和b,锁住的是同一个对象
同一个对象,分别调用方法a和c,锁住的是同一个对象
同一个对象,分别调用方法b和c,锁住的不是同一个对象
同一个对象,分别调用方法a、b、c,锁住的不是同一个对象

方法a为同步方法,方法b里面的是同步块,同步方法使用的锁是固有对象this,同步块使用的锁可以是任意对象,但是方法b里面的同步块使用的锁是对象this,所以方法a和方法b锁住的是同一个对象。方法
c为静态同步方法,使用的锁是该类的字节码文件,也就是Test.class。方法d里面的也是同步块,只不过使用的锁是Test.class,所以方法c和方法d锁住的是同一个对象。

18、JDK提供的用于并发编程的同步器有哪些?
正确答案: A B C
Semaphore
CyclicBarrier
CountDownLatch
Counter

A,Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过
acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。
B,CyclicBarrier
主要的方法就是一个:await()。await() 方法没被调用一次,计数便会减少1,并阻塞住当前线程。当计数减至0时,阻塞解除,所有在此
CyclicBarrier 上面阻塞的线程开始运行。
C,直译过来就是倒计数(CountDown)门闩(Latch)。倒计数不用说,门闩的意思顾名思义就是阻止前进。在这里就是指
CountDownLatch.await() 方法在倒计数为0之前会阻塞当前线程。 D,Counter不是并发编程的同步器

19、下面的switch语句中,x可以是哪些类型的数据:()

switch(x)
{
default:
System.out.println("Hello");
}

正确答案: B D F
long
char
float
byte
double
String

以java8为准,switch支持10种类型 基本类型:byte char short int 对于包装类
:Byte,Short,Character,Integer String enum

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1040853.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号