合作联系
  wanwqing@vip.163.com
  0790-XXXXXXX
关于实验室
Java面试题
发布者:实验室   时间:2019-02-16 12:20:17   浏览次数:198

1.java.util.concurrent包中,用于创建线程池的接口名(无需带包名)是?

2.若需要对某接口做流控,使用下列哪个类最适合?

A. CountDownLatch

B. CyclicBarrier

C. Semaphore

D. ReentrantLock

3.下面哪些是Thread类的方法()

A start() B run() C exit() D getPriority()

4.有关线程的哪些叙述是对的

A. 一旦一个线程被创建,它就立即开始运行。

B. 使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行。

C. 当一个线程因为抢先机制而停止运行,它被放在可运行队列的前面。

D. 一个线程可能因为不同的原因停止并进入就绪状态。

5.请写出创建线程的几种方式____,区别分别是__

6.下面哪些是Thread类的方法()

A start() B run() C exit() D getPriority()

7.volatile关键字是否能保证线程安全?

8.以下程序中的list扩充几次()

ArrayList<int> list = new ArrayList();

for(int i=0;i<30;i++){

list.add(i);

}

9.以下描述正确的是:

A:线程池-ScheduledThreadPool为调度性线程池,多用于周期执行或者按照schedule依次delay执行线程

B:线程池-CachedThreadPool 为缓存型线程池,多用于执行时间较短的异步型任务

C:线程池-newFixedThreadPool 为常规线程池,保持固定数量的线程,多用于服务器,针对一些很稳定很固定的正规并发线程

D:单线程池-SingleThreadExecutor 任意时间池中只能有一个线程

10.char类型能否存储一个中文字符

11.拦截器和过滤器都可以用来实现横切关注功能,其区别主要在于

A拦截器是基于Java反射机制的,而过滤器是基于接口回调的。

B过滤器依赖于Servlet容器,而拦截器不依赖于Servlet容器。

C拦截器只能对Action请求起作用,而过滤器可以对所有请求起作用。

D拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。

12.针对spring IOC描述正确的是:

A:控制反转(Inversion of Control,英文缩写为IoC)是一种设计模式

B:控制反转还有一个名字叫做依赖注入(Dependency Injection)。简称DI

C:IOC模式减少代码间的耦合,提供系统的可扩展性

D:IOC使用反射生成对象,耗cpu,在效率上有些损耗

13.hibernate的SessionFactory是线程安全的吗?Session是线程安全的吗?

A:是,不是

B:是,是

C:不是,不是

D:不是,是

14.Runnable和Callable的的描述正确的是()

A、Callable规定的方法是call(),Runnable规定的方法是run()。

B、Callable和Runnable的任务执行后都不能返回值得。

C、call方法可以抛出异常。

D、run方法不可以抛出异常。

15.GC线程是否为守护线程?()

16.Java Core文件提供的信息不包含( )

A.JVM的参数启动参数、Jdk版本

B.最后一次详细的垃圾回收记录

C.JVM中,所有线程执行情况

D.类的实例对象个数

17.哪个关键字可以对对象加互斥锁?

A transient

B synchronized

C serialize

D static

18.下列哪些情况可以终止当前线程的运行?

A 抛出一个异常时。

B 当该线程调用sleep()方法时。

C 当创建一个新线程时。

D 当一个优先级高的线程进入就绪状态时。

19.线程同步中,对象的锁在( )情况下持有线程返回:

A. 当synchronized()语句块执行完后

B. 当在synchronized()语句块执行中出现例外(exception)时

C. 当持有锁的线程调用该对象的wait()方法时

D. 以上都是

20.Character流与Byte流的区别是():

A) 每次读入的字节数不同 B) 前者带有缓冲,后者没有

C) 前者是字符读写,后者是字节读写

D) 二者没有区别,可以互换使用

21.请问,以下哪些是有关垃圾回器的正确描述?请选择所有正确答案:

A程序员可以在指定调用时间调用垃圾回收器释放内存。

B垃圾回收器可以保证JAVA程序从不会产生内存溢出。

C程序员可以指定垃圾回心目中对像。

D对像的finaliz()方法在对像被垃圾回收之前获得调用。

22.JDK 默认的ClassLoader 有:

A:Bootstrp loader

B:AppClassLoader

C:ExtClassLoader

D:SystemClassLoader

23.下面不是正确的IO模型的是

A:阻塞IO、

B:非阻塞IO、

C:多路同步IO.

D:信号驱动IO

24.JMX标准的提供的Bean有

A:Standard MBean。

B:Dynamic MBean

C:Model MBean

D:Open MBean

25.以下哪项不是JMX架构体系的层次:

A:设备层(Instrumentation Level)

B:代理层(Agent Level)

C:聚合层(Aggregation Level)

D:附加管理协议API(Additional Mangement Protocol APIS)

26.当服务器出现内存溢出的时候,下面哪种日志可以帮助尽快定位问题:

A:HeapDump

B:javaCore

C:Snap

D:host-controller.log

27.在JVM规范中,默认首先启动的ClassLoader是

