一、 概念题
1、 解释什么是队列(queue),什么栈(stack),有何区别?
队列是一种特殊的线性表,他按照先进先出的原则存储数据。
栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。
2、 用C/C++或者Php,或Java,给出例子,解释什么是异常(exception)?
3、 简述HashMap、HashSet、HashTable的区别。
Hashtable类
Hashtable继承Map接口,实现一个key-value映射的哈希表。任何非空(non-null)的对象都可作为key或者value。
HashMap类
HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key,null key只能有一个。
HashSet类
HashSet继承Set接口。
Set是一种不包含重复的元素的Collection。
4、public、protect和private的区别是什么?
二、 数据库相关题
试设计一个商品相关数据库,要求包括商品类别、商品的基本信息,并完成下面的三个查询。
1、请写出创建相关表的SQL语句。
2. 使用标准SQL,得到2008年1月份入库的所有商品信息。
3. 使用标准SQL,得到“Toy”分类下的所有商品信息。
4. 使用标准SQL,统计出所有包含商品价格低于100.00的分类。
三、 程序填空题。
阅读下列说明、图以及Java程序,将应填入__(n)__处的字句写在答题纸的对应栏内。
1、[说明]
某订单管理系统的部分UML类图如图1-1所示
图4-1 订单管理系统的部分类图
图1-1中,Product表示产 品,ProductList表示所销售产品的列表,Order表示产品订单,0rderltem表示产品订单中的一个条目,OrderList表示订单列 表,SalesSystem提供订单管理系统的操作接口。各个类的部分属性和方法说明如表1-1所示。
表1-1
类 | 成员 | 说明 |
ProductList | ArrayList(Product) products | |
Product String | String code | 产品编号 |
description | 产品描述 | |
double price | 产品单价 | |
Boolean equals(Object object) | 若两个产品相同则返回true,否则返回false | |
Orderltem | Product product | 订单项中的产品 |
int quantity | 产品的订购数量 | |
Product getProduct() | 获取订单项中的产品 | |
Order | ArrayList(Orderlten) items | 订单中包含的订单项 |
OrderList | ArrayList(Order)orders | 订单 |
void addOrder(0rder order) | 向订单列表中添加新订单 | |
int getNumberOfOrders() | 获取订单列表中的订单总数 | |
SalesSystem | ProductList catalog | 产品目录 |
OrderList sales | 订单列表 | |
void statistic() | 依次统计产品目录中每个产品的订购总量,并打印 出每个产品的编号、说明、订购总量和订购金额 | |
可以使用类java.util。ArrayList<E>来实现对象的聚集关系,如图4-1中OrderList与Order之间的聚集关系。for-each循环提供了一种遍历对象集合的简单方法。在for-each循环中,可以指定需要遍历的对象集合以及用来接收集合中每个元素的变量,其语法如下: for(用来接收集合中元素的变量:需要遍历的对象集合),如果要使用for-each循环来遍历对象集合,那么包含该对象集合的类必须实现接口java.util.Iterable<T>。Java程序1-1和Java程序1-2分别给出了类OrderList和方法statistic的Java代码。
[Java程序1-1]import java.util.*。public class OrderList __(1)__ { private ArrayList<Order> orders。 public OrderListO { ders = new ArrayList(Order) 0。 } public void addOrder(Order order) { ders, add (order)。 } public Iterator<Order> iteratorO { return __(2)__。 } public int getNunberOfOrders() {ders. size()。 }} [Java程序1-2] import java.util.*; public class SalesSystem { private ProductList catalog; private OrderList sales; private static PrintWriter stdOut = new PrintWriter(System.out,true)。 public void statistic(){ for(Product product : __(3)__{ int number = 0; for(Order order : __(4)__ { for(__(5)__ : order){ if<product.Product())) numbe r += Qu
antity(); } } stdOut.Code() + " " + Description() + " " + number + " " + number *product.getPrice()); } } //其余的方法未列出 }
2、[说明]
传输门是传输系统中的重要装置。传输门具有 Open(打开)、Closed(关闭)、Opening(正在打开)、StayOpen(保持打开)、Closing(正在关闭)五种状态。触发状态的转换事件有 click、complete 和 timeout 三种。事件与其相应的状态转换如图2-1 所示。
图2-1 传输门响应事件与其状态转换图
下面的[Java 代码 1]与[Java 代码 2]分别用两种不同的设计思路对传输门进行状态模拟,请填补代码中的空缺。
[Java 代码 1]
public class Door {public static final int CLOSED = 1。public static final int OPENING = 2。
[Java 代码 1]
public class Door {public static final int CLOSED = 1。public static final int OPENING = 2。
public static final int OPEN = 3。public static final int CLOSING = 4。public static final int STAYOPEN = 5。private int state = CLOSED。//定义状态变量,用不同的整数表示不同状态
private void setState(int state){this.state = state。} //设置传输门当前状态public void getState(){// 此处代码省略,本方法输出状态字符串,
// 例如,当前状态为 CLOSED 时,输出字符串为”CLOSED”
}
private void setState(int state){this.state = state。} //设置传输门当前状态public void getState(){// 此处代码省略,本方法输出状态字符串,
// 例如,当前状态为 CLOSED 时,输出字符串为”CLOSED”
}
public void click() { //发生 click 事件时进行状态转换
if ( (1) ) setState(OPENING)。
else if ( (2) ) setState(CLOSING)。
else if ( (3) ) setState(STAYOPEN)。
//发生 timeout 事件时进行状态转换
public void timeout(){ if (state == OPEN) setState(CLOSING)。 }
public void complete(){ //发生 complete 事件时进行状态转换
if (state == OPENING) setState(OPEN)。
if ( (1) ) setState(OPENING)。
else if ( (2) ) setState(CLOSING)。
else if ( (3) ) setState(STAYOPEN)。
//发生 timeout 事件时进行状态转换
public void timeout(){ if (state == OPEN) setState(CLOSING)。 }
public void complete(){ //发生 complete 事件时进行状态转换
if (state == OPENING) setState(OPEN)。
else if (state == CLOSING) setState(CLOSED)。
}
}
public static void main(String [] args){
Door aDoor = new Door()。State()。aDoor.click()。State()。aDoorplete()。State()。aDoor.click()。State()。aDoor.click()。State()。return。}
Door aDoor = new Door()。State()。aDoor.click()。State()。aDoorplete()。State()。aDoor.click()。State()。aDoor.click()。State()。return。}
}
[Java 代码 2]
public class Door {
public final DoorState CLOSED = new DoorClosed(this)。
public final DoorState OPENING = new DoorOpening(this)。
public final DoorState OPEN = new DoorOpen(this)。
public final DoorState CLOSING = new DoorClosing(this)。
public final DoorState STAYOPEN = new DoorStayOpen(this)。
java面试题及答案2020
public class Door {
public final DoorState CLOSED = new DoorClosed(this)。
public final DoorState OPENING = new DoorOpening(this)。
public final DoorState OPEN = new DoorOpen(this)。
public final DoorState CLOSING = new DoorClosing(this)。
public final DoorState STAYOPEN = new DoorStayOpen(this)。
java面试题及答案2020
private DoorState state = CLOSED。//设置传输门当前状态
public void setState(DoorState state){ this.state = state。}public void getState(){ //根据当前状态输出对应的状态字符串
System.out.Class().getName())。
}public void click(){ (4) 。} //发生 click 事件时进行状态转换
public void timeout(){ (5) 。}//发生 timeout 事件时进行状态转换
public void complete(){ (6) 。}//发生 complete 事件时进行状态转换public static void main(String[] args){
Door aDoor = new Door()。
State()。aDoor.click()。State()。aDoorplete()。
State()。aDoor.timeout()。State()。return。
}
}public abstract class DoorState { //定义所有状态类的基类
protected Door door 。
public DoorState(Door door) {this.door = door。}
public void setState(DoorState state){ this.state = state。}public void getState(){ //根据当前状态输出对应的状态字符串
System.out.Class().getName())。
}public void click(){ (4) 。} //发生 click 事件时进行状态转换
public void timeout(){ (5) 。}//发生 timeout 事件时进行状态转换
public void complete(){ (6) 。}//发生 complete 事件时进行状态转换public static void main(String[] args){
Door aDoor = new Door()。
State()。aDoor.click()。State()。aDoorplete()。
State()。aDoor.timeout()。State()。return。
}
}public abstract class DoorState { //定义所有状态类的基类
protected Door door 。
public DoorState(Door door) {this.door = door。}
public void click() {}
public void complete() {}
public void timeout() {}
}class DoorClosed extends DoorState{ //定义一个基本的 Closed 状态
public DoorClosed(Door door) { super(door)。 }
public void click() { (7) 。 }
//该类定义的其余代码省略
}
//其余代码省略
public void complete() {}
public void timeout() {}
}class DoorClosed extends DoorState{ //定义一个基本的 Closed 状态
public DoorClosed(Door door) { super(door)。 }
public void click() { (7) 。 }
//该类定义的其余代码省略
}
//其余代码省略
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论