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) ; } //该类定义的其余代码省略 }

//其余代码省略

对于学习有困难不知道如何提升自己可以加扣:578024144进行交流得到帮助,获取学习资料


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 在全球游戏里当房东的日子 我把师门送上天 玄门小奶包是冥界最强打工人 珠柔 我靠完成小团子心愿续命 举一反三式爱你 战神她在娱乐圈杀疯了 当家嫡女:背靠系统富甲天下 停!反派总裁不准亲亲抱抱系统 逃荒:嫁给黏唧唧人鱼后吃不消了 荒野直播:影帝的小娇娇藏不住了 限时暗恋 被迫给反派续命后在娱乐圈爆火了 将军夫人你莫走 在源能世界中觉醒全知之眼 我去华娱探探路 带娃虐渣,女将军穿年代后杀疯了 带着妈妈活到末世结束 十八线女配穿进后宫演顶流 斗罗:重生胡列娜在武魂殿当团宠 大景女星官 报!娘娘在种田路上福星高照 靠美食成为星际首富 夫人她每天都想摸鱼摆烂 寒门重生女 穿书:侧妃她要改剧本 作妖小青梅总想遇见我 重生成团宠文炮灰 全师门就我一个人是废柴 反派家的团宠崽崽是神兽 越界臣服 重生之鱼刺救我狗命 修仙:哈哈哈鸡汤来咯 萌宝来袭:带着空间穿九零 快跑,宿主她不对劲 小哭包她软软糯糯 超甜!重生后左相被我撩到腿软 超真实探案推理游戏 惊!霍总怀里的小娇妻失忆后想逃婚 我和暴君有个崽 荒野求生我靠传播非遗爆红全世界