java筆試題帶答案

java筆試題帶答案

最近在面試java開發工程師,雖然面試的結果不重要,但是過程還是很重要的,我覺得有必要記錄下來。下面是我總結的一些java筆試題,希望能幫到大家。

—、不定項選擇題

三維家
1、下列描述正確的是(ABD)
A:cookie存儲在客戶端的臨吋文件中。
B:session存儲在服務器的內存中。
C:cookle的secure=true時,不允許客戶端腳本訪問。
D:cookle的 httpOnly==true時,不允許客戶端腳本訪問。
解析:secure=true時,只能在 HTTPS 連接中被瀏覽器傳遞到服務器端進行會話驗證,
如果是 HTTP 連接則不會傳遞該信息。

2、下列選項中,屬於SpringlOC Bean的作用域的是(BCD)
A:Cookie B:Request
C:Session D:Prototype
解析:Spring 3中爲Bean定義了5中作用域,分別爲singleton(單例)、prototype(原型)、request、session和global session
詳情請查看我的博客:https://blog.csdn.net/weixin_43287508/article/details/88058714

3、下面關於Spring 傳播機制的描述,正確的是(BD)
A:Propagation_REQUIRE_NEW 支持當前事務,如果當前沒有事務,則新建一個事務。
B:Propagation_REQUIRE指支持當前事務,如果當前沒有事務,則新建一個事務。
C:Propagation_NOT_SUPPORTED指以非事務方式執行操作,如果當前存在事務,則拋出異常。
D:Propagation_NEVER 指以非事務方式執行操作,如果當前存在事務,則拋出異常。

解析:A: PROPAGATION_REQUIRES_NEW 總是開啓一個新的事務。如果一個事務已經存在,則將這個存在的事務掛起。
C: PROPAGATION_NOT_SUPPORTED 以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
詳情請查看我的博客:https://blog.csdn.net/weixin_43287508/article/details/88064566

4、下列敘述正確的是:(AB)
A:Vector是線程安全的,ArrayList是線程不安全的
B:ArrayList 效率比 Vector 更髙
C:ArrayList底層是數組實現,Vector不是
D:Vector和ArrayList的自動擴容機制是一樣的

解析:C:Vector與ArrayList一樣,也是通過數組實現的,不同的是它支持線程的同步。
D: ArrayList以1.5倍的方式在擴容、Vector 當擴容容量增量大於0時、新數組長度爲原數組長度+擴容容量增量、否則新數組長度爲原數組長度的2倍。
詳情請查看我的博客:https://blog.csdn.net/weixin_43287508/article/details/88065284

5、下面描述正確的是:(AD)
A:單線程情況下StringBuilder在做大量的字符串拼接的效率優於StringBuffer
B:StringBuilder是線程安全的,StringBuffer是線程不安全的
C:StringBuilder 的拼接字符串方法是 append(Object),StringBuilder 不是
D:StringBuilder默認的長度是16
詳情請查看我的博客:https://blog.csdn.net/weixin_43287508/article/details/88245200

6、下面哪些即使經過IO之後仍然可以保持單例:(AD)
A:創建單例對象的時候使用雙重鎖
B:枚舉類對象
C:創建單例對象類的時候Override方法readResolve ()方法
D:將單例對象的變量定義爲常量
這題不知道答得對不對,歡迎指出。

7、下面代碼執行後控制檯返回的結’果是:(D)
Public static void main(String args[]){
byte b=127;
b++;
System.out.print(b);
}
A:128 B:127 C:0 D:-128
解析:byte類型的範圍是-128到127,127的二進制爲:0111 1111,所以執行++a時,0111 111變爲1000 0000,而128的二進制爲:1000 0000,即爲127+1=-128。

8、當我們在通過調用Thread.System.gc()或者Runtime getRuntime gc(); 方法啓動我們的垃圾回收,收集器什麼時候執行(D)
A:立刻執行
B:當前方法執行結束之後
C:程序停止的時候執行
D:不可預判,程序可能會隨時執行
這題不會,望有人給出答案

二、填空題

1、看下面代碼,完成填空

public class UserService{

private final static String	name="張三";

public static void main(String[] args){
	    User user=new User();
	    Integer age=100;
	    user.setAge(age);
	    user.setName (name);
}
}

class User{

private Integer age;
private String name;

public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public Integer getAgef) {
	return age;
}
public void setAge(lnteger age) {
	 this. age = age;
}
}

上述代碼main方法執行之後:(答案請在下面給出的答案中選擇)

