姓名 _______
1下列哪些方法互为重载方法:2分
public class Override {
①public void method(String str){};
②public void method1(String str){};
③public int method(int i){return 0;};
④public int method(double d){return 0;}
⑤public void method(String str, int i) {};
⑥public int method(){return 0;};
}
2下列哪些方法是覆盖方法:2分
public class A {
①protected void m1() {};
②private void m2() {};
③private void m3() {};
}
class B extends A {
④public void m1() {};
⑤private void m2() {};
⑥public void m3() {};
}
3下列说法正确的打√,错误的打×。每题0.5分,计20分。
-
java源程序编译为字节码,存放在.class文件中,JVM装载类解释执行。( )
-
面向对象的三个特点是:封装、继承和多态。( )
-
在windows下开发的java程序,如果要在linux/unix下执行,必须重新编译一遍。 ()
-
Java是一种强类型语言,即每个变量和表达式都有一个确定的类型;在给变量赋值时必须经过类型兼容性检查。类型转换错误是一种运行时错误。()
-
构造函数是在对象被创建后,new运算符完成之前被调用的。()
-
Java中一个超类可以有多个子类,一个子类可以从多个超类继承。()
-
接口可以继承。一个接口可以被多个不同的类来实现。一个类可以实现多个接口。
-
Java定义了两种类型的流:字节流和字符流。缓冲字节流和字符流可提高I/O操作性能。
-
在委托事件模型中,源生成事件并把它发送给一个或多个监听器,每个监听器必须向事件源注册。
-
Java从语言级提供了对线程同步的支持。Java中每个对象都有一个用来同步的监控器。
-
String 对象的字符串不能被修改,而StringBuffer对象的字符串则可以被修改。
-
-39右移3位的值为-5。
-
当程序产生异常时,如果不在程序中try/catch,那么程序可能会中止运行而退出。
-
jsp运行在web容器,javaScript运行在浏览器,servlet运行在web容器,ejb运行在ejb容器。
-
jsp经过编译后生成servlet,编译是由容器完成的。
-
servlet的实例变量由所有session共享。servlet context里的变量由所有servlet共享。
-
servlet是应用服务器的扩展,它由应用服务器动态加载。
-
servlet在多线程模式下运行时,之所以不在doGet(),doPost()方法前加synchronized,是为了提高性能,但前提是不要在servlet中存放写的实例变量,而是把变量放到方法中。
-
hibernate和entity bean实现ORM功能。类之间一对一或一对多的关联关系映射成表之间的外键关系;类之间的多对多的关联关系映射成关联表和被关联表之间的外键关系。
-
EJB包括会话Bean、实体Bean和消息驱动Bean。会话Bean包括有状态和无状态,实体Bean包括CMP和BMP。实体Bean和有状态会话Bean可能被池化和钝化。
-
EJB一般包括远程接口、Home接口、Bean类和其它工具类,以及部署描述文件组成。实体Bean还可能包括主键类。
-
jdbc的事务必须在一个数据库连接上完成。必须去掉自动提交功能。当成功后调用commit,当失败后调用rollback。
-
struts是一个mvc的架构,实现了界面和业务逻辑的分离,其控制中心是一个servlet。
-
j2ee应用程序可以被打包成*.ear文件,这个文件中可以包含多个web 模块和ejb模块。
-
使用weblogic时,必须配置一个server和domain。这样的server和domain可以多个。
-
实体Bean经常被会话Bean包装而不向外暴露,这种设计方式叫做外观模式。
-
客户端通过JNDI名称来引用数据源、EJB。JNDI 是Java Naming and Directory Interface的缩写。
-
在CMP实现中,当定义主键类时,必须实现hashCode和equals方法。
-
在CMR实现中,必须在ejb-jar.xml文件中定义实体Bean之间的关系;在weblogic-cmp-rdbms.xml文件中定义表之间关系。
-
<jsp:forward page=””/>不能转到应用程序以外的页面,而sendReDirect() 则可以。
-
在jsp中,尽量不要嵌套java代码,可以使用JSTL,自定义标签库,javaBean和el来代替。
-
struts的actionForm可以对应多个JSP,同时也可以对应多个action。
-
struts的model层可以通过javaBean,ejb和hibernate去访问数据库。
-
hibernate可以把一个简单的java类和数据库表建立映射,而ejb则不行。
-
hibernate的Session对象放在程序中的线程的局部变量中。Session中封装了对数据库的操作。
-
Http和TCP协议一样是有状态的协议。HTML常用来显示数据,而XML则通常用来存储数据。
-
数据库连接池允许有最大连接数和最小连接数,为提高性能,不要把两者设为相等。
-
数据库中的两张表之间的关系为多对多时,必须生成一张中间表。相应地,java中两个类之间的关联关系为多对多时也必须生成一个关联类。
-
会话跟踪中的URL重写表示在原来的URL后加上Cookie的名称/值对。
-
会话跟踪中的session方法与cookie无关。
4 在下划线位置填上合适的代码,并且写出程序输出的结果。2 x 5= 10分
public class ObjectArray {
public static void main(String args[]) {
Person personList[] = new Person[4];
for (int i = 0; i < personList.length; i++) {
__①__
personList[i].setId(“id ” + i);
personList[i].setName(“name ” + i);
__②_____
for (int j=0; j < 2;j++){
Person kid = new Person();
kid.setId(“kid id” + j);
kid.setName(“kid name” + j);
__③_
personList[i].getKids().add(kid);
}
__④___
personList[i].getMother().setId(“mother id”);
personList[i].getMother().setName(“mother name”);
__⑤___
personList[i].getMother().getKids().add(__⑥__);
}
}
}
class Person {
private String id;
private String name;
HashSet kids;//子女
Person mother;//母亲
// setter 和 getter 方法省略。
}
5 写出程序执行的结果 4分
public class Static {
static int a = 5;
static String s = “”;
public Static() {
calculate();
}
public static void main(String args[]){
new Static();
new Static();
new Static().show();
}
public void calculate() {
a = a + 1;
s = s + 1;
}
public void show() {
System.out.println(“a = ” + a); //输出结果:___①______
System.out.println(“s = ” + s); //输出结果:___②______
}
static {
a = a + 10;
s = s + 1;
}
}
6 下面的代码中,A和B位于同一包中。而C则在另一个包中。6分
package j2setest.access;
import j2setest.access.access1.*;
public class A extends B{
public byte i;
public A() {
}
public static void main(String args[]) {
A a = new A(); // 问题1:a包含哪些实例变量: ________________
// a能访问哪些实例变量: _______________________
C c = new C(); // 问题2:c包含哪些实例变量:________________
// c能访问哪些实例变量: ________________________
B b = new A();
A a1 = (A)b; // 问题3:此句强制转化是否正确?___________
C c2 = (C)a; // 问题4:此句强制转化是否正确?____________
}
}
class B {
public int i;
private String s;
protected double d;
B b;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
package j2setest.access.access1;
import j2setest.access.*;
public class C extends A{
public C() {
}
}
7 写出下面两段程序的运行结果。2分
public class BreakDemo {
public static void main(String args[]) {
for (int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if (i == j) {
continue;
}
System.out.println(“i =” + i + ” j = ” + j);
}
}
}
}
public class BreakDemo1 {
public static void main(String args[]) {
for (int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if (i == j) {
break;
}
System.out.println(“i =” + i + ” j = ” + j);
}
}
}
}
8 下面是一个自行设计的线程安全的链表,链表长度不超过MAX_LENGTH。请填空。10分
public class MyList {
private Element head=null;
private Element tail = null;
private int length=0;
private static final int MAX_LENGTH = 1024;
class Element {
Object data;
_____①_________;
Element(Object data) {
this.data = data;
}
}
synchronized public void addElement(Object d)
{
Element e = new Element(d);
if (length == 0) {
tail = e;
head = e;
}
else {
_____②_______ {
wait();
}
e.next = null;
tail.next = e;
tail = e;
}
length++;
___③___________
}
synchronized public Object removeElement() {
Object obj;
while (length == 0 ) {
____④______;
}
else if (length == 1) {
obj = head.data;
head = tail = null;
}
else {
obj = head.data;
head = head.next;
}
length–;
notifyAll();
return obj;
}
synchronized public Object get(int index) {
Element ptr = head;
int sequence = 0;
_______⑤______ {
wait();
}
while (ptr != null) {
if (sequence == index) {
notifyAll();
return ptr.data;
}
ptr = ptr.next;
sequence++;
}
notfiyAll();
return null;
}
}
9 将任意一个jsp,如login.jsp,query.jsp提交到MyServlet,MyServlet处理后分别转到loginAck.jsp和queryAck.jsp。 下面是代码片段,请填空。(每空1分,计10分)
web.xml:
<servlet>
<servlet-name>_①_______</servlet-name>
<servlet-class>net.umltech.train.java.test.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>__②_____</servlet-name>
<url-pattern>__③_____</url-pattern>
</servlet-mapping>
login.jsp:
<form action=”_④______”>
</form>
query.jsp:
<form action=”__⑤____”>
</form>
MyServlet.java:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String url = request.getServletPath();
if (url.equals(“/login.do”)) {
__⑥____
___⑦___
}
else if (url.equals(“_⑧___”)) {
________⑨_____________________________________
____⑩_______
}
}
10. 用struts实现用户登录的功能。请填空。每空1分,计15分
login.jsp:
<form action = “_①__”>
</form>
struts-config.xml:
<form-beans>
<form-bean name=”__②__” type=”net.umltech.train.form.LoginForm” />
</form-beans>
<action-mappings>
<action input=”/login.jsp” name=”_③_” path=”/loginAction” scope=”session” type=”net.umltech.train.action.LoginAction”>
<forward name=”success” path=”/success.jsp” />
</action>
</action-mappings>
User.java:
public class User{
private String userId;
private String userName;
private Set groups = new HashSet();
//getter,setter method are omitted.
}
Group.java:
public class Group{
private String groupId;
private String groupName;
private Set rights = new HashSet();
// getter,setter method are omitted.
boolean equals(Group group) {
__④__;
}
}
Right.java:
public class Right{
private String rightId;
private String rightName;
}
LoginAction.java:
public class LoginAction extends Action {
public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
User user = findByUserName(userName);
httpServletRequest.getSession.setAttribute(“user_right”,user);
return actionMapping.findForward(“_⑤__”);
}
public User findByUserName(String userName) throws Exception{
String mysql =
“select users.USER_ID,groups.GROUP_ID,groups.NAME,rights.RIGHT_ID,rights.NAME
from users,user_group,groups,group_right,rights where users.NAME = ?
and users.USER_ID = user_group.USER_ID
and user_group.GROUP_ID = groups.GROUP_ID
and groups.GROUP_ID = group_right.GROUP_ID
and group_right.RIGHT_ID = rights.RIGHT_ID”;
PreparedStatement pstmt = connection.PrepareStatement(mysql);
pstmt.setString(1,userName);
ResultSet rs = pstmt.executeQuery();
User user = new User();
while(rs.next()) {
String userId = rs.getString(1);
String groupId = rs.getString(2)
String groupName =rs.getString(3);
String rightId = rs.getString(4);
String rightName = rs.getString(5);
Group group = new Group();
group.setGroupId(groupId);
group.setGroupName(groupName);
Set groups = user.getGroups();
iterator iter = groups.iterator();
boolean found = false;
while(iter.hasNext()) {
Group theGroup = (Group)iter.next();
if (theGroup.equals(group)) {
___⑥_ _______
found=true;
break;
}
}
if (_⑦________) {
groups.add(group);
}
Right right = new Right();
right.setRightId(rightId);
right.setRightName(rightName);
_____⑧___
} // while(rs.next())
___⑨_______________
___⑩__________________
connection.close();
return user;
}// findByUsername
}
success.jsp:将用户的组权限显示出来。
<c:forEach var=”__⑾____” items=”__⑿_____________”>
<c:forEach var=”___⒀______” items=”___⒁___________”>
<c:out value=”___⒂_____” /><br />
</c:forEach>
</c:forEach>
11 分析下面几个文件,然后填空。每空1分,计13分。
web.xml
<display-name>CRMWebModule</display-name>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.__⑴___</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>__⑵____</servlet-name>
<url-pattern>___⑶_____</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>__⑷____</taglib-uri>
<taglib-location>/WEB-INF/app.tld</taglib-location>
</taglib>
<resource-ref>
<description>resource for train CRM proj</description>
<res-ref-name>jdbc/crmdb</res-ref-name>
<res-type>__⑸_____</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
weblogic.xml
<weblogic-web-app>
<reference-descriptor>
<resource-description>
<res-ref-name>__⑹____</res-ref-name>
<jndi-name>mydatasource-oracle</jndi-name>
</resource-description>
</reference-descriptor>
<context-root>CRMWebModule</context-root>
</weblogic-web-app>
login.jsp:
<%@ taglib uri=”__⑺______” prefix=”c” %>
<%@ tablib uri=”__⑻___” prefix=”trainCRM” %>
<c:out value=”Hello” />
<trainCRM:appListUser _⑼__=”list”/>
app.tld:
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>Application Tag Library</short-name>
<uri>http://www.umltech.net/taglibs/trainCRM</uri>
<display-name>app</display-name>
<description>no</description>
<tag>
<name>__⑽____</name>
<tag-class>net.umltech.train.java.tag.AppListUserTag</tag-class>
<body-content>_⑾____</body-content>
<display-name>appListUser</display-name>
<description>no</description>
<attribute>
<name>id</name>
<required>_⑿____</required>
<rtexprvalue>true</rtexprvalue>
<type>___⒀____</type>
</attribute>
</tag>
</taglib>
12 根据UML类图的定义和关系,用java语言来实现。6分
说明:
-
Vehicle为抽象类;Car,Truck为Vehicle的子类;ICargoTransport为接口。Truck实现IcargoTransport接口。
-
类Person和Vechicle之间的关联关系如图所示。
-
Engine是一个类,它和Vehicle之间为聚合关系,即Vehicle包含Engine。
-
写出各个类、接口的定义,包括实例变量的定义,方法的定义和方法的示例性实现。
java应聘教师测试试题一答案
1下列哪些方法互为重载方法:2分
①
③
④
⑤
⑥
2下列哪些方法是覆盖方法:2分
①④
3下列说法正确的打√,错误的打×。每题0.5分,计20分。
-
√
-
√
-
×
-
×
-
√
-
×
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
√
-
×
-
×
-
×
-
×
-
×
4 在下划线位置填上合适的代码,并且写出程序输出的结果。2 x 5= 10分
①personList[i] = new Person();
②personList[i].setKids(new HashSet());
③kid.setMother(personList[i]);
④personList[i].setMother(new Mother());
⑤personList[i].getMother.setKids(new HashSet()));
⑥personList[i]
5 写出程序执行的结果 4分
①18
②1111
6 下面的代码中,A和B位于同一包中。而C则在另一个包中。6分
问题1:a包含哪些实例变量: int i,s,d,b,byte i
a能访问哪些实例变量: int i,d,b,byte i
问题2:c包含哪些实例变量: int i,s,d,b,byte i
c能访问哪些实例变量: int i,d,byte i
问题3:此句强制转化是否正确?正确
问题4:此句强制转化是否正确?错误
7 写出下面两段程序的运行结果。2分
第一组:
i = 0 j = 1
i = 0 j = 2
i = 1 j = 0
i = 1 j = 2
i = 2 j = 0
第二组:
i = 2 j = 1
i = 1 j = 0
i = 2 j = 0
i = 2 j = 1
8 下面是一个自行设计的线程安全的链表,链表长度不超过MAX_LENGTH。请填空。10分
①Element next;
②while(length >= MAX_LENGTH)
③notifyAll();
④wait();
⑤while(ptr == null)
9 将任意一个jsp,如login.jsp,query.jsp提交到MyServlet,MyServlet处理后分别转到loginAck.jsp和queryAck.jsp。 下面是代码片段,请填空。(每空1分,计10分)
①myservlet
②myserlet
③*.do
④login.do
⑤query.do
⑥ReqeustDispatcher rd = request.getRequestDispatcher(“/loginAck.jsp”);
⑦rd.forward(request,response);
⑧/query.do
⑨ReqeustDispatcher rd = request.getRequestDispatcher(“/queryAck.jsp”);
⑩response.sendDirect(“/queryAck.jsp”);
10. 用struts实现用户登录的功能。请填空。每空1分,计15分
⑴loginAction.do
⑵loginForm
⑶loginForm
⑷return
⑸success
⑹group = theGroup;
⑺!found
⑻group.getRights().add(right);
⑼rs.close();
⑽pstmt.close();
⑾item
⑿${user_right.groups}
⒀item1
⒁${item.rights}
⒂${item1.rightName}
11 分析下面几个文件,然后填空。每空1分,计13分。
⑴ActionServlet
⑵action
⑶*.do
⑷
http://www.umltech.net/taglibs/trainCRM
⑸java.sql.DataSource
⑹ jdbc/crmdb
⑺
http://java.sun.com/jstl/core
⑻ http://www.umltech.net/taglibs/trainCRM
⑼id
⑽ appListUser
⑾empty
⑿true
⒀java.lang.String
12 根据UML类图的定义和关系,用java语言来实现。6分
public abstract class Vehicle {
private Engine engine;
public Vehicle() {
}
public void setEngine(Engine engine) {
this.engine = engine;
}
public abstract String go();
public void startEngine() {
if (this.engine != null) {
this.engine.start();
}
}
public void stopEngine() {
if (this.engine != null) {
this.engine.stop();
}
}
public boolean isEngineOn() {
if (this.engine != null) {
return this.engine.isOn();
}
return false;
}
}
public class Car extends Vehicle{
public Car() {
}
public String go() {
if (this.isEngineOn()) {
return “!!!!”;
}
else {
return “…”;
}
}
}
public interface CargoTransport {
public void loadCargo();
}
public class Truck extends Vehicle implements CargoTransport {
public Truck() {
}
public String go() {
if (this.isEngineOn()) {
return “!!!”;
}
else {
return “…”;
}
}
public void loadCargo() {
System.out.println(“truck can load cargo.”);
}
}
public class Engine {
private boolean on;
public Engine() {
}
public void start() {
this.on = true;
}
public void stop() {
this.on = false;
}
public boolean isOn() {
return this.on;
}
}
public class Person {
private Vector vehicles = new Vector();
public Person() {
}
public void addVehicle(Vehicle v) {
vehicles.addElement(v);
}
}