1. 程式人生 > >轉載:JAVA企業面試題精選 Java基礎 11-20

轉載:JAVA企業面試題精選 Java基礎 11-20

1.11.&和&&的區別?

參考答案:

  &和&&都可以執行關係判斷。二者的區別是:&運算是把邏輯表示式全部計算完,而&&運算具有短路計算的功能。所謂短路計算,是指系統從左到右進行邏輯表示式的計算,一旦出現計算結果已經確定的情況,則計算過程即被終止。

1.12.寫出Java中8種原始型別及其位元組長度

參考答案:

型別名稱 位元組空間 說明
byte 1位元組(8位) 儲存1個位元組的資料
short 2位元組(16位) 相容性考慮,一般不用
int 4位元組(32位) 儲存整數(常用)
long 8位元組(64位) 儲存長整數(常用)
float 4位元組(32位) 儲存浮點數
double 8位元組(64位) 儲存雙精度浮點數(常用)
char 2位元組(16位) 儲存一個字元
boolean 1位元組(8位) 儲存邏輯變數(true、false)

1.13.請描述一下JVM載入class檔案的原理機制

參考答案:

  JVM中類的裝載是由ClassLoader和它的子類來實現的,Java ClassLoader是一個重要的Java執行時系統元件,它負責在執行時查詢和裝入類檔案中的類。

1.14.你對軟體開發中迭代的含義的理解

參考答案:

  軟體開發中,各個開發階段不是順序執行的,而各個階段都進行迭代,然後進入下一個階段的開發。這樣對於開發中的需求變化,及人員變動都能得到更好的適應。 這裡寫圖片描述

1.15.什麼是程序

參考答案:

  程序是作業系統結構的基礎,是一個計算機中正在執行的程式例項。可以分配給處理器並由處理器執行的一個實體,由單一順序的執行顯示,一個當前狀態和一組相關的系統資源所描述的活動單元。

1.16.什麼是垃圾回收?什麼時候觸發垃圾回收?如何降低垃圾回收的觸發頻率?它能保證程式由足夠的可用記憶體嗎?

參考答案:

第一問: 垃圾回收(GC)是Java語言的一個重要特性,作用是釋放不再被使用的記憶體。 第二問: 垃圾回收是由系統進行管理。在系統認為需要的時候自動啟動一個執行緒進行護理。 第三問: 儘量減少垃圾記憶體,也就是新建物件的數量,可以降低垃圾回收的頻率。 第四問: 垃圾回收機制無法保證有足夠的記憶體。

1.17.Java中會存在記憶體洩漏嗎,請簡單描述?

參考答案:

  會存在記憶體洩漏。   一般來說記憶體洩漏有兩種情況。一是堆中分配的記憶體,在沒有將其釋放掉的時候,就將所有能訪問這塊記憶體的方式都刪掉;另一種情況則是在記憶體物件已經不需要的時候,還仍然保留著這塊記憶體和它的訪問方式(引用)。第一種情況,在Java中已經由於垃圾回收機制的引入,得到了很好的解決。所以,Java中的記憶體洩漏,主要指的是第二種情況。   下面給出了一個簡單的記憶體洩漏的例子。在這個例子中,我們迴圈申請Object物件,並將所申請的物件放入一個List中,如果我們僅僅是放引用本身,那麼List仍然引用該物件,所以這個物件對GC來說是不可回收的。程式碼如下所示:

List list = new ArraryList(10);
for (int i = 1; i < 100; i++){
    Object o = new Object();
    list.add(o);
    o = null;
}

  此時,所有的Object物件都沒有被釋放,因為變數list引用這些物件。

1.18.Java原始檔中是否可以包括多個類,有什麼限制?

參考答案:

  一個Java原始檔中可以包含多個類,每個原始檔中至多有一個public類,如果有的話,那麼原始檔的名字必須與之相同。如果原始檔中沒有public類,則原始檔用什麼名字都可以,但最好還好具有特定的意義,免得自己都不記得裡面寫的是什麼了。一般建議一個原始檔中只寫一個Java類。

1.19.列出自己常用的jdk包

參考答案:

常用的JDK包如下: 1.java.lang包:這個包中包含了JDK提供的基礎類,比如String等都是這裡面的,這個包是唯一一個不用匯入就可以使用的包; 2.java.io包:這個包中包含了與輸入輸出相關的類,比如檔案操作等; 3.java.net包:這個包中包含了與網路有關的類,比如URL,URLConnection等; 4.java.util包:這個是系統輔助類,特別是集合類Collction,List,Map等; 5.java.sql包:這個是資料庫操作的類,Connection,Statement,ResultSet等。

1.20.簡單說明什麼遞迴?什麼情況會使用?並使用Java實現一個簡單的遞迴程式?

參考答案:

1.遞迴作為一種演算法在程式設計語言中廣泛應用,是指函式/過程/子程式在執行過程中直接或間接呼叫自身而產生的重入現象。 2.遞迴演算法一般用於解決三類問題:  1)資料的定義是遞迴定義的。(fibonacci(斐波那契)函式)  2)問題解法按遞迴演算法實現。(回溯)  3)資料的結構形式是按遞迴定義的。(數的遍歷,圖的搜尋) 3.下面是使用遞迴演算法實現計算某個整數在二進位制中的個數,程式碼如下所示:

/**
* 計算二進位制中1的個數
* N為奇數,二進位制中1的個數等於N/2的個數
* 例子:
* num=13
* 1.getBinary(13/2=6)+1;
* 2.getBinary(6/2=3)+1;
* 3.getBinary(3/2=1)+1+1;
* 4.getBinary(1)+1+1; getBinary(1)返回1,與後邊兩個1相加得結果3
*/
public static int getBinary(int num){
    if (num == 1){
        return 1;
    }
    if (0 == num % 2){ // 是否為偶數
        return getBinary(num / 2);
    } else {
        return getBinary(num / 2) + 1;
    }
}