JAVA 技術方向測試題-Java 基礎
阿新 • • 發佈:2021-10-03
JAVA 技術方向測試題-Java 基礎
1.JVM、JRE 和 JDK 的關係
JDK>JRE>JVM.
JVM:是Java虛擬機器。能識別class型別檔案中位元組碼指令,呼叫作業系統向上的API完成動作。JVM是java能夠跨平臺的核心。
JRE:Java執行時環境。主要包含兩個部分:JVM的標準實現和Java的一些基本類庫。與jvm相比多出來的是一部分的java類庫。
JDK:Java開發工具包。JDK是整個Java開發的核心,它集成了JRE和一些工具。
2.什麼是跨平臺性?原理是什麼?
跨平臺性是指經過一次編譯後可以在不同的作業系統上執行。
實現原理:JDK裡有多個jvm針對不同的作業系統,這樣只需要編譯一次就能生成jvm時別的class檔案,通過不同的jvm翻譯就能讓不同的作業系統執行。
3.&和&&的區別?
短路與:&&,如果左側的表示式是false就不執行右側,直接返回false。
&:無論左側是不是false都會在執行一邊右邊。
4.用最有效率的方法計算 2 乘以 8
2 << 3.
一個數左移幾位就是乘以2的幾次方。8 = 23,所以左移3位,位運算是cpu直接支援的,效率更高,而2*8是通過加法運算操作的。
5.在沒有使用臨時變數的情況如何交換兩個整數變數的值?
a ^= b
b ^= a
a ^= b
6.short s1 = 1; s1 = s1 + 1;有錯嗎?short s1 = 1; s1 += 1; 有錯嗎?
short s1 = 1;
s1 = s1 +1;//是錯誤的. 因為1是int型,相加之後是int型不能直接賦值給short型,需要強轉.
s1 += 1;//是正確的.因為 += 隱含了強轉,相當於 s1 = (int) s1 + 1;
7.float f=3.4;是否正確?
不正確。在Java裡,沒有小數點的資料型別預設是int型,有小數點的資料型別是double型別
float f = 3.4F;//這樣是正確的.
8.手動實現一下氣泡排序(快速排序)
//第一種方法 boolean flag = false; do { flag = false; for(int i = 0;i < nums.length;i++) { //如果左側大於右側 if(nums[i] > nums[i+1]) { nums[i] ^= nums[i+1]; nums[i+1] ^= nums[i]; nums[i] ^= nums[i+1]; flag = true; } } }while(flag) //第二種方法 //輪數 for(int i = 0;i < nums.length;i++) { //次數 for(int j = i;j < nums.length-i-1;j++) { if(nums[j] > nums[j+1]) { nums[j] ^= nums[j+1]; nums[j+1] ^= nums[j]; nums[j] ^= nums[j+1]; } } }
9.實現列印指定行數的空心菱形的功能
for(int i = 0;i < 4;i++) {
for(int k = 0;k < 4-i-1;k++) {
System.out.print(" ");
}
for(int j = 0;j < 2*i+1;j++) {
if(j == 0 || j == 2*i) {
System.out.print("* ");
}else {
System.out.print(" ");
}
}
System.out.println();
}
for(int i = 0;i < 3;i++) {
for(int j = 0;j < i+1;j++) {
System.out.print(" ");
}
for(int k = 0;k < 5-2*i;k++) {
if(k == 0 || k == 5-2*i-1) {
System.out.print("* ");
}else {
System.out.print(" ");
}
}
System.out.println();
}
執行結果:
10.列印掃雷的地圖
Scanner input = new Scanner(System.in);
Random r = new Random();
System.out.print("請輸入地圖的邊長:");
int size = input.nextInt();
String[][] map = new String[size][size];
//初始化地圖
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
map[i][j] = i+""+j;
}
}
//列印地圖
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
System.out.print(map[i][j]+" ");
}
System.out.println();
}
執行截圖: