1. 程式人生 > >2018.6.22 Java試題測試結果

2018.6.22 Java試題測試結果

指針 進程 執行文件 可執行文件 return 乘法 適用於 strac 一個

如何從有數字規律的網址抓取網頁並保存在當前目錄?假設網址為 http://test/0.xml,其中這個數字可以遞增到100。

for((i=0;i<100;++i));do  wget http://test/$i.xml; done

關於計算機網絡,以下說法正確的是 1 2 5

(1)在向下的過程中,需要添加下層協議所需要的首部或者尾部
(2)在向上的過程中不斷拆開首部和尾部
(3)在向上的過程中,需要添加下層協議所需要的首部或者尾部
(4)在向下的過程中不斷拆開首部和尾部
(5)SMTP屬於TCP協議
(6)POP3屬於UDP協議
(7)DNS屬於TCP協議
(8)Telnet屬於UDP協議

關於MySQL索引 ,下面說法正確的是( B ) 2 4

(1)B+Tree 索引是大多數 MySQL 存儲引擎的默認索引類型
(2)在 MySQL 中只有 Memory 引擎顯式支持哈希索引
(3)哈希索引只包含哈希值和列指針,而不存儲字段值
(4)MyISAM 存儲引擎支持空間索引,可以用於地理數據存儲。
(5)空間索引使用 MATCH AGAINST,而不是普通的 WHERE
(6) 索引將順序 I/O變為隨機 I/O

解釋

(1) BTree 索引是大多數 MySQL 存儲引擎的默認索引類型,不是B+Tree。
(2) 哈希索引是memory引擎表的默認索引類型,memory也支持btree。
(3) 哈希索引只包含哈希值和行指針,而不存儲字段值,所以不能使用索引中的值來避免讀取行(即不能使用哈希索引來做覆蓋索引掃描)。
(5) 空間索引不會要求where子句使用索引最左前綴可以全方位索引數據,可以高效使用任何數據組合查找 配合使用mercontains()函數使用。
(6) 索引將隨機I/O變為順序I/O

在Linux系統中,可以用來查找可執行文件的是?

(1)whereis
(2)locate
(3)which
(4)type
(5)find

A (1)(2)(3)
B (1)(2)(5)
C (1)(2)(3)(5)
D (1)(2)(3)(4)(5)

有一條TCP連接,它的最大報文段長度為4KB,TCP擁塞窗口為24KB,這時候發生超時,那麽該擁塞窗口變為了( 4KB )

TCP報文中,當發生超時事件,閾值被設置成當前擁塞窗口的一半,而擁塞窗口被設為一個最大報文段,也就是4KB。

在Java中,包com中定義了類TestUtil,在com的子包util中定義了同名類TestUtil,給定如下Java代碼,編譯運行時,將發生( 編譯無法通過 )。

package test;
import com.util.TestUtil;
import com.TestUtil;
public class Test {
  public static void main(String[] args)  {
    TestUtil testutil = new TestUtil();
  }
}

給定Java代碼如下所示,則編譯運行後,輸出結果是( 2 2 2 )。

public class Test {
    static int a;
    int b;
    static int c;
 
    public int aMethod() {
        a++;
        return a;
    }
 
    public int bMethod() {
        b++;
        return b;
    }
 
    public static int cMethod() {
        c++;
        return c;
    }
 
    public static void main(String args[]) {
        Test test1 = new Test();
        test1.aMethod();
        System.out.println(test1.aMethod());
        Test test2 = new Test();
        test2.bMethod();
        System.out.println(test2.bMethod());
        Test test3 = new Test();
        test3.cMethod();
        System.out.println(test3.cMethod());
    }
}



註釋
    關於類的成員變量若沒有賦值,都存在默認值的,
    對於基本類型,都存在對應值,int : 0
    對於引用類型,為null

給定某Java程序的main方法如下,該程序編譯運行後的結果是(運行時出現異常 )。

public class A{
public static void main(String[] args) {
    String str="ww";
    str.concat("abc");
    str.concat("123");
    System.out.println(str);
    }
}


