轉載:JAVA企業面試題精選 Java基礎 1-10
JAVA企業面試題精選
第一部分
Java基礎
1.1.你認為Java與其他(你所瞭解的)語言相比,有什麼優點和缺點?
參考答案:
首先,Java與C/C++相比。Java語言是一種完全的面嚮物件語言,雖然它的底層(執行時庫)是用C語言開發的,可是並不依賴於C。因為Java的執行是在執行時庫的支援下進行的,所以執行效率比起可以更接近底層的C/C++來說效率會有所影響,不過Java的類庫採用很好的設計理念,非常好用,也非常實用,已經成為業界的一種標準開發孕育。它的跨平臺的特性受到開發者的青睞,只需要開發一次就能在所有安裝了Java執行時庫的環境上執行。
其次,Java與C#相比。C#是微軟開發的一種程式語言,語法類似Java,幾乎就是Java的翻版。執行原理和Java也類似,也是通過執行時庫的支援執行。不過支援的平臺還很有限。Java幾乎被所有平臺支援,而C#目前只被Windows和Linux支援,Windows下的支援當然是由微軟自己開發的,而Linux下的支援則有mono支援。實際上,mono也是把C#應用轉化為Java應用而已,所以本質上,C#仍然只是被微軟自己的作業系統支援。應用平臺受到限制,是它最大的缺點。
1.2.請回答以下幾個名詞的意思:JVM、JDK、JRE、JavaSE、JavaEE、JavaME、GC
參考答案:
JVM:Java虛擬機器,Java Virtual Machine的縮寫。是一個虛構出來的計算機,通過在實際的計算機上模擬模擬各種計算機功能來實現的。Java虛擬機器有自己完善的硬體架構,如處理器、堆疊、暫存器等,還具有相應的指令系統。JVM遮蔽了與具體作業系統平臺相關的資訊,使得Java程式只需生成在Java虛擬機器上執行的目的碼(位元組碼),就可以在多種平臺上不加修改地執行。 JDK:Java開發工具包,Java Development Kit的縮寫。JDK是整個Java的核心,包括了Java執行環境、Java工具和Java基礎類庫。 JRE:Java執行環境,Java Runtime Environment的縮寫。執行Java程式所必須的環境的集合,包含JVM標準實現及Java核心類庫。 JavaSE:Java Standard Edition,標準版,是我們常用的一個版本,從JDK 5.0開始,改名為JavaSE,主要用於桌面應用軟體的程式設計。 JavaEE:Java Enterprise Edition,企業版。JavaEE是J2EE的一個新的名稱,主要用於分散式的網路程式的開發。 JavaME:Java Micro Edition,是為機頂盒、行動電話和PDA之類嵌入式消費電子裝置提供Java語言平臺,包括虛擬機器和一系列標準化的Java API。 GC:垃圾回收,Garbage Collection的縮寫。當Java虛擬機發覺記憶體資源緊張時,則會自動地去清理無用物件(沒有被引用到的物件)所佔用的記憶體空間。
1.3.JVM能有幾個例項?
參考答案:
每個Java程式對應於一個JVM例項,當一個Java程式執行時就建立一個JVM例項,因此JVM例項的個數取決於同時執行的程式個數。
1.4.Java跨平臺時如何實現的?
參考答案:
Java是利用JVM(Java虛擬機器)實現跨平臺的。 Java原始碼(✽.java)經過Java編譯器編譯成Java位元組碼( ✽.class),執行Java位元組碼,Java位元組碼經過JVM解釋為具體平臺的具體指令,並執行。不同平臺有不同的JVM,主流平臺都提供了JVM,所以Java位元組碼可以在主流平臺上能夠解釋執行。在這個意義上Java是跨平臺的,也就是說:Java的位元組碼是跨平臺的。
1.5.簡述TCP/UDP協議的區別?
參考答案:
比較項 | TCP | UDP |
---|---|---|
是否可連線 | 面向連線 | 面向非連線 |
傳輸可靠性 | 可靠的 | 不可靠的 |
速度 | 慢 | 快 |
1.6.闡述一下類的命名規則、方法的命名規則、變數的命名規則、包名的命名規則、常量的命名規範?
參考答案:
在Java中,類的命名、方法的命名、變數的命名、包名的命名以及常量的命名首先必須符合Java識別符號的命名規則,規則如下: 1)可以以字母、數字、”_”、”$”符組成; 2)首字元不能以數字開頭; 3)中文可以作為變數名,但不提倡使用; 4)Java大小寫敏感,命名變數時需要注意; 5)不能使用Java保留字(一些Java語言規定好的,有特殊含義的字元),如:int、if、for、break等。
其次,類的命名、方法的命名、變數的命名、包名的命名以及常量的命名要符合如下規範: 1)類命名規範:首字母大寫,如果由多個單詞合成一個類名,要求每個單詞的首字母也要大寫,如:HelloWorld。 2)方法命名規範:首字母小寫,中間的每個單詞的首字母都要大寫,如:getName。 3)變數的命名規範:變數的命名規範和方法一樣,首字母小寫,中間的每個單詞的首字母都要大寫,如:name。 4)包的命名規範:Java包的名字都是有小寫單片語成。但是由於Java面向物件程式設計的特性,每一名Java程式設計師都可以編寫屬於自己的Java包,為了保障每個Java包命名的唯一性,在最新的Java程式設計規範中,要求程式設計師在自己定義的包的名稱之前加上唯一的字首。由於網際網路的域名稱是不會重複的,所以程式設計師一般採用自己在網際網路上的域名稱作為自己程式包的唯一字首。例如:”com.sun.swt”一般公司命名會以”com.公司名.專案名.模組名”開頭,所以會長一點,如com.land.oa.emp.struts.action。 5)常量的命名規範:基本資料型別的常量名為全大寫,如果是由多個單詞構成,可以用下劃線隔開,如:WEEK_OF_MONTH。
1.7.闡述一下Java共有幾種註釋方法?
參考答案:
在Java中有三種註釋型別: 1)單行註釋符號是”//”,只能註釋一行。 2)塊註釋符號是”/* */”,可以跨多行。 3)javadoc註釋符號是”/** */”,可以跨多行,而且生成javadoc時,這樣的註釋會被生成標準的Java API註釋。
1.8.如何增加程式碼的清晰度和可觀性?
參考答案:
增加程式碼的清晰度和可觀性常用的方法如下: 1)給程式碼添加註釋。 2)類名包名等命名規範化。 3)縮排排版規範。 4)新增異常的處理。 5)使用測試類和測試方法。
1.9.Java中有兩個關鍵字:void和null,它們有什麼區別?
參考答案:
在Java中,void僅用於無返回值的方法上,例如:
public void a(){}
- 1
該方法不需要返回資料,故返回值型別設定為void。 null則代表物件/變數的值,例如:
String a = null;
- 1
表示變數a沒有被例項化,沒有指向具體的記憶體地址。
1.10.Java中結構化程式設計有哪三種基本流程,分別對應哪些語句?
參考答案:
Java中結構化程式設計有三種基本流程,分別是順序、選擇、迴圈。其中,順序表示程式中的各操作是按照它們出現的先後順序執行的;選擇對應Java語言中的if語句和switch語句;迴圈對應Java語言中的for語句、do-while語句以及while語句。