9.10考试复盘

3、 ArrayList list = new ArrayList(20);中的list扩充几次
A. 0
B. 1
C.2
D.3

通过代码可是它的初始容量为0。而在之前JDK1,6中,初始容量为10。

发生扩容的条件:
根据传入的最小需要容量minCapacity来和数组的容量长度对比,若minCapactity大于或等于数组容量,则需要进行扩容。(如果实际存储数组是空数组,则最小需要容量就是默认容量)
实现扩容:
jdk7中采用>>位运算,右移动一位。 容量相当于扩大了1.5倍;
举例说明:添加20个元素到ArrayList中

当第一次插入元素时才分配10(默认)个对象空间。之后扩容会按照1.5倍增长。

也就是当添加第11个数据的时候,Arraylist继续扩容变为10*1.5=15;

当添加第16个数据时,继续扩容变为15 * 1.5 =22个;

4、 对以下 HTTP 状态码描述,不正确的是?
A. 301 和 302 状态码都表示请求的资源被转移到新地址
B. 服务器返回 304 时,需要同时返回请求的资源内容。
C. 2xx 的状态码表示请求成功
D. 如果服务器请求第三方 API 超时,应该返回 504
状态码分为5类,如下:
1××(“继续努力”) => 表示接收到请求并且继续处理
2××(“开心”) => 表示动作被成功接收、理解和接受
3××(“又要跑一趟”) => 为了完成指定的动作,必须接受进一步处理
4××(“自己的问题自己解决”) => 客户端发生错误,请求中包含错误语法,请求不能被正确执行
5××(“服务不到位”) => 服务端出现错误,服务器不能正确地执行请求。

5、 假设num已经被创建为一个ArrayList对象,并且最初包含以下整数值:[0,0,4,2,5,0,3,0]。 执行下面的方法numQuest(),最终的输出结果是什么?
private List nums;

//precondition: nums.size() > 0
//nums contains Integer objects
public void numQuest() {
int k = 0;
Integer zero = new Integer(0);
while (k < nums.size()) {
if (nums.get(k).equals(zero))
nums.remove(k);
k++;
}
}

A. [3, 5, 2, 4, 0, 0, 0, 0]
B. [0, 0, 0, 0, 4, 2, 5, 3]
C. [0, 0, 4, 2, 5, 0, 3, 0]
D. [0, 4, 2, 5, 3]

在执行循环时碰到了0的对象,进行删除
使数组减少一个数,List为 [0, 4, 2, 5, 0, 3, 0],
但是下一次k=1,所以将在4的位置开始比较,跳过0
而将在List索引为4的位置再次碰到0的对象,
得到List为[0, 4, 2, 5, 3, 0],此时下一次的k=5,跳过了3
然而LIst的索引为5的位置是0的对象,再进行删除.
得到答案:[0, 4, 2, 5, 3]
总结:由于remove()删除了List集合元素,导致集合产生变化,而索引未进行修正,导致跳过了一些元素.

13、 (多选)关于身份证号,以下正确的正则表达式为( )
A. isIDCard=/1\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}KaTeX parse error: Expected 'EOF', got '\d' at position 23: …sIDCard=/^[1-9]\̲d̲{7}((9\d)|(1[0-…/;
C. isIDCard=/2\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}KaTeX parse error: Expected 'EOF', got '\d' at position 23: …sIDCard=/^[1-9]\̲d̲{5}[1-9]\d{3}((…/;

正确选项
A选项:isIDCard=/3\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}KaTeX parse error: Expected 'EOF', got '\d' at position 23: …sIDCard=/^[1-9]\̲d̲{5}[1-9]\d{3}((…/
:起始符号,x表示以x开头
: 结 束 符 号 , x :结束符号,x x表示以x结尾
[n-m]:表示从n到m的数字
\d:表示数字,等同于[0-9]
X{m}:表示由m个X字符构成,\d{4}表示4位数字

15位身份证的构成:六位出生地区码+六位出身日期码+三位顺序码
18位身份证的构成:六位出生地区码+八位出生日期码+三位顺序码+一位校验码

C选项的构成:
[1-9]\d{5}:六位出生地区码,出生地区码没有以0开头,因此第一位为[1-9]。
[1-9]\d{3}:八位出生日期码的四位年份,同样年份没有以0开头。
((0\d)|(1[0-2])):八位出生日期码的两位月份,| 表示或者,月份的形式为0\d或者是10、11、12。
(([0|1|2]\d)|3[0-1]):八位出生日期码的两位日期,日期由01至31。
\d{4}:三位顺序码+一位校验码,共四位。
A选项的构成:
[1-9]\d{7}:六位出生地区码+两位出生日期码的年份,这里的年份指后两位,因此没有第一位不能为0的限制,所以合并了。
后面的与C选项类似了。
好吧其实我也是第一次知道身份证还有15位的。

16、 下面哪些不是Thread类的方法
A. start()
B. run()
C. exit()
D. getPriority()

答案:C

19、 下列关于构造函数说法正确的是( )
A. 构造函数的返回值为void
B. 构造函数不可以被重载
C. 构造函数可以是内联函数
D. 构造函数可以没有参数
答案:C

21、 下列数组定义错误的是( )
A. int arr[2][3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值