infosys面试总结.docx
《infosys面试总结.docx》由会员分享,可在线阅读,更多相关《infosys面试总结.docx(11页珍藏版)》请在冰豆网上搜索。
infosys面试总结
1.作用域public,private,protected,以及不写时的区别
区别如下:
作用域当前类同一package子孙类其他package
public√√√√
protected√√√×
friendly√√××
private√×××
不写时默认为friendly
2.两个对象相同(x.equals(y)),但却可有不同的hashcode,这句话对不对?
不对,有相同的hashcode;两个不同的对象有相同的hashCode()是可能的。
3.多态的两种表现是什么?
区别是什么?
(问得是overload(重载)和override(重写)及两者的区别)
重载和重写
区别:
重写(override):
是指对象之间的某个方法的重新实现,在一个类继承一个类时,当基类中某方法申明为virtual或abstract时,在派生类中使用override关键字重新申明一个方法,注意该方法必须与基类中的参数返回值一样,一个类中对于基类某方法只能重写一次,调用基类还是派生类的实现是通过所定义的对象的类型来决定,和方法的参数无关
重载(overload):
指对象中某个方法的重新实现,方法重载不需要关键字,只需要申明方法的参数类型或个数不一样即可,重载不能根据返回类型不同来重载,重载可以重载任意多次,没有限制.调用哪个重载方法只和调用时的参数有关系
4.error和exception的区别
Error即错误,是一种不可挽回的错误,exception只是警告,是可以挽回的。
Error表示系统级的错误和程序不必处理的异常,
Exception表示需要捕捉或者需要程序进行处理的异常。
5.abstractclass和interface的区别
声明方法的存在而不去实现它的类被叫做抽象类(abstractclass),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。
不能创建abstract类的实例。
然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。
不能有抽象构造函数或抽象静态方法。
Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。
取而代之,在子类中实现该方法。
知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。
在接口中,所有方法都是抽象的。
多继承性可通过实现这样的接口而获得。
接口中的所有方法都是抽象的,没有一个有程序体。
接口只可以定义staticfinal成员变量。
接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。
当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。
然后,它可以在实现了该接口的类的任何对象上调用接口的方法。
由于有抽象类,它允许使用接口名作为引用变量的类型。
通常的动态联编将生效。
引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。
6.char型变量中能不能存储一个中文汉字?
为什么?
是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的
7.GC是什么?
为什么要GC?
并考虑2种回收机制。
(GC是垃圾收集的意思(GabageCollection),Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的)
GC是垃圾收集器。
Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。
要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
8.垃圾回收器的基本原理是什么?
垃圾回收器可以马上回收内存吗?
有什么办法主动通知虚拟机进行垃圾回收?
垃圾回收的优点和原理。
并考虑2种回收机制。
Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。
由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。
垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。
垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。
回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
9.final,finally,finalize的区别
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。
因此一个类不能既被声明为abstract的,又被声明为final的。
将变量或方法声明为final,可以保证它们在使用中不被改变。
被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。
被声明为final的方法也同样只能使用,不能重载。
finally—再异常处理时提供finally块来执行任何清除操作。
如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块(如果有的话)。
finalize—方法名。
Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。
它是在Object类中定义的,因此所有的类都继承了它。
子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。
finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
10.HashMap和Hashtable的区别
都属于Map接口的类,实现了将惟一键映射到特定的值上。
Hashtable类似于HashMap,但是不允许null键和null值。
它也比HashMap慢,因为它是同步的。
HashMap类没有分类或者排序。
它允许一个null键和多个null值。
二.同步性:
Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
11.介绍JAVA中的CollectionFramework(及如何写自己的数据结构)
CollectionFrameWork如下:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)
Map提供key到value的映射
12.List,Set,Map是否继承自Collection接口?
List,Set是
Map不是
13.你所知道的集合类有哪些?
主要方法?
在Java中有4种主要的集合类:
set(集)、list(列表)、map(映射)、sequence(序列)、Queue(队列)。
主要方法:
hasNext(),next(),remove(),等。
14.Arraylist,Vector,LinkedList的区别
就ArrayList与Vector主要从二方面来说.
一.同步性:
Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:
当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
15.冒泡排序与快速排序的优缺点
16.举例介绍一种设计模式(单例模式)
packagepattern.singleton;
//懒汉式单例类.在第一次调用的时候实例化
publicclassSingleton2{
//私有的默认构造子
privateSingleton2(){}
//注意,这里没有final
privatestaticSingleton2single;
//只实例化一次
static{
single=newSingleton2();
}
//静态工厂方法
publicsynchronizedstaticSingleton2getInstance(){
if(single==null){
single=newSingleton2();
}
returnsingle;
}
}
17.ssh中哪些部分应用到反射机制?
(ssh指struts,spring,hibernate)
18.java中的循环有几种,怎么跳出循环?
跳出多重循环的标识
1):
8种循环
for;
while;
do….while;
if……..else;
while(true)…….break;
for……….break;
while(true)……continue;
for(….;…;....i++)……….continue;
19.Java面向对象的特点?
封装继承多态。
20.stringstringBufferStringBuilder
String的长度是不可变的;
StringBuffer的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer
通常应该优先使用StringBuilder类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。
StringBuilder是从JDK5开始。
21.在Java中如何跳出当前的多重循环?
在最外层loop([lu:
p])前加label标识,然后用break:
label方法。
22.静态变量与实例变量的区别?
静态变量不依赖于某一个实例,可通过类名直接访问。
实例变量必须依赖于某一个实例,只能通过对象才能访问。
23.Div位置div+css的相对定位和绝对定位的区别。
position:
absolute;绝对定位
position:
relative;相对定位
绝对定位是指你所定义该样式的板块以你浏览器的边框作为参照物来放置他的位置;
相对定位是指你所定义该样式的板块以该板块外层板块(也就是子级板块对父级板块)为参照物来放置他的位置,
24.数据库的三个范式?
?
一对一一对多多对多
25.Oracle分页查询语句,假设表名为table,查处21到40页的数据
26.查询后20位的数据?
27.查询第n条到n+10条的数据记录。
Select*fromemp
28.查询重复名字的行(distinct)?
select*fromempwhereenamein(selectenamefromempgroupbyenamehavingcount(ename)>1)
29.Session与cookie的区别?
Cookie:
主要用于保存客户端,其值在服务器和客户端之间传送,不安全且存储数据有限。
Session:
主要保存在服务端,每个session在服务端有一个sessionid作为标识,安全高存储的数据量大,站服务器内存资源少。
30.hibernate是什么框架?
ORM框架(object(对象),relationship(关系),mapp