1、百川同达 Java 程序员应聘摸底考试题一、选择题。(2*11 分)1. class ExSuper String name;String nick_name;public ExSuper(String s,String t)name = s;nick_name = t;public String toString()return name;public class Example extends ExSuperpublic Example(String s,String t)super(s,t);public String toString()return name + “a.k.a“ +
2、nick_name;public static void main(String args)ExSuper a = new ExSuper(“First“,“1st“);ExSuper b = new Example(“Second“,“2nd“);System.out.println(“a is “ + a.toString();System.out.println(“b is “ + b.toString();A. 编译时会出现异常。B. 运行结果为:a is Firstb is secondC. 运行结果为:a is Firstb is Secong a.k.a 2ndD. 运行结果为:
3、a is First a.k.a 1ndb is Second a.k.a 2nd2. abstract class MineBaseabstract void amethod();static int i;public class Mine extends MineBasepublic static void main(String argv)int ar = new int5;for (int i = 0; i 标签中 scope 的范围由小到大是A page session request application B. application page request sessionC.
4、 application session request page D. page request session application6. 要让用户共享一个 JavaBean 的对象则该对象的范围应改设置为:A. session B. page C. application D. request7. 关于自定义标签的使用不正确的是:A 必须在 JSP 页面中使用 B. 必须经过 web.xml 影射C. 必须存在 tld 文件 D. 自定义标签的类必须是 public 的8. 关于外键约束不正确的是:A外键约束与唯一约束不能同时存在与一个字段B子表外键列的值必须在主表参照列表值的范围内,或
5、者为空C主表外键值被子表参照时,主表记录不允许被删除D外键参照的是主表的主键或者唯一键9. 下面的类,正确的描述是_public class Example public static void main(String args)static int x = new int15;System.out.println(x5); A. 编译错误 B.编译正确,执行错误 C. 输出 0 D. 输出是 null10. 关于 Oracle 中存储过程与函数错误的是:A函数必须定义返回类型 B. 存储过程不能定义返回类型C函数可以使用 out 类型参数 D. 存储过程可以用 in out 类型参数11.
6、关于 Servlet 错误的是:A . 在 MVC 模式中 Servlet 一般用作控制器 B. Tomcat5.0 中 Servlet 必须通过 web.xml 影射访问C. Servlet 中可以直接使用内置对象 out 调用 out.println() 进行输出,而不声明D. Servlet 中可以跳转到另一个 Servlet。二、 简答题(40 分,答案写在其他白纸上)1. Vector 与 ArrayList 有什么区别,在 java.util 包中有哪两个类有类似区别?(3 分)ArrayList 类ArrayList 实现了可变大小的数组。它允许所有元素,包括 null。Arra
7、yList 没有同步。size,isEmpty,get ,set 方法运行时间为常数。但是 add 方法开销为分摊的常数,添加n 个元素需要 O(n)的时间。其他的方法运行时间为线性。每个 ArrayList 实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用 ensureCapacity 方法来增加 ArrayList 的容量以提高插入效率。和 LinkedList 一样,ArrayList 也是非同步的(unsynchronized)。Vector 类Vector 非常类似
8、 ArrayList,但是 Vector 是同步的。由 Vector 创建的 Iterator,虽然和 ArrayList 创建的 Iterator 是同一接口,但是,因为 Vector 是同步的,当一个 Iterator被创建而且正在被使用,另一个线程改变了 Vector 的状态(例如,添加或删除了一些元素),这时调用 Iterator 的方法时将抛出 ConcurrentModificationException,因此必须捕获该异常。Hashtable HashMap 类似2. response.sendRedirect()与 都能跳转,它们有什么区别? (3 分) 重定向 跳转3. 与
9、都能包含有什么区别? (3 分)伪指令会导致 Web 浏览器高速缓存所有页面。总是会检查所含文件中的变化。4. 存在学生表,课程表,分数表三个表:Create table student(studentid number(10) prinary key,name varchar2(30),depart varchar2(20);Create table lesson(lessonid number(10) primary key, lessonname varchar2(20);Create table score(studentid number(10) foreign key refere
10、nces student(studentid),Lessonid number(10) foreign key references student(studentid)Score number(3);写一个 SQL 语句求出考试科目名称为“java 语言”的科目中分数为前 10 名的学生 id,姓名,专业。select top 3 stu.studentid,stu.name,l.lessonname from score s inner join lesson l on s.Lessonid=l.lessonid inner join student stu on s.studentid=
11、stu.studentid where l.lessonname=java order by s.Score desc;5、Struts 框架应用了哪些设计模式?MVC 工厂 单例 是三个最明显的设计模式6、请阐述 Spring IOC 思想(4 分)一、什么是 IOCIoC 就是 Inversion of Control,控制反转。在 Java 开发中,IoC 意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转。下面我们以几个例子来说明什么是 IoC假设我们要设计一个 Girl 和一个 Boy 类,其中 Girl 有 kiss 方法,即 Girl 想要Kiss 一个
12、Boy。那么,我们的问题是,Girl 如何能够认识这个 Boy?在我们中国,常见的与 GG 的认识方式有以下几种 青梅竹马; 亲友介绍; 父母包办那么哪一种才是最好呢?青梅竹马:Girl 从小就知道自己的 Boy。public class Girl void kiss()Boy boy = new Boy();然而从开始就创建的 Boy 缺点就是无法在更换。并且要负责 Boy 的整个生命周期。如果我们的 Girl 想要换一个怎么办?(笔者严重不支持 Girl 经常更换 Boy)亲友介绍:由中间人负责提供 Boy 来见面public class Girl void kiss()Boy boy =
13、 BoyFactory.createBoy(); 亲友介绍,固然是好。如果不满意,尽管另外换一个好了。但是,亲友 BoyFactory经常是以 Singleton 的形式出现,不然就是,存在于 Globals,无处不在,无处不能。实在是太繁琐了一点,不够灵活。我为什么一定要这个亲友掺和进来呢?为什么一定要付给她介绍费呢?万一最好的朋友爱上了我的男朋友呢?父母包办:一切交给父母,自己不用费吹灰之力,只需要等着 Kiss 就好了。public class Girl void kiss(Boy boy)/ kiss boy boy.kiss();Well,这是对 Girl 最好的方法,只要想办法贿赂
14、了 Girl 的父母,并把 Boy 交给他。那么我们就可以轻松的和 Girl 来 Kiss 了。看来几千年传统的父母之命还真是有用哦。至少 Boy 和 Girl 不用自己瞎忙乎了。这就是 IOC,将对象的创建和获取提取到外部。由外部容器提供需要的组件。我们知道好莱坞原则:“Do not call us, we will call you.” 意思就是,You, girlie, do not call the boy. We will feed you a boy。我们还应该知道依赖倒转原则即 Dependence Inversion Princinple,DIP 。Eric Gamma 说,要
15、面向抽象编程。面向接口编程是面向对象的核心。组件应该分为两部分,即Service, 所提供功能的声明Implementation, Service 的实现好处是:多实现可以任意切换,防止 “everything depends on everything” 问题即具体依赖于具体。所以,我们的 Boy 应该是实现 Kissable 接口。这样一旦 Girl 不想 kiss 可恶的Boy 的话,还可以 kiss 可爱的 kitten 和慈祥的 grandmother。二、IOC 的 typeIoC 的 Type 指的是 Girl 得到 Boy 的几种不同方式。我们逐一来说明。IOC type 0:
16、不用 IOCpublic class Girl implements Servicable private Kissable kissable;public Girl() kissable = new Boy();public void kissYourKissable() kissable.kiss();Girl 自己建立自己的 Boy,很难更换,很难共享给别人,只能单独使用,并负责完全的生命周期。IOC type 1,先看代码:public class Girl implements Servicable Kissable kissable;public void service(ServiceManager mgr) kissable = (Kissable) mgr.lookup(“kissable”);public void kissYourKissable() kissable.kiss();这种情况出现于 Avalon Framework。一个组件实现了 Servicable 接口,就必须实现 service 方法,并传入一个 ServiceManager。其中会含有需要的其它组件。只需要在 service 方法中初始化需要的 Boy。另外,J2EE 中从 Context 取得对象也属于 type 1。它依赖于配置文件