1 break
和
continue
有什么区别?
break
可以使流程跳出
switch
语句体,也可以在循环结构终止本层循环体,从而提前结束
本层循环。
continue
作用跳过本次循环体中余下尚未执行语句,立即进行下一次循环条件判定,可以
理解为仅结束本次循环
2 String s = new String("jay");
创了几个字符串对象?
第一次调用
new String("jay");
时,会在堆内存中创一个字符串对象,同时在字符串常量池
中创一个对象
"jay"
第二次调用
new String("jay");
时,只会在堆内存中创一个字符串对象,指向之前在字符串
常量池中创
jay
3 this
和
super
关键字作用
this
:
对象内部指代自身引用
解决成员变量和局部变量同名问题
可以调用成员变量,不能调用局部变量
可以调用成员方法
在普通方法中可以省略
this
在静态方法当中不允许出现
this
关键字
super
:
调用父类 成员或者方法
调用父类构造函数
4
列举出
JAVA
中
6
个比较常用包
java.lang;
java.util;
java.io;
java.sql;
java.awt;
java.net;
5
同步和异步有什么区别?
同步的思想是:所有的操作都做完,才返回给用户。这样用户在线等待的时间太长,给用户
一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行,卡
死了的感觉)。这种情况下,用户不能关闭界面,如果关闭了,即迁移程序就中断了。
异步:将用户请求放入消息队列,并反馈给用户,系统迁移程序已经启动,你可以关闭浏览
器了。然后程序再慢慢地去写入数据库去。这就是异步。但是用户没有卡死的感觉,会告诉
你,你的请求系统已经响应了。你可以关闭界面了。
6
数组和
ArrayList
转换
数组转集合:
Arrays.asList()
集合转数组: 集合名
.toArray()
ArrayList
<
String
>
list
= **
new
**
ArrayList
<>
();
Collections
.
*
addAll
*
(
list
,
**
"abc"
**
,
**
"def"
**
);
String
[]
array
=
list
.
toArray
(
**
new
**
String
[
0
]);
System
.
**
out
**
.
println
(
Arrays
.
*
toString
*
(
array
));
List
<
String
>
list1
=
Arrays
.
*
asList
*
(
array
);
System
.
**
out
**
.
println
(
list1
);
7
说下
Vector
和
ArrayList
、
LinkedList
联系和区别
?
分别的使用场景
线程安全
ArrayList:
底层是数组实现,线程不安全,查询和修改非常快,但是增加和删除慢
LinkedList:
底层是双向链表,线程不安全,查询和修改速度慢,但是增加和删除
速度快
Vector:
底层是数组实现,线程安全的,操作的时候使用
synchronized
进行加锁使
用场景
使用场景:
Vector
已经很少用了
增加和删除场景多则用
LinkedList
查询和修改多则用
ArrayList
8
如果需要保证线程安全,
ArrayList
应该怎么做,用有几种方式
自己写个包装类,根据业务一般是
add/update/remove
加锁
Collections.synchronizedList(new ArrayList<>());
使用
synchronized
加锁
并发包下的
CopyOnWriteArrayList<>()
,使用
ReentrantLock
加锁
9
了解
CopyOnWriteArrayList
吗
?
和
Collections.synchronizedList
实现线程安全有什么区
别,使用场景是怎样的
?
。
CopyOnWriteArrayList:
执行修改操作,会拷贝一份新的数据
(add/set/remove)
,代价昂贵,修改好后会将
原来的集合指向新的集合来完成操作,使用
ReentrantLock
来保证不会让多个线程
同时修改
场景
:
适合读操作远大于写操作的场景
(
读操作是不需要加锁的,直接获取,但是
删除和增加需要加锁,读多写少
)
Collections.synchronizedList:
线程安全的原因就是几乎每个方法都是使用
synchronized
加同步锁
场景
:
写操作性能比
CopyOnWriteArrayList
好,但是读操作性能并不如
CopyOnWriteArrayList
10 CopyOnWriteArrayList
的设计思想是怎样的
,
有什么缺点
?
设计思想
:
读写分离
+
最终一致
缺点
:
内存占用问题,由于写时复制,内存里面同时存在两个对象占用的内存,如果对象大
则容易发生
YongGC
和
FullGC