java期中复习练习题.docx
《java期中复习练习题.docx》由会员分享,可在线阅读,更多相关《java期中复习练习题.docx(15页珍藏版)》请在冰豆网上搜索。
java期中复习练习题
《面向对象与UML》习题
一、选择
1.一个设计得好的OO系统具有(B)
A、低内聚,低耦合的特征
B、高内聚,低耦合的特征
C、高内聚,高耦合的特征
D、低内聚,高耦合的特征
2.面向对象技术中,对象是类的实例。
对象有三种成分:
(A)、属性和方法(或操作)。
3.参考下图,下面哪些叙述是正确的?
(BC)
A、A和B是Employee的子类。
B、如果一个方法的参数类型是Employee,则A的实例或B的实例可以作为参数传递给该方法。
C、A和B必须实现getSalary()方法。
D、系统中不能创建类型为Employee的实例。
图2
4.如下图所示,下面哪些叙述是正确的?
C
A、ArbitraryIcon是抽象类,ArbitraryIcon不从类Icon继承display方法。
B、类OkButton从RectangularIcon中继承了height和width属性。
C、类OkButton中的display方法是对类Button中的display方法的重载。
D、类OkButton中的display方法是对类Button中的display方法的覆盖。
5.UML中所谓的“泛化”可以用以下哪个术语来代替(B)
A.聚合B.继承C.抽象D.封装
6.在UML交互图中,()表示操作之间的信息交换。
(B)
A.控制流B.信息流C.初始活动D.活动
7.以下哪个不是面向对象的概念(D)
A.封装B.多态C.抽象D.聚类
8.UML的英文全称是(A)
A.UnifiedModelingLanguageB.UserManageLanguage
C.UnitModelingLanguageD.以上都不对
9.常用的UML工具有很多,下列哪个不是(D)
A.roseB.powerdesignC.visioD.vss
10.下列对操作描述错误的是(D)
A.接口可以定义操作B.类可以定义操作
C.操作可以作为顺序图中的消息D.对象可以定义操作
11.在UML模型中,类用(B)表示
A.直角矩形B.圆角矩形C.椭圆D.牛眼睛
12.设计视图的静态方面采用(B)表现
A.交互图B.类图和对象图C.状态图D.活动图
13.用例视图的静态方面由(A)来表现
A.用例图B.交互图C.状态图D.活动图
二、
共4页
根据下图完成填空。
3.1Polygon类与Point类之间是______聚集关系,表示了一个Polygon对象含有___3___个Point对象,而且这些Point对象是___部分事物对象______。
3.2由图中可知,当一个Polygon对象被撤销,它所含有的Point对象也将自动撤销。
这句话对吗?
____dui___。
三、综合题
(一)阅读下列说明及图,回答问题
【说明】
某电话公司决定开发一个管理所有客户信息的交互式网络系统。
系统功能如下:
浏览客户信息:
任何使用Internet的网络用户都可以浏览电话公司所有的客户信息(包括姓名、住址、电话号码等)。
登陆:
电话公司授予每个客户一个帐号。
拥有授权帐号的客户,可以使用系统提供的页面设置个人密码,并使用该帐号和密码向系统注册。
修改个人信息:
客户向系统注册后,可以发送电子邮件或者使用系统提供的页面,对个人信息进行修改。
删除客户信息:
只有公司的管理人员才能删除不再接受公司服务的客户的信息。
系统采用面对对象方法进行开发,在开发过程中认定出的类见下表:
编号
类名
描述
1
InternetClient
网络用户
2
CustomerList
客户信息表,记录公司所有客户的信息
3
Customer
客户信息,记录单个客户的信息
4
CompanyCustomer
公司客户
5
InternalClient
公司的管理人员
【问题1】
在需求分析阶段,采用UML的用例图(usecasediagram)描述系统功能需求,如图4所示,请指出图中的A、B、C、D分别是哪个用例?
A浏览客户信息B设置个人密码C注册D删除不再接受公司服务的客户的信息。
【问题2】
在UML中,重复度(Multiplicity)定义了某个类的一个实例可以与另一个类的多少个实例相关联。
通常把它写成一个表示取值范围的表达式或者一个具体的值。
例如图7-21中的类InternetClient和CustomerList,InternetClient端的“0..*”表示一个CustomerList的实例可以与0个或者多个InternetClient的实例相关联;CustomerList端的“1”表示一个InternetClient的实例只能与一个CustomerList的实例相关。
请指出图中
(1)到(4)出的重复度分别为多少?
(1)1
(2)1(3)(4)
(二)为一家单位设计一个人事管理系统。
该单位有多个部门,每个部门有一个部门经理,一个人员仅能为一个部门工作。
人员可在部门之间调换。
合理运用常识和逻辑推理,用一个类图表示人员(Person)、部门(Department),以及相互间关联。
person
bumen
(三)某个网上银行的用户登录过程如下:
用户先填写用户名和口令,要求登录。
如果用户名和密码正确,则要求输入一个验证码。
此时该用户的手机上将接受一个短信,包含一个验证码,用户再将此码填入下一个页面,再提交服务器。
如果验证码正确,则能正常登录。
验证码一次有效。
用一个时序图描述这个过程。
提示:
注意区分参与交互的所有实例:
用户、Web客户端、Web服务器、用户手机。
(四)绘制时序图:
(五).某学校需要开发一个选课系统,该系统的要求如下:
1.学生可以在某个时间段内选课,或者添加、删除、修改选课记录,超出此时间段则不能选课。
在选课时间段内,如果学生最终确认了选课记录,则不能在修改选课信息。
2.每门课程人数不能少于3人,少于3人则取消该课程;选课人数多于50人则满,其他学生不能再选择该课。
3.老师可以查看他所需要讲授的课程和选课情况。
4.排课员负责给老师排课,排课不能冲突。
5.每门课程信息包括:
课程名,课时,主讲老师,学分,教室,时间等等。
6.当学生选课结束并最终确认后,财务系统要根据学生选课情况,计算出学费,学生需要缴纳学费。
请你根据以上描述:
1.绘制系统的用例图。
2.绘制系统的类图。
类图应该包括完整的属性和方法,以及类之间的关系。
3.绘制学生选课这个用例的序列图。
选择题答案:
1-5:
B\A\BC\C\B,6-10:
B\D\A\D\D11-13:
B\B\A
Java工程师笔试题
一、问答题(共两题每题5分)
1、在软件开发的形式中,有单独开发和团队开发,请您分析两种开发形式的利弊?
2、除了工资还有什么福利对你具有吸引力?
二、案例分析(共四题每题5分)
1、案例一:
项目经理陈经理所在的项目组接到总监分配的一项紧急任务,要求在2天内完成A项目,陈经理马上召集其下属工程师小张和小黄进行工作分配并分析项目要点和各个要点的主要做法。
时间已经过去了1天半,工程师小张发现,根据陈经理对项目要点的主要做法行不通,但时间已经所剩不多了。
问题一:
如果你是小张,你会怎么做?
为什么?
问题二:
由于项目做法的问题导致项目的进度无法按总监的要求在2天内完成,总监怪罪下来,你认为这是谁的责任,为什么?
2、案例二:
工程师小李和工程师小陈分别在同一个项目组负责软件开发工作,他俩是同时进入公司的,而且被分配在邻座,因此关系非常好。
工程师小李最近发现小陈经常在上班时间做一些与本公司业务无关的工作,并且在一次偶然的机会让小李发现,小陈的薪资比自己的薪资要高一倍多。
问题一:
如果你是小李,你会怎么做,为什么?
问题二:
如果你是小陈,你发现做的事情被小李发现了,你会怎么做,为什么?
技术题
一、基础题,共十题每题2分
1、GC是什么?
为什么要有GC?
2、shorts1=1;s1=s1+1;有什么错?
shorts1=1;s1+=1;有什么错?
Bytea=1,b=1,byec=a+b有什么错?
Shorta=1,b=1,Shortc=a+b有什么错(答对一个给分)
3、Java有没有goto?
4、数组有没有length()这个方法?
String有没有length()这个方法?
5、Overload和Override的区别。
Overloaded的方法是否可以改变返回值的类型?
(答对第一句话即可得满分,或者意思差不多的即可)
6、List,Set,Map是否继承自Collection接口?
7、构造器Constructor是否可被override?
8、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
9、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
(答对第一句即可得满分)
10、EJB中LocalHome的作用是什么?
二、程序测试题(共四小题每题5分)
1、谈谈你对以下程序的看法。
classMyStringextendsString{
publicstaticinti=0;
privatechar[]chars={‘a’,’b’,’c’};
publicMyString(){}
static{
System.out.println(“i=”+(i++));
}
publicStringgetString(){
Strings=“”;
for(charc:
chars){
s+=c;
}
Returns;
}
}
2、请写出以下程序的输出。
classB{
privateintradius=10;
publicvoiddraw(){
System.out.println("B.draw(),radius="+radius);
}
publicB(){
System.out.println("Bconstructor");
draw();
}
}
publicclassAextendsB{
privateintradius=1;
publicvoiddraw(){
System.out.println("A.draw(),radius="+radius);
}
publicA(intradius){
this.radius=radius;
System.out.println("Aconstructor");
}
publicstaticvoidmain(String[]args){
Aa=newA(5);
}
}
3、写出下列程序运行结果。
publicclassTest{
staticTestst=newTest();
staticintx;
staticinty=0;
publicTest(){
x++;
y++;
}
publicTest(intx,inty){
this.x=x;
this.y=y;
}
publicstaticTestgetInstance(){returnst;}
static{
inti=0;
System.out.println("i="+i);
}
voidtest(){
Innerinner2=newInner2();
inner2.display();
}
publicstaticvoidmain(String[]args){
Testtest1=Test.getInstance();
test1.test();
System.out.println("test1:
x="+test1.x+";y="+test1.y);
Testtest2=newTest();
test2.test();
System.out.println("test2:
x="+test2.x+";y="+test2.y);
Testtest3=newTest(0,0);
test3.test();
System.out.println("test3:
x="+test3.x+";y="+test3.y);
}
publicclassInner{
inta=1;
voiddisplay(){System.out.println("display:
a="+a);}
}
publicclassInner2extendsInner{
inta=2;
voiddisplay(){System.out.println("display:
a="+a);}
}
}
4、谈谈你对以下JavaScript函数的看法,能否提高效率?
如果能请给出需要修改的地方,并讲出原因。
functiongetFormAsString(formName){
returnString="";
formElements=document.forms[formName].elements;
for(vari=formElements.length-1;i>=0;--i){
returnString=returnString+"&"+escape(formElements[i].name)+"="+escape(formElements[i].value);
}
returnreturnString;
}
三、编程题(共三题,每题10分)
1、写一个Singleton的类出来。
2、给你一组字符串如:
iu7i8hy4jnb2,让你编程输出里面的数字:
7842
3、给你一组字符如{1,3,4,7,2,1,1,5,2},让你输出里面出现次数最多且数值最大的一个,出现几次
4、编成获取服务器本地ip地址
四、综合附加题(共5每题10分)
1、用Ajax写出客户端与服务器的简单异步调用(假设xmlHttp已被创建可以直接调用)
2、在Oracle数据库中有一表Table1,表中有一字段a,如何删除表中a字段的重复数据,请使用光标与分组的办法?
3、现在Oracle10g中有一表
FLWINR
TCHNUM
TCHINR
TCHNAM
CALMOD
SUBFLWINR
NXTTCHNUM
760
1
C02
分配专业室
Flw1
2
(表名为Table1,其中关键字为FLWINR+TCHNUM+NXTTCHNUM)第一行是表的所有属性,第二行是其中的一条记录,当然假设该表有很多数据。
要求把条件”FLWINR='760'”的查询结果复制到新表中,该新表结构同Table1,命名为Table1_COPY。
请用一句sql语句写出来。
4、假设web服务器是Weblogic有以下的ejb代码及配置文件:
;;;
importjavax.ejb.*;
publicinterfaceHelloextendsEJBObject,Remote{
//thismethodjustget"HelloEJB"fromHelloEJB.
publicStringgetHello()throwsRemoteException;
}
;
importjavax.ejb.*;;;
importjava.util.*;
/**
*Thisinterfaceisextremelysimpleitdeclaresonly
*onecreatemethod.
*/
publicinterfaceHelloHomeextendsEJBHome{
publicHellocreate()throwsCreateException,RemoteException;
}
packagecom.leo;
importjavax.ejb.*;
publicclassHelloEJBimplementsSessionBean{
publicvoidejbCreate(){}
publicvoidejbRemove(){}
publicvoidejbActivate(){}
publicvoidejbPassivate(){}
publicvoidsetSessionContext(SessionContextctx){}
publicStringgetHello(){
returnnewString("Hello,EJB");
}
}
<?
xmlversion="1.0"?
>
<!
DOCTYPEejb-jarPUBLIC"-//SunMicrosystemsInc.//DTDEnterpriseJavaBeans1.2//EN""">
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>Hello</ejb-name>
<home></home>
<remote></remote>
<ejb-class></ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEweblogic-ejb-jarPUBLIC"-//BEASystems,Inc.//DTDWebLogic8.1.0EJB//EN""">
[CDATA[GeneratedbyXDoclet]]>
Hello
Hello
HelloLocal
要求写一个JavaClient中调用HelloBean的类。