天天看点

Java测试错题集(5)

Java测试错题题解

博主声明:

本文由博主luoru_LR原创,请多支持与指教。

转载请在开头附加本文链接及作者信息,并标记为转载。

博主主页

假链接中我们通常在a标签的href中添加什么能使得页面不跳转()	正确答案:C
A.#
B.##
C.javascript:;
D.直接为空,无需添加
解析:
a标签页面不跳转一共有三种方式:
1>onclick事件返回false:<a href="http://www.baidu.com" target="_blank" rel="external nofollow"  onclick="return false">不能跳转页面的超链接</a>
2>用href="javascript:void(0)" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" 这种伪协议:<a href="javascript:void(0)" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >不能跳转页面的超链接</a>
3>使用(#),但严格来说这不能叫页面不跳转,这种方式是默认跳转到当前页面
           
关于spring的说法错误的是( )	正确答案:D
A.spring是一个轻量级Java EE的框架集合
B.spring的“依赖注入”模式的实现
C.使用spring可以实现声明事务 
D.spring提供了AOP方式的日志系统
解析:
    Spring Framework是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,Spring中包含的关键特性:
    1.强大的基于JavaBeans的采用控制翻转(Inversion of Control,IoC)原则的配置管理,使得应用程序的组建更加快捷简易。
    2.一个可用于从applet到Java EE等不同运行环境的核心Bean工厂。
    数据库事务的一般化抽象层,允许声明式(Declarative)事务管理器,简化事务的划分使之与底层无关。
    3.内建的针对JTA和单个JDBC数据源的一般化策略,使Spring的事务支持不要求Java EE环境,这与一般的JTA或者EJB CMT相反。
    4.JDBC 抽象层提供了有针对性的异常等级(不再从SQL异常中提取原始代码),简化了错误处理,大大减少了程序员的编码量。再次利用JDBC时,你无需再写出另一个'终止'(finally)模块。并且面向JDBC的异常与Spring通用数据访问对象(Data Access Object)异常等级相一致。
    5.以资源容器,DAO实现和事务策略等形式与Hibernate,JDO和iBATIS SQL Maps集成。利用众多的翻转控制方便特性来全面支持,解决了许多典型的Hibernate集成问题。所有这些全部遵从Spring通用事务处理和通用数据访问对象异常等级规范。
    6.灵活的基于核心Spring功能的MVC网页应用程序框架。开发者通过策略接口将拥有对该框架的高度控制,因而该框架将适应于多种呈现(View)技术,例如JSP、FreeMarker、Velocity、Tiles、iText以及POI。值得注意的是,Spring中间层可以轻易地结合于任何基于MVC框架的网页层,例如Struts、WebWork或Tapestry。
    7.提供诸如事务管理等服务的面向方面编程框架。
D选项:Spring并没有提供日志系统,我们需要使用AOP(面向方面编程)的方式,借助Spring与日志系统log4j实现我们自己的日志系统。
           
下列叙述中错误的是(  )。		正确答案:A
A.对于各种特定的输入,算法的时间复杂度是固定不变的
B.算法的时间复杂度与使用的计算机系统无关
C.算法的时间复杂度与使用的程序设计语言无关
D.算法的时间复杂度与实现算法过程中的具体细节无关
解析:
算法的时间复杂度是指执行算法所需要的计算工作量。为了能够比较客观地反映
出一个算法的效率,在度量一个算法的工作量时,不仅应该与所使用的计算机、
程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无
关。为此,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作
量。算法所执行的基本运算次数还与问题的规模有关;对应一个固定的规模,算
法所执行的基本运算次数还可能与特定的输入有关。
           
true、false、null、sizeof、goto、synchronized 哪些是Java关键字?(多选)	正确答案:EF
A.true
B.false
C.null
D.sizeof
E.goto
F.synchronized
解析:
1,Java 关键字列表 (依字母排序 共50组):
abstract, assert, boolean, break, byte, case, catch, char, class, const(保留关
键字), continue, default, do, double, else, enum, extends, final, finally, float, 
for, goto(保留关键字), if, implements, import, instanceof, int, interface, long, 
native, new, package, private, protected, public, return, short, static, strictfp, 
super, switch, synchronized, this, throw, throws, transient, try, void, volatile, 
while
2,保留字列表 (依字母排序 共14组),Java保留字是指现有Java版本尚未使用,但以后版本可能会作为关键字使用:
byValue, cast, false, future, generic, inner, operator, outer, rest, true, var, goto (保留关键字) , const (保留关键字) , null
           
以下哪个区域不属于新生代?   正确答案:C
A.eden区
B.from区
C.元数据区
D.to区
解析:
在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。
           
在java7中,下列哪个说法是正确的:		正确答案:D
A.ConcurrentHashMap使用synchronized关键字保证线程安全
B.HashMap实现了Collection接口
C.Arrays.asList方法返回java.util.ArrayList对象
SimpleDateFormat对象是线程不安全的
解析:
A.ConcurrentHashMap使用的是Segement(继承自 ReentrantLock )分段锁的技术来保证同步的, 使用synchronized关键字保证线程安全的是HashTable;
B.HashMap实现的是Map接口
C.Arrays.asList方法返回List列表, public static <T> List <T> asList (T... a)
D.SimpleDateFormat查看Java源码可以看到,它的方法都不是Synchronized的,也没有采用其他的同步措施
           
现有如下html结构
<ul>
 <li>click me</li>
 <li>click me</li>
 <li>click me</li>
 <li>click me</li>
</ul>
运行如下代码:
var elements=document.getElementsByTagName('li');
    var length=elements.length;
    for(var i=0;i<length;i++){
        elements[i].onclick=function(){
        alert(i);
    }
 }
依次点击4个li标签,哪一个选项是正确的运行结果()?      正确答案:D
A.依次弹出1,2,3,4
B.依次弹出0,1,2,3
C.依次弹出3,3,3,3
D.依次弹出4,4,4,4
解析:
这里考的是JS的运行机制! 事件(click,focus等等),定时器(setTimeout和setInterval),ajax,都是会触发异步,属于
异步任务;js是单线程的,一个时间点只能做一件事,优先处理同步任务; 按照代码从上往下执行,遇到异步,就挂起,放到
异步任务里,继续执行同步任务,只有同步任务执行完了,才去看看有没有异步任务,然后再按照顺序执行! 这里for循环是
同步任务,onclick是异步任务,所以等for循环执行完了,i变成4了,注意:这里因为i是全局变量,最后一个i++,使得i为
4(后面的onclick函数,最后在循环外面执行,不受i<length限制); 所以for循环每执行一次,onclick事件函数都会被挂起
一次,共4次; for循环结束后,点击事件 触发了4个onclick函数,接着输出4个4!
           
关于Java的抽象类、接口,以下描述错误的是?      正确答案:C
A抽象类不一定含有抽象方法,接口中的方法都是抽象方法
B一个类只能继承一个抽象类,但可以实现多个接口;一个接口可以继承多个接口
C抽象类和接口中的方法都没有方法体
D抽象类可以含有私有成员变量,接口不含有私有成员变量
解析:
A----------抽象类不一定含有抽象方法,接口中的方法都是抽象方法。
接口中的方法默认修饰符有public abstract。
B----------一个类只能继承一个一个抽象类,但可以实现多个接口;一个接口可以继承多个接口。
Java里类是单继承的,接口是可以多继承的,用关键字extends。
C----------抽象类和接口中的方法都没有方法体。
抽象类中的方法是可以有方法体的。JDK1.8之后,接口中的方法也可以有方法体,用default关键字修饰方法。
D----------抽象类可以含有私有成员变量,接口不含有私有成员变量。
接口中的成员变量都是public static final的,一般用作常量。
           
设有下面两个赋值语句:
a = Integer.parseInt("1024");
b = Integer.valueOf("1024").intValue();
下述说法正确的是()		正确答案:D
A a是整数类型变量,b是整数类对象。
B a是整数类对象,b是整数类型变量。
C a和b都是整数类对象并且它们的值相等。
D a和b都是整数类型变量并且它们的值相等。
解析:
intValue()是把Integer对象类型变成int的基础数据类型; 
parseInt()是把String 变成int的基础数据类型; 
Valueof()是把String 转化成Integer对象类型;(现在JDK版本支持自动装箱拆箱了。)
本题:parseInt得到的是基础数据类型int,valueof得到的是装箱数据类型Integer,然后再通过valueInt转换成int。
           
Java用()机制实现了进程之间的同步执行
A监视器
B虚拟机
C多个CPU
D异步调用
解析:
同步的两种方式:同步块和同步方法 
对于同步来说都是使用synchronized方法
每一个对象都有一个监视器,或者叫做锁。