A:Bootstrp loader

B:AppClassLoader

C:ExtClassLoader

D:SystemClassLoader

28.在JavaURI中,一个URI实例可以代表绝对的,也可以是相对的,只要它符合URI的语法规则,同时java.net.URI提供没有转义功能,需要自己对内容进行转义.

29.SDOSS.整体采用对象存储思想;多个小对象聚合为一个大文件;文件路径跟对象的映射关系存放在一个元数据集群中.

30.RSF支持的调用方式:HTTP、RMI、TCP协议及Hessian化机制.

31.关于redis高可用,下面说明正确的是:

A:从Redis 2.8开始加入对Sentinel机制从而实现了服务器端的主从切换

B:Redis默认提供两种方式的备份和恢复的方式:RDB和AOF。

RDB是在某个时间点将内存中的所有数据的快照保存到磁盘上,AOF是以文本的方式将所有对数据库进行过写入的命令(及其参数)记录到文件中

C:当Master端Redis服务崩溃,Redis sentinel将Slave切换为读写状态,并提供生产服务。

通过故障诊断修复Master,启动后会自动加入Sentinel并从Slave端完成数据同步,同时进行Master的重新还原.'

D:在REDIS集群中一个Slave,无论是第一次连接还是重连到Master,它都会发出一个SYNC命令,和MASTER进行数据同步.

32.关于JCA描述正确的是:

A:JCA的全称是J2EE Connector Architecture,它定义了一个连接J2EE平台和Enterprise Information Systems(EIS)的标准架构,使得各个EIS能够接入到Application Server当中

B:JCA把要接入的叫做Contract(合约)。JCA定义了三个Contract:Connection management, Transaction management, Security (安全规范)

C:在开发JCA的基本步骤,在一个应用服务器上开发一个ResourceAdapter,用RAR的形式部署,将EIS接进来。

D:JCA是并不支持事务.

33.下面官员netty或者mina说明正确的是

A:Mina和netty都采用了 Reactors in threads 线程模型

B:Mina 和 netty 具有相同的任务调用粒度.

C:Netty采用IO多路复用技术,即select/poll模式来提高性能,这个技术在jdk1.5 开始出现,主要用于替换原来的epoll技术.

D:Netty使用了并行多个独立锁的设计,IO线程内部进行并行操作,极大的提高了性能.

34.下面关于SOA描述不正确的是:

A.SOA的要素主要包括 标准化、复用、松耦合可编排 三个方面.

B.SOA主要目标是通过对服务的流程化来实现业务的灵活性.

C:完整的SOA的参考架构模型由五大组成部分是基础设施服务、企业服务总线、关键服务组件、开发工具、管理工具.

D:ESB是中间件技术与RMI技术结合的产物,也是SOA系统中的核心基础设施

35.关于JVM下面说法是不对的是

A:引起FULL GC的主要原因是 包括· 年老代被写满、Perm被写满、System.gc()被显示调用、上一次GC之后Heap的各域分配策略动态变化

B:在Perm区域中,主要存储是Java类、方法等静态文件

C:GC主要两种类型Scavenge GC和Full GC,其中Scavenge GC 清理的是 Tenured区域

D:在JVM选择垃圾回收方式的时候,有三种方式可供选择:串行、并行、并发收集器

36.下面关于WEB前端知识说明错误的是

A:cookie长度是没有限制的,我们可以放心在往里面存数据.

B:当我们需要对个别的浏览器引入特定的css样式的时候,可以使用如下语法:[if SafMob] @import('iphone.css');

C:cookie的类型的是string

D:一个简单的闭包可以是在一个函数内定义另外一个函数.

37.关于ehcache说明正确的是

A:@Cacheable 用于标注一个可以被缓存的数据,基本功能和JCache中的@CacheResult类似.

B:ehcache使用的JAVA堆内内存,所以大小还是JVM堆大小的限制.

C:echache存储对象较多的时候会引起GC

D:eCache用 memoryStoreEvictionPolicy 属性当内存超出设置堆的时候进行回收出策略,默认值是FIFO

38.一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 用给定的计数初始化,并且计数无法被重置。符合以上描述的类是:

A.CyclicBarrier

B.CounDownLatch

C.atomic

D.locks

39.现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?

40.在java中wait和sleep方法,sleep会释放锁?

41.关于java.util.concurrent包说法错误的是()

A、Executor,具体Runnable任务的执行者。

B、ExecutorService,一个线程池管理者,其实现类有Runnable,Callable,BlockingQueue

C、Semaphore,是一个计数信号量

D、ReentrantLock ,一个可重入的互斥锁定 Lock,功能类似synchronized,但要强大的多。

42.下列说法正确的有()

A、class中的constructor不可省略

B、constructor必须与class同名,但方法不能与class同名

C、constructor在一个对象被new时执行

D、一个class只能定义一个constructor

43.以下声明合法的是()

A、default String s

B、public final static native int w( )

C、abstract double d

D、abstract final double hyperbolicCosine( )

