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、在需要使用集合的時候我們需要根據什麼來權衡使用
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分鐘。