测试题05(答案解析)

1. @Resource和@Autowired区别?
  1. @Resource(这个注解属于J2EE的),默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
  2. @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 有什么区别?
  1. HashMap几乎可以等价于HashTable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键(key)和值(value),而HashTable则不行)。
  2. HashMap是非synchronized,而HashTable是synchronized,这意味着HashTable是线程安全的,多个线程可以共享一个HashTable;而如果没有正确的同步的话,多个线程是不能共享HashTable的。Java 5 提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。
  3. 另外一个区别是HashMap的迭代器(Iterator)是fail-fast迭代器,而HashTabled enumerator迭代器不是fail-fast的。所以当有其他线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的remove()方法移除元素则不会抛出 ConcurrentModificationException 异常。但这并不是一个一定发生的行为,要看JVM,这条同样也是 Enumeration 和 Iterator 的区别。
  4. 由于HashTable是线程安全的,也是synchronized,所以在单线程环境下它比HashMap要慢。如果你不需要同步,只需要单一线程,那么使用HashMap性能要好于HashTable。
  5. HashMap 不能保证随着时间的推移Map中的元素次序是不变的。
4. 创建线程的方式有几种?
  1. 继承Thread类
  2. 实现Runnable
  3. 实现Callable
  4. 线程池
5. Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思? 重写和重载的区别?

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

6. 接口和抽象类的区别是什么?
  1. 抽象类:抽象类是指这个对象是什么

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

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

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

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

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

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

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

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

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

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

9. sql语句分类是哪些?

DQL
DML
DDL
DCL

10. delete、drop、truncate区别?

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值