面试题01

一、java基础知识

1、分别说明抽象、继承、封装、多态;
抽象:就是把现实生活中的某一类东西提取出来,用程序代码表示,我们通常叫做类或者接口。抽象包括两个方面:一个是数据抽象,一个是过程抽象。数据抽象也就是对象的属性。过程抽象是对象的行为特征。
封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行封装隐藏。封装分为属性的封装和方法的封装。
继承:是对有着共同特性的多类事物,进行再抽象成一个类。这个类就是多类事物的父类。父类的意义在于抽取多类事物的共性。
多态:允许不同类的对象对同一消息做出响应。方法的重载、类的覆盖正体现了多态。
2、String和StringBuffer的区别
String专门定义不变字符串,而StingBuffer用来定义可变字符串。
两者在性能上也有很大的区别:
String比较适合短的字符串,StingBuffer适合动态增加的字符串。
在实际使用过程中,要求:String+String这种在BS开发结构中不被提倡,对性能影响比较大。而StingBuffer则是比较推荐使用方法。
类似的不提倡使用的还有System.out.print()方法
3、运行时异常与一般异常有何异同?
一般异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
4、说出Servlet的生命周期,并说出Servlet和CGI的区别。
Servlet的生命周期可以分为加载、实例化、初始化、处理客户请求和卸载五个阶段,体现在方法上主要是init()、service()和 destroy()三个方法。生命周期的具体说明如下:
(1) Servlet容器完成加载Servlet类和实例化一个Servlet对象
(2) init()方法完成初始化工作,该方法由Servlet容器调用完成
(3) service()方法处理客户端请求,并返回响应结果
(4) destroy()方法在Servlet容器卸载Servlet之前被调用,释放一些资源
2. Servlet与CGI的区别
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

5、说出ArrayList,Vector,LinkedList的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

6、说出final,finally,finalize的区别

final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。

finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

 7、Overload和Override的区别。Overloaded的方法是否可以改变返回值?

重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。

重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。

8、error和exception有什么区别?

Exception:

1.可以是可被控制(checked) 或不可控制的(unchecked)

2.表示一个由程序员导致的错误

3.应该在应用程序级被处理

Error:

1.总是不可控制的(unchecked)

2.经常用来用于表示系统错误或低层资源的错误

3.如何可能的话,应该在系统级被捕捉

9、同步和异步有何不同,在什么情况下分别使用它们?举例说明

异步就是互不影响
ajax的第一个a就是异步,你一边浏览网页,后台一边和web服务器通信 检查你的用户名是否重复,但你却在前台根本看不出来

同步:必须保持相同步调。我在你前面就会始终在你前面,即使你跑的比我快又怎样,了不起啊,我有synchronized给我撑腰,你超我一个试试看,抽你丫的不可!

异步:(synchronized不知去向)你丫刚不是牛x吗?我还就超了你了,怎么招吧,你抽我一个看看,有本事冲这来!

10、List、Map、Set三个接口,存取元素时,各有什么特点?

list:存储: 有序的 可重复的
访问:可以for循环,foreach循环,iterator迭代器迭代。
set:存储:无序的 不重复的
访问:可以foreach循环,iterator迭代器 迭代
map:存储:存储的是一对一对的映射 ”key=value“,key值 是无序,不重复的。value值可重复
访问:可以map中key值转为为set存储,然后迭代这个set,用map.get(key)获取value
也可以 转换为entry对象 用迭代器迭代

二、数据库知识

1、Oracle数据库表空间与用户的关系是(B)

A.一对一    B.一对多   C.多对一   D.多对多

2、Oracle数据库表空间与数据文件的关系描述正确的是(B)

A.一个表空间只能对应一个数据文件
B.一个表空间可以对应多个数据文件
C.一个数据文件可以对应多个表空间
D.表空间与数据文件没任何对应关系

 

posted @ 2014-10-02 16:55  雪夜蓝风  阅读(142)  评论(0编辑  收藏  举报