大數據面試寶典六

好程序員大數據培訓分享大數據面試寶典六1、數據類型之間的轉換:
1)如何將數值型字符轉換爲數字?
2)如何將數字轉換爲字符?
3)如何取小數點前兩位並四捨五入? 【基礎】
答:
1)調用數值類型相應包裝類中的方法parse*(String)或valueOf(String)即可返回相應基本類型或包裝類型數值;
2)將數字與空字符串相加即可獲得其所對應的字符串;另外對於基本類型數字還可調用String 類中的valueOf(…)方法返回相應字符串,而對於包裝類型數字則可調用其toString()方法獲得相應字符串;
3)可用該數字構造一java.math.BigDecimal 對象,再利用其round()方法進行四捨五入到保留小數點後兩位,再將其轉換爲字符串截取最後兩位。
2、You need to insert an inner class declaration at line 3,Which two inner class declarations are valid?(Choose two.)
public class OuterClass {

private double d1 = 1.0;
//insert code here

}

A. class InnerOne{

public static double methoda() {return d1;}

}
B. public class InnerOne{

static double methoda() {return d1;}

}
C. private class InnerOne{

double methoda() {return d1;}

}
D. static class InnerOne{

protected double methoda() {return d1;}

}
E. abstract class InnerOne{

public abstract double methoda();

}
答:答案爲C、E;說明如下:
1)靜態內部類可以有靜態成員,而非靜態內部類則不能有靜態成員;故A、B錯;
2)靜態內部類的非靜態成員可以訪問外部類的靜態變量,而不可訪問外部類的非靜態變量;故D 錯;
3)非靜態內部類的非靜態成員可以訪問外部類的非靜態變量;故C 正確。

3、字符串操作:如何實現字符串的反轉及替換?【基礎】
答:可用字符串構造一StringBuffer 對象,然後調用StringBuffer 中的reverse方法即可實現字符串的反轉,調用replace 方法即可實現字符串的替換。

4、編碼轉換:怎樣將GB2312 編碼的字符串轉換爲ISO-8859-1 編碼的字符串?【基礎】
答:示例代碼如下:
String s1 = "你好";
String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1");

5、寫一個函數,要求輸入一個字符串和一個字符長度,對該字符串進行分隔。【基礎】
答:函數代碼如下:
public String[] split(String str, int chars){

int n = (str.length()+ chars - 1)/chars;
String ret[] = new String[n];

for(int i=0; i

    if(i < n-1){
        ret[i] = str.substring(i*chars , (i+1)*chars);
    }else{
        ret[i] = str.substring(i*chars);
    }
}
return ret;

}

6、字符串操作:如何實現字符串的反轉及替換?【基礎】
答:可用字符串構造一StringBuffer 對象,然後調用StringBuffer 中的reverse方法即可實現字符串的反轉,調用replace 方法即可實現字符串的替換。

7、日期和時間:
1)如何取得年月日、小時分秒?
2)如何取得從1970 年到現在的毫秒數?
3)如何取得某個日期是當月的最後一天?
4)如何格式化日期?【基礎】
答:
1)創建java.util.Calendar 實例(Calendar.getInstance()),調用其get()方法傳入不同的參數即可獲得參數所對應的值,如:calendar.get(Calendar.YEAR);//獲得年
2)以下方法均可獲得該毫秒數:
Calendar.getInstance().getTimeInMillis();System.currentTimeMillis();
3)示例代碼如下:
Calendar time = Calendar.getInstance();
time.set(Calendar.DAY_OF_MONTH,
time.getActualMaximum(Calendar.DAY_OF_MONTH));

8、什麼時候用assert?【中等難度】
答:assertion(斷言)在軟件開發中是一種常用的調試方式,很多開發語言中都支持這種機制。一般來說,assertion 用於保證程序最基本、關鍵的正確性。assertion 檢查通常在開發和測試時開啓。爲了提高性能,在軟件發佈後, assertion 檢查通常是關閉的。在實現中,斷言是一個包含布爾表達式的語句,在執行這個語句時假定該表達式爲true;如果表達式計算爲false,那麼系統會報告一個Assertionerror。
斷言用於調試目的:
assert(a > 0); // throws an Assertionerror if a <= 0
斷言可以有兩種形式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 應該總是產生一個布爾值。
Expression2 可以是得出一個值的任意表達式;這個值用於生成顯示更多調試信息的String 消息。
斷言在默認情況下是禁用的,要在編譯時啓用斷言,需使用source 1.4 標記:
javac -source 1.4 Test.java
要在運行時啓用斷言,可使用-enableassertions 或者-ea 標記。
要在運行時選擇禁用斷言,可使用-da 或者-disableassertions 標記。
要在系統類中啓用斷言,可使用-esa 或者-dsa 標記。還可以在包的基礎上啓用或者禁用斷言。可以在預計正常情況下不會到達的任何位置上放置斷言。斷言可以用於驗證傳遞給私有方法的參數。不過,斷言不應該用於驗證傳遞給公有方法的參數,因爲不管是否啓用了斷言,公有方法都必須檢查其參數。不過,既可以在公有方法中,也可以在非公有方法中利用斷言測試後置條件。另外,斷言不應該以任何方式改變程序的狀態。

9、Java 中的異常處理機制的簡單原理和應用?【基礎】
答:當JAVA 程序違反了JAVA 的語義規則時,JAVA 虛擬機就會將發生的錯誤表示爲一個異常。違反語義規則包括2 種情況。一種是JAVA 類庫內置的語義檢查。例如數組下標越界,會引發IndexOutOfBoundsException;訪問null 的對象時會引發NullPointerException。另一種情況就是JAVA 允許程序員擴展這種語義檢查,程序員可以創建自己的異常,並自由選擇在何時用throw 關鍵字引發異常。所有的異常都是java.lang.Thowable 的子類。

10、error 和exception 有什麼區別? 【基礎】
答:error 表示系統級的錯誤和程序不必處理的異常,是恢復不是不可能但很困難的情況下的一種嚴重問題;比如內存溢出,不可能指望程序能處理這樣的情況;exception 表示需要捕捉或者需要程序進行處理的異常,是一種設計或實現問題;也就是說,它表示如果程序運行正常,從不會發生的情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章