1. 程式人生 > >java面試題大全2

java面試題大全2

這是一套我自己在網上查詢的一份內容很龐大的面試題精選,說實話想要自己看完也是需要很多的時間,我也是為了能夠長時間的儲存下來以便以後可能會用到。

目錄

1. Java 基礎部分 ................................................................................................................... 10

  1. 一個".java"原始檔中是否可以包括多個類(不是內部類)?有什麼限制? ........ 10
  2. Java 有沒有 goto? ...................................................................................................... 10
  3. 說說&和&&的區別。 ................................................................................................... 10
  4. 在 JAVA 中如何跳出當前的多重巢狀迴圈? ........................................................... 11
  5. switch 語句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上? . 11
  6. short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯? ................ 12
  7. char 型變數中能不能存貯一箇中文漢字?為什麼? .................................................. 12
  8. 用最有效率的方法算出 2 乘以 8 等於幾? ................................................................ 12
  9. 請設計一個一百億的計算器 ....................................................................................... 12
  10. 使用 final 關鍵字修飾一個變數時,是引用不能變,還是引用的物件不能變? 14
  11. "=="和 equals 方法究竟有什麼區別? ................................................................... 14
  12. 靜態變數和例項變數的區別? ................................................................................. 15
  13. 是否可以從一個 static 方法內部發出對非 static 方法的呼叫? .......................... 16
  14. Integer 與 int 的區別 ................................................................................................. 16
  15. Math.round(11.5)等於多少? Math.round(-11.5)等於多少? ................................. 17
  16. 下面的程式碼有什麼不妥之處? .................................................................................. 17
  17. 請說出作用域 public,private,protected,以及不寫時的區別 ......................... 17
  18. Overload 和 Override 的區別。Overloaded 的方法是否可以改變返回值的型別?

 ............................................................................................................................................. 18

  1. 構造器 Constructor 是否可被 override? ................................................................ 19
  2. 介面是否可繼承介面?抽象類是否可實現(implements)介面?抽象類是否可繼承具體類(concrete class)?抽象類中是否可以有靜態的 main 方法? ................................ 19 21、寫 clone()方法時,通常都有一行程式碼,是什麼? ................................................ 19
  1. 面向物件的特徵有哪些方面 ..................................................................................... 19
  2. java 中實現多型的機制是什麼? ............................................................................ 21
  3. abstract class 和 interface 有什麼區別? ................................................................ 21
  4. abstract 的 method 是否可同時是 static,是否可同時是 native,是否可同時是

synchronized? ................................................................................................................... 23

  1. 什麼是內部類?Static Nested Class 和 Inner Class 的不同。 ........................... 24 27、內部類可以引用它的包含類的成員嗎?有沒有什麼限制? ................................. 26

28、Anonymous Inner Class (匿名內部類)是否可以 extends(繼承)其它類,是否可以

implements(實現)interface(介面)? .................................................................................. 27 29、super.getClass()方法呼叫 ....................................................................................... 27

  1. String 是最基本的資料型別嗎? ............................................................................... 28
  2. String s = "Hello";s = s + " world!";這兩行程式碼執行後,原始的 String 物件中的內

容到底變了沒有? ............................................................................................................. 28 32、是否可以繼承 String 類? .......................................................................................... 29

  1. String s = new String("xyz");建立了幾個 String Object?二者之間有什麼區別?

 ............................................................................................................................................. 29

  1. String 和 StringBuffer 的區別 .................................................................................. 30
  2. 如何把一段逗號分割的字串轉換成一個數組? ................................................... 30
  3. 陣列有沒有 length()這個方法? String 有沒有 length()這個方法? ..................... 31
  4. 下面這條語句一共建立了多少個物件:String s="a"+"b"+"c"+"d"; ..................... 31
  5. try {}裡有一個 return 語句,那麼緊跟在這個 try 後的 finally {}裡的 code 會不會

被執行,什麼時候被執行,在 return 前還是後? ........................................................... 31 39、下面的程式程式碼輸出的結果是多少? ..................................................................... 32

  1. final, finally, finalize 的區別。 ................................................................................. 35
  2. 執行時異常與一般異常有何異同? ......................................................................... 35
  3. error 和 exception 有什麼區別? .............................................................................. 35
  4. Java 中的異常處理機制的簡單原理和應用。 ....................................................... 35
  5. 請寫出你最常見到的 5 個 runtime exception。 .................................................... 36
  6. JAVA 語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally 分別代表

什麼意義?在 try 塊中可以丟擲異常嗎? ....................................................................... 36

  1. java 中有幾種方法可以實現一個執行緒?用什麼關鍵字修飾同步方法? stop()和

suspend()方法為何不推薦使用? ................................................................................... 36 47、sleep()和 wait()有什麼區別? .................................................................................. 38

48、同步和非同步有何異同,在什麼情況下分別使用他們?舉例說明。 ..................... 41

