秋招線上筆試題-測試(一)
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