1. 程式人生 > >秋招線上筆試題-測試(一)

秋招線上筆試題-測試(一)

1、白盒測試方法中,邏輯覆蓋發現錯誤的能力,從強到弱排序為:

路徑覆蓋、條件組合、判定+條件覆蓋、條件覆蓋、判定覆蓋、語句覆蓋

2、解決IP地址資源有限問題:當前使用最多的是NAT方式(多個內網共享一個IP),未來主要通過ipv6方式解決

3、malloc函式與free函式:記憶體分配函式

(1)malloc:將可用記憶體塊連線為一個長連結串列

(2)free

**使用者free一段記憶體後,仍然可用呼叫該指標:因為free只是告訴系統記憶體可回收,但記憶體仍然可用訪問(值可能發生變化),這種情況叫做野指標。正確的操作是free後把該指標指向null

char *str=(char*)malloc(10); ////指向整型的指標str指向一個大小為10位元組的記憶體的地址

strcpy(str,"CSDN");

free(str)

print("str=%s",str); // 輸出結果為:str=

4、new/delete函式

int *p=new int(); //在可儲存區分配建立了一個int物件,並返回該物件地址給指標p
delete p; //釋放p指向的記憶體,p不再有效
p=null;

5、實施缺陷跟蹤的原因:軟體質量無法控制、問題無法量化、重複問題接連產生、解決問題的知識無法保留

6、C++行內函數:以 inline 修飾,可以提升程式執行效率

//如果定義的inline函式體內有遞迴/迴圈等,編譯時會自動忽略掉內聯

//Inline必須與函式定義放在一起,才能成為行內函數,僅將內聯放在宣告前是不起作用的

7、資料鏈路層的三個基本問題:封裝成幀、透明傳輸、差錯檢測

8、修飾符 volatile

在 Java 中volatile、synchronized 和 final實現可見性,synchronized 和在 lock、unlock 中操作保證原子性

使用volatile修飾的變數是共享的,變數的更新將被通知到其他執行緒

在訪問volatile變數時不會執行加鎖操作,因此也就不會使執行執行緒阻塞,因此volatile變數是一種比sychronized關鍵字更輕量級的同步機制。

9、java四種訪問修飾符:

修飾符 子類 其他包 備註
public 公開可用
protect × 繼承類可訪問
defalut × × 包訪問許可權
private × × × 本類,以及類內部方法可以訪問

10、Linux靜態/動態庫的命名方式

(1)靜態庫:libXXX.a,其中XXX為靜態庫名

(2)動態庫:libXXX.so

11、記憶體與CPU間加cache(快取記憶體)有什麼用:cache速度高於記憶體,可以提高CPU處理效率

12、final修飾方法的過載與覆蓋:

final方法不能被覆蓋,可以被過載(過載時方法名相同,引數不同)

13、避免死鎖:銀行家演算法

14、一小時分鐘與秒針有59次重合,一天中分鐘與時針有22次重合

// 一天之中只有兩個12點的時候三個針是完全重合在一起的

15、一個源程式到一個可執行程式的過程:預編譯、編譯、彙編、連結

預編譯:主要處理原始碼檔案中的以“#”開頭的預編譯指令

編譯:生成彙編程式碼

彙編:將彙編程式碼轉換為機器指令

連結:組裝模組,使各個模組能正確銜接

16、C語言中,函式名代表函式的入口地址

17、Android四大元件:Activity(互動介面)、廣播接收器、內容提供者、服務(後臺解決方案)

18、測試驅動開發,英文全稱Test-Driven Development,簡稱TDD,是一種不同於傳統軟體開發流程的新型的開發方法。它要求在編寫某個功能的程式碼之前先編寫測試程式碼,然後只編寫使測試通過的功能程式碼,通過測試來推動整個開發的進行。這有助於編寫簡潔可用和高質量的程式碼,並加速開發過程。

19