亚信联创面试题java基础知识

2014-07-05 06:30:01 阅读( 0 )

2574人 收藏本页

标签:Java面试题

1. Vector & ArrayList
1) Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。
2) 当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。
2 jsp内置对象:
request 用户端请求,此请求会包含来自GET/POST请求的参数
response 网页传回用户端的回应 包含了响应客户请求的有关信息
pageContext 网页的属性是在这里管理 页面上下文对象 提供了对JSP页面内所有的对象及名字空间的访问
session 与请求有关的会话期,主要用于跟踪对话 用来保存客户端状态信息 此对象代表服务器与客户端所建立的会话
application servlet 应用程序对象 负责提供应用程序在服务器中运行时的一些全局信息application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作
out 用来传送回应的输出 输出对象
config 配置对象 提供一些配置信息
page JSP网页本身 页面对象 代表了正在运行的由JSP文件产生的类对象
exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象
Java内存溢出
原因有很多种,比如:
1.数据量过于庞大;死循环 ;静态变量和静态方法过多;递归;无法确定是否被引用的对象;
2.虚拟机不回收内存(内存泄漏);
说白了就是程序运行要用到的内存大于虚拟机能提供的最大内存就发生内存溢出了。
内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存
Java异常处理机制
1.Java程序在执行过程中如果出现了异常,会生成一个异常对象
2.这个异常对象会被交给java运行时环境(jre),这一提交过程被称为抛出(throw)异常
3.当jre得到一个异常对象时,它会寻找能处理这一异常的代码。找到能处理这一异常的方法后,jre会把这一异常对象交给这个方法进行处理,这一过程被称为异常捕获
4.如果 gre 找不到可以捕获异常的方法,则jre将终止,相应的java程序也将退出

C++中的虚函数和纯虚函数用法 象这样定义的就是纯虚函数 virtual void
f(void) = 0; 象这样的就是虚函 virtual void f(void); 1.虚函数和纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstract class),而只含有虚函数的类(class)不能被称为抽象类(abstract class)。
2.虚函数可以被直接使用,也可以被子类(sub class)重载以后以多态的形式调用,而纯虚函数必须在子类(sub class)中实现该函数才可以使用,因为纯虚函数在基类(base class)只有声明而没有定义。
3.虚函数和纯虚函数都可以在子类(sub class)中被重载,以多态的形式被调用。
4.虚函数和纯虚函数通常存在于抽象基类(abstract base class -ABC)之中,被继承的子类重载,目的是提供一个统一的接口。 …
5. 虚函数的定义形式:virtual {method body}
纯虚函数的定义形式:virtual { } = 0;
在虚函数和纯虚函数的定义中不能有static标识符,原因很简单,被static修饰的函数在编译时候要求前期bind,然而虚函数却是动态绑定(run-time bind),而且被两者修饰的函数生命周期(life recycle)也不一样。
6. 如果一个类中含有纯虚函数,那么任何试图对该类进行实例化的语句都将导致错误的产生,因为抽象基类(ABC)是不能被直接调用的。必须被子类继承重载以后,根据要求调用其子类的方法

Sizeof简单的说其作
用就是返回一个对象或者类型所占的内存字节数。

sizeof有三种语法形式,如下:
1) sizeof( object ); // sizeof( 对象 );
2) sizeof( type_name ); // sizeof( 类型 );
3) sizeof object; // sizeof 对象;

“protected” 修饰的方法和属性对于包外的子类是可见的
1. 公共访问控制符 public :如果一个类被声明为公共类,表明它可以被所有的其

它类所访问和引用。用 public 修饰的类的域称为公共域。如果公共域属于一个公共类,则它可以被所有的其他类所引用。

2. 私有访问控制符 private :用 private 修饰的成员变量 ( 域 ) 只能被该类自身所访

问,而不能被任何其它类 ( 包括子类 ) 所引用。

3. 保护访问控制符 protected :用 protected 修饰的成员变量可以被三种类所引用:

该类自身;与它在同一个包中的其它类;在其它包中的该类的子类。使用修饰符 protected 的主要作用是允许其它包中它的子类来访问父类的特定属性。
C++异常处理机制
.其强大的能力表现在:
A.把可能出现异常的代码和异常处理代码隔离开,结构更清晰.
B.把内层错误的处理直接转移到适当的外层来处理,化简了处理
流程.传统的手段是通过一层层返回错误码把错误处理转移到
上层,上层再转移到上上层,当层数过多时将需要非常多的判断,
以采取适当的策略.
C.局部出现异常时,在执行处理代码之前,会执行堆栈回退,即为
所有局部对象调用析构函数,保证局部对象行为良好.
D.可以在出现异常时保证不产生内存泄漏.通过适当的try,catch
布局,可以保证delete pobj;一定被执行.

E.在出现异常时,能够获取异常的信息,指出异常原因.
并可以给用户优雅的提示.
F.可以在处理块中尝试错误恢复.保证程序几乎不会崩溃.
通过适当处理,即使出现除0异常,内存访问违例,也能
让程序不崩溃,继续运行,这种能力在某些情况下及其重要.

在Java语言中,static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,
被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享
01public static int searchRecursively(int[] data, int key) {
03 if (data == null || data.length < 1)
05 return -1;
07 return doSearchRecursively(data, 0, data.length - 1, key);
09}
12private static int doSearchRecursively(int[] data, int low, int high,int key) {
14 if (low > high)
16 return -1;
18 int mid = (low + high) / 2;
20 if (key < data[mid]) {
22 return doSearchRecursively(data, low, mid - 1, key);
24 } else if (key > data[mid]) {
26 return doSearchRecursively(data, mid + 1, high, key);
27
28 } else {
30 return mid;
1 HashMap不是线程安全的
2 HashTable是线程安全的
HashMap完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。

在jsp中include有两种形式,分别是Include指令:和include动作:
两者最重要的区别:JSP指令,是将被引入的JSP与原JSP融合到一起,而这个融合过程是在翻译阶段进行的
jsp页面是把include指令元素()所指定的页面的实际内容(也就是代码段)加入到引入它的jsp页面中,合成一个文件后被jsp容器将它转化成servlet。可以看到这时会产生一个临时class文件和一个servlet源文件。而动作元素()是在请求处理阶段引入的,会被JSP容器生成两个临时class文件和两个servlet原文件。而引入的只是servlet的输出结果,即JspWriter对象的输出结果,而不是jsp的源代码。

SESSION传值
如果是要利用SESSION将2.jsp传到1.jsp,要保证1.jsp和2.jsp在一个会话期(即同在1个session),只要用超连接的形式到1.jsp即可.如果是要提交表单的话,你form里的action属性要是post方式,即
.在2.jsp里写setAttribute,1.jsp写getAttribute是绝对没有问题的.

来自IT公司面试手册

下一篇:JAVA面试题解惑系列 – 类的初始化顺序

上一篇:高级程序员面试题

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息: 面试题