我做了差不多3个小时,简直整人啊。不过还好这些题目我以前在网上都见过,有些没作出来的我也补上答案了。由于面试通过了,极度兴奋ING。
问题1、面向对象的特征有哪些方面?
封装,多态,继承
问题2、String是最基本的数据类型吗?
不是。
问题3、int 和 Integer 有什么区别?
int是数据类型,存的是数值。
Integer是对象,通过一个引用只想这个对象。
问题4、运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
问题5、说出Servlet的生命周期,并说出Servlet和CGI的区别。
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,当服务器决定将实例销毁的时候调用其destroy方法。
CGI: 每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
问题6、说出ArrayList,Vector, LinkedList的存储性能和特性。
ArrayList其实就是用数组来实现的,所以在查询数据方面速度快。
Vector在功能上和ArrayList几乎一样,不过Vector类内的成员都是同步的,如果不考虑线程安全的话,还是使用ArrayList。因为同步在运行时要消耗掉大量的内存。
LinkedList是由链表来实现的,所以在添加删除等操作方面速度快,同时也能有效的利用内存空间。
问题7、sleep() 和 wait() 有什么区别?
Sleep()是让该线程睡眠一段时间,将控制权给别的线程。等时间到了就自动恢复。
Wait()方法需要通过notify()方法调用,线程才能进入运行状态。
问题8、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写和重载是Java多态性的不同表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写。子类的对象使用这个方法时,将调用子类中的定义。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载。
Overload的方法是可以改变返回值的类型。
问题9、同步和异步有何异同,在什么情况下分别使用他们?举例说明。
同步是当多个线程都要使用一个资源的时候就要使用。例如:有个公共厕所每次只能进一个,如果N个人同时有需要的话,就需要同步,让一个人进去,等里面人出来后其他人才能进。
问题10、说出数据连接池的工作机制是什么?
服务器启动后创建指定数量的连接。当客户端访问时,服务器分配一个空闲的连接。
如果先前分配连接用完,就新建一定数量的连接。
问题11、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
会被执行,在return前。
问题12、Java中的异常处理机制的简单原理和应用。
当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。也可以自己定义异常处理方式。
问题13、垃圾回收的优点和原理。并考虑2种回收机制。
优点就是程序员不需要考虑对内存的释放。
问题14、请说出你所知道的线程同步的方法。
Wait(),sleep(), notify()
问题15、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify
问题16、servlet的生命周期
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,当服务器决定将实例销毁的时候调用其destroy方法。
问题17、J2EE是技术还是平台还是框架?
我觉得都是。
J2EE是SUN公司提出的一个基于多层应用的,分布式开发的,以组件形式(具有框架)形成的一个标准平台。
问题18、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
String str=”abcd”;
String tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");
问题19、XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
1.XML文档定义有2种形式,DTD和Schema,区别是schema本身是XML,能被解析器解析。
2.解析XML文档有SAX和DOM,还有一些不过都是SAX和DOM基础上发展的。
问题20、bean 实例的生命周期
对于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在缓冲池管理,在create之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在Cache管理的Bean则通过激活和去激活机制保持Bean的状态并限制内存中实例数量。
问题21、如何启动时不需输入用户名与密码?
没看明白什么意思.什么启动啊?
问题22、排序都有哪几种方法?请列举。用JAVA实现一个快速排序。
排序的方法有:直接插入排序、希尔排序,冒泡排序、快速排序,直接选择排序、堆排序,归并排序,箱排序、基数排序等。
问题23、java中会存在内存泄漏吗,请简单描述。
内存泄漏应该是程序设计的问题,与语言无关把。
问题24、java中实现多态的机制是什么?
重写和重载。
问题25、应用服务器与WEB SERVER的区别?
从功能上来讲:应用服务器是处理业务逻辑的;而web服务器则主要是处理表示层的。
问题26、BS与CS的联系与区别。
B/S:由服务器承担大部分工作,浏览器只负责少量的前端处理(比方说用JS验证控件)。
C/S:服务器客户端共同分担处理。
问题27、WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。
Web ServiceWeb Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。
JAXP(Java API for XML Parsing) 定义了在Java中使用DOM, SAX, XSLT的通用的接口。这样在你的程序中你只要使用这些通用的接口,当你需要改变具体的实现时候也不需要修改代码。
JAXM(Java API for XML Messaging) 是为SOAP通信提供访问方法和传输机制的API。
WSDL是一种 XML 格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为抽象端点(服务)。
SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。
UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
二、JAVA代码查错
问题1、
abstract class Name {
private String name;
public abstract boolean isStupidName(String name) {}
}
这有何错误?
错。abstract 方法必须以分号结尾。
问题2、
public class Something {
void doSomething () {
private String s = "";
int l = s.length();
}
}
有错吗?
错。局部变量前面不是有访问限制符。
问题3、
abstract class Something {
private abstract String doSomething ();
}
这好像没什么错吧?
错。抽象方法的本意就是必须子类继承,你加个private肯定错了。
问题4、
public class Something {
public int addOne(final int x) {
return ++x;
}
}
这个比较明显。
错。Final访问符一出,变量就不能被修改了。
问题5、
public class Something {
public static void main(String[] args) {
Other o = new Other();
new Something().addOne(o);
}
public void addOne(final Other o) {
o.i++;
}
}
class Other {
public int i;
}
是关于final的问题,这有错吗?
对的。变得是成员变量,但是对象的引用没有变。
问题6、
class Something {
int i;
public void doSomething() {
System.out.println("i = " + i);
}
}
有什么错呢? 看不出来啊。
对的。默认值=0。
问题7、
class Something {
final int i;
public void doSomething() {
System.out.println("i = " + i);
}
}
和上面一题只有一个地方不同,就是多了一个final。这难道就错了吗?
对的。和上题一样。
问题8、
public class Something {
public static void main(String[] args) {
Something s = new Something();
System.out.println("s.doSomething() returns " + doSomething());
}
public String doSomething() {
return "Do something ...";
}
}
看上去很完美。
错。方法不是静态的,所以一定要object.method();
问题9、
此处,Something类的文件名叫OtherThing.java
class Something {
private static void main(String[] something_to_do) {
System.out.println("Do something ...");
}
}
这个好像很明显。
错。类名的名字必须和文件名相同。
问题10、
interface A{
int x = 0;
}
class B{
int x =1;
}
class C extends B implements A {
public void pX(){
System.out.println(x);
}
public static void main(String[] args) {
new C().pX();
}
}
错误。必须要明确X的来源。
问题11、
interface Playable {
void play();
}
interface Bounceable {
void play();
}
interface Rollable extends Playable, Bounceable {
Ball ball = new Ball("PingPang");
}
class Ball implements Rollable {
private String name;
public String getName() {
return name;
}
public Ball(String name) {
this.name = name;
}
public void play() {
ball = new Ball("Football");
System.out.println(ball.getName());
}
}
这个错误不容易发现。
错误。接口内能实例话对象?