本套题目共5页,请在1个小时内选择作答,正确率优先。
Java基础
1、 实现clone方法和equals方法时需要注意什么?
答:深度clone:实现Serializable
浅度clone:实现Cloneable接口
2、 下面的方法,当输入为2的时候返回值是多少?
public static int getValue(int i) { int result = 0; switch (i) { case 1: result = result + i; case 2: result = result + i * 2; case 3: result = result + i * 3; } return result; } |
答:10
3、
a.下述代码在多线程环境中是否存在问题?若有,如何修正?
b.下述代码中的volatile关键字是什么意思?如果删除对该段代码有何影响?
class Counter { private volatile int count = 0; public int getNext() { return ++count; } |
答:存在多线程环境问题,++count不是原子操作,方法:1,在 方法添加synchronized 2,用lock锁机制使++count操作是一个整体 3,count变量用原子类进行操作。
使用volatile关键字确保共享变量能够呗准确和一致地更新的关键字,保证可见型,只对变量使用。
4、 Thread.sleep() 可能抛出的 InterruptedException 代表什么?如何处理?
答:阻塞方法抛出该异常
1,清除中断状态。2,捕获该异常,保留中断发生的
Spring
1. @Controller中,跳转(“redirect: url”)和转发(“forward: url”)有什么区别?
答:一个跳转会改变浏览器的地址,一般用于访问外界资源
转发是在本服务器进行地址的转换,浏览器的地址不会发生改变。
2. 下面是HTTP请求报文:
POST /example?param1=value HTTP/1.1 Host: www.nowhere123.com Accept: image/gif, image/jpeg, */* Accept-Language: en-us Accept-Encoding: gzip, deflate Content-Type: application/json; charset=UTF-8 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) X-Auth-Token: token-xxxxx { "param2": "value" |
如何在Controller的方法中获取框中的数值?
答:通过HttpServletRequest获取到请求头的集合,遍历,通过键获取值
从request域中获取集合体,再通过键值对获取数据。
3. 使用注解(如@Component)声明Bean,如何指定Bean加载顺序?
a) 答:通过优先级设定
b)
4. 多个同类型的Bean,使用注解注入时如何指定?
MyBatis
1. XML映射中,SQL语句的两种参数注入方法:#和$的区别?
#:使用的是PreparStatement类
$: 使用的是 Statement类(会发升SQL注入问题)
2. XML映射中,如何使用LIKE进行模糊查询?
答:like “%”#{条件}”%”
3. XML映射中,如何批量插入传入的集合(Collection<E>)?
即,如何根据集合生成如下SQL?
INSERT INTO TABLE_NAME(a, b, c) VALUES (a1, b1, c1), (a2, b2, c2) … |
4. XML映射中,如何在插入的同时获取MySQL自增字段(AUTO_INCREMENT)的生成值?
答:插入的时候用selectKey标签先生成主键再进行插入操作
Redis
1. 如何使key对应的值过5秒后失效?
答:expire key 5
设置了失效时间,redis也可能存放在redis 的内存中,redis采用的是软清理的方式,通过以一定的算法进行处理。
2. scan和keys命令的区别?
SCAN:将所有查询的参数分页处理,每次处理的条数通过参数传入
KEYS:将所有查询的参数进行显示,数据量大对服务器性能有影响。
3. 如何开启和执行事务?
答:通过multi命令开启事物,
4. 使用管道(Pipeline)有什么好处?
答:减少服务器压力,减少链路层中的时间消耗,将大量操作结合成少量的操作。
数据库
1. 请写出以下MySQL语句的格式 : 插入 ,更新 ,删除。
表名 | students | ||
username | tel | content | date |
张三 | 13801281191 | 大专毕业 | 2006-10-11 |
李四 | 13612312331 | 本科毕业 | 2006-10-15 |
王五 | 021-55665566 | 硕士毕业 |
a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用SQL语句新增至表中
Insert into students values(‘小王’,‘13254748547’,‘高中毕业’,date(‘2007-05-06’))
b) 请用sql语句把张三的时间更新成为当前系统时间
Update students set date=date(now()) where username=’张三’
c) 请写出删除名为张四的全部记录
Delete from student where username in (‘张’,’四’)
d) 请给date 字段列增加一个普通索引
Alter bable ‘student’ add index_name (‘date’)
2. 表连接的左关联和右关联有什么区别?
a) 左关联:查询以左边的表条件为主,左边表的字段全部显示,右表有就显示没有就不显示。
b) 右关联:查询以右边的表条件为主,右边表的字段全部显示,右表有就显示没有就不显示。
3. 下面哪些语句可以使用索引,而哪些不能?为什么?可以用索引的,怎么建索引?
a)select account_name from trans where amount!=0
b)select account_name,amount from trans where account_name='amex' and account_type='a'
c)select account_name,amount from trans where account_name like ‘zhang%’
答:第一个不能使用索引, != 会导致索引失效,进行全局查询
第二个和第三个可以使用索引