面试题5
研发中心java笔试题
一.选择题
1 下列哪个类不是Collection的子类 C
A. List
B. Set
C. Map
D. Vector
2. 若覆盖了某个类的hashCode 方法,则必须同时覆盖它的哪个方法? D
A。Contains
B. Clone
C. toString
D. Equals
3. 以下关于java垃圾回收器描述错误的是 C
A. 垃圾回收可以有效的防止内存泄漏,有效的使用可以使用的内存
B. 回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收等
C. 可以手动执行system.gc(),通知GC运行,GC会立刻执行垃圾回收
D. 程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收
4. 请问下列方法的返回结果是什么? C
Public int f(){
Int i =0;
Try{
++i;
}finaly{
++i;
}
Return ++i;
}
A. 1
B. 2
C. 3
D. 0
5. 请分析下列代码的正确输出 C
Public static void main(String[] args){
StringBuffer a = new StringBuffer(“A”);
Stringbuffer b =new StringBuffer(“B”);
Operat(a,b);
System.out,println(a+”,”+b);
}
Public static void Operat (StringBuffer x, StringBuffer y){
X.append(y);
Y=x;
}
A. A,B
B. A,A
C. AB,B
D. AB,AB
6. 下面isEmptyString函数正确的是( A )
A、public boolean isEmptyString(String str){
return str == null || str.length()==0;
}
B、public boolean isEmptyString(String str){
return str.length()==0;|| str == null ;
}
C、public boolean isEmptyString(String str){
return str == “” || str.length()==0;
}
D、public boolean isEmptyString(String str){
return str.equals(“”) || str.length()==0;
}
7. 以下说法错误的是( C )
A、ArrayListh和Vector都是使用数组的方式存储数据
B、Vector是线程安全的
C、LinkedList相比ArrayList插入数据慢
D、LinkedList使用双向链表实现存储
8. JavaScript定义var a = ”40”, var b=7,则执行a%b会得到( A )。
A、5
B、”5”
C、undefined
D、null
9. 以下数据库应用程序的实现原则,哪条是错误的( )
A、数据库的链接,游标是重要的共享资源,需要谨慎的节约使用,尽量晚点获取,尽量
点释放是通常情况下需要遵循的原则
B、事务尽可能的短,尽量巧妙地设计应用使得锁定的资源越少越好
C、SQL语句是越动态越好,越是动态的SQL,则数据库中通常会存在SQL语句的缓 存和执行计划的存在
D、不要什么事情都交给数据库做,缓存是必要的
10. 有以下两个表X和Y
X(F1, F2为字段名)
F1 | F2 |
A | A |
B | B |
Y(F1, F3为字段名)
F1 | F3 |
A | A |
C | C |
D | D |
要求写一条SQL语句,返回结果如下,正确的是()SELECT X.F1, X.F2, Y.F3 FROM X , Y WHERE X.F1=Y.F1
F1 | F2 | F3 |
A | A | A |
A、SELECT X.F1, X.F2, Y.F3 FROM X INNER JOIN Y ON X.F1<>Y.F1
B、SELECT X.F1, X.F2, Y.F3 FROM X LEFT JOIN Y ON X.F1=Y.F1
C、SELECT X.F1, X.F2, Y.F3 FROM X , Y WHERE X.F1<>Y.F1
D、SELECT X.F1, X.F2, Y.F3 FROM X RIGHT JOIN Y ON X.F1=Y.F1
简答题:
1.ArrayList和LinkedList的实现原理分别是什么?有什么区别?
两者都实现的是List接口。不同之处在于:
(1)、ArrayList是基于动态数组实现的,LinkedList是基于链表的数据结构。
(2)、get訪问List内部随意元素时,ArrayList的性能要比LinkedList性能好。LinkedList中的get方法是要依照顺序从列表的一端開始检查,直到另一端
(3)、对于新增和删除操作LinkedList要强于ArrayList。由于ArrayList要移动数据
2.Java创建对象有哪几种方式?
有四种方式:
1.用new语句创建对象,这是最常用的创建对象的方式。
2.运用反射手段,调用Java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
3.调用对象的clone()方法。
4.运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法.
3.写出servlet的生命周期
Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:
· Servlet 通过调用 init () 方法进行初始化。
· Servlet 调用 service() 方法来处理客户端的请求。
· Servlet 通过调用 destroy() 方法终止(结束)。
· 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
4.Mybatis的映射文件中$和#有什么区别?
#方式能够很大程度上防止sql注入,而$无法防止sql的注入,
$一般用于传入数据库对象,例如传入表名
一般能用#就别用$
mybatis排序时使用order by动态参数时需要住哟,使用$而不是#
5.Mybatis中ResultType和ResultMap有什么区别?
MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的(对应着我们的model对象中的实体),而resultMap则是对外部ResultMap的引用(提前定义了db和model之间的隐射key-->value关系),但是resultType跟resultMap不能同时存在。
在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。
①当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性是resultType的时候,MyBatis对自动的给把对应的值赋给resultType所指定对象的属性。
②当提供的返回类型是resultMap时,因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。
6.SpringMvc有哪些常用的注解?
@Controller
@RequestMapping
@Resource和@Autowired
@PathVariable
@CookieValue
@RequestParam
@SessionAttributes
@ModelAttribute
@ResponseBody
7.Springmvc如何实现重定向和转发?
在使用redirect进行重定向时请求的URL链接发生了改变,并且在controller中如果像reward一样 model.addAttribute("name", name)放置的参数,重定向之后是无法获取到的,所以重定向需要另外的方式进行参数的传递,上面的程序介绍了两种重定向传参的方式:
①、重定向之前把参数放进Session中,在重定向之后的controller中把参数从Session中取出并放进ModelAndView
②、使用RedirectAttributes类,这种实现方式比较简单。
8.Redis有那些数据类型?
1.String(字符串)
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M
2.Hash(哈希)
Redis hash 是一个键值对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象
类似Java里面的Map<String,Object>
3.List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。
它的底层实际是个链表
4.Set(集合)
Redis的Set是string类型的无序集合。它是通过HashTable实现实现的,
5.zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。
redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
9.Map,List,Set的实现类分别有哪些?
1、List,Set都是继承自Collection接口,Map则不是
2、List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的,加入Set 的Object必须定义equals()方法 ,另外list支持for循环,也就是通过下标来遍历,也可以用迭代器,但是set只能用迭代,因为他无序,无法用下标来取得想要的值。)
3.Set和List对比:
Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。
4.Map适合储存键值对的数据
10.一些列的规则如下:1,1,2,3,5,8,13,21,34......求第30位数是多少,用递归算法实现
public class MainClass
{
public static void Main()
{
Console.WriteLine(Foo(30));
}
public static int Foo(int i)
{
if (i <= 0)
return 0;
else if(i > 0 && i <= 2)
return 1;
else return Foo(i -1) + Foo(i - 2);
}
}
查看原文:http://www.coder306.cn/?p=158