本套题目共5页,请在1个小时内选择做答,正确率优先。mysql
Java基础redis
一、 实现clone方法和equals方法时须要注意什么?算法
答:深度clone:实现Serializablesql
浅度clone:实现Cloneable接口数据库
二、 下面的方法,当输入为2的时候返回值是多少?json
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
三、
a.下述代码在多线程环境中是否存在问题?如有,如何修正?
b.下述代码中的volatile关键字是什么意思?若是删除对该段代码有何影响?
class Counter { private volatile int count = 0;
public int getNext() { return ++count; } } |
答:存在多线程环境问题,++count不是原子操做,方法:1,在 方法添加synchronized 2,用lock锁机制使++count操做是一个总体 3,count变量用原子类进行操做。
使用volatile关键字确保共享变量可以呗准确和一致地更新的关键字,保证可见型,只对变量使用。
四、 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 |
硕士毕业 |
2006-10-15 |
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%’
答:第一个不能使用索引, != 会致使索引失效,进行全局查询
第二个和第三个能够使用索引
创建索引:索引能够提升查询效率,可是也会影响增删改的效率,MySQL索引自己就是一种数据结构,索引维护这这种查询树,频繁的对数据进行修改,就会影响树的每一个节点变化,不停的进行IO操做对mysql数据库也是有影响的,因此通常创建全部都是在数据变化不大,查询频率比较高的数据进行创建索引。