一些試題的整合

  1. 以下描述正確的是?
    A.在Centos中可以使用yum install 指令安裝軟體包
    B.在Centos中可以使用yum uninstall 指令卸載軟體包
    C.在Centos中可以使用yum list 查看所有可安裝軟體包
    D.在Centos中可以使用yum show查看所有可安裝軟體包
    解析:
    yum工具的常用選項有:
    install 表示安裝軟體包
    list 列出所有可供安裝的軟體包
    search 搜尋包含指定關鍵字的軟體包
    remove 卸載指定的軟體包
    根據常用操作的選項可排除出B和D是錯誤的。 yum不具備這兩個操作選項

  1. 以下命令正確的是:
    A.yum makecache指令的功能是將伺服器的軟體包資訊快取到本地
    B.yum search指令可以在所有軟體包中搜尋包含指定關鍵字的軟體包
    C.yum clean all 指令可以清除快取中老舊的頭檔和軟體包
    D.yum upgrade指令可以更新所有的rpm軟體包
    解析:
    yum工具在每次安裝指定軟體包的時候,都會檢測源伺服器上的軟體包信息,為了便捷不用每次都去搜索軟體包信息,因此使用 yum makecache將軟件包信息緩存到本地,使用 yum clean all 清理老舊的緩存信息。因此A和C是正確的。
    yum search 用於搜尋包含指定關鍵字的軟體包,B也是正確的。
    D選項:
    yum -y update:升級所有套件同時,也升級軟體和系統核心;
    yum -y upgrade:只升級所有包,不升級軟體和系統內核,軟體和內核保持原樣。 所以D選項不完整嚴謹。

  1. 程式的完整編譯過程分為是:預處理,編譯,彙編等,如下關於編譯階段的編譯最佳化的敘述中不正確的是?
    A.死程式碼刪除指的是編譯過程直接拋棄掉被註解的程式碼
    B.函數內聯可以避免函數呼叫中壓棧和退棧的開銷
    C.for迴圈的循環控制變數通常很適合調度到暫存器訪問
    D.強度削弱是指執行時間較短的指令等價的替代執行時間較長的指令
    解析:
    死程式碼刪除是編譯最最佳化技術,指的是移除根本執行不到的程式碼,或是對程式執行結果沒有影響的程式碼,而並不是刪除被註解的程式碼,因此A選項錯誤。
    內聯函數,也叫編譯時期展開函數,指的是建議編譯器將內聯函數體插入並取代每一處調用函數的地方,從而節省函數調用帶來的成本,使用方式類似於宏,但是與宏不同的是內聯函數擁有參數類型的校驗,以及調試信息,而宏只是文本替換而已。因此B選項正確。
    for循環的循環控制變量,通常被cpu訪問頻繁,因此如果調度到寄存器中進行訪問則不用每次從內存中取出數據,可以提高訪問效率,因此C選項正確。
    強度削弱是指執行時間較短的指令等價的替代執行時間較長的指令,例如 num % 128 與 num & 127 相較,則明顯&127更加輕量, 故D也是正確的。

  1. 下列關於makefile描述正確的有?
    A.makefile檔案保存了編譯器和連接器的參數選項
    B.主要包含了五個東西:顯式規則、隱晦規則、變數定義、文件指示和註釋
    C.預設的情況下,make指令會在目前目錄下依序找尋文件名為「GNUmakefile」、「makefile」、「Makefile」的文件,找到 了解釋這個文件
    D.在Makefile不可以用include關鍵字把別的Makefile包含進來
    解析:
    makefile檔案中,保存了編譯器和連結器的參數選項,並且描述了所有原始檔案之間的關係。make程式會讀取makefile檔 案中的數據,然後根據規則呼叫編譯器,彙編器,連結器產生最後的輸出。根據makefile的功能理解,A選項是正確的。
    Makefile裡主要包含了五個東西:明確規則、隱晦規則、變數定義、檔案指示和註釋, B選項是正確的。
    顯式規則說明了,如何產生一個或多個目標檔案。make有自動推導的功能,所以隱晦的規則可以讓我們比較粗糙地簡略地書寫makefile,例如原始檔案與目標檔案之間的時間關係判斷之類的。
    在makefile中可以定義一個變數,當makefile被執行時,其中的變數都會被擴展到對應的引用位置上,通常使用 $(var) 表示引用變數。
    檔案指示。包含在一個makefile中引用另一個makefile,類似C語言中的include; 根據這一項可以推導出D選項是錯誤的。
    註釋,makefile中可以使用 # 在行首表示行註釋
    預設的情況下,make指令會在目前目錄下依序找出文件名為「GNUmakefile」、「makefile」、「Makefile」的文件,C選項也正確。

  1. 下列關於make/Makefile描述正確的有?
    A.make會產生Makefile中定義的所有目標對象
    B.make會自動根據依賴物件偵測目標物件是否需要重新生成
    C.Makefile中偽物件的功能是目標物件存在則不需要生成
    D.Makefile中宣告偽物件使用 .PHONY
    解析:
    make的執行規則是,只產生所有目標對像中的第一個,當然make會根據語法規則,遞歸生成第一個目標對象的所有依賴對象後再回頭生成第一個目標對象,生成後退出。因此A選項錯誤。
    make在執行makefile規則中,根據語法規則,會分析目標物件與依賴物件的時間訊息,判斷是否在上一次產生後,原始檔案發生了修改,若發生了修改才需要重新產生。因此B選項正確。
    makefile中的偽物件表示物件名稱並不代表真正的檔案名,與實際存在的同名檔案沒有相互關係,因此偽物件不管同名目標檔案是否存在都會執行對應的產生指令。偽物件的作用有兩個,1. 使目標物件無論如何都要重新生成。 2. 並不產生目標文件,而是為了執行一些指令。 根據對偽對象的理解,C選項錯誤。
    makefile中使用 .PHONY 來宣告偽對象。.PHONY: clean。 D選項正確。