字符串“張三”存在JVM的存儲區域是( C );
main()方法字節碼存在的存儲區域是( D );
user對象存在的存儲區域是 ( B );
user對象中的age存在的存儲區域是( A );

A:本地方法棧 B: Java堆
C:運行時常量池 D:方法區

2、OOP五大原則((Object-oriented programming),指面向對象程序設計):

  1. 單一職責原則
  2. 接口隔離原則
  3. 開放-封閉原則
  4. 替換原則
  5. 依賴倒置原則

三、解答題

1、在需要使用集合的時候我們需要根據什麼來權衡使用
ArrayList,Linkedlist,Vector,Stack ?
答:一,線程安全性
Vector、Stack:線程安全,ArrayList、LinkedList:非線程安全

二,實現方式
LinkedList:雙向鏈表,ArrayList,Vector,Stack:數組

三,容量擴展方面
由於ArrayList和Vector(Stack繼承自Vector,只在Vector的基礎上添加了幾個Stack相關的方法,故之後不再對Stack做特別的說明)使用數組實現,當數組長度不夠時,其內部會創建一個更大的數組,然後將原數組中的數據拷貝至新數組中,如果在創建Vector時不指定capacityIncrement(自動擴展長度)的值,如需擴展,則每次至少擴展至原長度的2倍。

四,效率方面
查詢ArrayList>LinkedList
插入ArrayList<LinkedList

2、寫-段代碼,刪除指定集合中的某個特定值
答:

public static void name() {
		ArrayList<String> al = new ArrayList<String>();
		al.add("a");
		al.add("b");
		al.add("c");

		for (int i = 0; i < al.size(); i++) {
			if (al.get(i) == "b") {
				al.remove(i);
				i--;
			}
		}

		for (int i = 0; i < al.size(); i++) {
			System.out.println(i + "::::" + al.get(i));
		}

	}

3、將下列數字用代碼進行排序,寫成每一次操作步驟後的排序結果,實例:5,4, 6, 2, 8, 7
答:

int array[]={5,4,6,2,8,7};
		for(int i=0;i<array.length;i++){
			System.out.print(array[i]);
			
		}
		System.out.println("");
		System.out.println("---------");
		for (int i = 0; i < array.length - 1; i++) {
			// 排序輪數
			for (int j = 0; j < array.length - 1; j++) {// 比較次數
				if (array[j] > array[j + 1]) {
					int temp = array[j + 1];
					array[j + 1] = array[j];
					array[j] = temp;
				}
			}

452678

425678

245678

4、有沒有辦法訪問其他類中的private方法,以及爲什麼?

5、看下面的student表

在這裏插入圖片描述
用一條SQL查出查出每門課程都大於80的學生姓名

四、問答題

1、請列舉出Redis常用的5種數據類型
答:
索菲亞

2、Spring的依賴注入是什麼意思?給一個Bean的message屬性,字符串類型,注入值爲“HELLOWORLD”的XML配置文件該怎麼寫?
答:

3、請解釋下Spring Bean的生命週期?
答:1:創建實例( init-method);
2:注入依賴關係;
3:調用 bean 的初始化方法;
4:bean 初始成功,可以使用;
5:容器關閉時 , 調用 bean 的銷燬方法(destroy-method);

詳情請查看我的博客:https://blog.csdn.net/weixin_43287508/article/details/88058714

4、Spring的事務有幾種實現方式?談談Spring事務的隔離性和傳播行爲?
答:

5、JDBC如何做事務處理?
答:

6、MYSQL數據庫中的Exist和in執行效率上哪個更好,爲什麼?
答:

7、一個用戶具有多個角色,請寫出SQL查詢出該表中,具有該用戶的所有角色的其他用戶。
答:

8、請分別寫出一段棧溢出和堆溢出的代碼?
答:

9、設計一個函數只定義2個變量a和b,不使用第三個變量,使2個值交換?
答:

10、有四個人要在夜裏穿過一條懸索橋回到宿營地。可是他們只有一支手電,電池只夠再亮17分鐘。過橋必須要有手電,否則太危險。橋最多隻能承受兩個人同時通過的重量。這四個人的過橋速度都不一樣:一個需要1分鐘,一個需要2分鐘,一個需要5分鐘,還有一個需要10分鐘。他們如何才能在17分鐘之內全部過橋?
答:
1、2一起過—2分鐘
1回來—1分鐘
5、10一起過—10分鐘
2回來—2分鐘
1、2一起過—2分鐘。
總共17分鐘。

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