java基礎筆試面試題答案
阿新 • • 發佈:2018-12-25
1 String,StringBuffer,StringBuilder的區別
String 字串常量 執行緒安全 操作少量資料
StringBuffer 字串變數 執行緒安全 操作大量資料 速度慢 多執行緒適合用
StringBuilder 字串變數 執行緒不安全 操作大量資料 速度快 單執行緒適合用
2.override(重寫)和overload(過載)區別
方法的重寫(Overriding)和過載(Overloading)是java多型性的不同表現;
重寫是父類與子類之間多型性的一種表現,過載是一類中多型性的一種表現。
3.String str = new String("xyz");建立了幾個物件。
如果String常量池中,已經建立了"xyz",則不會繼續建立,此時只建立了一個物件new String("xyz");
如果String常量池中沒有建立"xyz",則會建立兩個物件,一個物件的值是"xyz",一個物件是new String("xyz");
4.說幾個你常見到的異常。
Throwable是所有異常的根,java.lang.Throwable Error是錯誤,java.lang.Error Exception是異常,java.lang.Exception 一般分為Checked異常和Runtime異常,所有RuntimeException類及其子類的例項被稱為Runtime異常,不屬於該範疇的異常則被稱為CheckedException。 NullPointerException 空指標異常 ArithmeticException 除0異常 ClassCastException 型別轉換 ArrayIndexOutOfBoundsException 陣列越界異常
5.hashtable和hashmap的區別是什麼?
6.hashmap的底層實現方式是什麼?
HashMap是一個“連結串列的陣列”的資料結構,每個元素存放連結串列頭結點的陣列,即陣列和連結串列的結合體。
7.Vector , ArrayList 和LinkedList的區別?
1、Vector、ArrayList都是以類似陣列的形式儲存在記憶體中,LinkedList則以連結串列的形式進行儲存。 2、Vector執行緒同步,ArrayList、LinkedList執行緒不同步。 3、LinkedList適合指定位置插入、刪除操作,不適合查詢;ArrayList、Vector適合查詢,不適合指定位置的插入、刪除操作。 4、ArrayList在元素填滿容器時會自動擴充容器大小的50%,而Vector則是100%,因此ArrayList更節省。
8.怎麼遍歷一個map?寫一下。
public class Collection_Map {
public static void main(String[] args) {
Map<String, Student> hm = new HashMap<String,Student>();
Student stu1 = new Student(1,"MapTom");
Student stu2 = new Student(2,"MapJack");
Student stu3 = new Student(3,"MapKoby");
hm.put("1", stu1);
hm.put("2", stu2);
hm.put("3", stu3);
/*第一種 先將map物件轉成set,然後再轉為迭代器*/
Iterator<Entry<String, Student>> it = hm.entrySet().iterator();
while (it.hasNext()) {
//System.out.println(it.next().getKey());
System.out.println(it.next().getValue().getName());
}
/*第二種 先將map轉為set型別的key值集合,然後轉為迭代器*/
Iterator<String> it2 = hm.keySet().iterator();
while(it2.hasNext()){
/* System.out.println(it2.next());*/
System.out.println(hm.get(it2.next()).getName());
}
/*第三種*/
for(Map.Entry<String, Student> entry : hm.entrySet()){
String key = entry.getKey();
String value = entry.getValue().getName();
System.out.println(value);
}
/*第四種*/
for(String key : hm.keySet()){
System.out.println(hm.get(key).getName());
}
}
}
9.說一下list,set,map的區別。
List特點:元素有放入順序,元素可重複
Map特點:元素按鍵值對儲存,無放入順序
Set特點:元素無放入順序,元素不可重複(注意:元素雖然無放入順序,但是元素在set中的位置是有該元素的
HashCode決定的,其位置其實是固定的)
10.至少說五點interface和abstract的區別。
1.一個類可以實現多個介面 ,但卻只能繼承最多一個抽象類。
2.抽象類可以包含具體的方法 , 介面的所有方法都是抽象的。
3.抽象類可以宣告和使用欄位 ,介面則不能,但介面可以建立靜態的final常量。
4.介面的方法都是public的,抽象類的方法可以是public,protected,private或者預設的package;
5.抽象類可以定義建構函式,介面卻不能。
11.怎麼把陣列放到物件裡面?
public static void main(String[] args) {
Integer[] arr = {1, 2, 3, 4, 5, 6};
List<Integer> list = new ArrayList<Integer>();
for (Integer i : arr) {
list.add(i);
}
}
12.給你一組字串如:7i8hy4jjnb2.讓你程式設計輸出裡面的數字:7842.
public static String isNumeric(String str) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char j = str.charAt(i);
if (Character.isDigit(j)) {
sb.append(String.valueOf(j));
}
}
return sb.toString();
}
13.java類實現序列化有幾種實現方式?都是什麼?(二種)
實現介面Serializable
實現介面Externalizable
提示:
物件的序列化就是將物件寫入輸出流中。
反序列化就是從輸入流中將物件讀取出來。
14.java開發中“==” 和 “equals” 有何區別?
equals()是個方法,繼承類Object
== 是個運算子,表示記憶體地址是否相同
==比較的是2個物件的地址,而equals比較的是2個物件的內容。顯然,當equals為true時,==不一定為true。
==操作比較的是兩個變數的值是否相等,對於引用型變量表示的是兩個變數在堆中儲存的地址是否相同,即棧中的內容是否相同。
15.static區域性變數與全域性變數的區別,編譯後對映檔案是否包含此類變數的地址。
static全域性變數只初使化一次,防止在其他檔案單元中被引用;
static區域性變數和普通區域性變數有什麼區別:static區域性變數只被初始化一次,下一次依據上一次結果值;
static函式與普通函式有什麼區別:static函式在記憶體中只有一份,普通函式在每個被呼叫中維持一份拷貝;