文档详情

百川同达Java程序员应聘摸底考试题

xt****7
实名认证
店铺
DOC
71KB
约14页
文档ID:90751365
百川同达Java程序员应聘摸底考试题_第1页
1/14

百川同达 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 ExSuper{ public Example(String s,String t){ super(s,t); } public String toString(){ return name + "a.k.a" + 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 First b is secondC. 运行结果为: a is First b is Secong a.k.a 2ndD. 运行结果为: a is First a.k.a 1nd b is Second a.k.a 2nd2. abstract class MineBase{ abstract void amethod(); static int i;}public class Mine extends MineBase{ public static void main(String argv[]){ int[] ar = new int[5]; for (int i = 0; i < ar.length; i++) System.out.println(ar[i]); }}A. 打印 5 个0 B. 编译出错,数组 ar[] 必须初始化C.编译出错, Mine 应声明为abstract。

D. 出现 IndexOutOfBoundes 的例外3. public class Foo { public static void main(String[] args){ try { return;} finally { System.out.println("Finally"); } }}A. 程序正常运行,但不输出任何结果 B. 程序正常运行,并输出 “Finally”C. 编译能通过,但运行时会出现一个例外D. 因为没有 catch 语句块,所以不能通过编译4. 以下 sql 语句正确的是: A.select studentid,depart,count(*) from student group by depart;B.select studentid, count(*) from student;C.select depart,max(avg(age))from student group by depart;D.select studentid,avg(score),max(score)from score group by studentid5. 标签中 scope 的范围由小到大是A page session request application B. application page request sessionC. application session request page D. page request session application6. 要让用户共享一个 JavaBean 的对象则该对象的范围应改设置为:A. session B. page C. application D. request7. 关于自定义标签的使用不正确的是: A. 必须在 JSP 页面中使用<@ taglib> B. 必须经过 web.xml 影射 C. 必须存在 tld 文件 D. 自定义标签的类必须是 public 的8. 关于外键约束不正确的是:A.外键约束与唯一约束不能同时存在与一个字段B.子表外键列的值必须在主表参照列表值的范围内,或者为空C.主表外键值被子表参照时,主表记录不允许被删除D.外键参照的是主表的主键或者唯一键9. 下面的类,正确的描述是____________ public class Example { public static void main(String args[]){ static int x[] = new int[15]; System.out.println(x[5]); }} A. 编译错误 B.编译正确,执行错误 C. 输出 0 D. 输出是 null10. 关于 Oracle 中存储过程与函数错误的是: A.函数必须定义返回类型 B. 存储过程不能定义返回类型 C.函数可以使用 out 类型参数 D. 存储过程可以用 in out 类型参数11. 关于 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实现了可变大小的数组它允许所有元素,包括nullArrayList没有同步size,isEmpty,get,set方法运行时间为常数但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间其他的方法运行时间为线性  每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率  和LinkedList一样,ArrayList也是非同步的(unsynchronized)Vector类  Vector非常类似ArrayList,但是Vector是同步的由Vector创建的Iterator,虽然和ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。

Hashtable HashMap 类似2. response.sendRedirect()与都能跳转,它们有什么区别? (3分) 重定向 跳转3. 与<%@ include %> 都能包含有什么区别? (3分)<%@ include %> 伪指令会导致 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 references student(studentid), Lessonid number(10) foreign key references student(studentid) Score number(3));写一个SQL语句求出考试科目名称为“java语言”的科目中分数为前10名的学生id,姓名,专业。

select top 3 from score s inner join lesson l on s.Lessonid=l.lessonid inner join student stu on s.studentid=stu.studentid where l.lessonname='java' order by desc;5、Struts框架应用了哪些设计模式?MVC 工厂 单例 是三个最明显的设计模式6、请阐述Spring IOC思想(4分)一、什么是IOCIoC就是Inversion of Control,控制反转在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制这称为控制反转 下面我们以几个例子来说明什么是IoC 假设我们要设计一个Girl和一个Boy类,其中Girl有kiss方法,即Girl想要Kiss一个Boy那么,我们的问题是,Girl如何能够认识这个Boy?    在我们中国,常见的MM与GG的认识方式有以下几种    1 青梅竹马;  2 亲友介绍;  3 父母包办     那么哪一种才是最好呢?    青梅竹马:Girl从小就知道自己的Boy。

         public class Girl {      void kiss(){       Boy boy = new Boy();    }}      然而从开始就创建的Boy缺点就是无法在更换并且要负责Boy的整个生命周期如果我们的Girl想要换一个怎么办?(笔者严重不支持Girl经常更换Boy)     亲友介绍:由中间人负责提供Boy来见面        public class Girl {    void kiss(){       Boy boy = BoyFactory.createBoy();          }}     亲友介绍,固然是好如果不满意,尽管另外换一个好了但是,亲友BoyFactory经常是以Singleton的形式出现,不然就是,存在于Globals,无处不在,无处不能实在是太繁琐了一点,不够灵活我为什么一定要这个亲友掺和进来呢?为什么一定要付给她介绍费呢?万一最好的朋友爱上了我的男朋友呢?     父母包办:一切交给父母,自己不用费吹灰之力,只需要等着Kiss就好了        public class Girl {    void kiss(Boy boy){       // kiss boy        boy.kiss();    }}    Well,这是对Girl最好的方法,只要想办法贿赂了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说,要面向抽象编程面向接口编程是面向对象的核心组件应该分为两部分,即Service, 所提供功能的声明Implementation, Service的实现好处是:多实现可以任意切换,防止 “everything depends on everything” 问题.即具体依赖于具体所以,我们的Boy应该是实现Kissable接口这样一旦Girl不想kiss可恶的Boy的话,还可以kiss可爱的kitten和慈祥的grandmother 二、IOC的type    IoC的Type指的是Girl得到Boy的几种不同方式。

我们逐一来说明     IOC type 0:不用IOC  public 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     它依赖于配置文件                                        IOC type 2:    public class Girl {    private Kissable kissable;    public void setKissable(Kissable kissable) {        this.kissable = kissable;    }    public void kissYourKissable() {        kissable.kiss();    }}     Type 2出现于Spring Framework,是通过JavaBean的set方法来将需要的Boy传递给Girl。

它必须依赖于配置文件                                                 IOC type 3  public class Girl {    private Kissable kissable;    public Girl(Kissable kissable) {        this.kissable = kissable;    }    public void kissYourKissable() {        kissable.kiss();    }}    这就是PicoContainer的组件 通过构造函数传递Boy给Girl  PicoContainer container = new DefaultPicoContainer();container.registerComponentImplementation(Boy.class);container.registerComponentImplementation(Girl.class);Girl girl = (Girl) container.getComponentInstance(Girl.class);girl.kissYourKissable();     关于PicoContainer,作者后续文章会详细介绍。

 作者语:       Well,以上的这些理论部分有些已经有了新的定义了过些天我会再写一些文章具体说明比如,原来的三种type结构现在已经重新定义为依赖注射的许多层次IoC很年轻,还在发展伴随着IOC的发展,AOP,COP,SOP等等都在不断的发展作为程序员,随时关注着新的思想的发展是一件很轻松愉快的事情有没有人愿意和我一起探讨学习共同进步呀!参考资料    1 本文主要插图及文字来源于ThoughtWorks公司的Jon Tirsén 与 Aslak Hellesøy(PicoContainer的两位开发者),2003年在Java Polis的演讲PPT7、阐述Hibernate的延迟加载机制?Hibernate和延迟加载Hibernate对象关系映射提供了两种对象初始化模式:延迟加载和非延迟加载非延迟加载在加载时获取对象本身以及它关联的所有对象这可能导致在获取一个实例时,执行成百上千的select语句当使用双向关联时,这个问题被放大,常常出现初始化请求时,整个数据库都被载入显然检查每个对象的关系,并手工删除他们会费点事,但最终我们可能会因此丢失使用ORM工具的优势一个明细的解决方式是使用hibernate提供的延迟载入机制。

这种初始化策略在类成员被访问时只载入它的一个对象的一对多和多对多关系对开发人员来说,这种方式是透明的,并且只有最少数量的请求发生,这样就获得了最佳的性能这种技术的一个缺点是延迟载入要求当对象还在使用中时,Hibernate的Session必须保持打开状态当尝试通过DAO模式抽象持久层时,这会引起一个重要问题为了充分地抽象持久层,所有的数据库逻辑,包括打开、关闭Session都不能在应用层出现最常见的是,这些逻辑隐藏在DAO的实现类中快速和差一些的方案是:避免采用DAO模式,在应用层中包含数据连接的逻辑这在小应用中是可行的,但在大系统中,这会是一个设计缺陷,它损害了应用的扩展性8、设置本用户每小时第15,30,59分钟都将目录~aint/info/log及目录下所有文件大小记录到日志文件/tmp/checkdir.log中9、查看所有oracle用户的进程有哪些?10、列出目录/usr/lib下所有文件,包括子目录及子目录下文件11、查找目录/var/adm 下是否有文件messages, 如果有的话同时列出其文件大小,日期等属性三、编程题1. 一个字符串中可能包含a-z中的多个字符,字符也可能重复,例如: String data = “ aabcdexmkduyruieiopxzkkkasdfjxjdsds”;写一个程序,对于给定一个这样的字符串 求出字符串中出现次数最多的那个字母以及出现次数(若次数最多的字母有多个,则全部求出)。

2. 输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列3. 有两个字符串 str1和str2,写一个函数实现在str1中查找Str2的初始位置要求不区分大小写四、编程题1、公司工资查询系统正待开发,现有状况是:使用OurSQL 数据库(假想),已建立了数据库employee_system,其中的一个表salary_table的结构如下:SSN char(10)EM_name char(10)Age int(4)Em_salary float(8)1Wangli32……………………数据库的驱动也已经装入,它的Jdbc驱动程序类为gov.edu.oo.oursql..Driver,创建连接的字符串为“jdbc:oursql://”+serverName+”/”+databaseName,数据服务器OurSql驻留在本地要求用Java语言编写一个应用程序,能够实现如下功能:(1) 使用JDBCAPI建立到ourSQL数据库系统的连接(2) 执行查询操作,打印出工资大于2000元的员工的名字和工资,并按工资多少排序3) 给年龄大于20岁的员工加薪,每人加200元五,智力题(10分)1. 有一位警长,抓了三个逃犯。

现警长决定给他们一次机会他拿出3顶黑帽子,两顶白帽子,然后往这三个逃犯头上每人戴了一顶帽子,每个逃犯只能看到另外两个逃犯帽子的颜色,不能看到自己帽子的颜色,而且不能进行通讯,不能进行讨论,只能靠自己的推理推出来,如果猜出来了,放一条生路,否则处死警长先问第一逃犯,结果第一逃犯猜错了,被杀掉了警长问第二个逃犯,结果还是猜错了,同样被杀掉了警长再问第三个逃犯,结果第三个逃犯猜对了说明一下,每个逃犯在回答问题时,其他逃犯是听不到的为什么第三个一定能猜中,请你给出解释穷举所有情况,再进行分析。

下载提示
相关文档
正为您匹配相似的精品文档