测试题05(答案解析)

it2024-04-20  6

1. @Resource和@Autowired区别?

@Resource(这个注解属于J2EE的),默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。 @Autowired默认按类型装配(这个注解是属于spring),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) 。

2. 请写出Spring中基于xml的事务配置过程?

1.配置事务管理器 <bean id="tx" class="DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> 2.配置事务特性 <tx:advice id="txAdvice" transaction-manager="tx"> <tx:attributes> <td:method name="delete*" rollback-for="Exception" /> </tx:attributes> </tx:advice> 3.配置事务切面 <aop:config> <aop:pointcut expression="" id="xx"> <aop:advisor adivce-ref="txAdvice" pointcut-ref='xx'> </aop:config>

3. HashMap 与 HashTable 有什么区别?

HashMap几乎可以等价于HashTable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键(key)和值(value),而HashTable则不行)。HashMap是非synchronized,而HashTable是synchronized,这意味着HashTable是线程安全的,多个线程可以共享一个HashTable;而如果没有正确的同步的话,多个线程是不能共享HashTable的。Java 5 提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。另外一个区别是HashMap的迭代器(Iterator)是fail-fast迭代器,而HashTabled enumerator迭代器不是fail-fast的。所以当有其他线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的remove()方法移除元素则不会抛出 ConcurrentModificationException 异常。但这并不是一个一定发生的行为,要看JVM,这条同样也是 Enumeration 和 Iterator 的区别。由于HashTable是线程安全的,也是synchronized,所以在单线程环境下它比HashMap要慢。如果你不需要同步,只需要单一线程,那么使用HashMap性能要好于HashTable。HashMap 不能保证随着时间的推移Map中的元素次序是不变的。

4. 创建线程的方式有几种?

继承Thread类实现Runnable实现Callable线程池

5. Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思? 重写和重载的区别?

重写:继承, 重载:同一类中定义多个同名的方法,参数列表要不同

6. 接口和抽象类的区别是什么?

抽象类:抽象类是指这个对象是什么

接口:接口是指这个对象能做什么

举例: 定义一个狗类(抽象类):哈士奇,金毛都属于狗类(实现类)狗:睡觉,拆家…可以定义一个接口,让实现类去实现接口

因此在Java语言中,一个类只能继承一个类(抽象类)(正如狗不可能同时是生物和非生物),但是接口可以多继承,一个类能够实现多个接口。

接口中的所有方法是抽象的(abstract修饰)而抽象类是声明方法而不去实现它的类。

接口可以多继承,抽象类单继承

接口定义方法,不能实现,而抽象类可以实现部分方法

接口中的基本数据类型为static,而抽象类不是。

注: 抽象类的功能远超过接口,但是,定义抽象类的代价比较高。因为高级语言来说(从实际设计出发也是),每个类只能继承一个类。在这个类中你必须继承或编写出其所有子类的所有共性。虽然接口在功能上会弱化许多,但是接口是针对一个动作的实现,而且一个类能够继承多个接口,在设计中难度会相对降低。

7. Java中Exception和Error有什么区别?

Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类。Exception 是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。Error 是指在正常情况下,不大可能出现的情况,绝大部分的 Error 都会导致程序(比如 JVM 自身)处于非正常的、不可恢复状态。

8. throw和throws有什么区别?

throw:产生异常 throws:抛出异常

9. sql语句分类是哪些?

DQL DML DDL DCL

10. delete、drop、truncate区别?

delete删除数据 truncate删除数据,表内存结构 drop删除表,删库

最新回复(0)