您的位置:首页 > 编程语言 > Java开发

某公司java笔试题

2009-12-18 09:45 246 查看
最近在找一些笔试题,因为快找工作了。。

题目如下:

问答题
1.数据连接池的工作机制
2.Struts标签中<html:errors>的作用是什么
3.Tomcat<CATALINA_HOME>根目录下/server,/common,/shared以及/WEB-INF下的lib中的jar文件在使用时的区别。

填空题
collection的四种主要接口是()()()()
选择题,两道题应该是考察同样的知识点,其中一道是单选一道是多选,那道是单那道是多就不记得了
1.给出程序段
public int Parent
{
public int addValue(int a,int b)
{
int s;
s=a+b;
return s;
}
}
class Child extends Parent{}问可以加在Child类的方法有(会的哥们给出原因,先谢了)
A:int addValue(int a,int b){}
B:public void addValue(int a,int b){}
C:public int addValue(int a){}
D:public int addValue(int a,int b){}
2.public class parent
{
int change(){}
}
class Child extends Parent{}问可以加在Child类的方法有(会的哥们给出原因,先谢了)
A:public int change(){}
B:int change(int i){}
C:privte int change(){}
D:abstract int change(){}

解答如下:

1、连接池机制:在使用JDBC进行数据库操作时,我们常用Connection.close()来回收资源,所以在下次进行数据库操作时,就必须重新建立连接,如果数据操作频繁的话就会严重影响服务器的性能,为了解决这一问题就出现了连接池。这个池维持着一定量的连接(Connection),当需要时就直接从池中取出,不需要时就放回连接池。

里面有三个属性值:

maxIdle:表示最大空闲数,数据库连接的最大空闲时间,即没有request请求发上来。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。
MaxActive:连接池的最大数据库连接数。设为0表示无限制。
maxWait:最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。

2、<html:errors>是和struts-config.xml里面的validate校验有关。。在默认情况下,validate的属性值为true,它到form层里面去找一个这样的方法,代码如下:

public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return super.validate(mapping, request);
}


如果有一个error抛出的话,将它的错误信息写在ApplicationResources.properties文件中,由<html:errors>来输出。。

3、server/lib:存放Tomcat所有需要的各种jar.

common/lib: 存放Tomcat和所有Web应用都可以访问的jar.
shared/lib: 存放所有Web应该都可以访问的jar.
WEB-INF/lib: 存放该Web应用才可以访问的jar.

 对于这个没有多大的感受,一般要加包的话,我都是放到web-inf/lib下面去的。。

4、我只知道List和Set,网上还提供了两种:Queue、SortedSet;

选择考的是重写方法:

  重写有这样三条:1、重写的访问范围不能收窄,如:public的方法不能重写成protected或者private。

2、重写不能抛出更多的异常。
C、除了访问权限之外,方法名必须完全相同。

  所以上面的选择就好做了。

补充:由第5题所拓展的,有这样一段代码

public class Test {
public static void main(String[] args) {
new B().show();
}

}
class A{
int num=12;
public void show(){
System.out.println(num);
}
}
class B extends A{
int num=37;

}


问:输出的结果是什么?

乍一看,好像是输出37。。但是结果是12,这样为什么?再看看我下面的代码,在子类的方法中加上父类的那个方法。

public class Test {
public static void main(String[] args) {
new B().show();
}

}
class A{
int num=12;
public void show(){
System.out.println(num);
}
}
class B extends A{
int num=37;
public void show(){
System.out.println(num);
}
}


在main方法里面其实也可以写成这样的代码:

A a=new B();

a.show();

因为在B类里面没有重写该方法,所以找的是A的方法,而A方法里面用的是a的属性,因为输出的结果会是12,而不是37,如果重写了,则根据动态绑定,去找B类的方法,输出37。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: