Java错题合集(6)

142 阅读17分钟

1、java中将ISO8859-1字符串转成GB2312编码,语句为

new String("ISO8859-1".getBytes("ISO8859-1"),"GB2312")

2、属于JVM堆内存中的区域

survivor区

eden区

old区

3、非抽象类实现接口后,必须实现接口中的所有抽象方法,除了abstract外,方法头必须完全一致

错误

解析:
实际上这道题考查的是两同两小一大原则:
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。

4、关于数据库连接的程序,语句的注释是正确的

String url=”jdbc:odbc:student_access”;  //指定数据源为student_access

Connection con=DriverManager.getConnection(url); //创建连接指定数据库的对象

Statement stmt=con.creatStatement();//创建执行SQL语句的Statement对象

5、jdk1.8版本之前的前提下,接口和抽象类描述正确的有

接口没有构造函数

抽象类不允许多继承

6、java中提供了哪两种用于多态的机制

通过子类对父类方法的覆盖实现多态

利用重载来实现多态.即在同一个类中定义多个同名的不同方法来实现多态。

7、集合对象中是线程安全的

Vector

Hashtable

8、关于JAVA多线程的叙述正确的是

CyclicBarrier和CountDownLatch都可以让一组线程等待其他线程

Callable类的call()方法可以返回值和抛出异常

9、关于抽象类与接口,说法正确的有

优先选用接口,尽量少用抽象类

抽象类和接口都不能被实例化。

10、关于JSP生命周期的叙述,为真的是

JSP会先解释成Servlet源文件,然后编译成Servlet类文件

每当用户端运行JSP时,jsp service()方法都会运行一次

11、关于多线程和多进程,描述正确的是

多进程里,子进程可获得父进程的所有堆和栈的数据;而线程会与同进程的其他线程共享数据,拥有自己的栈空间。

线程的通信速度更快,切换更快,因为他们在同一地址空间内。

12、如果Child extends Parent,正确的有

如果Child是interface,那么Parent必然是interface

如果Child是interface,那么Child可以同时extends Parent1,Parent2等多个interface

如果Child是class,并且没有显示声明任何构造函数,那么此时仍然会调用Parent的构造函数

13、说法中正确的有

StringBuilder是 线程不安全的

volatile关键字不保证对变量操作的原子性

14、说法正确的有

环境变量可在编译source code时指定

javac一次可同时编译数个Java源文件

javac.exe能指定编译结果要置于哪个目录(directory)

15、关于volatile关键字,描述正确的是

用volatile修饰的变量,每次更新对其他线程都是立即可见的。

对volatile变量的操作不会造成阻塞。

16、true、false、null、sizeof、goto、synchronized 哪些是Java关键字

goto

synchronized

17、final、finally和finalize的区别中,说法正确的有

final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

finally是异常处理语句结构的一部分,表示总是执行。

**18、以下哪一项正则能正确的匹配网址: www.bilibili.com/video/av210… **

/^(http:\/\/)?(\w+)\.bilibili\.com\/?video\/av(\d{1,8})\/?$/

19、流可以用于字符输入

java.io.inputStreamReader

20、由3 个“1”和 5 个“0”组成的 8 位二进制补码,能表示的最小整数

-125

21、正确的 Java 语言标识符是

Sky

$Computer

NULL

22、如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是() 注:一个元素进栈后可以马上出栈,不用等全部进栈

e2,e4,e3,e1

e2,e3,e4,e1

23、Java 提供的事件处理模型是一种人机交互模型。它有三个基本要素

事件源

事件对象

事件监听器

24、关于volatile的功能说法正确的是哪个

有序性

可见性

25、关于final关键字说法正确的是

final是java中的修饰符,可以修饰类、接口、抽象类、方法和属性

final修饰的方法不能被重载

26、关于对象序列化描述正确的是

使用transient修饰的变量不会被序列化

对象序列化的所属类需要实现Serializable接口

27、关于Java中的ClassLoader下面的描述是正确的

默认情况下,Java应用启动过程涉及三个ClassLoader: Boostrap, Extension, System

类装载器需要保证类装载过程的线程安全

ClassLoader的父子结构中,默认装载采用了父优先

28、哪些方式实现的单例是线程安全的

枚举

静态内部类

双检锁模式

饿汉式

29、类型为Final类型的为

