金蝶软件2008招聘
客户化开发部招聘试题----JAVA开发类
说明:本套试题共分为五个部分,题型为选择题(单选和多选)和问答题,满分100分,考试时间为1.5小时.
第一部分 Java基础
一.选择题(包含单选和多选)(10题共20分)
1.下面哪种方式发现bug的成本最高?
(A).写完代码后,代码人员自查代码
(B).集成测试时.
(C).编写单元测试时发现
(D).小组范围内代码评审
2.下面isEmptyString函数写法正确的是?
(A).public boolean isEmptyString(String str){
return str.length = = 0 || str = = null;
}
(B). public boolean isEmptyString(String str){
return str = = null || str.length = = 0;
}
(C). public boolean isEmptyString(String str){
return str = = “” || str.length = = 0;
}
(D). public boolean isEmptyString(String str){
return str.equals(“”) || str.length = = 0;
}
3.下列哪个类不是Collection的子类:
(A).List
(B).Set
(C).Map
(D).Vector
4.基于下列声明:
Integer s = new Integer(9);
Integer t = new Integer(9);
Long u = new Long(9);
表达式结果为true的是?
(A).(s= = t) (B).(s.equals(u)) (C). (s.equals(u))
(D). (s.equals(u)) (E). (s.equals(new Integer(9)))
5.运行该类后,哪个是控制台的输出结果?
public class Test
{
static String a = “String”;
public static void main(String[] args){
String b = “Strin”+”g”;
System.out.println(“is equal:”+(a = = b));
}
}
(A).true (B).false
(C).is equal:true
(D). is equal:false
6.对于以下代码片段,有代号的代码执行顺序是?
class SuperTest
{
private String name = “Default Name”; //1
public SuperTest(){
System.out.println(“SuperTest Construct”);//2
}
}
class Test extends SuperTest
{
private static String const1 = “CONST”;//3
public Test(){
System.out.println(“Test Construct”); //4
}
public static void main(String[] args){
new Test(); //5
}
}
(A).3,5,1,2,4
(B).5,3,4,1,2
(C).3,5,2,4,1
(D).5,3,4,2,1
7.下列方法的返回结果是什么?
public int f(){
int i = 0;
try{
++i;
}
finally{
++i;
}
return ++i;
}
(A).3 (B).2 (C).1 (D).0
8.如果使用了for(;;);则
(A).发生编译错误
(B).根本不进入循环
(C).这是一个无限循环
(D).发生运行错误
9.下列哪一项是MouseMotionListener接口中的方法?
(A).public void mouseMoved(MouseEvent)
(B). public boolean mouseMoved(MouseEvent)
(C). public void mouseMoved(MouseMotionEvent)
(D). public boolean MouseMoved(MouseMotionEvent)
(E). public boolean mouseMoved(MouseMotionEvent)
10.对Panel container 和 Frame container 来说,它们的缺省布局管理器分别是:
(A). BorderLayout和GridLayout
(B). CardLayout和FlowLayout
(C). GridLayout和BorderLayout
(D). GridBagLayout和FlowLayout
(E). FlowLayout和BorderLayout
二.问答题(3题12分)
1.下列方法有哪些错误或隐患?(提示:至少2处)(3分)
public void updateData(){
String sql = “update t_a set fok = 1 where fid = ?”
Connection conn = getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(0,“001”);
ps.close();
conn.close();
}
2.进程与线程的区别和关系?(4分)
3.编程题(5分)
程序
The Producer generates an integer between 0 and 9 (inclusive),stores it in a “CubbyHole”
object, and prints the generated number.
class Prodecer extends Thread{
private CubbyHole cubbhole;
private int number;
public Prodecer(CubbyHole c, int number){
cubbhole = c;
this.number = number;
}
public void run(){
for(int i=0;i<10;i++){
cubbhole.put(i);
System.out.println(“Producer#”+this.number+”put:”+i);
try{
}catch(InterruptedException e){
}
}
}
The Consumer,being ravenous,consumers all intergers from the CubbyHole(the exact same object into which the Producer put the integers in the first place ) as quickly as the become available.
class Consumer extends Thread{
private CubbyHole cubbhole;
private int number;
public Consumer(CubbyHole c, int number){
cubbhole = c;
this.number = number;
}
public void run(){
int value = 0;
for(int i=0;i<10;i++){
value = cubbhole.get();
System.out.println(“Consumer #”+this.number+”got:”+value);
}
}
}
The Producer and Consumer in this example share data through a common CubbyHole object. And you will note that neither ahte Producer nor the Consumer make any effort whatsoever ato ensure that the Consumer is getting each value produced once and only once. The synchronization between these two threads actually occurs at a lower
level,within the get() and put() methods of the CubbyHole object.
The Main Program
class ProducerConsumerTestP{
public static void main(String[] args){
CubbyHole c = new CubbyHole();
Producer p1 = new Producer(c,1);
Consumer c1=new Consumer(c,1);
p1.start();
c1.start();
}
}
请补充CubbyHole的代码
class CubbyHole{
private int contents;
private boolean available = false;
public synchronized int get(){
while(available = = false){
try{
____(1)______;
}catch(InterruptedException e){
}
}
available=____(2)______;
__________;
return contents;
}
public synchronized void put(int value){
while(available = = true){
try{
____(3)______;
}catch(InterruptedException e){
}
}
Contents = value;
available=____(4)______;
____(5)______;
}
}
第二部分 J2EE应用开发
一.选择题(包含单选和多选)(6题共12分)
1.创建一个实体EJB需要包含下列那些部件?
(A).Home Interface.Remote Interface和一个实现EntityBean接口的类
(B).Home Interface.Remote Interface和一个继承EntityBean的类
(C).Remote Interface和一个实现EntityBean接口的类
(D).Remote Interface和一个继承EntityBean的类
2.调用下面那些方法可以使一个处于池态(Pool State)的Entity Bean转化为就绪状态(Ready State)
(A).当这个Bean被容器调激活(Activity)
(B).当这个Bean被容器调钝化(Passivate)
(C).用EJBHome的Create方法
(D).用EJBHome的find方法
3.请列出EJB分类
(A).Session Bean和Entity Bean
(B).Stateless Session Bean和 Stateful Session Bean
(C).BMP和CMP
(D). Session Bean,Entity Bean和MessageDriver Bean
4.MDB(Message Driver Bean)可以作为JMS中消息的
(A).发送者
(B).接收者
(C).发送者和接受者都可以
(D).发送者和接受者都不可以
5.关于Entity Bean 主键类说法正确的是:
(A).只有CMP才有主键
(B).主键类必须是java标准类库中的类
(C).主键类必须序列化(serialize)
(D).主键类需要重载hashcode()和equals()方法
6.请从下列产品中选出属于J2EE应用服务器范畴的产品:
(A).Weblogic
(B).Rational Rose
(C).Tivoli
(D).WebSpere
(E).Jboss
(F).Apusic
二.问答题(3题共8分)
1.简述MVC概念及实现技术(3分)
2.JMS支持那种消息处理类型,你能描述一下这两种方式吗?(2分)
3.是否可以从服务器调用EJB返回一个ResultSet或者RowSet,为什么?(3分)
第三部分 Java工具
一.选择题(包含单选和多选)(4题共8分)
1.下面列出的有哪几项是Java IDE?
(A).Jbuilder
(B).NetBeans
(C).Juint
(D).Jdom
(E).Eclipse
2.以下哪些是Java代码调优工具
(A).Devpartner for Java
(B).Jprobe Suite
(C).JProfiler
(D).Borland Optimizeit Suite
3.下面哪些项是CVS的特点
(A).服务器端的文件必须完全共享
(B).版本分享
(C).合并(merging)
(D).可以同时多个人check out 一个文件
4.下面哪些说法是正确的
(A).WebService技术基于SOAP协议,SOAP就是Simple Object Access Protocol的简介
(B).SOAP和REST都是与远程服务进行通信所使用的与平台无关的协议
(C).用SAX方式解析XML数据,跟DOM方式相比,读出的数据没有像DOM一样的有内建的逻辑关系,所以SAX无法支持多次查找同一数据
(D).用SAX方式解析XML数据,跟DOM方式相比,对大数据的XML的处理的速度优势非常的明显
二.问答题(2题共6分)
1.请简述一下eclipse和NetBeans集成开发环境本身的图形界面所采用的技术?
2.有如下单元测试类:
Import junit.frameword.*;
public class TestSimpleBean2 extends junit.frameword.TestCase{
public TestSimpleBean2(String name){
super(name);
}
protected void setUp() throws Exception{
super.setUp();
System.out.println(“setUp”);
}
protected void tearDown() throws Exception{
super. tearDown ();
System.out.println(“tearDown”);
}
public void testMethod(){
System.out.println(“testMethod”);
}
Public void foo(){
System.out.println(“foo”);
}
public static Test suite(){
TestSuite suite = new TestSuite();
suite.addTest(new TestSimpleBean2(“foo”));
return suites;
}
}
请回答当用TestRunnder 执行该单元测试类时,输出结果是什么?
第四部分 团建工程
一.选择题(包含单选和多选)(4题共8分)
1.以下那个属于详细设计阶段的职责
A.分析项目的成本跟收益
B.为每个模块确定采用的算法
C.编写代码
D确定模块的结构,划分模块功能
2.耦合关系从强到弱的顺序依次为
A.组合,泛化,依赖,聚合
B.泛化,组合,聚合,依赖
C.依赖,泛化,组合,聚合,
D组合,聚合,泛化,继承
3.下面几种建模工具中,那个工具常被使用来进行数据建模
A.Rose
B.Together
C.PowerDesigner
D.ERWin
4.原型化方法是用户喝设计者之间执行的一种交互构成,尤其适用于
A.需求不确定姓高的系统
B.需求确定的系统
C.管理系统
D.定时系统
二.问答题(2题共6分)
1.请简要说明封装,多态,继承的基本概念与特点(3分)
2.为什么软件需要维护?简述软件维护的过程(3分)
第五部分 数据库
一选择题(包含单选和多选)(7题共14分)
1.以下哪些属于约束
A.主键
B.外键
C.索引
D.唯一索引
E.NOT NULL
F.CHECK
2.以下那些说法是正确的
A.在出发其中作出的修改能够随着事物一起被回滚
B.简历所以能够增加INSERT语句的速度
C.每个表都可以创建多个聚合索引
D.JDBC有四种类型,其中Type2的性能最高,而且不用安装数据库客户端
3.有以下俩个表X和Y
X(F1,F2为字段名)
F1 | F2 |
A | A |
B | B |
Y(F1,F4为字段名)
F1 | F2 |
A | A |
B | B |
C | C |
要求写一条SQL语句返回结果如下,正确的是
F1 | F2 | F3 |
A | A | A |
A.SELECT X.F1,X.F2,Y.F4 FROM X INNER JOIN Y ON X.F1=Y.F1
B.SELECT X.F1,X.F2,Y.F4 FROM X LEFT OUTER JOIN Y ON X.F1 = Y.F1
C.SELECT X.F1,X.F2,Y.F4 FROM X ,Y WHERE X.F1=Y.F1
D.SELECT X.F1,X.F2,Y.F4 FROM X RIGHT OUTER JOIN Y ON X.F1=Y.F1
4.一张表的结构描述如下
CREATE TABLE titles
(
title_id NOT NULL,
title varchar(80) NOT NOLL,
type char(12) NOT NULL,
pub_id char(4),
price int,
advance int,
royalty int,
ytd_sales int,
notes varchar(200),
pubdate datetime NOT NULL
)
执行下面的语句,那些语句会报错
A.SELECT type ,AVG(price) FROM titles
WHERE advance>5000
GROUP BY type
Having pub_id = 1389
B.SELECT type ,AVG(price) FROM titles
WHERE advance>5000
GROUP BY type
Having price>0
C.SELECT type ,AVG(price) FROM titles
WHERE advance>5000
GROUP BY type
Having AVG(price)>10
D.SELECT type , pub_id,AVG(price) FROM titles
WHERE advance>5000
GROUP BY type
Having pub_id = 1389
5.看如下的更新Sql:
UPDATE t_User2 SET FName = (SELECT FName FROM T_User1 Where T_User2.FID = T_User1.FID) WHERE FName Is NULL
执行结果描述正确的是那个
A.这个Sql会执行
B.这个Sql将执行失败,因为更新的Sql不能有子查询
C.只有当T_User.FID和T_User2.FID都被定义为主键时这个Sql才会执行成功
D.如果子查询中基于T_User.FID字段没有返回重复的行时这个Sql将执行成功
6.关于union运算符的描述正确的是:
A.union能够联合多个结果集并组织成单个结果集
B.union联合的所有集合的列数必须相同
C.union联合的所有集合的列的顺序可以不同
D.union联合的所有集合对应列的数据类型必须兼容
7.关于琐locks,描述正确的是
A.当一个事物在表上放置了共享锁(shared lock),其他事物阅读表里的数据
B.当一个事物在表上放置了共享锁(shared lock),其他事物能更新表里的数据
C.当一个事物在表上放置了排他琐(exclusives lock),其他事物能更新表里的数据
D.当一个事务在表上放置了排他琐(exclusives lock),其他事物能阅读表里的数据
二.问答题(2题共6分)
1.对以下的表设计。你能指出那些不符合的地方(3分)
字段名 | 类型 | 字段说明 |
F1 | INT | 记录内码 |
F2 | VARCHAR(10) | 员工名称 |
F3 | DATETIME | 发资日期 |
F4 | FLOAT | 发资金额 |
F5 | INT | 是否已发放(1=已发放 0=未发放) |
2.对于第一题的表。假设使用一段时间后,表中的记录已经达到了上万条,导致系统查询变慢,请问你可以采取哪些措施喝步骤来诊断喝提高系统性能。(3分)