49. 下面兩個方法同步嗎?(自己發明) ...................................................................... 41

  1. 多執行緒有幾種實現方法?同步有幾種實現方法? .................................................... 42
  2. 啟動一個執行緒是用 run()還是 start()? . ................................................................... 42
  3. 當一個執行緒進入一個物件的一個 synchronized 方法後,其它執行緒是否可進入此

物件的其它方法? ............................................................................................................... 42 53、執行緒的基本概念、執行緒的基本狀態以及狀態之間的關係 ..................................... 43

  1. 簡述 synchronized 和 java.util.concurrent.locks.Lock 的異同? ........................ 43
  2. 設計 4 個執行緒,其中兩個執行緒每次對 j 增加 1,另外兩個執行緒對 j 每次減少 1。寫

出程式。 ............................................................................................................................. 46

  1. 子執行緒迴圈 10 次,接著主執行緒迴圈 100,接著又回到子執行緒迴圈 10 次,接著

再回到主執行緒又迴圈 100,如此迴圈 50 次,請寫出程式。 ....................................... 48

  1. 介紹 Collection 框架的結構 ..................................................................................... 56
  2. Collection 框架中實現比較要實現什麼介面 .......................................................... 56
  3. ArrayList 和 Vector 的區別 ...................................................................................... 56
  4. HashMap 和 Hashtable 的區別 ............................................................................... 57
  5. List 和 Map 區別? .................................................................................................... 57
  6. List, Set, Map 是否繼承自 Collection 介面?.......................................................... 58
  7. List、Map、Set 三個介面,存取元素時,各有什麼特點? ................................ 58
  8. 說出 ArrayList,Vector, LinkedList 的儲存效能和特性 .......................................... 59
  9. 去掉一個 Vector 集合中重複的元素 ....................................................................... 59
  10. Collection 和 Collections 的區別。 ........................................................................ 59
  11. Set 裡的元素是不能重複的,那麼用什麼方法來區分重複與否呢?是用==還是

equals()?它們有何區別? .................................................................................................. 60

  1. 你所知道的集合類都有哪些?主要方法? ............................................................. 60
  2. 兩個物件值相同(x.equals(y) == true),但卻可有不同的 hash code,這句話對不

對? ....................................................................................................................................... 61

  1. TreeSet 裡面放物件,如果同時放入了父類和子類的例項物件,那比較時使用的是父類的 compareTo 方法,還是使用的子類的 compareTo 方法,還是拋異常! . 61
  2. 說出一些常用的類,包,介面,請各舉 5 個......................................................... 63
  3. java 中有幾種型別的流?JDK 為每種型別的流提供了一些抽象類以供繼承,請

說出他們分別是哪些類? ................................................................................................. 63 73、位元組流與字元流的區別 ............................................................................................. 63

  1. 什麼是 java 序列化,如何實現 java 序列化?或者請解釋 Serializable 介面的作

用。 ..................................................................................................................................... 65

  1. 描述一下 JVM 載入 class 檔案的原理機制? ......................................................... 66
  2. heap 和 stack 有什麼區別。 ................................................................................... 66
  3. GC 是什麼?為什麼要有 GC? .................................................................................. 66
  4. 垃圾回收的優點和原理。並考慮 2 種回收機制。................................................. 66 79、垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收記憶體嗎?有什麼辦法主

動通知虛擬機器進行垃圾回收? ......................................................................................... 66 80、什麼時候用 assert。 ................................................................................................. 67

    1. java 中會存在記憶體洩漏嗎,請簡單描述。 ............................................................ 68
    2. 能不能自己寫個類,也叫 java.lang.String? ........................................................ 72
    3. Java 程式碼查錯 ............................................................................................................. 73

二.演算法與程式設計 ........................................................................................................................ 77

    1. 編寫一個程式,將 a.txt 檔案中的單詞與 b.txt 檔案中的單詞交替合併到 c.txt 檔案中,a.txt 檔案中的單詞用回車符分隔,b.txt 檔案中用回車或空格進行分隔。 ........ 77
    2. 編寫一個程式,將 d:\java 目錄下的所有.java 檔案複製到 d:\jad 目錄下,並將原

來檔案的副檔名從.java 改為.jad。 ................................................................................. 79

    1. 編寫一個擷取字串的函式,輸入為一個字串和位元組數,輸出為按位元組擷取的字串,但要保證漢字不被擷取半個,如“我 ABC”,4,應該擷取“我 AB”,輸入“我

ABC 漢 DEF”,6,應該輸出“我 ABC”,而不是“我 ABC+漢的半個”。 .................... 82

    1. 有一個字串,其中包含中文字元、英文字元和數字字元,請統計和打印出各個

字元的個數。 ..................................................................................................................... 83

    1. 說明生活中遇到的二叉樹,用 java 實現二叉樹 ...................................................... 84
    2. 從類似如下的文字檔案中讀取出所有的姓名,並打印出重複的姓名和重複的次數,