HashMap

Hashtable

30、截止JDK1.8版本,java并发框架支持锁包括

读写锁

自旋锁

乐观锁

31、关于Java以下描述正确的有

native关键字表名修饰的方法是由其它非Java语言编写的

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

13*14=204

**33、在Java中,关于HashMap类的描述,正确的是 **

HashMap使用键/值得形式保存数据

HashMap允许将null用作键

HashMap允许将null用作值

34、有关java构造函数叙述正确的是

构造器可以有0个,1个或一个以上的参数

每个类可以有一个以上的构造器

35、Java程序的种类有

Applet

Application

Servlet

36、有关hashMap跟hashTable的区别,说法正确的是

HashMap和Hashtable都实现了Map接口

HashMap是非synchronized,而Hashtable是synchronized

HashTable使用Enumeration,HashMap使用Iterator

HashMap允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。

37、类型为Final类型的为

StringBuffer

String

38、true、false、null、sizeof、goto、synchronized 哪些是Java关键字

goto

synchronized

39、JavaWEB中有一个类,当会话种邦定了属性或者删除了属性时,他会得到通知,这个类是

HttpSessionAttributeListener

40、下面哪些类可以被继承? Java.lang.Thread、java.lang.Number、java.lang.Double、java.lang.Math、 java.lang.ClassLoader

Thread

Number

ClassLoader

41、对 Map 的用法,正确的有

new java.util.HashMap().put( null , null ) ;

new java.util.TreeMap().put( 0 , null ) ;

42、如果定义一种表达式结构:(+ 6 3)的值为9,(- 6 3)的值为3,( 6 3)的值为18,(/ 6 3)的值为2;那么对于表达式( (- 16 (* 3 2 2 )) (+ 5 (/ 6 (- 5 3))))输出的结果为____。**

32

43、哪个Set类是排序的

TreeSet

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

监视器

45、有一个源代码,只包含import java.util. ; 这一个import语句,叙述正确的是*

能访问java/util目录下的所有类,不能访问java/util子目录下的所有类

46、Math.floor(-8.5)=( )

(double)-9.0

47、哪段程序能够正确的实现了GBK编码字节流到UTF-8编码字节流的转换

dst=new String(src,"GBK").getBytes("UTF-8")

48、属于优化Hibernate所鼓励的

不用一对一,用多对一取代

配置对象缓存,不使用集合缓存

继承类使用显式多态

49、哪些具体实现类可以用于存储键,值对,并且方法调用提供了基本的多线程安全支持

java.util.ConcurrentHashMap

java.util.Hashtable

50、多态的作用

提高可重用性

扩展代码模块

51、有关Java的说法正确的是

一个类可以实现多个接口

protected成员在子类可见性可以修改

通过super可以调用父类构造函数

String是不可修改的,且java运行环境中对string对象有一个对象池保存

52、关于ThreadLocal类 以下说法正确的是

ThreadLocal是采用哈希表的方式来为每个线程都提供一个变量的副本

ThreadLocal保证各个线程间数据安全,每个线程的数据不会被另外线程访问和破坏

**53、哪些容器按 key 查找的复杂度为 O(log(n)) **

std::multimap

std::map

54、JavaWEB中有一个类,当会话种邦定了属性或者删除了属性时,他会得到通知,这个类是

HttpSessionAttributeListener

55、StringBuffer类对象创建之后可以再修改和变动

正确

解析:
1.String对象不可变、StringBuffer对象可变的含义: 举个例子:String str = "aa"; str = "aa"+"bb"; 此时str的值为"aabb",但是"aabb"不是在开始的字符串"aa"后面直接连接的"bb",而是又新生成了字符串"aabb",字符串"aa"一旦被初始化,那么它的值不可能再改变了。 StringBuffer strb = StringBuffer("aa"); strb.append("bb"); 此时的strb的值也为"aabb",但是"aabb"是直接在开始的字符串"aa"后面连接的“bb”,并没有生成新的字符串。

56、枚举(enum)属于原始数据类型(primitive type)

错误

解析:
在Java中,变量有两种类型,一种是原始类型,一种是引用类型。

原始类型一共有8种,它们分别是char,boolean,byte,short,int,long,float,double。在Java API中,有它们对应的包装类,分别是(首字母大写)Character,Boolean,Byte,Short,Integer,Long,Float,Double(char,int的变化稍微大点)。

