补题

  1. 以下哪一项正则能正确的匹配网址: http://www.bilibili.com/video/av21061574()
    补题_第1张图片
    首先,^表示匹配输入的开始,$表示匹配输入的结束
    每个选项从前向后看,http都能够严格匹配
    ?表示匹配某元素0次或1次,这里四个选项都没有问题,能够匹配0次或1次字符s
    接下来:严格匹配,//严格匹配两个//
    接着往下看,[]表示字符集合,它用在正则表达式中表示匹配集合中的任一字符
    A D 选项中的 [a-zA-Z\d] 表示匹配一个小写字母 或者 大写字母 或者 数字
    B C 选项中的 \w 表示匹配字母数字或下划线(注意这里比A D中能多匹配下划线类型)
    +表示匹配某元素1次或多次,到这里四个选项都能够完美匹配字符www
    .可以匹配除了换行符\n \r外的任何字符
    接下来我们看选项A,bilibili com video av都严格匹配,而 \D 表示匹配一个非数字字符而非数字字符,av后的数字是无法匹配成功的,A错误
    B选项,\d匹配数字,{m,n}表示最少匹配m次,最多匹配n次,/?能匹配末尾的0个或1个/字符,B正确
    C选项,*表示匹配某元素0次或多次,但 \w 并不能匹配字符 /,C错误
    D选项,前面都对,错在最后的/+至少要匹配一个/,而原字符串最后并没有/

  1. 下面有关java内存模型的描述,说法错误的是?
    补题_第2张图片
    Java线程之间的通信由Java内存模型(简称为JMM)控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不真实存在。它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化
    volatile变量的写-读可以实现线程之间的通信。

从内存语义的角度来说,volatile与监视器锁有相同的效果:volatile写和监视器的释放有相同的内存语义;volatile读与监视器的获取有相同的内存语义。


  1. 要求匹配以下16进制颜色值,正则表达式可以为: #ffbbad #Fc01DF #FFF #ffE
    补题_第3张图片
    以#开头,后面是数字和a-f的字符(大写或小写),这个值是6位或3位。要匹配一个3位是为了符合16进制颜色的简写规则
    1. 在( )情况下适宜采用内联函数
      补题_第4张图片

内联函数:如果内联函数函数体代码多,在编译时,会增加代码量,增加空间的开销,频繁调用也会增加时间上的开销,所以,内联函数要求代码量要少。内联函数函数体内若有递归语句,或循环语句,在调用时就会频繁扩展代码,占用大量内存。


14 以下为一段浏览器中可运行的Javascript 代码,则运行该段Javascript代码的页面弹出框中显示的结果是:()
var obj = {“key”:“1”,“value”:“2”};
var newObj = obj;
newObj.value += obj.key;
alert(obj.value);
补题_第5张图片
newObj.value = 2;
obj.key = ‘1’; newObj.value += obj.key; 相当于 newObj.value = newObj.value + obj.key; 所以

‘2’ + 1
在javascript中自动转化为字符串拼接操作得到
‘21’


  1. @SuppressWarnings(“deprecation”)的功能是什么? 补题_第6张图片
    1.Java三大注解分别是@Override @Deprecated @Suppresswarnings
    2.@Override 注解表名子类中覆盖了超类中的某个方法,如果写错了覆盖形式,编译器会报错
    3.@Deprecated 表明不希望别人在以后使用这个类,方法,变量等等
    4.@Suppresswarnings 达到抑制编译器产生警告的目的,但是不建议使用,因为后期编码人员看不懂编译器提示的警告,不能更好的选择更好的类去完成任务

  1. JavaScript 写在 HTML 代码中的哪一部分,会导致页面在加载的时候自身被执行()
    在HTML body部分中的JavaScripts会在页面加载的时候被执行。
    在HTML head部分中的JavaScripts会在被调用的时候才执行。

head 部分中的脚本: 需调用才执行的脚本或事件触发执行的脚本放在HTML的head部分中。当你把脚本放在head部分中时,可以保证脚本在任何调用之前被加载。
body 部分中的脚本: 当页面被加载时执行的脚本放在HTML的body部分。放在body部分的脚本通常被用来生成页面的内容。


21.在 myjsp.jsp 中,关于下面的代码说法错误的是: ( )
<%@ page language=“java” import=“java.util.*” errorPage=“error.jsp” isErrorPage=“false” %>
补题_第7张图片
exception是JSP九大内置对象之一,其实例代表其他页面的异常和错误。只有当页面是错误处理页面时,即isErroePage为 true时,该对象才可以使用。对于C项,errorPage的实质就是JSP的异常处理机制,发生异常时才会跳转到 errorPage指定的页面,没必要给errorPage再设置一个errorPage。所以当errorPage属性存在时, isErrorPage属性值为false


25.[不定项选择题]下列哪些是块级元素()
补题_第8张图片
span 行内元素
ol 块级元素
img 行内元素
ul 块级元素


  1. [不定项选择题]关于Java中的ClassLoader下面的哪些描述是错误的:( )
    补题_第9张图片
    A、java中类的加载有5个过程,加载、验证、准备、解析、初始化;这便是类加载的5个过程,而类加载器的任务是根据一个类的全限定名来读取此类的二进制字节流到JVM中,然后转换为一个与目标类对应的java.lang.Class对象实例,在虚拟机提供了3种类加载器,引导(Bootstrap)类加载器、扩展(Extension)类加载器、系统(System)类加载器(也称应用类加载器)。A正确
    B、一个类,由不同的类加载器实例加载的话,会在方法区产生两个不同的类,彼此不可见,并且在堆中生成不同Class实例。所以B前面部分是正确的,后面接口的部分真的没有尝试过,等一个大佬的讲解吧;
    C、类加载器是肯定要保证线程安全的;C正确
    D、装载一个不存在的类的时候,因为采用的双亲加载模式,所以强制加载会直接报错,D错误
    java.lang.SecurityException: Prohibited package name: java.lang
    E、双亲委派模式是在Java 1.2后引入的,其工作原理的是,如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行,如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器,如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成此加载任务,子加载器才会尝试自己去加载,这就是双亲委派模式,即每个儿子都很懒,每次有活就丢给父亲去干,直到父亲说这件事我也干不了时,儿子自己想办法去完成,所以默认是父装载,E正确
    F、自定义类加载器实现 继承ClassLoader后重写了findClass方法加载指定路径上的class,F错误

  1. java中,静态变量static在不同线程的不同实例中地址是否一样?他们储存在什么区域?()
    补题_第10张图片
    static变量存储在方法区,线程共享,全局区是方法区的一部分,其实用排除法也可以知道 static变量不可能位于堆栈区

44.不能用来修饰interface的有( )(仅限外部接口)[不定项选择题]
补题_第11张图片
interface声明的一种规范,让第三方去实现,所以为了让结果存在意义只能public修饰


  1. 以下哪些可以作为media queries的条件()[不定项选择题]
    补题_第12张图片
    作为media queries的条件:设备像素比、设备类型、设备高度。
    使用and关键字用于合并多个媒体属性或合并媒体属性与媒体类型。

@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

你可能感兴趣的:(补题)