內容簡介
本書的主要內容:
第一篇(第1章)介紹了求職面試前都需要做好哪些準備工作:如何做好自己的職業規劃;掌握面試的流程,在以後的面試中不會感到陌生,消除恐懼;怎樣製作一個令人滿意、訪問量高的簡歷;去參加面試的時候著裝上都需要注意什麼;了解面試官會經常問的問題,以備不時之需;對於多個offer(錄用通知)需要選擇時,是選擇大公司還是小公司?
第二篇(第2章~第13章)介紹了Java程式設計師涉及的基礎知識,內容包括Java語言基礎、異常的處理、I/O控制流、面向對象編程、執行緒、集合以及資料庫技術等基本知識點。
第三篇(第14章~第16章)專門介紹了Java開發的高端Web開發的相關題目,內容包括J2EE技術、XML/UML以及Servlet/JSP技術。
第四篇(第17章~第18章)專門介紹了基本的上機編程題目,涉及常見的算法、字元串操作和常見的排序原理相關題目。同時介紹了常見的對資料庫操作的SQL語句。另外還介紹了當前經常出現的思維拓展題目,首先介紹了思維拓展編程題目,該題目的特點是需要自己建立模型,然後編程實現;最後介紹了一些智力測試題,幫助讀者熟悉出題思路和解答技巧。
本書具有涉及面廣、分析透澈徹、實例精彩的特點,力求以全面的知識性及豐富的實例來指導讀者突破面試難關,非常適合剛走出校門,初次進入IT領域的畢業生使用;同時也可以作為國中級Java程式設計師以及想了解Java或者相關技術的人員的參考書籍,特別適合想從事Java程式開發的畢業生學習使用。
前言
從企業面試的角度來梳理Java程式設計師的技術功底
以技術經理的眼光來審視對Java編程知識的掌握
隨著Java框架的逐漸成熟,其功能越來越強大,使用越來越簡便,其使用範圍越來越廣,使用人數也越來越多。Java在帶來方便的同時,無形中也帶了不便,作為軟體開發的王牌語言,各企業對Java程式設計師的要求也不斷的提升,所以,求職面試成了Java程式設計師們最頭疼又不得不面對的現實。為了給廣大Java程式設計師面試提供最貼心的指導,作者蒐集整理了大量Java程式設計師面試的資料,並結合自己主持面試的經歷,寫作了本書,希望能對廣大Java程式設計師的面試具有一定的指導意義。
求職者在面試中的常見問題
同樣作為軟體開發出身的我,身邊有朋友,也有同事。在和他們交談的過程中,我發現如今的面試難度要比以往難得多,自以為準備得很充分,胸有成竹地認為可以順利通過,但事實並非如同他們預想的那樣,面試常見的問題如下:
(1)面試過程中不是題目頗深就是難度頗大,不經過縝密細緻的思考是不會得出正確答案的。例如:,String s = new String("xyz");創建了幾個String Object呢?這個問題還真得好好想想,不要輕易地下結論。
(2)陷阱是又多又狠,隱藏得很深,沒有一雙慧眼還真難辨虛實。例如:,if(-0.0 == 0.0)是相等還是不等?
(3)面試的花樣也越來越多,在比較傳統的筆試→面試的基礎上,又增加了相當折磨人的“魔鬼測試”→“壓力測試”,而且這種測試相當火,很多招聘企業都在使用。例如:,“你都將自身排到最終一名了,你還會被錄用嗎?”如果你是面試者該怎樣回答呢?
(4)增加了綜合測試及外語能力測試。如今商品都實行了面向全球化,自然IT領域也有面向全球的發展驅趨勢,同時,隨著越來越多的外藉籍人員的加入,很多企業不得不對外語提高重視力度。面對這樣那樣的問題,有些經驗豐富的高級程式設計師都應接不暇,更何況是剛走出校園的白面小生。例如:,考官會讓面試者用英文進行自我介紹,這是外語能力測試最基礎的測試內容。
本書的特點
針對上面的種種情況,筆者憑藉在IT界多年的工作經驗和多個大型實際項目開發的優勢,由原來的一個普通職員晉升為一個去考別人的主考官,主要負責公司技術人員的面試工作,通過一年多的面試經驗和與公司內資歷比較深厚的HR經理的多次交流,總結了一些面試中常見的問題,對考官提出的災難性問題給出了巧妙的應答。從面試題目內容的角度總結和歸納出知識點,幫助讀者快速準備Java程式設計師的面試,提高晉級的機會。
需要聲明的是,本書不是一本教程,不會細緻到每一個操作步驟的說明、每一個細節的詳細講解、每一個開發工具的安裝過程。本書主要是為有了一定Java基礎卻無法應對面試的人而服務的。通過一些建議和方法幫助他們儘快就職。
建議讀者在熟練掌握相關技術內容後再閱讀本書,也不要認為“寶典”是一本萬能書,一個合格的程式設計師,不是混過面試就能萬事大吉的,具備扎紮實實的編程技術才是最重要的。本書具有如下特點:
· 針對性強,用來幫助讀者應對Java程式設計師面試。主要包括職業規劃的設定、中英文簡歷的製作、簡歷投遞的注意事項、如何加大簡歷的瀏覽數量、面試的相關流程和應對突發事件的技巧等。
· 考前回顧,在進入每章的試題分析之前,都會有相應的知識點回顧,可以幫助讀者理解該章的考試重點。
· 選取各大公司的經典試題,每個試題都會有詳細的試題分析,可以幫助讀者加深理解。
· 層次分明,會對重點內容進行細緻的講解和描述,對次要的內容講解篇幅略短,有的甚至會一帶而過,可以幫助讀者分清主次,了解應該在哪些地方多下功夫下工夫,不會出現盲目不知所措的局面。
· 涉及內容廣泛,涉及技術新,例如在其他相關面試書籍中從未出現過的EJB3.0規範等內容。
· 操作性強,本書含有大量經典的、出現頻率頗高的上機測試題,可以幫助讀者加深理解。
作者
本書主要由張昆編寫,其他參與編寫的人員有張增強、方振宇、陳冠佐、傅奎、陳勤、梁洋洋、畢夢飛、陳慶、柴相花、陳非凡、陳華、陳嵩、承卓、陳先在、樊麗、房健、陳科、公芳亮、郭剛、陳松、季國飛。
目錄
第一篇 求職你準備好了嗎
第1章 面試前必須知道的幾件事 18
一次次的求職面試考試,就像一場場無形的戰役一樣,決定著不同的人生和不同人的命運。如果想在戰役中取得勝利,就必須做到知己知彼,才能百戰百勝。想要在眾多對手中脫穎而出,靠的不再是健壯的體魄,而是靈敏的思維和充分的準備,在戰鬥即將打響之際,你準備好了嗎?通過學習本書,你將準備充分,信心十足,摩拳擦掌等待戰場上大顯身手的那一刻。
1.1 做好自己的職業規劃 18
1.1.1 走好職業生涯第一步 18
1.1.2 確定符合自己的人生目標 19
1.1.3 緊跟社會發展的步伐 19
1.1.4 為職業生涯畫上圓滿的句號 20
1.2 面試的流程 20
1.2.1 填寫求職申請表 20
1.2.2 筆試 20
1.2.3 面試 21
1.2.4 壓力測試 23
1.2.5 外語能力測試 24
1.2.6 綜合測試 24
1.3 一個漂亮的簡歷 25
1.3.1 中文簡歷的製作 25
1.3.2 英文簡歷的製作 26
1.3.3 如何用E-mail投遞簡歷 27
1.3.4 簡歷瀏覽量低的原因 28
1.3.5 華麗的辭藻未必是美的 29
1.3.6 簡歷被篩選的秘密 30
1.4 著裝要注意的問題 30
1.4.1 面試著裝(男生篇) 30
1.4.2 面試著裝(女生篇) 31
1.5 面試官經常問到的幾個問題 31
問題1 談談你的缺點 31
問題2 你為什麼選擇我們公司 32
問題3 對這項工作,你有哪些可預見的困難 32
問題4 如果我錄用你,你將怎樣開展工作 32
問題5 與上級意見不一時,你將怎么辦 33
問題6 你能為我們做什麼 33
問題7 你是應屆畢業生,缺乏經驗,如何能勝任這項工作 33
問題8 你希望與什麼樣的上級共事 34
問題9 你在前一家公司離職的原因是什麼 34
問題10 你以前的上級對你的評價如何 35
問題11 如果你的工作出現失誤,給本公司造成經濟損失,你認為該怎么辦 35
問題12 怎樣理解團隊?請舉例並說明啟示 36
1.6 大公司VS小公司 36
1.6.1 大公司VS小公司的區別 36
1.6.2 大公司的利和弊 37
1.6.3 小公司的利和弊 37
第二篇 Java程式設計
第2章 Java程式基礎 40
學好Java最重要的一個步驟就是上機編程,熟悉Java的開發運行環境是成為一個Java程式設計師的第一步。通過Java編程基礎方面的考查,可以全面體現面試者對於Java語言的理解程度和熟練程度。在本章內容中通過真實的面試題,從多個角度講解Java編程基礎部分的考點,使面試者能夠快速掌握Java面試的要領,提高自己在面試中成功的機率。
2.1 環境搭建與開發 40
面試題1 如何在Linux環境下安裝JDK 44
面試題2 如何編譯運行應用程式 46
面試題3 Java開發工具 48
面試題4 關於Java命令提示符的問答題 49
2.2 Java語言概述 52
面試題5 關於Java命名規範的代碼分析題 53
面試題6 關於Java代碼安全的選擇題 54
面試題7 關於Java語言的特性的問答題 55
面試題8 關於Java的類和對象的選擇題 56
2.3 變數與常量 57
面試題9 變數及其範圍 57
面試題10 根據代碼找出錯誤原因 58
面試題11 修改錯誤代碼 59
面試題12 關於靜態方法的代碼分析題 59
面試題13 關於在類中定義方法的選擇題 60
面試題14 關於main()的選擇題 60
面試題15 關於靜態變數的選擇題 60
面試題16 關於實例成員和類成員區別 61
面試題17 找出錯誤的代碼 63
第3章 Java語言符號 65
Java程式語言同其他程式語言一樣,也是由語法規則和語義定義組成的。語法規則制定了由語言元素構造合法的句式,語義定義則解釋了這些句式的含義,應深刻理解各知識點的概念,牢記一些Java的語法,從而達到學習的目的。
3.1 標識符 65
面試題1 選擇合法的標識符 65
面試題2 找出錯誤的代碼 66
3.2 關鍵字 67
面試題3 Java中的關鍵字1 67
面試題4 Java中的關鍵字2 68
面試題5 關鍵字語法含義 68
3.3 分隔設定 69
面試題6 Java中的注釋1 70
面試題7 Java中的注釋2 70
3.4 算數運算符 71
面試題8 求表達式的結果 74
面試題9 編程計算103的值 74
3.5 關係運算符 75
面試題10 確定x的取值範圍 75
面試題11 equals()和== 76
面試題12 分析程式寫出結果 77
3.6 邏輯運算符 77
面試題13 根據程式選擇正確的運行結果 80
3.7 位運算符 80
面試題14 指出錯誤代碼的位置 84
面試題15 選出相等的值 85
面試題16 根據代碼,推測結果 85
3.8 條件運算符 86
面試題17 關於條件運算符的操作規則 86
3.9 賦值運算符 87
面試題18 選出正確的賦值語句 88
3.10 優先權和結合性 88
面試題19 運算符的結合性測試 89
面試題20 寫出程式運行結果 90
第4章 數據類型及類型轉換 91
數據類型是指數據的內在表現形式。Java語言是一個強調數據類型的語言,在聲明任何變數時,必須將該變數定義為一種數據類型。根據數據的不同形式,數據劃分為多種不同的類型。數據類型不同,所進行的運算就不同,取值範圍也不同。Java提供的數據類型包括基本數據類型和複合數據類型。
4.1 整型數據 91
面試題1 int和Integer有什麼區別 92
面試題2 正確的賦值方式 93
面試題3 選擇合法的聲明 93
面試題4 正確表示八進制值 94
面試題5 Java的原始數據類型 94
面試題6 int的取值範圍 95
面試題7 根據代碼選擇正確的答案 95
面試題8 正確表示10的十六進制值 96
面試題9 判斷表達式的正誤 96
4.2 實型數據 96
面試題10 選出對float變數的合法聲明 98
面試題11 正確的賦值 98
面試題12 合法的聲明 99
4.3 字元型數據 99
面試題13 char的取值範圍 100
面試題14 哪些表達式的結果是正確的 101
面試題15 在char中是否能存儲漢字 101
4.4 布爾型數據 102
面試題16 對boolean型變數的聲明哪個是正確的 103
面試題17 選出合法的表達式 103
4.5 數據類型轉換 104
面試題18 選出合法的類型轉換 107
面試題19 基本數據類型與String之間的轉換 108
4.6 值傳遞 108
面試題20 選擇正確的結果 108
面試題21 final的參數傳遞 111
第5章 數組與字元串 113
本章介紹Java中預定義的兩個類:數組與字元串。它們也是所有程式設計語言必須要處理的兩類數據結構。在傳統語言(如C)中,數組和字元串都只是一片連續的記憶體空間,用於存放同類型的數據,語言本身並沒有為它提供更多的支持。Java將其設計為對象,內置了更多的方法,降低了程式設計師的工作量。另外,Java會對數組的下標進行檢測,如果有下標越界的情況,就會及時報告,避免了困擾C/C++程式設計師的一大難題。
5.1 一維數組 113
面試題1 選擇合法的數組聲明 115
面試題2 對數組進行初始化 116
面試題3 默認初始化 116
面試題4 根據代碼選擇正確的答案 117
面試題5 根據代碼選出對結果正確描述的選項 118
面試題6 編程題(求最大數) 118
5.2 二維數組 119
面試題7 判斷程式的運行結果 122
面試題8 將正確的選項插入指定的位置 123
面試題9 選擇二維數組的合法聲明 123
面試題10 獲得數組的大小 124
面試題11 編程題(根據要求設計程式) 124
5.3 類String字元串 127
面試題12 分析代碼的輸出結果 130
面試題13 String的數據類型 131
面試題14 判斷程式的返回結果 131
面試題15 判斷創建的對象個數 132
5.4 類StringBuffer字元串 133
面試題16 String和StringBuffer的區別 135
面試題17 正確的構造方法 135
面試題18 setLength方法的作用 136
第6章 流程控制 137
什麼是流程控制?流程就是做一件事情的順序,或者說是次序。在程式設計中,流程就是要完成一個功能,而流程控制則是指如何在程式設計中控制完成某種功能的次序。
語句是程式的控制成分,它具有特定的語法規則和嚴格的表達方法,用來控制程式的運行,因此語句也是一些具有結構化的控制結構。這些控制結構可以歸為三類:順序結構、選擇結構和循環結構。實現這些控制結構的語句可分為5類:表達式語句、複合語句、分支語句、循環語句和跳轉語句。本章將逐一介紹這些語句。
6.1 if控制語句 137
面試題1 分析代碼的運行結果 140
面試題2 寫出if語句的運行結果 140
面試題3 分析程式代碼是否有錯 141
面試題4 編程題 142
6.2 switch控制語句 142
面試題5 分析代碼的運行結果 144
面試題6 根據已知結果選擇未知條件 145
面試題7 switch語句的使用範圍 146
面試題8 找出代碼中的錯誤並改正 146
面試題9 編程題 147
6.3 循環控制語句 147
面試題10 選出錯誤代碼的位置(while) 151
面試題11 分析代碼選擇正確的
答案(for) 152
面試題12 寫出程式的運行結果(do-while) 153
面試題13 判斷do…while語句的輸出結果 153
面試題14 編程題 154
6.4 跳轉控制語句 156
6.4.1 break跳轉語句 156
6.4.2 continue跳轉語句 157
6.4.3 return返回語句 159
面試題15 分析程式的運行結果 160
面試題16 關於break和continue的描述哪些是正確的 161
面試題17 可以返回最大值的方法 161
面試題18 編程題 162
第7章 異常處理及記憶體管理 163
在實際項目開發過程中,經常會遇到這樣的問題,例如某程式在編譯時沒有產生錯誤信息,但在程式運行時,經常會出現一些運行時的錯誤,這種錯誤對Java而言就是一種異常。異常指的是程式在運行時發生的錯誤或者不正常的狀況,有了異常就要有相應的處理方式。異常處理是Java的一個優點,在異常處理中,它的處理機制設計先進、使用方便,不僅提高了程式的健壯性,而且還大大降低了程式設計師的編程工作量。因此想成功地成為一名合格的Java程式設計師,掌握好異常處理機制是編寫大型程式必不可少的基本功。
7.1 異常的分類 163
面試題1 運行時異常與一般異常的異同 165
面試題2 所有異常的基礎類 166
7.2 異常的處理方式之一:try/catch 166
面試題3 分析代碼的運行結果 168
面試題4 對try-catch-finally的正確理解 169
面試題5 分析代碼的運行結果 169
7.3 異常的處理方式之二:throws 170
面試題6 正確的異常聲明方式 172
面試題7 使用throws處理異常 172
7.4 異常的處理方式之三:throw 173
面試題8 分析程式的運行結果 175
面試題9 異常處理 176
7.5 記憶體的管理 178
面試題10 垃圾回收 178
面試題11 對象在什麼地方變得
適用於垃圾收集 180
面試題12 對垃圾回收的正確描述 181
面試題13 關於finalize()的正確描述 182
面試題14 垃圾收集 184
面試題15 Sun公司程式設計師考試中的
常見題型 184
第8章 輸入/輸出流 186
如果一個應用程式沒有輸入和輸出,那么就不能給使用者提供所需要的信息。輸入和輸出也是整個應用程式為用戶提供的接口,讓用戶能夠清楚此應用程式的目的是什麼、要做什麼等。例如,從鍵盤上輸入一些數據,在顯示器上顯示數據,並將其存入一個檔案中,這些都會涉及信息輸入/輸出的處理。在Java中,信息的輸入和輸出(I/O)是程式設計語言中一個很重要的部分。I/O就是指應用程式對這些設備的數據輸入與輸出,在程式中,鍵盤被用做檔案輸入,顯示器被用做檔案輸出。
8.1 File類 186
8.1.1 目錄和檔案管理 186
8.1.2 隨機存取檔案Random
AccessFile類 188
面試題1 FileInputStream類構造方法的參數 192
面試題2 建立檔案“file.txt” 192
8.2 Stream類 192
8.2.1 位元組流的處理方式 193
8.2.2 Reader類和Writer類 196
8.2.3 FileReader和FileWriter類 199
8.2.4 BufferedReader和BufferedWriter類 200
面試題3 InputStream類中的方法 202
面試題4 什麼是System.out 202
面試題5 分析代碼的編譯運行結果 203
面試題6 將字元寫入檔案末尾 203
面試題7 補全程式 204
面試題8 創建一個InputStream
Reader的實例 205
面試題9 編程題 205
第9章 面向對象 207
面向對象編程(Object Oriented Programming,OOP)對於IT界的將士來說並不陌生,因為從跨入IT界的大門開始,首先接觸的就是OOP,每個人每天都在說OOP,要有OOP思想,但是什麼是OOP?什麼是OOP思想呢?不論是剛接觸Java的小將,還是工作多年的老將,對這個問題都感到很茫然,感覺很抽象化,腦海里只是一個模糊的概念,因為問題的抽象化,理解的難度大,所以大部分的招聘企業將其作為考核的標準,因此如何理解OOP設計思想、繼承及接口等是面試中常見的考試內容。
9.1 抽象 207
9.2 繼承 208
面試題1 分析程式的輸出結果 210
面試題2 根據給定代碼判斷輸出
結果 211
面試題3 對程式的正確分析 212
9.3 封裝 213
9.3.1 成員變數的封裝 213
9.3.2 成員函式的封裝 215
面試題4 類的描述 216
面試題5 對封裝的理解 217
9.4 多態 217
9.4.1 方法重載 217
9.4.2 方法重寫 218
面試題6 分析所執行的代碼 219
面試題7 分析代碼的運行結果 220
面試題8 實現多態的機制 221
9.5 內部類 222
面試題9 實例分析 222
9.5.1 在類中創建一個內部類的實例 223
9.5.2 在對象中創建一個內部類的
實例 224
9.5.3 關於final聲明的一個實例 225
面試題10 分析代碼的輸出結果 227
面試題11 關於內部類的問答題 228
面試題12 找出代碼中的錯誤 228
9.6 抽象類 228
面試題13 關於抽象方法的問題 231
面試題14 編程題,仔細看清代碼的
需求 231
9.7 接口 233
面試題15 抽象類和接口的區別 235
面試題16 根據代碼找出錯誤 235
9.8 方法的重寫和重載 236
9.8.1 方法重寫的實例 236
9.8.2 方法重載的實例 237
面試題17 重寫和重載的區別 239
面試題18 哪些方法可以加入類
Man中 239
9.9 構造函式 240
9.9.1 合法的構造函式 240
面試題19 選擇合法的構造函式 241
9.9.2 構造函式重載 241
面試題20 寫出程式的運行結果 242
面試題21 關於構造函式的選擇題 244
面試題22 指出代碼的錯誤之處 244
面試題23 針對this()方法的找錯題 245
第10章 Java的多執行緒 246
到目前為止,在傳統的程式語言裡,大多數的程式設計者習慣上考慮怎樣使程式從頭到尾順序地執行各任務的方法,即一個程式只有一條執行路線,但是在生活中會有很多過程是同時發生的。Java的“多執行緒”恰可彌補這個缺憾,它可以讓不同的程式塊一起運行,可以讓程式運行更為順暢,也可以達到多任務同時處理的目的。
10.1 認識執行緒 246
10.1.1 執行緒的5種狀態 246
10.1.2 關於單執行緒的一個實例 247
面試題1 關於執行緒基礎的簡答題 248
面試題2 對執行緒的正確敘述 248
10.2 多執行緒的創建方式 249
10.2.1 繼承Thread類創建執行緒的方式 249
10.2.2 實現Runnable接口創建執行緒的方式 250
面試題3 簡要回答創建執行緒的兩種
方式及區別 253
面試題4 對Threads的正確描述 253
10.3 執行緒和進程 253
10.4 執行緒的同步 254
10.4.1 多執行緒同步代碼塊 255
10.4.2 多執行緒同步方法 256
面試題5 執行緒同步的方法 257
面試題6 分析代碼片段 258
面試題7 找出代碼中的錯誤 259
面試題8 分析程式的輸出結果 259
面試題9 指向不同類實例的多執行緒 260
面試題10 編程題(Thread和Runnable) 262
10.5 執行緒的操作 263
面試題11 設定執行緒名稱 263
面試題12 關於isAlive()的推測題 264
面試題13 關於resume()的選擇題 265
面試題14 關於sleep()和write()的簡答題 266
面試題15 關於yield()方法的選擇題 266
面試題16 編程題 266
第11章 包和訪問控制 270
在Java里,可以將具有相似功能和具有共用性質的類和接口放到一個檔案里,這樣既可以劃分類名空間,又可以控制類之間的訪問。再將這些檔案一起編譯執行,如此的程式代碼將更易於維護。同時在將類分割開之後對於類的使用也就有了相應的訪問許可權。本章將介紹如何使用包及訪問控制許可權。
11.1 包的創建及使用 270
11.1.1 包的創建 270
11.1.2 包的使用 271
面試題1 選擇正確的代碼片段 273
面試題2 選擇正確的Java語法 274
面試題3 了解native聲明 274
面試題4 選擇正確的答案 275
11.2 Java常用類庫 275
11.2.1 Java JDK中的常用軟體包 275
11.2.2 容易混淆的軟體包 277
面試題5 Object中hasCode()的返回類型值 278
面試題6 Object類中的clone()方法 280
面試題7 hasCode()與equals() 280
面試題8 Math.abs()方法的使用 280
面試題9 Math. ceil(-6.8)的值等於多少 282
面試題10 誰的值會等於12 282
11.3 訪問控制 283
面試題11 不能被外部類所訪問的修飾符 285
面試題12 只能被同包中的類訪問的修飾符 286
面試題13 正確的聲明 286
面試題14 類中的調用方法 287
第12章 類集框架 288
在計算機科學中,有兩門很重要的課程——數據結構和算法——來告訴你如何完成常見的任務。由於人們對這兩者的學習和理解是相當有難度的,所以Java的設計者為了幫助程式設計師能夠快速越逾壕溝,設計了大量的方法,將常用的數據結構和算法封裝在裡面。這些處理數據結構和算法的類,都統一放在集合庫中,本章就將介紹這些類的使用。
12.1 類集接口 288
12.1.1 Collection接口的使用方法 288
12.1.2 List接口的使用方法 289
12.1.3 Set接口的使用方法 290
12.1.4 SortedSet接口的使用方法 290
12.1.5 Iterator接口的使用方法 291
面試題1 Collection和Collections的區別 291
面試題2 用什麼方法來區分Set里的元素是否重複 292
面試題3 Collection接口的子接口 292
面試題4 集合框架中的核心接口 292
面試題5 可以按序存放元素的集合接口 293
面試題6 根據程式代碼選擇正確的選項 293
12.2 接口實現類的使用 294
12.2.1 List接口的實現類 294
12.2.2 Set接口的實現類 299
12.2.3 Map映射接口 301
面試題7 HashMap和Hashtable的區別 302
面試題8 heap和stack的區別 302
面試題9 常用的類集合 303
面試題10 關於List、Map、Set的問答題 303
面試題11 關於ArrayList、Vector、LinkedList的問答題 303
面試題12 覆蓋方法 303
面試題13 分析代碼的輸出結果 304
面試題14 寫出程式的輸出結果 305
面試題15 接口java.util.Map.Entry中定義的原型是什麼 305
面試題16 如何實現hashCode()方法 306
面試題17 實現Map接口的對象 307
第13章 資料庫 308
本章介紹如何使用Java類庫中的類來編寫資料庫應用程式,資料庫(Database)在程式中扮演著重要的角色。大部分實用的應用程式都會使用資料庫來存儲信息。資料庫與應用程式相互獨立,資料庫負責持久化數據,應用程式負責業務邏輯。要學習資料庫編程,除了學習Java類庫中的有關類如JDBC,還需要專門學習資料庫的查詢語言——SQL,學習這種專門為資料庫設計的語言,就可以在Java程式中編寫資料庫應用程式。語言學習完畢後,還要學習資料庫軟體,對資料庫進行可視化操作。如Oracle、MySQL等大型資料庫。
13.1 SQL 308
13.1.1 SQL的基本數據定義語句 308
13.1.2 SQL的基本數據操作語句 312
13.1.3 SQL中的統計函式 315
面試題1 如何使用LIKE運算符 315
面試題2 如何使用ORDER BY
子句 316
面試題3 對約束的理解 316
面試題4 關於SQL的面試題(中興面試題) 316
13.2 JDBC資料庫編程 317
13.2.1 創建數據源 317
13.2.2 載入驅動程式 320
13.2.3 連線數據源 321
13.2.4 對資料庫的操作 321
面試題5 Connection類中的事物處理方法有哪些 325
面試題6 JDBC連線資料庫的步驟 325
面試題7 用JDBC寫一段程式 325
13.3 Oracle資料庫 327
面試題8 判斷SELECT語句的查詢結果 327
面試題9 處理分組的子句是什麼 327
面試題10 可以返回非空表達式的函式是什麼 327
面試題11 如何理解索引 328
面試題12 PL/SQL的內置數據類型是什麼 328
面試題13 什麼是視圖 328
面試題14 冷備份和熱備份的不同點及其各自的優點 329
面試題15 如何利用備份恢複數據庫 329
13.4 SQL Server資料庫 329
面試題16 COUNT(*)函式的作用是什麼 329
面試題17 請選擇正確的答案 330
面試題18 分析SQL語句的結果 330
面試題19 選擇正確的SQL語句 330
面試題20 TRUNCATE TABLE
命令的作用是什麼 331
面試題21 如何理解BETWEEN…AND 331
面試題22 選擇正確的SELECT語句 331
面試題23 SQL Sever的系統資料庫是什麼 332
面試題24 刪除數據表 332
面試題25 如何聲明游標 332
第三篇 Java Web開發
第14章 J2EE(Java EE)和EJB 3.0技術開發 334
J2EE是Java平台企業版的簡稱(Java Platform,Enterprise Edition),它包含一組技術規範與指南,包含許多組件,主要可以簡化且規範套用系統的開發與部署,進而提高可移植性、安全與再用價值。
J2EE基於Java SE,此外新加了企業套用所需的類庫。Sun公司在其Java平台企業版最初命名為J2EE,從J2EE 1.5版本後更名為Java EE 5.0。Java EE是軟體技術發展的結果。
14.1 J2EE的核心API與組件 334
面試題1 什麼是J2EE 336
面試題2 關於J2EE的名詞解釋 337
14.2 EJB組件 337
14.2.1 搭建EJB 3.0開發環境 337
14.2.2 Session Bean(會話Bean) 341
14.2.3 Message-Driven Bean
(訊息驅動Bean) 347
14.2.4 Entity Bean
(開發實體Bean) 350
面試題3 什麼是EJB 351
面試題4 EJB規定禁止的操作有哪些 352
面試題5 EJB與Java Bean有什麼區別 352
面試題6 EJB的類型有哪幾種 353
面試題7 Session Bean的分類 353
面試題8 開發無狀態會話Bean 353
面試題9 在Entity Bean中如何與表進行映射 354
面試題10 Entity Bean中哪些方法實現了數據同步 355
面試題11 Entity Bean的分類 356
面試題12 正確理解Message-Driven Bean 356
面試題13 Bean的生命周期範圍 356
14.3 常見的J2EE套用伺服器 357
面試題14 如何在WebLogic上部署EJB 357
面試題15 如何給WebLogic的記憶體指定大小 357
面試題16 J2EE的套用伺服器有哪些 358
面試題17 persistent與non-persistent的區別 358
面試題18 在WebLogic中發布EJB需要哪些配置檔案 358
面試題19 JBoss伺服器監聽服務默認連線埠是什麼 359
面試題20 創建一個Enterprise Application的同時還會
創建哪個組件 359
面試題21 選出錯誤的操作 359
面試題22 創建JDBC 360
第15章 XML、UML和MVC 361
在本章主要講解一下XML和UML的基本概念和簡單的使用方式以及MVC的含義。XML(eXtensible Markup Language)是由全球資訊網協會(W3C)推出的新一代數據交換的標準,翻譯成中文就是“可擴展標識語言”。UML(Unified Modeling Language)是一種建模語言,是進行需求分析和概要設計的主要工具。MVC(Model,View,Controller)是Application開發的設計模式。M是指數據模型;V是指用戶界面;C則是控制器。
15.1 XML 361
15.1.1 XML的基礎知識 361
15.1.2 XML解析模型 363
面試題1 XML有哪幾種解析技術 369
面試題2 如何使用XML技術 369
面試題3 選擇正確的描述 370
面試題4 在DTD中哪個元素屬性可加不可加 370
面試題5 XML的組成包括幾部分 371
面試題6 關於對於內部DTD文檔的
敘述,哪個選項是正確的 371
面試題7 在DTD文檔中CONTENT的規範 372
面試題8 什麼是對象模型(DOM) 372
15.2 UML 373
面試題9 選擇正確的UML類圖 376
面試題10 活動圖強調什麼 377
面試題11 跨越多個用例的單個
對象的行為類型圖 378
面試題12 什麼是用例圖 378
面試題13 用例之間的關係 379
面試題14 表示系統行為的圖有哪些 379
面試題15 用例圖由哪幾部分組成 380
面試題16 什麼是模型 380
15.3 MVC 380
面試題17 理解MVC設計模式 381
面試題18 MVC各個部分的實現
技術及實現方法 381
第16章 JSP/Servlet技術 382
在Java開發中,JSP/Servlet是屬於Web層技術,JSP與Servlet是一體的兩面,你可以使用單獨一項技術來解決動態網頁呈現的需求,但最好的方式是取兩者的長處,JSP是由網頁設計人員導向的,而Servlet是由程式設計人員導向的,目前國內的大部分Java開發均是Java Web開發,理清它們之間的職責可以讓兩個不同專長的團隊彼此合作,並降低相互間的牽製作用。所以,Servlet/JSP也是在Java程式設計師面試中必考的內容。
16.1 JSP的核心技術 382
16.1.1 JSP的基本語法 382
16.1.2 JSP指令 383
16.1.3 JSP動作 384
16.1.4 JSP內置對象 386
面試題1 在瀏覽器中如何訪問JSP
檔案 390
面試題2 分析代碼的輸出結果 390
面試題3 JSP頁面跳轉的方式 391
面試題4 JSP位於MVC模式的
哪一層 391
面試題5 標籤庫的指令 391
面試題6 <jsp:useBean>的屬性 392
面試題7 Page指令的屬性 392
面試題8 JSP的內置對象及其作用 392
面試題9 JSP注釋標籤的語法格式 393
面試題10 Page指令中屬性的作用 393
面試題11 Cookie的工作流程 394
面試題12 靜態頁面和動態頁面中
INCLUDE的作用是否
相同 394
面試題13 JSP的動作指令 395
16.2 Servlet的核心技術 395
16.2.1 Servlet接口 395
16.2.2 Servlet接口實現類 398
16.2.3 HttpServlet對象 399
16.2.4 Servlet的生命周期 399
16.2.5 Servlet之間的跳轉 400
面試題14 Servlet的生命周期 401
面試題15 Servlet的class檔案放在哪個目錄下 401
面試題16 ServletContext對象的產生 402
面試題17 Servlet配置中的標記 402
面試題18 Servlet位於MVC模式的哪一層 403
面試題19 在Servlet生命周期中,哪個方法只能調用一次 403
面試題20 標識會話的方法 403
面試題21 可以讀取ServletContext對象屬性的方法是什麼 404
面試題22 部署時,<Servlet>標籤中可以包含哪些標籤 404
面試題23 Servlet中的狀態碼 405
面試題24 在HttpServlet中,處理請求的方法有哪些 406
第四篇 算 法
第17章 常見的Java上機面試題 408
上機編程考試,要求面試者能夠根據題目的要求,使用一種編程工具,編寫全部代碼並調試運行。這主要是考查面試者代碼書寫和編程的熟練程度。值得注意的是,這類面試題要求能夠正確運行,往往要求面試者使用比較原始的JDK編譯方式也就是使用DOS命令提示符,而不是提供Eclipse或者JBuilder等快速開發環境。本章將經常出現的上機編程題進行分類,希望能夠給讀者帶來幫助和啟示。
17.1 Java基礎編程試題 408
面試題1 怎樣截取字元串 408
面試題2 怎樣實現元素互換 409
面試題3 怎樣實現元素排序 411
面試題4 怎樣實現Singleton模式編程 413
面試題5 哥德巴赫猜想的近似證明 414
面試題6 怎樣實現金額轉換 416
面試題7 愛因斯坦的階梯問題 420
面試題8 如何判斷迴文數字 421
17.2 資料庫編程試題 423
面試題9 根據表結構寫出相應的SQL語句 423
面試題10 編寫MySQL資料庫的JDBC連線 423
17.3 Java高級編程試題 424
面試題11 怎樣用SAX解析XML 425
面試題12 利用Servelt的doPost方法實現表單內容的讀取 427
面試題13 編程實現Servlet的記錄訪問功能 428
第18章 思維與智力測試 431
這類面試題對面試者提出了更高的要求。思維拓展方面的試題大體可以分為兩類,一類是思維拓展編程,首先需要面試者建立編程模型,然後使用代碼編程並給出答案;另一類是智力測試,考查面試者思考問題的方式方法和反應能力,不需要編程來解決問題。
18.1 思維拓展測試 431
面試題1 擲骰子遊戲 431
面試題2 求出最大公約數 433
面試題3 階乘階梯式的函式 434
面試題4 背包問題 436
面試題5 求最大的連續組合值(華為校園招聘筆試題) 438
面試題6 洗撲克牌(亂數排列) 440
面試題7 巧妙過橋 441
面試題8 字元移動(金山筆試題) 443
面試題9 八皇后問題 444
18.2 智力(IQ)測試 447
面試題10 找出質量不相同的球 448
面試題11 有多少人及格 449
面試題12 他說的是真話嗎 450
面試題13 哪個開關控制哪盞燈 450
面試題14 誰的存活機率最大 451
面試題15 猴子分桃 451
面試題16 三個女兒的年齡分別是多少 452
面試題17 哪一種是“王牌”花色 452
面試題18 巧猜撲克牌 453
面試題19 誰得第二名 454
面試題20 計時燒繩 454
面試題21 海盜分金問題 455
面試題22 聰明的法官 456
附錄A 個人簡歷英文辭彙速查 457