一、 概念题
1、 解释什么是队列(queue),什么栈(stack),有何区别?
队列是一种特殊的线性表,他按照先进先出的原则存储数据。
栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。
2、 C/C++或者Php,或Java,给出例子,解释什么是异常(exception)
3、 简述HashMapHashSetHashTable的区别。
Hashtable
Hashtable继承Map接口,实现一个key-value映射的哈希表。任何非空(non-null)的对象都可作为key或者value
HashMap
HashMapHashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null valuenull keynull key只能有一个。
HashSet
HashSet继承Set接口。
Set是一种不包含重复的元素的Collection
4publicprotectprivate的区别是什么?
二、 数据库相关题
试设计一个商品相关数据库,要求包括商品类别、商品的基本信息,并完成下面的三个查询。
1、请写出创建相关表的SQL语句。
2. 使用标准SQL,得到20081月份入库的所有商品信息。
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()
依次统计产品目录中每个产品的订购总量,并打印 出每个产品的编号、说明、订购总量和订购金额
可以使用类javautilArrayList<E>来实现对象的聚集关系,如图4-1OrderListOrder之间的聚集关系。for-each循环提供了一种遍历对象集合的简单方法。在for-each循环中,可以指定需要遍历的对象集合以及用来接收集合中每个元素的变量,其语法如下:  for(用来接收集合中元素的变量:需要遍历的对象集合),如果要使用for-each循环来遍历对象集合,那么包含该对象集合的类必须实现接口java.util.Iterable<T>Java程序1-1Java程序1-2分别给出了类OrderList和方法statisticJava代码。
[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.outtrue)。   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 *productgetPrice());    }   }   //其余的方法未列出  }
2[说明]
  传输门是传输系统中的重要装置。传输门具有 Open(打开)、Closed(关闭)、Opening(正在打开)、StayOpen(保持打开)、Closing(正在关闭)五种状态。触发状态的转换事件有 clickcomplete timeout 三种。事件与其相应的状态转换如图2-1 所示。

2-1 传输门响应事件与其状态转换图
下面的[Java 代码 1][Java 代码 2]分别用两种不同的设计思路对传输门进行状态模拟,请填补代码中的空缺。
[Java 代码 1]
public class Door {public static final int CLOSED = 1public static final int OPENING = 2
public static final int OPEN = 3public static final int CLOSING = 4public static final int STAYOPEN = 5private int state = 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)
    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}
}
[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
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 click() {}
   public void complete() {}
   public void timeout() {}
}class DoorClosed extends DoorState{ //定义一个基本的 Closed 状态
   public DoorClosed(Door door) { super(door) }
   public void click() { 7 }
   //该类定义的其余代码省略
}
//其余代码省略