- 相關推薦
Java工程師筆試題
在日常學習和工作中,我們需要用到試題的情況非常的多,借助試題可以檢測考試者對某方面知識或技能的掌握程度。你所了解的試題是什么樣的呢?下面是小編收集整理的Java工程師筆試題,僅供參考,希望能夠幫助到大家。
Java工程師筆試題 1
一、選擇題(共50題,每題1.5分,共75分。多選題選不全或選錯都不得分。)
1.以下屬于面向對象的特征的是(C,D)。(兩項)
A) 重載
B) 重寫
C) 封裝
D) 繼承
2.以下代碼運行輸出是(C)
public class Person{
private String name=”Person”;
int age=0;
}
public class Child extends Person{
public String grade;
public static void main(String[] args){
Person p = new Child( );
System.out.println(p.name);
}
}
A) 輸出:Person
B) 沒有輸出
C) 編譯出錯
D) 運行出錯
3.在使用super 和this關鍵字時,以下描述正確的是(A)
A) 在子類構造方法中使用super( )顯示調用父類的構造方法,super( )必須寫在子類構造方法的第一行,否則編譯不通過
B) super( )和this( )不一定要放在構造方法內第一行
C) this( )和super( )可以同時出現在一個構造函數中
D) this( )和super( )可以在static環境中使用,包括static方法和static語句塊
4.以下對封裝的描述正確的是(D)
A) 只能對一個類中的方法進行封裝,不能對屬性進行封裝。
B) 如果子類繼承了父類,對于父類中進行封裝的方法,子類仍然可以直接調用
C) 封裝的意義不大,因此在編碼時盡量不要使用
D) 封裝的主要作用在于對外隱藏內部實現細節,增強程序的安全性
5.以下對繼承的描述錯誤的是(A)
A) Java中的繼承允許一個子類繼承多個父類
B) 父類更具有通用性,子類更具體
C) Java中的繼承存在著傳遞性
D) 當實例化子類時會遞歸調用父類中的構造方法
6.以下程序的運行結果是(D)
class Person{
public Person( ){
System.out.println(“this is a Person”);
}
}
public class Teacher extends Person{
private String name=”tom”;
public Teacher( ){
System.out.println(“this is a teacher”);
super( );
}
public static void main(String[] args){
Teacher teacher = new Teacher( );
System.out.println(this.name);
}
}
A) this is a Person
this is a teacher
tom
B) this is a teacher
this is a Person
tom
C) 運行出錯
D) 編譯有兩處錯誤
7.以下說法錯誤的是( )
A) super.方法( )可以調用父類的所有非私有方法
B) super( )可以調用父類的所有非私有構造函數
C) super.屬性可以調用父類的所有非私有屬性
D) this和super關鍵字可以出現在同一個構造函數中
8.以下關于final關鍵字說法錯誤的是(A,C)(兩項)
A) final是java中的修飾符,可以修飾類、接口、抽象類、方法和屬性
B) final修飾的類肯定不能被繼承
C) final修飾的方法不能被重載
D) final修飾的變量不允許被再次賦值
9.訪問修飾符作用范圍由大到小是(D)
A) private-default-protected-public
B) public-default-protected-private
C) private-protected-default-public
D) public-protected-default-private
10.以下(D)不是Object類的方法
A) clone( )
B) finalize( )
C) toString( )
D) hasNext( )
11.多態的表現形式有(A)
A) 重寫
B) 抽象
C) 繼承
D) 封裝
12.以下對重載描述錯誤的是(B)
A) 方法重載只能發生在一個類的內部
B) 構造方法不能重載
C) 重載要求方法名相同,參數列表不同
D) 方法的返回值類型不是區分方法重載的條件
13.以下(D)添加到ComputerBook中不會出錯
class Book{
protected int getPrice( ){
return 30;
}
}
public class ComputerBook extends Book{
}
A) protected float getPrice( ){}
B) protected int getPrice(int page){}
C) int getPrice( ){}
D) public int getPrice( ){return 10;}
14.以下對抽象類的描述正確的是(C)
A) 抽象類沒有構造方法
B) 抽象類必須提供抽象方法
C) 有抽象方法的類一定是抽象類
D) 抽象類可以通過new關鍵字直接實例化
15.以下對接口描述錯誤的有(D)
A) 接口沒有提供構造方法
B) 接口中的方法默認使用public、abstract修飾
C) 接口中的屬性默認使用public、static、final修飾
D) 接口不允許多繼承
16.以下代碼,描述正確的有(A)
interface IDemo{
public static final String name;1
void print( );2
public void getInfo( );3
}
abstract class Person implements IDemo{4
public void print( ){
}
}
A) 第1行錯誤,沒有給變量賦值
B) 第2行錯誤,方法沒有修飾符
C) 第4行錯誤,沒有實現接口的全部方法
D) 第3行錯誤,沒有方法的實現
17.接口和抽象類描述正確的有(B,C)(兩項)
A) 抽象類沒有構造函數
B) 接口沒有構造函數
C) 抽象類不允許多繼承
D) 接口中的方法可以有方法體
18.以下描述錯誤的有(C)
A) abstract 可以修飾類、接口、方法
B) abstract修飾的類主要用于被繼承
C) abstract 可以修飾變量
D) abstract修飾的類,其子類也可以是abstract修飾的
19.以下描述正確的有(B)
A) 方法的重寫應用在一個類的內部
B) 方法的重載與返回值類型無關
C) 構造方法不能重載
D) 構造方法可以重寫
20.以下程序運行結果是(A)
public class Test extends Father{
private String name=”test”;
public static void main(String[] args){
Test test = new Test( );
System.out.println(test.getName( ));
}
}
class Father{
private String name=”father”;
public String getName( ) {
return name;
}
}
A) father
B) test
C) 編譯出錯
D) 運行出錯,無輸出
21.以下對異常的描述不正確的有(C)
A) 異常分為Error和Exception
B) Throwable是所有異常類的父類
C) Exception是所有異常類父類
D) Exception包括RuntimeException和RuntimeException之外的異常
22.在try-catch-finally語句塊中,以下可以單獨與finally一起使用的是(B)
A) catch
B) try
C) throws
D) throw
23.下面代碼運行結果是(B)
public class Demo{
public int add(int a,int b){
try{
return a+b;
}catch(Exception e){
System.out.println(“catch 語句塊”);
}finally{
System.out.println(“finally 語句塊”);
}
return 0;
}
public static void main(String[] args){
Demo demo = new Demo( );
System.out.println(“和是:”+demo.add(9,34));
}
}
A) 編譯異常
B) finally語句塊 和是:43
C) 和是:43 finally語句塊
D) catch語句塊 和是:43
24.以下描述不正確的有(D)
A) try塊不可以省略
B) 可以使用多重catch塊
C) finally塊可以省略
D) catch塊和finally塊可以同時省略
25.以下對自定義異常描述正確的是(C)
A) 自定義異常必須繼承Exception
B) 自定義異?梢岳^承自Error
C) 自定義異?梢愿用鞔_定位異常出錯的位置和給出詳細出錯信息
D) 程序中已經提供了豐富的異常類,使用自定義異常沒有意義
26.以下程序運行結果是(D)
public class Test {
public int div(int a, int b) {
try {
return a / b;
}catch(Exception e){
System.out.println(“Exception”);
}catch(NullPointerException e){
System.out.println(“ArithmeticException”);
}
catch (ArithmeticException e) {
System.out.println(“ArithmeticException”);
} finally {
System.out.println(“finally”);
}
return 0;
}
public static void main(String[] args) {
Test demo = new Test( );
System.out.println(“商是:” + demo.div(9, 0));
}
}
A) Exception finally 商是:0
B) ArithmeticException finally 商是:0
C) finally商是:0
D) 編譯報錯
27.以下對TCP和UDP描述正確的是(D)
A) TCP不能提供數據的可靠性
B) UDP能夠保證數據庫的可靠性
C) TCP數據傳輸效率高于UDP
D) UDP數據傳輸效率高于TCP
28.在Java中,下面對于構造函數的描述正確的是(D)。(選擇一項)
A) 類必須顯示定義構造函數
B) 構造函數的返回類型是void
C) 構造函數和類有相同的名稱,并且不能帶任何參數
D) 一個類可以定義多個構造函數
29.根據下面的代碼,
String s = null;
會拋出NullPointerException異常的有(A,C)。[兩項]
A) if( (s!=null) & (s.length( )>0) )
B) if( (s!=null) & & (s.length( )>0) )
C) if( (s==null) | (s.length( )==0) )
D) if( (s==null) || (s.length( )==0) )
30..在Java中,關于HashMap類的描述,以下廉潔錯誤的是( B )。
A) HashMap使用鍵/值得形式保存數據
B) HashMap 能夠保證其中元素的順序
C) HashMap允許將null用作鍵
D) HashMap允許將null用作值
31.下列選項中關于java中super關鍵字的說法錯誤的是( B )
A) super關鍵字是在子類對象內部指代其父類對象的引用
B) super關鍵字不僅可以指代子類的直接父類,還可以指代父類的父類
C) 子類可以通過super關鍵字調用父類的方法
D) 子類可以通過super關鍵字調用父類的屬性
32.在Java中,以下代碼( A )正確地創建了一個InputStreamReader對象。
A) InuptStreamReader(new FileInputStream(“1.dat”));
B) InuptStreamReader(new FileReader(“1.dat”));
C) InuptStreamReader(new BufferReader(“1.dat”));
D) InuptStreamReader (“1.dat”);
33.在Java中,( D )類提供定位本地文件系統,對文件或目錄及其屬性進行基本操作。
A) FileInputStream
B) FileReader
C) FileWriter
D) File
34.Java中的集合類包括ArrayList、LinkedList、HashMap等類,下列關于集合類描述錯誤的`是(C)(選擇一項)
A) ArrayList和LinkedList均實現了List接口
B) ArrayList的訪問速度比LinkedList快
C) 添加和刪除元素時,ArrayList的表現更佳
D) HashMap實現Map接口,它允許任何類型的鍵和值對象,并允許將null用作鍵或值
35.在Java中開發JDBC應用程序時,使用DriverManager類的getConnection( )方法
建立與數據源的連接語句為:
Connection con = DriverManager.getConnection(“jdbc:odbc:news”);
URL連接中的”n ews”表示的是(C)(選擇一項)
A) 數據庫中表的名稱
B) 數據庫服務器的機器名
C) 數據源的名稱
D) 用戶名
36.在Java中,JDBCAPI定義了一組用于與數據庫進行通信的接口和類,它們包括在(B)包中。
A) java.lang
B) java.sql
C) java.util
D) java.math
37.Java中,以下( B )接口以鍵_值對的方式存儲對象。
A) java.util.Collection
B) java.util.Map
C) java.util.List
D) java.util.Set
38.以下關于對象序列化描述正確的是( C,D )[兩項]
A) 使用FileOutputStream可以將對象進行傳輸
B) 使用PrintWriter可以將對象進行傳輸
C) 使用ObjectOutputStream類完成對象存儲,使用ObjectInputStream類完成對象讀取
D) 對象序列化的所屬類需要實現Serializable接口
39.在Java中,( A )類可用于創建鏈表數據結構的對象。
A) LinkedList
B) ArrayList
C) Collection
D) HashMap
40.分析下面這段Java代碼,它的運行結果是( C )。
Import java.io.*;
Public class B{
Public static void main(string [] args){
int i=12;
System.out.println(i+=i-=i*=i);}}
A) 100
B) 0
C) -120
D) 程序無法編譯
41.使用JDBC事務的步驟是(C,A,B,D)(多選)
A) 取消Connection的事務自動提交方式
B) 發生異;貪L事務
C) 獲取Connection對象
D) 操作完畢提交事務
42.以下對JDBC事務描述錯誤的是( B )
A) JDBC事務屬于JAVA事務的一種
B) JDBC事務屬于容器事務類型
C) JDBC事務可以保證操作的完整性和一致性
D) JDBC事務是由Connection發起的,并由Connection控制
43.要通過可滾動的結果集更新數據,以下正確的是(A
A) pst=con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE)
B) pst=con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY)
C) pst=con.prepareStatement(sql, Resu ltSet.TYPE_SCROLL_SENSITIVE)
D) pst=con.prepareStatement(sql, ResultSet.CONCUR_UPDATABLE)
44.存儲過程pro有兩個參數,第一個為輸入參數,第二個為輸出參數,以下代碼正確的是(C)
A) CallableStatement cst=con.prepareCall(“(call pro(?,?))”);
B) CallableStatement cst=con.prepareCall(“(call pro(?))”);
C) CallableStatement cst=con.prepareCall(“{call pro(?,?)}”);
D) CallableStatement cst=con.prepareCall(“{call pro(?,?,?)}”);
45.以下描述正確的是(B)
A) CallableStatement是PreparedStatement的父接口
B) PreparedStatement是CallableStatement的父接口
C) CallableStatement是Statement的子接口
D) PreparedStatement是Statement的父接口
46.要刪除book表中書籍(bookName)是”java”的記錄,以下代碼正確的是(A
String sql=” from book where bookName=?”;
PreparedStatement pst=con.preparedStatement(sql);
______________________________
pst.execute( );
A) pst.setString(1,”java”);
B) pst.setString(0,”java”);
C) pst.setInt(0,”java”);
D) 以上選項都不正確
47.獲取ResutlSet對象rst的第一行數據,以下正確的是(B)
A) rst.hashNext( );
B) rst.next( );
C) rst.first( );
D) rst.nextRow( );
48.以下可以正確獲取結果集的有(AD)(多選)
A) Statement sta=con.createStatement( );
ResultSet rst=sta.executeQuery(“select * from book”);
B) Statement sta=con.createStatement(“select * from book”);
ResultSet rst=sta.executeQuery( );
C) PreparedStatement pst=con.preparedStatement( );
ResultSet rst=pst.executeQuery(“select * from book”);
D) PreparedStatement pst=con.preparedStatement(“select * from book”);
ResultSet rst=pst.executeQuery( );
49.以下負責建立與數據庫連接的是(D)
A) Statement
B) PreparedStatement
C) ResultSet
D) DriverManager
50.使用JDBC連接數據庫的順序是(B,A,D,C,E)(多選)
A) 加載驅動
B) 導入驅動包
C) 發送并處理SQL語句
D) 建立于數據庫的連接
E 關閉連接
二、簡答題(各5分,共25分)
1、在java中如果聲明一個類為final,表示什么意思? (不計分)
答:final是最終的意思,final可用于定義變量、方法和類但含義不同,聲明為final的類不能被繼承。
1、父類的構造方法是否可以被子類覆蓋(重寫)?
答:父類的構造方法不可以被子類覆蓋,因為父類和子類的類名是不可能一樣的。
2、請講述String 和StringBuffer的區別。
答:String 類所定義的對象是用于存放”長度固定”的字符串。
StringBuffer類所定義的對象是用于存放”長度可變動”的字符串。
3、如果有兩個類A、B(注意不是接口),你想同時使用這兩個類的功能,那么你會如何編寫這個C類呢?
答:因為類A、B不是接口,所以是不可以直接繼承的,但可以將A、B類定義成父子類,那么C類就能實現A、B類的功能了。假如A為B的父類,B為C的父類,此時C就能實現A、B的功能。
4、結合Java視頻Lesson5(多線程),分析sleep( )和wait( )方法的區別。
答: Sleeping睡眠的意思 : sleep( ) 方法用來暫時中止執行的線程。在睡眠后,線程將進入就緒狀態。
waiting等待的意思: 如果調用了 wait( ) 方法,線程將處于等待狀態。用于在兩個或多個線程并發運行時。
5、談談你對抽象類和接口的理解。
答:定義抽象類的目的是提供可由其子類共享的一般形式、子類可以根據自身需要擴展抽象類、抽象類不能實例化、抽象方法沒有函數體、抽象方法必須在子類中給出具體實現。他使用extends來繼承。
接口:一個接口允許一個類從幾個接口繼承而來,Java 程序一次只能繼承一個類但可以實現幾個接口,接口不能有任何具體的方法,接口也可用來定義可由類使用的一組常量。其實現方式是interface來實現。
Java工程師筆試題 2
1.J2EE 是什么?它包括哪些技術?
解答:從整體上講,J2EE 是使用 Java 技術開發企業級應用的工業標準,它是 Java 技術不斷適應和促進企業級應用過程中的產物.適用于企業級應用的 J2EE,提供一個平臺 獨立的、可移植的、多用戶的、安全的和基于標準的企業級平臺,從而簡化企業應用的開發、管理和部署。J2EE 是一個標準,而不是一個現成的產品。
主要包括以下這些技術:
1) Servlet
Servlet 是 Java 平臺上的 CGI 技術。Servlet 在服務器端運行,動態地生成 Web 頁面。與傳統的 CGI和許多其它類似 CGI 的技術相比,Java Servlet 具有更高的效率并更容易使用。對于 Servlet,重復的請求不會導致同一程序的多次轉載,它是依靠線程的方式來支持并發訪問的。
2)JSP
JSP(Java Server Page)是一種實現普通靜態 HTML 和動態頁面輸出混合編碼的技術。從這一點來看,非常類似 MicrosoftASP、PHP 等技術。借助形式上的內容和外觀表現的分離,Web 頁面制作的任務可以比較方便地劃分給頁面設計人員和程序員,并方便地通過JSP 來合成。在運行時態,JSP 將會被首先轉換成 Servlet,并以 Servlet 的形態編譯運行,因此它的效率和功能與 Servlet 相比沒有差別,一樣具有很高的效率。
3) EJB
EJB 定義了一組可重用的組件:Enterprise Beans。開發人員可以利用這些組件,像搭積木一樣建立分布式應用。
4)JDBC
JDBC(Java Database Connectivity , Java 數據庫連接)API 是 一 個 標 準 SQL(Structured QueryLanguage,結構化查詢語言)數據庫訪問接口,它使數據庫開發人員能夠用標準 Java API 編寫數據庫應用程序。JDBC API 主要用來連接數據庫和直接調用 SQL 命令執行各種 SQL 語句。利用 JDBC API 可以執行一般的 SQL 語句、 動態 SQL 語句及帶 IN 和 OUT 參數的存儲過程。 Java 中的 JDBC 相當于 Microsoft平臺中的 ODBC(Open DatabaseConnectivity)。
2.測試生命周期、測試過程分為幾個階段,以及各階段的含義?
解答:軟件測試生命周期一般包括 6 個階段:1)計劃 2)分析,3)設計,4)構建,5)測試周期,6)最后測試和實施,1) 計劃:產品定義階段2).分析:外部文檔階段3).設計:文檔架構階段4).構建:單元測試階段5).測試周期:錯誤修正,重復系統測試階段6).最后的測試和實施:代碼凍結階段
4.什么是 Web 容器?
解答:容器就是一種服務程序,在服務器一個端口就有一個提供相應服務的程序,而這個程序就是處理從客戶端發出的請求,如 JAVA 中的 Tomcat 容器,ASP 的 IIS 或 PWS 都是這樣的容器。
5.運行時異常與一般異常有何異同?
解答:異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java 編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。
9.試述數據庫完整保護的主要任務和措施。
解答:數據庫的完整性保護也就是數據庫中數據正確性的維護。數據庫完整性包括三個內容:實體完整性規則,參照物完整性規則以及用戶定義完整性規則。前兩個是有 DBMS 自動處理。實體完整性規則是說針對于基表中的關鍵字中屬性值不能為空值,是數據庫完整性的基本要求,主關鍵字和元組的唯一性對應。參照物完整性規則是不允許引用不存在的元組:即基表中的外關鍵字要么為空,要么關聯基表中必存在元組。用戶定義完整性規則針對具體的數據環境由用戶具體設置的規則,它反應了具體應用中的語義要求。一個完整性規則一般由下面三部分組成:完整性約束條件設置,完整性約束條件的檢查以及完整性約束條件的處理.后兩部分在數據庫中一般有相應的模塊處理。另外觸發器也可以做完整性的保護,但觸發器大量用于主動性領域。
12.類有哪三個基本特性?各特性的優點?
解答:類具有封裝性、繼承性和多態性。
封裝性:類的封裝性為類的成員提供公有、缺省、保護和私有等多級訪問權限,目的是隱藏類中的私有變量和類中方法的實現細節。
繼承性:類的繼承性提供從已存在的類創建新類的機制,繼承(inheritance)使一個新類自動擁有被繼承類(父類)的全部可繼承的成員。
多態性:類的多態性提供類中方法執行的多樣性,多態性有兩種表現形式:重載和覆蓋。
13.談談對 XML 的理解?說明 Web 應用中 Web.xml 文件的作用?
解答:XML(Extensible Markup Language)即可擴展標記語言,它與 HTML 一樣,都是 SGML(Standard GeneralizedMarkup Language,標準通用標記語言)。Xml 是 Internet 環境中跨平臺的,依賴于內容的技術,是當前處理結構化文檔信息的有力工具。擴展標記語言 XML 是一種簡單的數據存儲語言,使用一系列簡單的標記描述數據,而這些標記可以用方便的方式建立,雖然 XML 占用的空間比二進制數據要占用更多的空間,但 XML 極其簡單易于掌握和使用。web.xml的作用是配置歡迎頁,servlet,filter,listener 等的。
14.jsp 有哪些內置對象?作用分別是什么?(至少三個)
解答:1)request 表示 HttpServletRequest 對象。它包含了有關瀏覽器請求的信息,并且提供了幾個用于獲取cookie, header 和 session 數據的有用的方法。
2)response 表示 HttpServletResponse 對象,并提供了幾個用于設置送回瀏覽器的響應的方法(如cookies,頭信息等)。
3)out 對象是javax.jsp.JspWriter 的一個實例, 并提供了幾個方法使你能用于向瀏覽器回送輸出結果。
4)pageContext 表示一個 javax.servlet.jsp.PageContext 對象。它是用于方便存取各種范圍的名字空間、servlet 相關的對象的 API,并且包裝了通用的servlet 相關功能的方法。
5)session 表示一個請求的 javax.servlet.http.HttpSession 對象。Session 可以存貯用戶的狀態信息。
6)application 表示一個 javax.servle.ServletContext 對象。這有助于查找有關 servlet 引擎和servlet 環境的信息。
7)config 表示一個 javax.servlet.ServletConfig 對象。該對象用于存取 servlet 實例的初始化參數。
8)page 表示從該頁面產生的一個servlet 實例。
9)exception 針對錯誤網頁,未捕捉的例外
15.事務是什么?有哪些屬性,并簡要說明這些屬性的`含義。
解答:事務(Transaction)是訪問并可能更新數據庫中各種數據項的一個程序執行單元(unit)。事務通常由高級數據庫操縱語言或編程語言(如 SQL,C++或 Java)書寫的用戶程序的執行所引起,并用形如 begin transaction 和 end transaction 語句(或函數調用)來界定。事務由事務開始(begintransaction)和事務結束(end transaction)之間執行的全體操作組成。事務應該具有 4 個屬性:原子性、一致性、隔離性、持續性。這四個屬性通常稱為 ACID 特性。
(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的諸操作要么都做,要么都不做。
一致性(consistency)。事務必須是使數據庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對并發的其他事務是隔離的,并發執行的各個事務之間不能互相干擾。
持久性(durability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。
19、HashMap 和 Hashtable 的區別?
解答:HashMap 是 Hashtable 的輕量級實現(非線程安全的實現) ,他們都實現了 Map 接口,主要區別在于HashMap 允許空(null)鍵值(key),由于非線程安全,效率上高于 Hashtable。HashMap 允許將 null 作為一個 entry 的 key 或者 value, Hashtable 不允許HashMap 把 Hashtable 的 contains方法去掉了,改成 containsvalue 和 containsKey。因為 contains 方法容易讓人引起誤解Hashtable繼承自 Dictionary 類,而 HashMap 是 Java1.2 引進的 Map interface 的一個實現。最大的不同是,Hastable 的方法是 synchronize 的,而 HashMap 不是,在多個線程訪問 Hashtable 時,不需要自己為s它的方法實現同步,而 HashMap 就必須為之提供同步。
20.請說出 ArrayList,Vector, LinkedList 的存儲性能和特性
解答: ArrayList 和 Vector 都是使用數組方式存儲數據,此數組元素數大于實際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等內存操作,所以索引數據快而插入數據慢,Vector 由于使用了 synchronized 方法(線程安全),通常性能上較ArrayList 差,而 LinkedList 使用雙向鏈表實現存儲,按序號索引數據需要進行前向或后向遍歷,但是插入數據時只需要記錄本項的前后項即可,所以插入速度較快。
21.描述 J2EE 框架的多層結構,并簡要說明各層的作用。
解答:
1)Presentation layer(表示層)
a.表示邏輯(生成界面代碼)
b.接收請求
c.處理業務層拋出的異常
d.負責規則驗證(數據格式,數據非空等)
e.流程控制
2) Service layer(服務層/業務層)
a.封裝業務邏輯處理,并且對外暴露接口
b.負責事務,安全等服務
3) Persistence layer(持久層)
a.封裝數據訪問的邏輯,暴露接口
b.提供方便的數據訪問的方案(查詢語言,API,映射機制等)
4)Domain layer(域層)
a.業務對象以及業務關系的表示
b.處理簡單的業務邏輯
c.域層的對象可以穿越表示層,業務層,持久層軟件分層結構使得代碼維護非常方便,設計明確,各層獨立,專注自己擅長的領域。
23.簡要描述如何結合 struts、hibernate、spring 開發 Web 應用?
解答:Struts 可以將 jsp 頁面的表單關聯起來,就是把 JSP 頁面的表單數據封裝成 javaBean,這樣的話,在 action 中你再也不需要使用傳統的 request.getParameter("name");還有 struts 有一個控制器,你在 struts 編程中的控制器(XxxAction)都是繼承總的 ActionServlet,它能集中處理請求,然后轉到相關的頁面。還有 struts 的表單驗證組件,不用你寫 js 驗證了,只需要你配置一下文件就可以了。另外 struts 的令牌機制可以防表單重復提交。
Spring 是一個輕量級容器,非侵入性.包含依賴注入,AOP 等。它是為了解決企業應用程序開發復雜性而創建的?蚣艿闹饕獌瀯葜痪褪瞧浞謱蛹軜嫞謱蛹軜嬙试S您選擇使用哪一個組件,同時為J2EE 應用程序開發提供集成的框架。
Hibernate:它可以讓我們以 OO 的方式操作數據庫,這讓我們看到了 hibernate 的強大之處,體驗到操作數據的方便。但 hibernate 最耀眼之處是 hibernate 的緩存機制,而不是以 OO 的方式操作數據庫。Hibernate 的緩存機制不外乎是一級緩存 session,二級緩存 sessionFactory,和第三方緩存 如 ehcache 。 也就 是 hibernate 的 最 強大 的地 方 是 它的 緩存 , 理解了 這 個 才能 真正 的 理解hibernate,Hibernate 的命名查詢/命名參數查詢, 就是將 hql 語句放在一個單獨的 xml 文件之中, 它仍然讓人們以面向對象的方式去操縱數據,而不用在以 OO 的方式寫著代碼的同時,然后再轉變思維,用面向關系的方式去寫那些 sql 語句。但 hibernate不僅做了這些,它的native sql 查詢方式,完全滿足 sql 語句的偏愛者,它像 ibatis 一樣,將 sql 語句放在配置文件之中
24.列出自己常用的 jdk 包
解答:JDK 常用的 package
java.lang:這個是系統的基礎類,比如 String 等都是這里面的,這個 package 是唯一一個可以不用 import 就可以使用的 Package
java.io: 這里面是所有輸入輸出有關的類,比如文件操作等
java.net: 這里面是與網絡有關的類,比如 URL,URLConnection 等。
java.util : 這個是系統輔助類,特別是集合類 Collection,List,Map 等。
java.sql: 這個是數據庫操作的類,Connection, Statememt,ResultSet 等
【Java工程師筆試題】相關文章:
Java工程師面試題03-29
Java工程師面試題及答案03-14
java軟件開發工程師筆試題10-26
java中級工程師面試題03-30
軟通動力Java工程師筆試題08-07
某公司Java工程師面試題筆試題目04-03
java筆試題10-26
Java工程師面試?荚囶}及答案03-12