還是幾道簡答題

2021-07-25 12:03:28 字數 2931 閱讀 5948

今天和昨天一樣,又找了幾道簡答題,鞏固一下前一段時間學習的成果,也對一些名詞有了更深入的了解

1.makefile的作用:

makefile檔案儲存了編譯器和聯結器的引數選項,還表述了所有原始檔之間的關係。

建立程式(make程式)首先讀取makefile檔案,然後再啟用編譯器,彙編器,資源編譯器

和聯結器以便產生最後的輸出,最後輸出並生成的通常的可執行檔案.建立程式利用內

置的推理規則來啟用編譯器,以便通過對特定cpp檔案的編譯來產生特定的obj檔案.

2.簡述linux程序記憶體空間分為哪幾個段?作用分別是什麼?

存放傳遞引數及環境變數

堆疊(棧)存放子程式的返回位址、子程式的引數,程式的區域性變數

堆存放程序執行中被動態分配的記憶體段(malloc)

bss資料段 存放未初始化的全域性變數和靜態變數

資料段存放初始化的全域性變數和靜態變數      

**段                          存放程式**的資料

3.使用linux命令或者shell實現:

檔案words存放英文單詞,格式為格式為每行乙個英文單詞(單詞可以重複),統計這個檔案中出現次數最多的前10個單詞:

cat num.txt | sort | uniq -c | sort -k1 -r | head -10

4.如何檢視程序的資訊(執行緒數):

top -h        加上這個選項,top的每一行就不是顯示乙個程序,而是乙個執行緒。

ps -xh  這樣可以檢視所有存在的執行緒,也可以使用grep作進一步的過濾。

ps -mq pid  這樣可以看到指定的程序產生的執行緒數目。

5.簡述static關鍵字的作用?

(1)設定變數的儲存域,函式體內static變數的作用範圍為該函式體,不同於auto變數,該變數的記憶體只被分配一次,因此其值在下次呼叫時仍維持上次的值;

(2)限制變數的作用域,在模組內的static全域性變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問;

(3)限制函式的作用域,在模組內的static函式只可被這一模組內的其它函式呼叫,這個函式的使用範圍被限制在宣告它的模組內;

(4)在類中的static成員變數意味著它為該類的所有例項所共享,也就是說當某個類的例項修改了該靜態成員變數,其修改值為該類的其它所有例項所見;

(5)在類中的static成員函式屬於整個類所擁有,這個函式不接收this指標,因而只能訪問類的static成員變數。

6.系統呼叫與庫函式的區別:

1)函式庫提供的函式通常是不需要作業系統的服務.函式是在使用者空間內執行的,

除非函式涉及到i/o操作等,一般是不會切到核心態的。系統呼叫是要求操作

系統為使用者提供程序,提供某種服務,通常是涉及系統的硬體資源和一些敏感

的軟體資源等。

2)系統呼叫的執行效率大多要比函式高,尤其是處理輸入輸出的函式。

3)相對於系統呼叫,c語言的標準備函式庫(ansi c) 具備較高的可移植

性,在不同的系統環境下,只要做很少的修改,通常情況是不需要修改的。

7.sizeof與strlen的區別:

sizeof   獲得保證能容納實現所建立的最大物件的位元組大小。

由於在編譯時計算,因此sizeof不能用來返回動態分配的記憶體空間的大小。實際上,用sizeof來

返回型別以及靜態分配的物件、結構或陣列所佔的空間,返回值跟物件、結構、陣列所儲存的內

容沒有關係。

strlen是用來測字串長度

8.c語言分配記憶體的方式有哪些?

c語言中常見的記憶體錯誤有哪些?

靜態區:儲存自動全域性變數和 static 變數(包括 static全域性和區域性變數)。

靜態區的內容在總個程式的生命週期內都存在,由編譯器在編譯的時候分配。

棧:儲存區域性變數。棧上的內容只在函式的範圍內存在,當函式執行結束,這些內容

也會自動被銷毀。其特點是效率高,但空間大小有限。

堆:由malloc系列函式或new操作符分配的記憶體。其生命週期由free或delete決定。

在沒有釋放之前一直存在,直到程式結束。其特點是使用靈活,空間比較大,

但容易出錯。

1、指標沒有指向一塊合法的記憶體

2、沒有為結構體指標分配足夠記憶體

3、沒有進行函式的入口校驗

4、為指標分配的記憶體太小

5、記憶體分配成功但未初始化

6、記憶體越界

7、記憶體洩露

8、記憶體已經釋放了,但是繼續通過指標來使用

9.什麼是野指標?如何避免野指標。

定義指標的時候沒有對指標進行初始化,

在定義的時候將指標賦為null,在指標用完後也要將指標賦為null

10.程序間通訊方式有哪些?

以及在什麼情況下用什麼通訊方式?優缺點:

管道: 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。

有名管道: 有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。

訊號量:   訊號量是乙個計數器,可以用來控制多個程序對共享資源的訪問。它常作為一種鎖機制,防止某程序正在訪問共享資源時,其他進

程也訪問該資源。因此,主要作為程序間以及同一程序內不同執行緒之間的同步手段。

訊息佇列: 訊息佇列是由訊息的鍊錶,存放在核心中並由訊息佇列識別符號標識。訊息佇列克服了訊號傳遞資訊少、管道只能承載無格式

位元組流以及緩衝區大小受限等缺點。

訊號:     訊號是一種比較複雜的通訊方式,用於通知接收程序某個事件已經發生。

共享記憶體: 共享記憶體就是對映一段能被其他程序所訪問的記憶體,這段共享記憶體由乙個程序建立,但多個程序都可以訪問。共享記憶體是最快的 ipc 

方式,它是針對其他程序間通訊方式執行效率低而專門設計的。它往往與其他通訊機制,如訊號兩,配合使用,來實現程序間的同步和通訊。

套接字:   套解口也是一種程序間通訊機制,與其他通訊機制不同的是,它可用於不同及其間的程序通訊。

c 簡答題題庫 C 簡答題集錦

c 簡答題集錦 問題1 什麼是演算法?演算法應包括哪兩部分?答 所謂演算法,是指為解決乙個問題而採取的方法和步驟,或者說是解題步驟的精確描述。演算法應包括設計演算法和執行演算法兩部分。問題2 結構化程式設計的特徵是什麼?答 結構化程式設計方法從程式設計思想上要求自頂向下,逐步求精 從程式的具體結構上...

Python題庫 簡答題

1.命名空間和作用域的關係 命名空間定義了在某個作用域內變數名和繫結值之間的對應關係,命名空間是鍵值對的集合,變數名與值是一一對應關係。作用域定義了命名空間中的變數能夠在多大範圍內起作用。2.裝飾器函式的作用?寫乙個裝飾器程式 在不修改原函式及其呼叫方式的情況下對原函式功能進行擴充套件。def ou...

簡答題總結(一)

1 列舉asp.net頁面傳值的幾種方式?三大特徵是 封裝 繼承和多型。1 封裝是指將某事物的屬性和行為包裝到物件中,這個物件只對外公布需要公開的屬性和行為 2 繼承是子物件可以繼承父物件的屬性和行為,亦即父物件擁有的屬性和行為,其子物件也就擁有了這些屬性和行為。3 多型性是指允許不同類的物件對同一...