编程之道

无论是批评的,赞扬的,指着的都请EMAIL给我,你的建议将是我前进的动力! 联系我

某一家公司的测试题

我做了差不多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());
    }
}
这个错误不容易发现。
错误。接口内能实例话对象?

posted on 2005-09-07 11:44 疯流成性 阅读(1136) 评论(1)  编辑  收藏 所属分类: 程序人生

评论

# re: 某一家公司的测试题 2007-12-17 14:43 Franlk

class Something {
final int i;
public void doSomething() {
System.out.println("i = " + i);
}
}


应该不对吧,final修饰的值要求有值,它应该没有default value。所以应该赋值才对。  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: