从内存语义的角度来说,volatile与监视器锁有相同的效果:volatile写和监视器的释放有相同的内存语义;volatile读与监视器的获取有相同的内存语义。
内联函数:如果内联函数函数体代码多,在编译时,会增加代码量,增加空间的开销,频繁调用也会增加时间上的开销,所以,内联函数要求代码量要少。内联函数函数体内若有递归语句,或循环语句,在调用时就会频繁扩展代码,占用大量内存。
14 以下为一段浏览器中可运行的Javascript 代码,则运行该段Javascript代码的页面弹出框中显示的结果是:()
var obj = {“key”:“1”,“value”:“2”};
var newObj = obj;
newObj.value += obj.key;
alert(obj.value);
newObj.value = 2;
obj.key = ‘1’; newObj.value += obj.key; 相当于 newObj.value = newObj.value + obj.key; 所以
‘2’ + 1
在javascript中自动转化为字符串拼接操作得到
‘21’
head 部分中的脚本: 需调用才执行的脚本或事件触发执行的脚本放在HTML的head部分中。当你把脚本放在head部分中时,可以保证脚本在任何调用之前被加载。
body 部分中的脚本: 当页面被加载时执行的脚本放在HTML的body部分。放在body部分的脚本通常被用来生成页面的内容。
21.在 myjsp.jsp 中,关于下面的代码说法错误的是: ( )
<%@ page language=“java” import=“java.util.*” errorPage=“error.jsp” isErrorPage=“false” %>
exception是JSP九大内置对象之一,其实例代表其他页面的异常和错误。只有当页面是错误处理页面时,即isErroePage为 true时,该对象才可以使用。对于C项,errorPage的实质就是JSP的异常处理机制,发生异常时才会跳转到 errorPage指定的页面,没必要给errorPage再设置一个errorPage。所以当errorPage属性存在时, isErrorPage属性值为false
25.[不定项选择题]下列哪些是块级元素()
span 行内元素
ol 块级元素
img 行内元素
ul 块级元素
44.不能用来修饰interface的有( )(仅限外部接口)[不定项选择题]
interface声明的一种规范,让第三方去实现,所以为了让结果存在意义只能public修饰
@media tv and (min-width: 700px) and (orientation: landscape) { … }
tv设备类型,(min-width: 700px) 设备像素比,(orientation: landscape)设备高度
20,下面关于面向对象的一些理解哪些是错误的( )
面向对象的最重要的特性是支持继承、封装和多态
系统设计应该遵循开闭原则,系统应该稳定不不可修改,但应支持通过继承、组合等方式进行扩展
函数式的语言必然是面向对象的语言
面向对象设计时,每个类的职责应该单一,不要再一个类中引入过多的接口
过程式语言和面向对象的语言各有其优势,过程式语言更加灵活,面向对象语言更加强调抽象和封装
Java和C++都是静态类型的面向对象编程语言
9,对Collection和Collections描述正确的是()
Collection是java.util下的类,它包含有各种有关集合操作的静态方法
Collection是java.util下的接口,它是各种集合结构的父接口
Collections是java.util下的接口,它是各种集合结构的父接口
Collections是java.util下的类,它包含有各种有关集合操作的静态方法
Collection是java.util下的接口,它是各种集合结构的父接口,继承于它的接口的主要有set和List,提供关于集合的一些操作,比如插入、删除、判断一个元素是否是其成员,遍历等。
Collections是java.utis下的类,是针对集合类的一个工具类,提供一系列静态方法,实现对集合的查找、排序、替换、线程安全(将非同步的集合转换成同步的)等操作。
16,命令javac-d参数的用途是?()
指定编译后类层次的根目录
指定编译时需要依赖类的路径
指定编译时的编码
没有这一个参数
-d destination 目的地
-s source 起源地
javac -d 指定放置生成的类文件的位置
javac -s 指定放置生成的源文件的位置
26,以下关于List删除方法使用错误的是()
list循环外指定index删除:list.remove(i);
list循环外指定元素删除:list.remove(obj);
for(Object obj:list){list.remove(obj);}
for(Iterator it= list.iterator();it.hasNext(){it.next();it.remove();}
增强循环其实就是个迭代器的封装。List维护了一个变量modcount修改次数,包括集合的内部结构的更改(set、add、remove),都会是modcount+1;迭代器中维护了一个变量expectedmodcount,它的初始值是expectedmodcount=modcount。迭代器不允许你在我迭代数据的时候受到修改集合的干扰,确实是这样,不然遍历出来的数据就不符合逻辑了。所以迭代器设计了一个checkForComodification()方法来检测
final void checkForComodification() {
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
}
该方法在迭代器的next()中被调用。一旦modCount != expectedModCount,就ConcurrentModificationException报错。
要修改也必须是迭代器自己修改,因为迭代器在修改完后会重置expectedmodcount=modcount。
35,What might cause the current thread to stop or pause executing
An InterruptedException is thrown.
The thread executes a wait() call.
The thread constructs a new Thread.
A thread of higher priority becomes ready.
The thread executes a waitforID()call on a MediaTracker.
ABDE
A 异常,则停止执行
B 休眠,则停止执行
D 阻塞,则停止执行
E 阻塞,则停止执行
47,HashMap和HashTable的描述,错误的是?
他们都实现了Map接口。
HashMap非线程安全,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供额外同步。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
通过contains方法可以判断一个对象是否存在于HashMap或者Hashtable中。
可以通过containsKey(key)和containsValue(value)判断对象中有没有key和value