並按重複次數排序: ......................................................................................................... 91 7、寫一個 Singleton 出來。 ............................................................................................ 96

    1. 遞迴演算法題 1 ................................................................................................................ 99
    2. 遞迴演算法題 2 .............................................................................................................. 100
    3. 排序都有哪幾種方法?請列舉。用 JAVA 實現一個快速排序。 ....................... 100
    4. 有陣列 a[n],用 java 程式碼將陣列元素順序顛倒 .................................................. 102

12.金額轉換,阿拉伯數字的金額轉換成中國傳統的形式如:(¥1011)->(一千

零一拾一元整)輸出。 ................................................................................................... 103 三. html&JavaScript&ajax 部分 ......................................................................................... 104

    1. 判斷第二個日期比第一個日期大 .............................................................................. 104
    2. 用 table 顯示 n 條記錄,每 3 行換一次顏色,即 1,2,3 用紅色字型,4,5,6

用綠色字型,7,8,9 用紅顏色字型。 ....................................................................... 106

    1. HTML 的 form 提交之前如何驗證數值文字框的內容全部為數字?否則的話提示用

戶並終止提交? ................................................................................................................. 107

    1. 請寫出用於校驗 HTML 文字框中輸入的內容全部為數字的 javascript 程式碼 ..... 107
    2. 說說你用過那些 ajax 技術和框架,說說它們的區別 ............................................ 108

四. Java web 部分 ............................................................................................................... 108 1、Tomcat 的優化經驗 .................................................................................................. 108

    1. HTTP 請求的 GET 與 POST 方式的區別 .............................................................. 108
    2. 解釋一下什麼是 servlet; ........................................................................................... 108
    3. 說一說 Servlet 的生命週期? .................................................................................... 109
    4. Servlet 的基本架構 ................................................................................................... 109
    5. SERVLET API 中 forward()與 redirect()的區別? ................................................ 109
    6. 什麼情況下呼叫 doGet()和 doPost()? .................................................................. 109
    7. Request 物件的主要方法: ..................................................................................... 110
    8. forward 和 redirect 的區別 ....................................................................................... 110
    9. request.getAttribute()和 request.getParameter()有何區別? ............................ 111
    1. jsp 有哪些內建物件?作用分別是什麼?分別有什麼方法? .................................. 111
    2. jsp 有哪些動作?作用分別是什麼? .......................................................................... 112

13、JSP 的常用指令 ...................................................................................................... 112

14. JSP 中動態 INCLUDE 與靜態 INCLUDE 的區別? ............................................. 112

    1. 兩種跳轉方式分別是什麼?有什麼區別? .............................................................. 113
    2. 頁面間物件傳遞的方法 ........................................................................................... 113
    3. JSP 和 Servlet 有哪些相同點和不同點,他們之間的聯絡是什麼? ................ 113
    4. MVC 的各個部分都有那些技術來實現?如何實現? ............................................ 113
    5. 我們在 web 應用開發過程中經常遇到輸出某種編碼的字元,如 iso8859-1 等,

如何輸出一個某種編碼的字串? ............................................................................... 113

    1. 現在輸入 n 個數字,以逗號,分開;然後可選擇升或者降序排序;按提交鍵就在另一頁面顯示按什麼排序,結果為,提供 reset ......................................................... 114 五.資料庫部分 ...................................................................................................................... 114
    1. 用兩種方式根據部門號從高到低,工資從低到高列出每個員工的資訊。 ......... 114
    2. 列出各個部門中工資高於本部門的平均工資的員工數和部門號,並按部門號排序

 ........................................................................................................................................... 114

    1. 儲存過程與觸發器必須講,經常被面試到? ........................................................... 116
    2. 資料庫三正規化是什麼? ............................................................................................... 118
    3. 說出一些資料庫優化方面的經驗? ........................................................................... 119
    4. union 和 union all 有什麼不同? ............................................................................... 121

7.分頁語句 ........................................................................................................................ 122

8.用一條 SQL 語句查詢出每門課都大於 80 分的學生姓名 ....................................... 126

9.所有部門之間的比賽組合 ............................................................................................ 127

10.每個月份的發生額都比 101 科目多的科目 ............................................................. 127

11.統計每年每月的資訊 ................................................................................................. 129

12.顯示文章標題,發帖人、最後回覆時間 .................................................................. 131

13.刪除除了 id 號不同,其他都相同的學生冗餘資訊 ................................................... 131

14.航空網的幾個航班查詢題:...................................................................................... 132

15.查出比經理薪水還高的員工資訊: .......................................................................... 134

16、求出小於 45 歲的各個老師所帶的大於 12 歲的學生人數 .................................. 135

17.求出發帖最多的人: ................................................................................................. 136

    1. 一個使用者表中有一個積分欄位,假如資料庫中有 100 多萬個使用者,若要在每年

第一天凌晨將積分清零,你將考慮什麼,你將想什麼辦法解決? ............................. 136

    1. 一個使用者具有多個角色,請查詢出該表中具有該使用者的所有角色的其他使用者。

 ........................................................................................................................................... 137

