百川同达java程序员应聘摸底考试题 1.docx
- 文档编号:25841326
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:17
- 大小:35.25KB
百川同达java程序员应聘摸底考试题 1.docx
《百川同达java程序员应聘摸底考试题 1.docx》由会员分享,可在线阅读,更多相关《百川同达java程序员应聘摸底考试题 1.docx(17页珍藏版)》请在冰豆网上搜索。
百川同达java程序员应聘摸底考试题1
百川同达Java程序员应聘摸底考试题
一、选择题。
(2*11分)
1.classExSuper{
Stringname;
Stringnick_name;
publicExSuper(Strings,Stringt){
name=s;
nick_name=t;
}
publicStringtoString(){
returnname;
}
}
publicclassExampleextendsExSuper{
publicExample(Strings,Stringt){
super(s,t);
}
publicStringtoString(){
returnname+"a.k.a"+nick_name;
}
publicstaticvoidmain(Stringargs[]){
ExSupera=newExSuper("First","1st");
ExSuperb=newExample("Second","2nd");
System.out.println("ais"+a.toString());
System.out.println("bis"+b.toString());
}
}
A.编译时会出现异常。
B.运行结果为:
aisFirst
bissecond
C.运行结果为:
aisFirst
bisSeconga.k.a2nd
D.运行结果为:
aisFirsta.k.a1nd
bisSeconda.k.a2nd
2.abstractclassMineBase{
abstractvoidamethod();
staticinti;
}
publicclassMineextendsMineBase{
publicstaticvoidmain(Stringargv[]){
int[]ar=newint[5];
for(inti=0;i System.out.println(ar[i]); } } A.打印5个0。 B.编译出错,数组ar[]必须初始化。 C.编译出错,Mine应声明为abstract。 D.出现IndexOutOfBoundes的例外。 3.publicclassFoo{ publicstaticvoidmain(String[]args){ try{ return;}finally{ System.out.println("Finally"); } } } A.程序正常运行,但不输出任何结果。 B.程序正常运行,并输出“Finally”。 C.编译能通过,但运行时会出现一个例外。 D.因为没有catch语句块,所以不能通过编译 4.以下sql语句正确的是: A.selectstudentid,depart,count(*)fromstudentgroupbydepart; B.selectstudentid,count(*)fromstudent; C.selectdepart,max(avg(age))fromstudentgroupbydepart; D.selectstudentid,avg(score),max(score)fromscoregroupbystudentid 5. useBean>标签中scope的范围由小到大是 Apagesessionrequestapplication B.applicationpagerequestsession C.applicationsessionrequestpage D.pagerequestsessionapplication 6.要让用户共享一个JavaBean的对象则该对象的范围应改设置为: A.sessionB.pageC.applicationD.request 7.关于自定义标签的使用不正确的是: A.必须在JSP页面中使用<@taglib>B.必须经过web.xml影射 C.必须存在tld文件D.自定义标签的类必须是public的 8.关于外键约束不正确的是: A.外键约束与唯一约束不能同时存在与一个字段 B.子表外键列的值必须在主表参照列表值的范围内,或者为空 C.主表外键值被子表参照时,主表记录不允许被删除 D.外键参照的是主表的主键或者唯一键 9.下面的类,正确的描述是____________ publicclassExample{ publicstaticvoidmain(Stringargs[]){ staticintx[]=newint[15]; System.out.println(x[5]); } } A.编译错误B.编译正确,执行错误C.输出0D.输出是null 10.关于Oracle中存储过程与函数错误的是: A.函数必须定义返回类型B.存储过程不能定义返回类型 C.函数可以使用out类型参数D.存储过程可以用inout类型参数 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实现了可变大小的数组。 它允许所有元素,包括null。 ArrayList没有同步。 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,因此必须捕获该异常。 HashtableHashMap类似 2.response.sendRedirect()与 forward>都能跳转,它们有什么区别? (3分) 重定向跳转 3. include>与<%@include%>都能包含有什么区别? (3分) <%@include%>伪指令会导致Web浏览器高速缓存所有页面。 include>总是会检查所含文件中的变化。 4.存在学生表,课程表,分数表三个表: Createtablestudent(studentidnumber(10)prinarykey,namevarchar2(30),departvarchar2(20)); Createtablelesson(lessonidnumber(10)primarykey,lessonnamevarchar2(20); Createtablescore(studentidnumber(10)foreignkeyreferencesstudent(studentid), Lessonidnumber(10)foreignkeyreferencesstudent(studentid) Scorenumber(3)); 写一个SQL语句求出考试科目名称为“java语言”的科目中分数为前10名的学生id,姓名,专业。 selecttop3stu.studentid,stu.name,l.lessonnamefromscoresinnerjoinlessonlons.Lessonid=l.lessonidinnerjoinstudentstuons.studentid=stu.studentidwherel.lessonname='java'orderbys.Scoredesc; 5、Struts框架应用了哪些设计模式? MVC工厂单例是三个最明显的设计模式 6、请阐述SpringIOC思想(4分) 一、什么是IOC IoC就是InversionofControl,控制反转。 在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。 这称为控制反转。 下面我们以几个例子来说明什么是IoC 假设我们要设计一个Girl和一个Boy类,其中Girl有kiss方法,即Girl想要Kiss一个Boy。 那么,我们的问题是,Girl如何能够认识这个Boy? 在我们中国,常见的MM与GG的认识方式有以下几种 1 青梅竹马; 2 亲友介绍; 3 父母包办 那么哪一种才是最好呢? 青梅竹马: Girl从小就知道自己的Boy。 publicclassGirl{ voidkiss(){ Boyboy=newBoy(); } } 然而从开始就创建的Boy缺点就是无法在更换。 并且要负责Boy的整个生命周期。 如果我们的Girl想要换一个怎么办? (笔者严重不支持Girl经常更换Boy) 亲友介绍: 由中间人负责提供Boy来见面 publicclassGirl{ voidkiss(){ Boyboy=BoyFactory.createBoy(); } } 亲友介绍,固然是好。 如果不满意,尽管另外换一个好了。 但是,亲友BoyFactory经常是以Singleton的形式出现,不然就是,存在于Globals,无处不在,无处不能。 实在是太繁琐了一点,不够灵活。 我为什么一定要这个亲友掺和进来呢? 为什么一定要付给她介绍费呢? 万一最好的朋友爱上了我的男朋友呢? 父母包办: 一切交给父母,自己不用费吹灰之力,只需要等着Kiss就好了。 publicclassGirl{ voidkiss(Boyboy){ //kissboy boy.kiss(); } } Well,这是对Girl最好的方法,只要想办法贿赂了Girl的父母,并把Boy交给他。 那么我们就可以轻松的和Girl来Kiss了。 看来几千年传统的父母之命还真是有用哦。 至少Boy和Girl不用自己瞎忙乎了。 这就是IOC,将对象的创建和获取提取到外部。 由外部容器提供需要的组件。 我们知道好莱坞原则: “Donotcallus,wewillcallyou.”意思就是,You,girlie,donotcalltheboy.Wewillfeedyouaboy。 我们还应该知道依赖倒转原则即DependenceInversionPrincinple,DIP。 EricGamma说,要面向抽象编程。 面向接口编程是面向对象的核心。 组件应该分为两部分,即 Service,所提供功能的声明 Implementation,Service的实现 好处是: 多实现可以任意切换,防止“everythingdependsoneverything”问题.即具体依赖于具体。 所以,我们的Boy应该是实现Kissable接口。 这样一旦Girl不想kiss可恶的Boy的话,还可以kiss可爱的kitten和慈祥的grandmother。 二、IOC的type IoC的Type指的是Girl得到Boy的几种不同方式。 我们逐一来说明。 IOCtype0: 不用IOC publicclassGirlimplementsServicable{ privateKissablekissable; publicGirl(){ kissable=newBoy(); } publicvoidkissYourKissable(){ kissable.kiss(); } } Girl自己建立自己的Boy,很难更换,很难共享给别人,只能单独使用,并负责完全的生命周期。 IOCtype1,先看代码: publicclassGirlimplementsServicable{ Kissablekissable; publicvoidservice(ServiceManagermgr){ kissable=(Kissable)mgr.lookup(“kissable”); } publicvoidkissYourKissable(){ kissable.kiss(); } } 这种情况出现于AvalonFramework。 一个组件实现了Servicable接口,就必须实现service方法,并传入一个ServiceManager。 其中会含有需要的其它组件。 只需要在service方法中初始化需要的Boy。 另外,J2EE中从Context取得对象也属于type1。 它依赖于配置文件 IOCtype2: publicclassGirl{ privateKissablekissable; publicvoidsetKissable(Kissablekissable){ this.kissable=kissable; } publicvoidkissYourKissable(){ kissable.kiss(); } } Type2出现于SpringFramework,是通过JavaBean的set方法来将需要的Boy传递给Girl。 它必须依赖于配置文件。 IOCtype3 publicclassGirl{ privateKissablekissable; publicGirl(Kissablekissable){ this.kissable=kissable; } publicvoidkissYourKissable(){ kissable.kiss(); } } 这就是PicoContainer的组件。 通过构造函数传递Boy给Girl。 PicoContainercontainer=newDefaultPicoContainer(); container.registerComponentImplementation(Boy.class); container.registerComponentImplementation(Girl.class); Girlgirl=(Girl)container.getComponentInstance(Girl.class); girl.kissYourKissable(); 关于PicoContainer,作者后续文章会详细介绍。 作者语: Well,以上的这些理论部分有些已经有了新的定义了。 过些天我会再写一些文章具体说明。 比如,原来的三种type结构现在已经重新定义为依赖注射的许多层次。 IoC很年轻,还在发展。 伴随着IOC的发展,AOP,COP,SOP等等都在不断的发展。 作为程序员,随时关注着新的思想的发展是一件很轻松愉快的事情。 有没有人愿意和我一起探讨学习共同进步呀! 参考资料 1本文主要插图及文字来源于ThoughtWorks公司的JonTirsén与AslakHellesøy(PicoContainer的两位开发者),2003年在JavaPolis的演讲PPT。 有删改。 XX文库-让每个人平等地提升自我 7、阐述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中的多个字符,字符也可能重复,例如: Stringdata=“aabcdexmkduyruieiopxzkkkasdfjxjdsds”; 写一个程序,对于给定一个这样的字符串求出字符串中出现次数最多的那个字母以及出现次数(若次数最多的字母有多个,则全部求出)。 2.输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列。 3.有两个字符串str1和str2,写一个函数实现在str1中查找Str2的初始位置。 要求不区分大小写。 四、编程题 1、公司工资查询系统正待开发,现有状况是: 使用OurSQL数据库(假想),已建立了数据库 employee_system,其中的一个表salary_table的结构如下: SSNchar(10) EM_namechar(10) Ageint(4) Em_salaryfloat(8) 1 Wangli 32 3500.80 …… …… …… …… 数据库的驱动也已经装入,它的Jdbc驱动程序类为gov.edu.oo.oursql..Driver,创建连接的字符串为“jdbc: oursql: //”+serverName+”/”+databaseName,数据服务器OurSql驻留在本地。 要求用Java语言编写一个应用程序,能够实现如下功能: (1)使用JDBCAPI建立到ourSQL数据库系统的连接 (2)执行查询操作,打印出工资大于2000元的员工的名字和工资,并按工资多少排序。 (3)给年龄大于20岁的员工加薪,每人加200元。 五,智力题(10分) 1.有一位警长,抓了三个逃犯。 现警长决定给他们一次机会。 他拿出3顶黑帽子,两顶白帽子,然后往这三个逃犯头上每人戴了一顶帽子,每个逃犯只能看到另外两个逃犯帽子的颜色,不能看到自己帽子的颜色,而且不能进行通讯,不能进行讨论,只能靠自己的推理推出来,如果猜出来了,放一条生路,否则处死。 警长先问第一逃犯,结果第一逃犯猜错了,被杀掉了。 警长问第二个逃犯,结果还是猜错了,同样被杀掉了。 警长再问第三个逃犯,结果第三个逃犯猜对了。 说明一下,每个逃犯在回答问题时,其他逃犯是听不到的。 为什么第三个一定能猜中,请你给出解释。 穷举所有情况,再进行分析
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 百川同达java程序员应聘摸底考试题 java 程序员 应聘 摸底 考试题