JAVA开发工程师面试题
来源:互联网 发布:期货交易行情软件 编辑:程序博客网 时间:2024/04/20 15:47
LightInTheBox.com 工程师笔试试题---JAVA
一、 概念题
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
可以使用类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 {
this.orders = new ArrayList(Order) 0; }
public void addOrder(Order order) { this.orders, add (order); }
public Iterator<Order> iteratorO {
return __(2)__;
}
public int getNunberOfOrders() { return this.orders. 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.equals(item.getProduct())) numbe r += item.getQuantity(); } }
stdOut.println(product.getCode() + " " + product.getDescription() + " "
+ 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; 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” }
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(); aDoor.getState(); aDoor.click(); aDoor.getState(); aDoor.complete(); aDoor.getState(); aDoor.click(); aDoor.getState(); aDoor.click(); aDoor.getState(); 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); private DoorState state = CLOSED; //设置传输门当前状态
public void setState(DoorState state){ this.state = state;} public void getState(){ //根据当前状态输出对应的状态字符串 System.out.println(state.getClass().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(); aDoor.getState(); aDoor.click(); aDoor.getState(); aDoor.complete(); aDoor.getState(); aDoor.timeout(); aDoor.getState(); 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) ; } //该类定义的其余代码省略 }
//其余代码省略
- JAVA开发工程师面试题
- JAVA开发工程师面试题
- Java软件开发工程师面试题集
- java开发工程师面试题(一)
- java开发工程师面试题(二)
- 高级Java开发工程师面试题汇总
- Java软件开发工程师面试题
- JAVA工程师面试题
- java工程师面试题
- Java工程师面试题
- java工程师面试题
- java工程师面试题
- JAVA工程师面试题
- 前端开发工程师面试题
- .Net开发工程师面试题
- ios开发工程师面试题
- C++开发工程师面试题
- 后台开发工程师面试题
- Delphi下EasyGrid使用体会
- Activity数据更新,及时通知下面的Fragment
- IOS中XML解析之libxml2
- Sting中方法举例
- 56.谁是最好的Coder
- JAVA开发工程师面试题
- Fork/Join由浅入深
- 广东移动实习前期
- HDU 1082 Matrix Chain Multiplication(栈和map的使用)
- 57.奋斗的小蜗牛
- 【HDU】-2553-N皇后问题(DFS)
- 58.万圣节派对
- 1098. Insertion or Heap Sort (25)
- 十:Callable和Future