20. xxx 公司的 sql 面試 .................................................................................................. 138

    1. 註冊 Jdbc 驅動程式的三種方式 ............................................................................ 139
    2. 用 JDBC 如何呼叫儲存過程 .................................................................................. 139 23、JDBC 中的 PreparedStatement 相比 Statement 的好處................................... 141

24. 寫一個用 jdbc 連線並訪問 oracle 資料的程式程式碼 ............................................. 141

    1. Class.forName 的作用?為什麼要用? ................................................................... 141
    2. 大資料量下的分頁解決方法。 ............................................................................... 141
    3. 用 JDBC 查詢學生成績單,把主要程式碼寫出來(考試概率極大). ................... 142
    4. 這段程式碼有什麼不足之處? .................................................................................... 143
    5. 說出資料連線池的工作機制是什麼? .................................................................... 143
    6. 為什麼要用 ORM? 和 JDBC 有何不一樣?........................................................ 144 六. XML 部分 ........................................................................................................................ 144
    1. xml 有哪些解析技術?區別是什麼? ......................................................................... 144
    2. 你在專案中用到了 xml 技術的哪些方面?如何實現的? ........................................ 144
    3. 用 jdom 解析 xml 檔案時如何解決中文問題?如何解析? ...................................... 144
    4. 程式設計用 JAVA 解析 XML 的方式. .............................................................................. 145
    5. XML 文件定義有幾種形式?它們之間有何本質區別?解析 XML 文件有哪幾種方

式? ................................................................................................................................... 148

七.流行的框架與新技術 ...................................................................................................... 148 1、談談你對 Struts 的理解。 ........................................................................................ 149

2、談談你對 Hibernate 的理解。.................................................................................. 149 3、AOP 的作用。 ........................................................................................................... 150 4、你對 Spring 的理解。 ............................................................................................... 150

    1. 談談 Struts 中的 Action servlet。 ........................................................................... 151
    2. Struts 優缺點 優點:  1. 實現 MVC 模式,結構清晰,使開發者只關注業務邏輯的

實現. .................................................................................................................................. 151

    1. STRUTS 的應用(如 STRUTS 架構) ....................................................................... 153
    2. 說說 struts1 與 struts2 的區別。 ............................................................................. 153
    3. hibernate 中的 update()和 saveOrUpdate()的區別,session 的 load()和 get()的區

別。 ................................................................................................................................... 154

    1. 簡述 Hibernate 和 JDBC 的優缺點?如何書寫一個 one to many 配置檔案. . 154
    2. iBatis 與 Hibernate 有什麼不同? .......................................................................... 154
    3. 寫 Hibernate 的一對多和多對一雙向關聯的 orm 配置? .................................... 154

12.1、hibernate 的 inverse 屬性的作用? ..................................................................... 154

    1. 在 DAO 中如何體現 DAO 設計模式? ................................................................... 155
    2. spring+Hibernate 中委託方案怎麼配置? ............................................................. 155
    3. spring+Hibernate 中委託方案怎麼配置? ............................................................. 155

16. hibernate 進行多表查詢每個表中各取幾個欄位,也就是說查詢出來的結果集沒有

一個實體類與之對應如何解決; ................................................................................... 155 17.介紹一下 Hibernate 的二級快取 .............................................................................. 155

    1. Spring 的依賴注入是什麼意思?給一個 Bean 的 message 屬性,字串型別,注

入值為"Hello"的 XML 配置檔案該怎麼寫? .................................................................. 158

    1. Jdo 是什麼? ............................................................................................................. 158
    2. 什麼是 spring 的 IOC AOP .................................................................................... 158
    3. STRUTS 的工作流程! .......................................................................................... 158
    4. spring 與 EJB 的區別!! ..................................................................................... 158 八.軟體工程與設計模式 ...................................................................................................... 158 1、UML 方面 ................................................................................................................... 158
    1. j2ee 常用的設計模式?說明工廠模式。 ................................................................ 158
    2. 開發中都用到了那些設計模式?用在什麼場合?..................................................... 159 九. j2ee 部分 ........................................................................................................................ 159 1、BS 與 CS 的聯絡與區別。 ....................................................................................... 159 1.硬體環境不同: ...................................................................................................... 159 2.對安全要求不同 ................................................................................................... 160

3.對程式架構不同 ................................................................................................... 160 4.軟體重用不同 ....................................................................................................... 160

5.系統維護不同 ....................................................................................................... 160

6.處理問題不同 ....................................................................................................... 160

