31、遍历一个List有哪些不同的方式?
使用for-each循环,迭代器
使用迭代器更加线程安全,因为它可以确保,在当前遍历的集合元素被更改的时候,它会抛ConcurrentModificationException
List<String> strList = new ArrayList<>();
//使用for-each循环
for(String obj : strList){
System.out.println(obj);
}
//using iterator
Iterator<String> it = strList.iterator();
while(it.hasNext()){
String obj = it.next();
System.out.println(obj);
}
32、Arraylist和Linkedlist的区别?
ArrayList、LinkedList、Vector和Stack是List的四个实现类,其中Vector是基于JDK1.0,虽然实现了同步,但是效率低,已经不用了,Stack继承Vector
区别:
- ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于链表的数据结构
- 对于随机访问get和set,ArrayList要优于LinkedList,LinkedList不支持高效的随机访问
- ArrayList适合查找,LinkedList适合增删
33、写出JDBC操作数据库的步骤?
1:加载驱动
2:创建连接
3:创建语句
4:执行语句
5:处理结果
6:关闭资源
1:加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
2:创建连接
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "1111", "1111");
3:创建语句
PreparedStatement ps = con.prepareStatement("select * from user");
4:执行语句
ResultSet rs = ps.executeQuery();
5:处理结果
while(rs.next()) {
rs.get.....(“”);
}
6:关闭资源
finally {
if(con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
34、HashTable和HashMap有什么区别?
1.HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口
2.主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高Hashtable
3.HashMap允许将null作为一个entry的key或者value,而Hashtable不允许
4.最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是
35、一个汉字几个字节,一个char类型的变量,能储存一个汉字吗?
两个字节,可以存储,前提是汉字必须是Unicode编码
36、前后台数据交互的方式有哪些?
json、file、xml、jsonp等
37、==与equals有什么区别?
==:比较两个数据内存地址是否相同
equals:比较两个数据值是否一样
38、谈谈你对MVC的理解?
MVC:是一个框架设计模式,其中M(模型)、V(视图)、C(控制器)
视图:视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。如:jsp、html等
模型:表示业务数据和业务处理。属于数据模型,如:entity、jdbc、hibernate、mybatis等
控制器:接收、响应用户请求,servlet、action、controller等
39、请说出你所知道的线程同步的方法?
wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。 notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。
40、TCP和UDP的区别?
TCP稳定性较高,但效率低
UDP通讯相反,效率较高,但稳定性较差