JAVA JVM对于不同的原始类型会分配不同的存储空间,具体分配如下:

byte  : 1个字节    8位
最大值: 127   (有符号)

short : 2个字节    16位                            32767

int :     4个字节    32位                            2147483647

long:   8个字节    64位                            9223372036854775807

float:   4个字节    32位                            3.4028235E38

double:8个字节   64位                            1.7976931348623157E308

枚举(enum)类型是Java 5新增的特性,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示,是特殊的类,可以拥有成员变量和方法。

57、在Java中,关于HashMap类的描述,正确的是

HashMap允许将null用作值

HashMap允许将null用作键

HashMap使用键/值得形式保存数据

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

监视器

59、关于 Socket 通信编程,描述正确的是

客户端通过new Socket()方法创建通信的Socket对象

60、字段声明中哪一个在interface主体内是合法的

public static int answer = 42;

61、DBMS 中实现事务持久性的子系统是

恢复管理子系统

62、集合对象中哪几个是线程安全的

Vector

Hashtable

63、关于while循环、do-while循环和for循环说法正确的是

while循环先执行条件判断,do-while循环执行循环体

while循环能够实现的操作,for循环也能实现

64、哪个正确

abstract类只能用来派生子类,不能用来创建abstract类的对象。

abstract不能与final同时修饰一个类。

abstract类定义中可以没有abstract方法。

65、java中 String str = "hello world"语句正常的是

str=str+100 

66、关于面向对象的一些理解哪些是正常的

面向对象的最重要的特性是支持继承、封装和多态

系统设计应该遵循开闭原则,系统应该稳定不不可修改,但应支持通过继承、组合等方式进行扩展

面向对象设计时,每个类的职责应该单一,不要再一个类中引入过多的接口

过程式语言和面向对象的语言各有其优势,过程式语言更加灵活,面向对象语言更加强调抽象和封装

Java和C++都是静态类型的面向对象编程语言

67、对 Map的用法,正确的有:

new java.util.HashMap().put( null , null ) ;

new java.util.TreeMap().put( 0 , null ) ;

68、有关静态初始化块说法正确的是

无法直接调用静态初始化块

在创建第一个实例前或引用任何静态成员之前,将自动调用静态初始化块来初始化

静态初始化块既没有访问修饰符,也没有参数

**69、方法定义中 , 正确 的是 **

int x( ){ char ch=’a’; return (int)ch; }

70、关于final说法正确的是

final类的方法能否被同一个包的类访问不是由final决定

71、描述正确的一项是

程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行  到了第几行,是线程隔离的

原则上讲,所有的对象都是在堆区上分配内存,是线程之间共享的

Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的

72、关于包(package)的描述,正确的是

定义在同一个包(package)内的类可以不经过import而直接相互使用。

73、哪几个函数 public void example(){....} 的重载函数

public void example(int m){...}

public int example(int m,float f){...}

解析:
函数方法名必须相同,看参数列表即可,无关返回值。

74、如下哪些是 java 中有效的关键字

native

this

解析:
这个关键字常见的坑:
true、false、null都不是关键字
goto、const、是保留的关键字

75、jdk1.8中,下面有关java 抽象类和接口的区别,说法正确的是

抽象类可以有构造方法,接口中不能有构造方法

一个类可以实现多个接口,但只能继承一个抽象类

76、关于对象序列化描述正确的是

使用transient修饰的变量不会被序列化

对象序列化的所属类需要实现Serializable接口

77、类型为Final类型的为

StringBuffer

String

78、Servlet的生命周期可以分为初始化阶段,运行阶段和销毁阶段三个阶段,过程属于初始化阶段是

加载Servlet类及.class对应的数据

创建ServletConfig对象

创建Servlet对象

79、判断一块内存空间是否符合垃圾收集器收集的标准有哪些

给对象赋予了空值null,以下再没有调用过

对象重新分配了内存空间

给对象赋予了新值

80、关于Histroy对象的属性或方法描述正确的是

bcak回到浏览器载入历史URL地址列表的当前URL的前一个URL

forward转到浏览器载入历史URL地址列表的当前URL的下一个URL。

81、byte[]x={11,22,33,﹣66};其中0≤k≤3,则对x数组元素正常的引用是