7.使用者介面不同 ....................................................................................................... 160

    1. 應用伺服器與 WEB SERVER 的區別? ................................................................ 161
    2. 應用伺服器有那些? ................................................................................................. 161
    3. J2EE 是什麼? .......................................................................................................... 161
    4. J2EE 是技術還是平臺還是框架?什麼是 J2EE .................................................... 161
    5. 請對以下在 J2EE 中常用的名詞進行解釋(或簡單描述) ....................................... 161
    6. 如何給 weblogic 指定大小的記憶體? ......................................................................... 162
    7. 如何設定的 weblogic 的熱啟動模式(開發模式)與產品釋出模式? ....................... 162
    8. 如何啟動時不需輸入使用者名稱與密碼? ....................................................................... 162
    9. 在 weblogic 管理制臺中對一個應用域(或者說是一個網站,Domain)進行 jms及 ejb 或連線池等相關資訊進行配置後,實際儲存在什麼檔案中? ........................................ 162
    10. 說說 weblogic 中一個 Domain 的預設目錄結構?比如要將一個簡單的 helloWorld.jsp 放入何目錄下,然的在瀏覽器上就可打入 http://主機:埠號

//helloword.jsp 就可以看到執行結果了?又比如這其中用到了一個自己寫的 javaBean

該如何辦? ......................................................................................................................... 162

    1. 在 weblogic 中釋出 ejb 需涉及到哪些配置檔案 .................................................. 163
    2. 如何在 weblogic 中進行 ssl 配置與客戶端的認證配置或說說 j2ee(標準)進行 ssl

的配置? ............................................................................................................................. 163

    1. 如何檢視在 weblogic 中已經發布的 EJB? ........................................................... 163
  • EJB 部分 ........................................................................................................................ 163
    1. EJB 是基於哪些技術實現的?並說出 SessionBean 和 EntityBean 的區別,

StatefulBean 和 StatelessBean 的區別。 ................................................................... 163

    1. 簡要講一下 EJB 的 7 個 Transaction Level? ...................................................... 164
    2. EJB 與 JAVA BEAN 的區別?................................................................................. 164
    3. EJB 包括(SessionBean,EntityBean)說出他們的生命週期,及如何管理事務的?

 ........................................................................................................................................... 164 5、EJB 容器提供的服務................................................................................................. 164

    1. EJB 的啟用機制 ........................................................................................................ 164
    2. EJB 的幾種型別 ........................................................................................................ 165
    3. 客服端呼叫 EJB 物件的幾個基本步驟 .................................................................... 165
  • webservice 部分 ........................................................................................................ 165
    1. WEB SERVICE 名詞解釋。JSWDL 開發包的介紹。JAXP、JAXM 的解釋。SOAP、

UDDI,WSDL 解釋。 ........................................................................................................ 165

    1. CORBA 是什麼?用途是什麼? ................................................................................. 165
    2. Linux ............................................................................................................................. 166
    3. LINUX 下執行緒,GDI 類的解釋。 ............................................................................ 166
    4. 問得稀裡糊塗的題 ...................................................................................................... 166
    5. 四種會話跟蹤技術 ..................................................................................................... 166
    6. 簡述邏輯操作(&,|,^)與條件操作(&&,||)的區別。 ................................................... 166

十二.其他 .............................................................................................................................. 166 1、請用英文簡單介紹一下自己. .................................................................................... 166

    1. 請把 http://tomcat.apache.org/ 首頁的這一段話用中文翻譯一下? .................... 166
    2. 美資軟體公司 JAVA 工程師電話面試題目 ............................................................. 167

這套面試題主要目的是幫助那些還沒有 java 軟體開發實際工作經驗,而正在努力尋找 java 軟體開發工作的朋友在筆試時更好地贏得筆試和麵試。由於這套面試題涉及的範圍很泛,很廣,很雜,大家不可能一天兩天就看完和學完這套面試寶典,即使你已經學過了有關的技術,那麼至少也需要一個月的時間才能消化和掌握這套面試寶典,所以,大家應該早作準備,從拿到這套面試寶典之日起,就要堅持在每天閒暇之餘學習其中幾道題目,日積月累,等到出去面試時,一切都水到渠成,面試時就自然會遊刃有餘了。

答題時,先答是什麼,再答有什麼作用和要注意什麼(這部分最重要,展現自己的心得)

答案的段落分別,層次分明,條理清晰都非常重要,從這些表面的東西也可以看出一個人的習慣、辦事風格、條理等。

要講你做出答案的思路過程,或者說你記住答案的思想都寫下來。把答題想著是辯論賽。答題就是給別人講道理、擺事實。答題不侷限於什麼格式和形式,就是要將自己的學識展現出來!

別因為人家題目本來就模稜兩可,你就心裡膽怯和沒底氣了,不敢回答了。你要大膽地指出對方題目很模糊和你的觀點,不要把面試官想得有多高,其實他和你就是差不多的,你想想,如果他把你招進去了,你們以後就是同事了,可不是差不多的嗎?

關於就業薪水,如果你是應屆生,那不能要高工資,好比大餅的故事,沒有文憑還想拿高工資,就去中關村缺什麼補什麼吧!少數人基礎確實很好,在校期間確實又做過一些專案,那仍然是可以要到相對高的工資的。

