JAVA開(kāi)發(fā)工程師面試題
用C/C++或者Php,或Java,給出例子,解釋什么是異常(exception)?下面就由學(xué)習(xí)啦小編為大家介紹一下JAVA開(kāi)發(fā)工程師面試題的文章,歡迎閱讀。
JAVA開(kāi)發(fā)工程師面試題篇1
1、解釋什么是隊(duì)列(queue),什么棧(stack),有何區(qū)別?
隊(duì)列是一種特殊的線(xiàn)性表,他按照先進(jìn)先出的原則存儲(chǔ)數(shù)據(jù)。
棧是一種數(shù)據(jù)結(jié)構(gòu),它按照后進(jìn)先出的原則存儲(chǔ)數(shù)據(jù),先進(jìn)入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂,需要讀數(shù)據(jù)的時(shí)候從棧頂開(kāi)始彈出數(shù)據(jù)。
2、用C/C++或者Php,或Java,給出例子,解釋什么是異常(exception)?
3、簡(jiǎn)述HashMap、HashSet、HashTable的區(qū)別。
Hashtable類(lèi)
Hashtable繼承Map接口,實(shí)現(xiàn)一個(gè)key-value映射的哈希表。任何非空(non-null)的對(duì)象都可作為key或者value。
HashMap類(lèi)
HashMap和Hashtable類(lèi)似,不同之處在于HashMap是非同步的,并且允許null,即null value和null key,null key只能有一個(gè)。
HashSet類(lèi)
HashSet繼承Set接口。
Set是一種不包含重復(fù)的元素的Collection。
4、public、protect和private的區(qū)別是什么?
JAVA開(kāi)發(fā)工程師面試題篇2
試設(shè)計(jì)一個(gè)商品相關(guān)數(shù)據(jù)庫(kù),要求包括商品類(lèi)別、商品的基本信息,并完成下面的三個(gè)查詢(xún)。
1、請(qǐng)寫(xiě)出創(chuàng)建相關(guān)表的SQL語(yǔ)句。
2. 使用標(biāo)準(zhǔn)SQL,得到2008年1月份入庫(kù)的所有商品信息。
3. 使用標(biāo)準(zhǔn)SQL,得到“Toy”分類(lèi)下的所有商品信息。
4. 使用標(biāo)準(zhǔn)SQL,統(tǒng)計(jì)出所有包含商品價(jià)格低于100.00的分類(lèi)。
JAVA開(kāi)發(fā)工程師面試題篇3
閱讀下列說(shuō)明、圖以及Java程序,將應(yīng)填入__(n)__處的字句寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)。
1、[說(shuō)明]
某訂單管理系統(tǒng)的部分UML類(lèi)圖如圖1-1所示
圖4-1 訂單管理系統(tǒng)的部分類(lèi)圖
圖1-1中,Product表示產(chǎn) 品,ProductList表示所銷(xiāo)售產(chǎn)品的列表,Order表示產(chǎn)品訂單,0rderltem表示產(chǎn)品訂單中的一個(gè)條目,OrderList表示訂單列 表,SalesSystem提供訂單管理系統(tǒng)的操作接口。各個(gè)類(lèi)的部分屬性和方法說(shuō)明如表1-1所示。
表1-1
類(lèi)
成員
說(shuō)明
ProductList
ArrayList(Product) products
Product String
String code
產(chǎn)品編號(hào)
description
產(chǎn)品描述
double price
產(chǎn)品單價(jià)
Boolean equals(Object object)
若兩個(gè)產(chǎn)品相同則返回true,否則返回false
Orderltem
Product product
訂單項(xiàng)中的產(chǎn)品
int quantity
產(chǎn)品的訂購(gòu)數(shù)量
Product getProduct()
獲取訂單項(xiàng)中的產(chǎn)品
Order
ArrayList(Orderlten) items
訂單中包含的訂單項(xiàng)
OrderList
ArrayList(Order)orders
訂單
void addOrder(0rder order)
向訂單列表中添加新訂單
int getNumberOfOrders()
獲取訂單列表中的訂單總數(shù)
SalesSystem
ProductList catalog
產(chǎn)品目錄
OrderList sales
訂單列表
void statistic()
依次統(tǒng)計(jì)產(chǎn)品目錄中每個(gè)產(chǎn)品的訂購(gòu)總量,并打印 出每個(gè)產(chǎn)品的編號(hào)、說(shuō)明、訂購(gòu)總量和訂購(gòu)金額
可以使用類(lèi)java.util。ArrayList來(lái)實(shí)現(xiàn)對(duì)象的聚集關(guān)系,如圖4-1中OrderList與Order之間的聚集關(guān)系。for-each循環(huán)提供了一種遍歷對(duì)象集合的簡(jiǎn)單方法。在for-each循環(huán)中,可以指定需要遍歷的對(duì)象集合以及用來(lái)接收集合中每個(gè)元素的變量,其語(yǔ)法如下: for(用來(lái)接收集合中元素的變量:需要遍歷的對(duì)象集合),如果要使用for-each循環(huán)來(lái)遍歷對(duì)象集合,那么包含該對(duì)象集合的類(lèi)必須實(shí)現(xiàn)接口java.util.Iterable。Java程序1-1和Java程序1-2分別給出了類(lèi)OrderList和方法statistic的Java代碼。
[Java程序1-1]
import java.util.*;
public class OrderList __(1)__ {
private ArrayList orders;
public OrderListO {
this.orders = new ArrayList(Order) 0;
}
public void addOrder(Order order) {
this.orders, add (order);
}
public Iterator 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
numbe r += item.getQuantity();
}
}
stdOut.println(product.getCode() + ” ”
+ product.getDescription() + ” ”
+ number + ” ” + number *product.getPrice());
}
}
//其余的方法未列出
}
2、[說(shuō)明]
傳輸門(mén)是傳輸系統(tǒng)中的重要裝置。傳輸門(mén)具有 Open(打開(kāi))、Closed(關(guān)閉)、Opening(正在打開(kāi))、StayOpen(保持打開(kāi))、Closing(正在關(guān)閉)五種狀態(tài)。觸發(fā)狀態(tài)的轉(zhuǎn)換事件有 click、complete 和 timeout 三種。事件與其相應(yīng)的狀態(tài)轉(zhuǎn)換如圖 2-1 所示。
圖 2-1 傳輸門(mén)響應(yīng)事件與其狀態(tài)轉(zhuǎn)換圖
下面的[Java 代碼 1]與[Java 代碼 2]分別用兩種不同的設(shè)計(jì)思路對(duì)傳輸門(mén)進(jìn)行狀態(tài)模擬,請(qǐng)?zhí)钛a(bǔ)代碼中的空缺。
[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;//定義狀態(tài)變量,用不同的整數(shù)表示不同狀態(tài)
private void setState(int state){this.state = state;} //設(shè)置傳輸門(mén)當(dāng)前狀態(tài)
public void getState(){
// 此處代碼省略,本方法輸出狀態(tài)字符串,
// 例如,當(dāng)前狀態(tài)為 CLOSED 時(shí),輸出字符串為”CLOSED”
}
public void click() { //發(fā)生 click 事件時(shí)進(jìn)行狀態(tài)轉(zhuǎn)換
if ((1) ) setState(OPENING);
else if ( (2) ) setState(CLOSING);
else if ((3) ) setState(STAYOPEN);
//發(fā)生 timeout 事件時(shí)進(jìn)行狀態(tài)轉(zhuǎn)換
public void timeout(){ if (state == OPEN) setState(CLOSING); }
public void complete(){ //發(fā)生 complete 事件時(shí)進(jìn)行狀態(tài)轉(zhuǎn)換
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;
//設(shè)置傳輸門(mén)當(dāng)前狀態(tài)
public void setState(DoorState state){ this.state = state;}
public void getState(){ //根據(jù)當(dāng)前狀態(tài)輸出對(duì)應(yīng)的狀態(tài)字符串
System.out.println(state.getClass().getName());
}
public void click(){ (4) ;} //發(fā)生 click 事件時(shí)進(jìn)行狀態(tài)轉(zhuǎn)換
public void timeout(){ (5) ;}//發(fā)生 timeout 事件時(shí)進(jìn)行狀態(tài)轉(zhuǎn)換
public void complete(){ (6) ;}//發(fā)生 complete 事件時(shí)進(jìn)行狀態(tài)轉(zhuǎn)換
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 { //定義所有狀態(tài)類(lèi)的基類(lèi)
protected Door door ;
public DoorState(Door door) {this.door = door;}
public void click() {}
public void complete() {}
public void timeout() {}
}
class DoorClosed extends DoorState{ //定義一個(gè)基本的 Closed 狀態(tài)
public DoorClosed(Door door) { super(door); }
public void click() { (7) ; }
//該類(lèi)定義的其余代碼省略
}
//其余代碼省略