44.Java中的集合类包括ArrayList、LinkedList、HashMap等类,下列关于集合类描述错误的是()

A、ArrayList和LinkedList均实现了List接口

B、ArrayList的访问速度比LinkedList快

C、添加和删除元素时,ArrayList的表现更佳

D、HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值

45.下列哪种异常是检查型异常,需要在编写程序时声明()

A、NullPointerException

B、ClassCastException

C、FileNotFoundException

D、IndexOutOfBoundsException

46.在Java中,关于HashMap类的描述,以下错误的是()

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

B、HashMap 能够保证其中元素的顺序

C、HashMap允许将null用作键

D、HashMap允许将null用作值

47.内部类是在一个类内嵌套定义的类。其特点描述错误的是()

A、只能在定义它的类或程序段中或表达式内匿名使用,外部使用时必须给出类的全名

B、可以使用它所在类的静态成员变量或实例成员变量,但不可以使用所在类中的局部变量

C、可以作为其它类的成员,而且可访问它所在类的成员

D、除static内部类外,不能在类内声明static成员

48.关于sleep()和wait(),以下描述错误的一项是()

A、sleep是线程类(Thread)的方法,wait是Object类的方法;

B、sleep不释放对象锁,wait放弃对象锁

C、sleep暂停线程、但监控状态仍然保持,结束后会自动恢复

D、wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态

49.以下关于final关键字说法错误的是()

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

B、final修饰的类肯定不能被继承

C、final修饰的方法不能被重载

D、final修饰的变量不允许被再次赋值

50.下列集合是线程安全的有()

A、HashMap

B、HashTable

C、ConcurrentHashMap

D、TreeMap

51.下列关于Java线程的说法那些是正确的()

A、每一个Java线程可以看成由代码、一个真实的CPU以及数据三部份组成。

B、创建线程的两种方法中,从Thread类中继承的创建方式可以防止出现多父类问题。

C、Thread类属于java.util程序包

D、以上说法无一正确

52.关于sleep()和wait(),以下描述错误的一项是()

A、sleep是线程类(Thread)的方法,wait是Object类的方法

B、sleep不释放对象锁,wait放弃对象锁

C、sleep暂停线程、但监控状态仍然保持,结束后会自动恢复

D、wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态

53.内部类是在一个类内嵌套定义的类。其特点描述错误的是()

A、只能在定义它的类或程序段中或表达式内匿名使用,外部使用时必须给出类的全名

B、可以使用它所在类的静态成员变量或实例成员变量,但不可以使用所在类中的局部变量

C、可以作为其它类的成员,而且可访问它所在类的成员

D、除static内部类外,不能在类内声明static成员

54.下面能让线程停止执行的有()

A、sleep();

B、stop();

C、notify();

D、synchronized();

E、yield();

F、wait();

G、notifyAll();

55.下列方法中,()不可以用来程序调优?

A、改善数据访问方式以提升缓存命中率

B、使用多线程的方式提高 I/O 密集型操作的效率

C、利用数据库连接池替代直接的数据库访问

D、利用迭代替代递归

E、合并多个远程调用批量发送

F、共享冗余数据提高访问效率

56.枚举类型增加或者减少实例不会影响反序列化

57.JDK7中,下面语句中共创建了几个对象()

String s = "a" + "b" + "c" + "d" + "e";

A、没有创建对象

B、1个对象

C、2个对象

D、5个对象

58.两个等价线程并发执行下列程序,a为全局变量,初始值为0,假设++,—,printf都是原子性的,则肯定不会输出的为()

void foo() {

if(a<=0)

a++;

else

a--;

println(a);

}

A、01

B、10

C、12

D、22

59.下列关于Java并发的说法中正确的是()

A、CopyOnWriteArrayList适用于写多读少的并发场景

B、ReadWriteLock适用于读多写少的并发场景

C、ConcurrentHashMap的写操作不需要加锁,读操作需要加锁

D、只要在定义int类型的成员变量i的时候加上volatile关键字,那么多线程并发执行i++这样的操作的时候就是线程安全的了

60.CyclicBarrier可以重复使用已经通过的障碍,而CountdownLatch不能重复使用

61.反射能够创建灵活的代码,这些代码在运行时装配,无需在组件之间进行链接。反射允许在编写与执行时,使用程序代码能够接入装载到JVM中的类的内部信息,而不是源代码中选定的类协作的代码

62.下面关于Java语言说法错误的是:( )

A.java语言是完全面向对象的

B. java语言支持多继承

C.java语言支持多线程

D. java语言最早是为消费电子产品领域设计的

63.关于 finally 描述不正确的是()

A.总是被执行

B.如果try块后面没有catch块时,finally块中的代码才会执行

C.异常发生时才被执行

D.异常没有发生时才被执行

64.对于非运行时异常,程序中一般可不做处理,由Java虚拟机自动进行处理。

65.接口定义时相关修饰符可以省略,实现时也能省略。

66.JVM的基本概念和为什么说JVM是JAVA语言可以跨平台的关键因素?

67.synchronized和java.util.concurrent.locks.Lock的异同