1. Java 基礎部分

基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,執行緒的語法,集合的語法,io 的語法,虛擬機器方面的語法。

  1. 一個".java"原始檔中是否可以包括多個類(不是內部類)?有什麼限制?

可以有多個類,但只能有一個 public 的類,並且 public 的類名必須與檔名相一致

  1. Java 有沒有 goto?

java 中的保留字,現在沒有在 java 中使用。

  1. 說說&&&的區別。

&&&都可以用作邏輯與的運算子,表示邏輯與(and),當運算子兩邊的表示式的結果都為 true 時,整個運算結果才為 true,否則,只要有一方為 false,則結果為 false。

&&還具有短路的功能,即如果第一個表示式為 false,則不再計算第二個表示式,例如,對於 if(str != null&& !str.equals(“”))表示式,當 str 為 null 時,後面的表示式不會執行,所以不會出現 NullPointerException 如果將&&改為&,則會丟擲 NullPointerException 異常。

If(x==33 &++y>0) y 會增長,If(x==33 && ++y>0)不會增長

&還可以用作位運算子,當&操作符兩邊的表示式不是 boolean 型別時,&表示按位與操作,我們通常使用0x0f 來與一個整數進行&運算,來獲取該整數的最低4個 bit 位,例如,0x31 & 0x0f 的結果為0x01。

備註:這道題先說兩者的共同點,再說出&&和&的特殊之處,並列舉一些經典的例子來表明自己理解透徹深入、實際經驗豐富。 

4、在 JAVA 中如何跳出當前的多重巢狀迴圈?

在 Java 中,要想跳出多重迴圈,可以在外面的迴圈語句前定義一個標號,然後在裡層迴圈體的程式碼中使用帶有標號的 break 語句,即可跳出外層迴圈。例如,

ok:

for(int i=0;i<10;i++)     {         for(int j=0;j<10;j++)            {

               System.out.println(“i=” + i + “,j=” + j);                if(j == 5) break ok;

        }

}

另外,我個人通常並不使用標號這種方式,而是讓外層的迴圈條件表示式的結果可以受到裡層迴圈體程式碼的控制,例如,要在二維陣列中查詢到某個數字。

int arr[][] ={{1,2,3},{4,5,6,7},{9}}; boolean found = false; for(int i=0;i<arr.length&& !found;i++)       {         for(int j=0;j<arr[i].length;j++){

               System.out.println(“i=” + i + “,j=” + j);                if(arr[i][j]  ==5) {                       found = true;                       break;

               }

        }

}

  1. switch 語句能否作用在 byte 上,能否作用在 long 上,能否作用在 String ?

在 switch(expr1)中,expr1只能是一個整數表示式或者列舉常量(更大字型),整數表示式可以是 int 基本型別或 Integer 包裝型別,由於,byte,short,char 都可以隱含轉換為 int,所以,這些型別以及這些型別的包裝型別也是可以的。顯然,long 和 String 型別都不符合

switch 的語法規定,並且不能被隱式轉換成 int 型別,所以,它們不能作用於 swtich 語句中。

  1. short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?

對於 short s1 = 1; s1 = s1 + 1;由於 s1+1運算時會自動提升表示式的型別,所以結果是 int 型,再賦值給 short 型別 s1時,編譯器將報告需要強制轉換型別的錯誤

對於 short s1 = 1; s1 += 1;由於 +=java 語言規定的運算子,java 編譯器會對它進行特殊處理,因此可以正確編譯

  1. char 型變數中能不能存貯一箇中文漢字?為什麼?

char 型變數是用來儲存 Unicode 編碼的字元的,unicode 編碼字符集中包含了漢字,所以, char 型變數中當然可以儲存漢字啦。不過,如果某個特殊的漢字沒有被包含在 unicode 編碼字符集中,那麼,這個 char 型變數中就不能儲存這個特殊漢字。補充說明:unicode 編碼佔用兩個位元組,所以,char 型別的變數也是佔用兩個位元組。

備註:後面一部分回答雖然不是在正面回答題目,但是,為了展現自己的學識和表現自己對問題理解的透徹深入,可以回答一些相關的知識,做到知無不言,言無不盡。

  1. 用最有效率的方法算出 2 乘以 8 等於幾?

2 << 3,

因為將一個數左移 n 位,就相當於乘以了2n 次方,那麼,一個數乘以8只要將其左移3位即可,而位運算 cpu 直接支援的,效率最高,所以,2乘以8等於幾的最效率的方法是2 << 3。

9、請設計一個一百億的計算器

首先要明白這道題目的考查點是什麼,一是大家首先要對計算機原理的底層細節要清楚、要知道加減法的位運算原理和知道計算機中的算術運算會發生越界的情況,二是要具備一定的面向物件的設計思想。