x[5-3]

x[k]

x[0]

82、字段声明中哪一个在interface主体内是合法的

public static int answer = 42;

83、关于数据库连接的程序,语句的注释是正确的

String url=”jdbc:odbc:student_access”;  //指定数据源为student_access

Connection con=DriverManager.getConnection(url); //创建连接指定数据库的对象

Statement stmt=con.creatStatement();//创建执行SQL语句的Statement对象

84、关于Java以下描述正确的有

native关键字表名修饰的方法是由其它非Java语言编写的

85、ServletConfig接口默认是哪里实现的?

GenericServlet

86、jdk1.8版本之前的前提下,接口和抽象类描述正确的有

接口没有构造函数

抽象类不允许多继承

87、哪些具体实现类可以用于存储键,值对,并且方法调用提供了基本的多线程安全支持

java.util.ConcurrentHashMap

java.util.Hashtable

88、关于volatile的功能说法正确的是哪个

有序性

可见性

89、对于构造方法,叙述正确的是

构造方法的优先级一般比代码块低。

构造方法的主要作用是完成对类的对象的初始化工作。

一般在创建新对象时,系统会自动调用构造方法。

90、java8中,忽略内部接口的情况,不能用来修饰interface里的方法的有

private

protected

91、以下哪种JAVA得变量声明方式可以避免程序在多线程竞争情况下读到不正确的值

volatile

static volatile

92、JDK提供的用于并发编程的同步器有哪些

Semaphore

CyclicBarrier

CountDownLatch

93、Hashtable 和 HashMap 的区别是:

HashMap 是内部基于哈希表实现,该类继承AbstractMap,实现Map接口

Hashtable 线程安全的,而 HashMap 是线程不安全的

Properties 类 继承了 Hashtable 类,而 Hashtable 类则继承Dictionary 类

HashMap允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。

94、JavaWEB中有一个类,当会话种邦定了属性或者删除了属性时,他会得到通知,这个类是

HttpSessionAttributeListener

95、在运行时,由java解释器自动引入,而不用import语句引入的包是

java.lang

**96、java中将ISO8859-1字符串转成GB2312编码,语句为 **

new String("ISO8859-1".getBytes("ISO8859-1"),"GB2312")

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

类A和类B在同一包中,类B有个protected的方法testB,类A不是类B的子类(或子类的子类),类A可以访问类B的方法testB

98、是面向对象的基本原则的是

单一职责原则(Single-Resposibility Principle)

开放封闭原则(Open-Closed principle)

依赖倒置原则(Dependecy-Inversion Principle)

接口隔离原则(Interface-Segregation Principle)

99、下面有关JAVA异常类的描述,说法正确的是?

异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception

非RuntimeException一般是外部错误(非Error),其必须被 try{}catch语句块所捕获

Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形,Error不需要捕捉

100、对于文件的描述正确的是

文本文件是以“.txt”为后缀名的文件,其他后缀名的文件是二进制文件。

File类是Java中对文件进行读写操作的基本类。

无论文本文件还是二进制文件,读到文件末尾都会抛出EOFException异常。

101、URL u =new URL("www.123.com");。如果www.123.com不存在,则返回______

http://www.123.com

102、下面属于java包装类的是

Long

Character

Short

103、关于多线程和多进程,描述正确的是

多进程里,子进程可获得父进程的所有堆和栈的数据;而线程会与同进程的其他线程共享数据,拥有自己的栈空间。

线程的通信速度更快,切换更快,因为他们在同一地址空间内。

104、java8中,忽略内部接口的情况,不能用来修饰interface里的方法的有

private

protected

105、哪些操作会使线程释放锁资源

wait()

join()

106、以下哪几种方式可用来实现线程间通知和唤醒

Object.wait/notify/notifyAll

Condition.await/signal/signalAll

107、关于面向对象的一些理解哪些是正确的

面向对象的最重要的特性是支持继承、封装和多态

系统设计应该遵循开闭原则,系统应该稳定不不可修改,但应支持通过继承、组合等方式进行扩展

面向对象设计时,每个类的职责应该单一,不要再一个类中引入过多的接口

过程式语言和面向对象的语言各有其优势,过程式语言更加灵活,面向对象语言更加强调抽象和封装

Java和C++都是静态类型的面向对象编程语言