註釋
    1.字符串連接的時候鏈接一個新的字符串對象來保存新的連接成的字符串
    2.或者寫成不用在原字符串是你的改變,在連接時用字符串原始值

給定某Java程序的main方法如下,該程序編譯運行後的結果是(22 22 )。

public class Test {
    int count = 21;
    public void count() {
        System.out.println(++count);
    }
    public static void main(String args[]) {
        new Test().count();
        new Test().count();
    }
}


註釋 
    ++C是先將變量C進行加一操作,是“先賦值,後使用”,所以調用方法輸出的結果是22。而main()方法中new出來的是兩塊空間,所以結果都是22。

在JDK1.8中,HashMap沒有實現哪個接口(AbstractMap )。

AbstractXX的多半是抽象類,而不是接口,接口不需要強調抽象,他不可能不抽象

下面關於進程和線程說法錯誤的是( B )

A進程是系統進行資源分配和調度的基本單位,而線程是CPU調度和分配的基本單位
B線程也擁有自己的系統資源
C一個線程可以創建和撤銷另一個線程
D一個進程中的多個線程共享資源

線程自己擁有:狀態和計數器
同一個進程內的線程共享這個進程的資源
所有線程是沒有自己的系統資源的,多個線程是交替使用其進程的資源

線程是指進程內的一個執行單元,也是進程內的可調度實體.與進程的區別:
(1)地址空間:進程內的一個執行單元;進程至少有一個線程;它們共享進程的地址空間;而進程有自己獨立的地址空間;
(2)資源擁有:進程是資源分配和擁有的單位,同一個進程內的線程共享進程的資源
(3)線程是處理器調度的基本單位,但進程不是.
4)二者均可並發執行.進程和線程都是由操作系統所體會的程序運行的基本單元,系統利用該基本單元實現系統對應用的並發性

下面關於線程同步說法錯誤的是( D )

A用戶模式和內核模式下同步方式不同
B對於臨界區的訪問適用於單進程中線程間的同步
C事件對象適用於多個進程間的各線程實現同步
D互斥對象也只適用於單進程中線程間的同步


解釋:他是內核對象,不同進程的多個線程可以訪問單個互斥對象,這樣可以確保多個線程同時訪問內存塊,內存塊中數據不會遭到破壞。

下面關於死鎖的說法錯誤的是( D )

A死鎖是指多個進程因搶占資源而發生的一種阻塞且相互等待的現象
B死鎖的產生源於系統資源不足和進程推進順序不當
C可以通過終止和撤銷進程來解除死鎖
D銀行家算法用在預防死鎖策略中


銀行家算法(Banker‘s Algorithm)是一個避免死鎖(Deadlock)的著名算法  銀行借貸系統的分配策略為基礎,判斷並保證系統的安全運行。


產生死鎖的四個條件:
(1) 互斥條件:一個資源每次只能被一個進程使用。
(2) 請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。
(3) 不剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。
(4) 循環等待條件:若幹進程之間形成一種頭尾相接的循環等待資源關系。

用13的瓷磚密鋪320的地板有幾種方式?

3*n的區域鋪瓷磚為f(n),如果第一列豎著,那麽就是f(n-1),如果橫著鋪,就是f(n-3)。
f(n) = f(n-1) + f(n-3),遞推結果為1278。


動態規劃,轉移方程為:f[i] = 2*f[i-3] + f[i-4] + f[i-5];

代碼實現
public class Main {
    public static void main(String[] args) {
        int[] a = new int[20 + 5];
        a[0] = 1;
        a[1] = 1;
        a[2] = 1;
        a[3] = 2;
        a[4] = 3;
        for (int i = 5; i <= 20; i++) {
            a[i] = (a[i-3] << 1) + a[i-4] + a[i-5];
            System.out.println(i + "  " + a[i]);
        }
    }
}

已知有4個矩陣分別大小為M1(53) M2(34) M3(42) M4(27) 下面組合計算所需要的乘法次數最優的為?(((M1M2)M3)M4)

2018.6.22 Java試題測試結果