首先,計算機中用固定數量的幾個位元組來儲存的數值,所以計算機中能夠表示的數值是有一定的範圍的,為了便於講解和理解,我們先以 byte 型別的整數為例,它用1個位元組進行儲存,表示的最大數值範圍為-128到+127。-1在記憶體中對應的二進位制資料為11111111,如果兩個-1 相加,不考慮 Java 運算時的型別提升,運算後會產生進位,二進位制結果為1,11111110,由於進位後超過了 byte 型別的儲存空間,所以進位部分被捨棄,即最終的結果為11111110,也就是-2,這正好利用溢位的方式實現了負數的運算。-128在記憶體中對應的二進位制資料為 10000000,如果兩個-128相加,不考慮 Java 運算時的型別提升,運算後會產生進位,二進位制結果為1,00000000,由於進位後超過了 byte 型別的儲存空間,所以進位部分被捨棄,即最終的結果為00000000,也就是0,這樣的結果顯然不是我們期望的,這說明計算機中的算術運算是會發生越界情況的,兩個數值的運算結果不能超過計算機中的該型別的數值範圍。由於 Java 中涉及表示式運算時的型別自動提升,我們無法用 byte 型別來做演示這種問題和現象的實驗,大家可以用下面一個使用整數做實驗的例子程式體驗一下:

        int a = Integer.MAX_VALUE;         int b = Integer.MAX_VALUE;         int sum = a + b;

        System.out.println(“a=”+a+”,b=”+b+”,sum=”+sum);

先不考慮 long 型別,由於 int 的正數範圍為2的31次方,表示的最大數值約等於 2*1000*1000*1000,也就是20億的大小,所以,要實現一個一百億的計算器,我們得自己設計一個類可以用於表示很大的整數,並且提供了與另外一個整數進行加減乘除的功能,大概功能如下:

  1. 這個類內部有兩個成員變數,一個表示符號,另一個用位元組陣列表示數值的二進位制數
  2. 有一個構造方法,把一個包含有多位數值的字串轉換到內部的符號和位元組陣列中
  3. 提供加減乘除的功能

public class BigInteger{         int sign;         byte[] val;         public Biginteger(String val) {                sign = ;                val = ;

        }         public BigInteger add(BigInteger other)       {

                       }         public BigInteger subtract(BigInteger other) {

                       }         public BigInteger multiply(BigInteger other){

                       }         public BigInteger divide(BigInteger other){         }

}

備註:要想寫出這個類的完整程式碼,是非常複雜的,如果有興趣的話,可以參看 jdk 中自帶的 java.math.BigInteger 的原始碼。面試的人也知道誰都不可能在短時間內寫出這個類的完整程式碼的,他要的是你是否有這方面的概念和意識,他最重要的還是考查你的能力,所以,你不要因為自己無法寫出完整的最終結果就放棄答這道題,你要做的就是你比別人寫得多,證明你比別人強,你有這方面的思想意識就可以了,畢竟別人可能連題目的意思都看不懂,什麼都沒寫,你要敢於答這道題,即使只答了一部分,那也與那些什麼都不懂的人區別出來,拉開了距離,算是矮子中的高個,機會當然就屬於你了。另外,答案中的框架程式碼也很重要,體現了一些面向物件設計的功底,特別是其中的方法命名很專業,用的英文單詞很精準,這也是能力、經驗、專業性、英語水平等多個方面的體現,會給人留下很好的印象,在程式設計能力和其他方面條件差不多的情況下,英語好除了可以使你獲得更多機會外,薪水可以高出一千元。

相關推薦

java試題大全2

這是一套我自己在網上查詢的一份內容很龐大的面試題精選,說實話想要自己看完也是需要很多的時間,我也是為了能夠長時間的儲存下來以便以後可能會用到。 目錄 1. Java 基礎部分 ...............................................

java試題整理2

不可 版本 服務器端 線程 返回 結構 HA 性能調優 CP 一篇 1.Mybatis和hibernate分頁取數實現,一次性取數? Mybatis分為:內存分頁(假分頁)通過遊標截取; 物理分頁; MySQL

Java試題大全

新技術 override 水平 空間 比較 改進 win ots springmvc 一、心態 心態很重要! 心態很重要! 心態很重要! 重要的事情說三遍,這一點我覺得是必須放到前面來講。 找工作之前,有一點你必須清楚,就是找工作是一件看緣分的事情,不是

Java試題2

Java面試題(1)見:https://blog.csdn.net/Number_oneEngineer/article/details/83412521 相關概念 面向物件的三個特徵 封裝,繼承,多型,這個應該是人人皆知,有時候也會加上抽象。 多型的好處 允許不同類物件

java試題大全(整理版)

這幾天在網上搜集各種java面試題:一是為了自己能複習方便,二是為了分享給大家~~題目都是來自網上大佬的分享,感謝大佬們的貢獻~~(持續更新中...)1、面向物件的特徵有哪些方面?- 抽象:抽象是將一類物件的共同特徵總結出來構造類的過程,包括資料抽象和行為抽象兩方面。抽象只關

Java試題大全(資料庫部分三)

