筆試題小記

2021-08-06 03:02:21 字數 1617 閱讀 1794

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

答案:函式庫呼叫

系統呼叫

在所有的ansi c編譯器版本中,c庫函式是相同的

各個作業系統的系統呼叫是不同的

它呼叫函式庫中的一段程式(或函式)

它呼叫系統核心的服務

與使用者程式相聯絡

是作業系統的乙個入口點

在使用者位址空間執行

在核心位址空間執行

它的執行時間屬於「使用者時間」

它的執行時間屬於「系統」時間

屬於過程呼叫,呼叫開銷較小

需要在使用者空間和核心上下文環境間切換,開銷較大

在c函式庫libc中有大約300個函式

在unix中大約有90個系統呼叫

典型的c函式庫呼叫:system fprintf malloc

典型的系統呼叫:chdir fork write brk;

2.sizeof和strlen的區別

答案:

首先需要說明的是sizeof和strlen都可以求長度,但是卻有很大的區別,簡單來說可以概括為以下幾點:

1、sizeof是乙個關鍵字,而strlen確實乙個函式。

2、sizeof求的是位元組長度,而strlen求的卻是實際長度。

比如int a=1;sizeof(a)==4而strlen(a)=1

3、sizeof求的是分配過來的長度,而strlen求的卻是實際使用的長度。

比如:char a[30]="abcd";

sizeof(a)=30;而strlen(a)=4;

4、strlen求的長度是以'\0'結束的。

比如char a[30];strlen(a)的結果是不定的,而sizeof(a)=30;

同理:char a[30]=;對於strlen來說也是不定的,而sizeof卻是30.

3.c語言程式分配的方式(linux)

1、從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static變數。

2、在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的指令集中,效率很高,但是分配的記憶體容量有限。

3、從堆上分配,亦稱動態記憶體分配。程式在執行的時候用malloc或new申請任意多少的記憶體,程式設計師自己負責在何時用free或delete釋放記憶體。動態記憶體的生存期由程式設計師決定,使用非常靈活,但如果在堆上分配了空間,就有責任**它,否則執行的程式會出現記憶體洩漏,頻繁地分配和釋放不同大小的堆空間將會產生堆內碎塊。

4.c語言常見的記憶體錯誤
1 、 記憶體分配後沒有校驗,使得記憶體未成功,卻正常使用。
2 、 記憶體分配成功後,沒有初始化就使用。
3 、 記憶體分配成功 , 也進行了初始化 , 可是使用記憶體時出現了越界 ( 緩衝區溢位 ) 。 這種錯 誤如果被黑客成功利用,最嚴重的後果就是整個作業系統被黑客完全控制。
4 、 記憶體分配成功後,忘記釋放記憶體,產生記憶體洩漏。
5 、 記憶體分配成功後,也正常釋放記憶體,可是在釋放記憶體後又繼續使用。
6 、 混淆指標和陣列

筆試題小記 招行3

如果乙個正整數,它的質因數只包含2,3,和5,那麼這個數滿足條件。同時,特別規定1也是滿足條件的數字。示例 前10個滿足條件的數字是1,2,3,4,5,6,8,9,10,12。編寫乙個函式,返回第n個滿足條件的數。解題思路 質因數只包含2,3,5,即其他的質數以及他們的倍數都不在此陣列中,求出這些數...

創新工場筆試小記(創新工廠演算法筆試題)

筆試題量很小,答題時間1個小時。1道填空題,9道左右選擇題,最後一道程式設計題。第一題 c intf intx return c int f int x return c 對於int a 65536 1024 8 1 int b f a 執行後b等於多少?第二題 5個骰子,六個面分別標有1 6,現在...

筆試 c 筆試題

1 在派生類中通過 base 呼叫基類成員 解析 2 方法重寫使用關鍵字 override 解析 使用virtual和override關鍵字實現方法重寫 3 關於抽象類下面說法錯誤的是 選一項 a 抽象類可以包含非抽象方法 b 含有抽象方法的類一定是抽象類 c 抽象類不能被例項化 d 抽象類可以是密...