11、Oracle資料常用的備份與恢復? Oracle的備份與恢復有三種標準的模式,大致分為兩大類,備份恢復(物理上的)以及匯入匯出(邏輯上的),而備份恢復又可以根據資料庫的工作模式分為非歸檔模式(Nonarchivelog-style)和歸檔模式(Arch

java試題2

pan ole light [0 -i att turn mat [] 1.冒泡排序 public static void test(){ int[] array = new int[]{1,4,5,8,9,34,4,32,65}; int tmp; for(

撩課-Java每天10道試題2

11、面向物件的特徵有哪些方面    1.抽象: 抽象就是忽略一個主題中與當前目標無關的那些方面, 以便更充分地注意與當前目標有關的方面。 抽象並不打算了解全部問題,而只是選擇其中的一部分, 暫時不用部分細節。 抽象包括兩個方面, 一是過程抽象, 二是資料抽象。 2.繼承: 繼承是一種聯結類的層次

JAVA基礎試題2

1、== 與 equals 的區別 ==在比較基本型別資料時,比較的是值;在比較記憶體中的物件地址,即是否指向同一個物件,相當於指標的操作 equals在沒有重寫方法時,在一定意義上相當於==,但我們一般都是自己重寫   2、throwable有哪些子類,你遇到過哪些執行時

《阿里巴巴Java Spring Boot 2.0開發實戰課程》05課:三層MVC網站與架構分層誤區、Java試題

《阿里巴巴Java Spring Boot 2.0開發實戰課程》05課本期分享專家:徐雷—阿里特邀Java講師,MongoDB講師 本期分享主題:三層架構MVC網站與分層架構誤區、Java面試題 國內系統架構設計的文章和書籍。經常會搞錯分層的概念,本課程進行了講解。還有關於model概念的解析,以及Jav

第6課:Java Spring Boot 2.0實戰MyBatis與優化(Java試題)

《阿里巴巴Java Spring Boot 2.0開發實戰課程》06課本期分享專家:徐雷—阿里巴巴特邀Java講師,MongoDB講師 本期分享主題:Spring Boot2.0實戰MyBatis與優化 (Java面試題)Java Spring Boot 2.0是最新的開發平臺,Mybatis是高效能ORM

Java基礎試題2)----搭建Java開發環境的步驟

問題:簡單說一下Java搭建開發環境的步驟 回答: 1. 安裝對應版本的JDK,配置環境變數。 首先說一下JDK,JRE,JVM的關係 JDK Java Development kit,Java開發者工具包,針對開發者,裡面包含了JRE,JVM,JDK原始碼包

JAVA面試】java試題整理(2

                                           java面試題整理(2) JAVA常考點總結2 目錄 1、

Java試題,每日一總結(2

1.字串String和StringBuilder 、StringBuffer的區別?StringBuilder和StringBuffer的區別? 分析:java提供了String和StringBuilder 、StringBuffer三種表示和操作字串的類。字串就是有多個字

整理一些常見的java及android試題2

                1. 什麼是Activity?四大元件之一,一般的,一個使用者互動介面對應一個activity, activity 是Context的子類,同時實現了window.callback和keyevent.callback, 可以處理與窗體使用者互動的事件. 我開發常用的的有List

Java試題全集(2

這部分主要是與Java Web和Web Service相關的面試題。96、闡述Servlet和CGI的區別? 答:Servlet與CGI的區別在於Servlet處於伺服器程序中,它通過多執行緒方式執行其service()方法,一個例項可以服務於多個請求,並且其例項一般不會銷燬

java試題之用最有效率的方法算出2乘以8等於幾

這是網上流傳的"變態級JAVA程式設計師面試32問"的其中一題(二十八題),然後下面給出來的答案是 第二十八,程式設計題: 用最有效率的方法算出2乘以8等於幾?  有C背景的程式設計師特別喜歡問這種問題。    2 << 3 粗看似乎很在理,大致想來2<&l

java試題2--方法重寫與過載、this和super關鍵字

1:方法重寫和方法過載的區別?方法過載能改變返回值型別嗎? 方法重寫:      在子類中,出現和父類中一模一樣的方法宣告的現象。 方法過載:      同一個類中,出現的方法名相同

JAVA試題2:什麼是面向物件?

面向物件是一種思想,世間萬物都可以看做一個物件,這裡只討論面向物件程式設計(OOP),Java是一個支援併發、基於類和麵向物件的計算機程式語言,面向物件軟體開發的優點: 程式碼開發模組化,更易維護和修改; 程式碼複用性強; 增強程式碼的可靠性和靈活性; 增加程式碼的可讀性。 面向物件的四大基本特

java基礎試題整理(2)

  原文地址在這裡!    這實際上是一種犧牲空間換取時間效率的做法。  當緩衝設定的越大,底層呼叫讀寫開銷越小,但是最後一次的讀寫可能造成 的空間開銷利用率則越小。 整體上看來,這個貌