乾貨來臨:C語言面試54題附答案

陝西優就業發表於2019-12-05

針對接很多應屆生面臨找工作面試的問題, 陝西優就業小編會總結了一些C語言面試常見的問題和大家分享。希望能幫助到即將進入職場的同學們。

第1題:c語言有哪些核心的特徵?

可移植性很強。

模組化能力很強。

靈活性很高。

載入速度和執行速度都很好。

可擴充套件性很強。

第2題:c語言中有哪些基本的資料型別?

Int整型。

Float浮點型。

Double雙浮點型。

Char單個字元。

void特殊型別,不包含任何值。

第3題:解釋一下語義錯誤。

在寫程式的時候會有很多語義錯誤,比如說,拼錯了命令,一個函式的引數個數錯了, 資料型別不匹配,等等。

第4題:C語言中如何使用增加和減少語句?

有兩種方式:

++, --

或者

傳統的加和減。

第5題:什麼是一個程式語言的保留字?

保留字是指語言庫中使用的一些關鍵字。這些關鍵字不能用來做其他的事情,比如說定義一個變數或者函式等等。

第6題:解釋一下dangling pointer。

首先我們說有一個指標指向一個變數的記憶體地址。一段時間以後這個變數被從記憶體地址的位置刪除了。

這樣的指標稱之為dangling pointer.

第7題:描述一下靜態函式的用途。

使用靜態static關鍵字定義的函式稱之為靜態函式。

這樣的函式需要在相同的程式碼裡呼叫。

第8題:abs和fabs的區別是什麼?

這兩個函式都是用來取絕對值的。前者是針對整型的。後者是針對浮點型的。前者位於標準庫stdlib.h裡面。後者在math.h裡面。

第9題:說一下wild pointers。

未初始化的指標稱之為wild pointers。這些指標指向一個隨意的記憶體地址。如果訪問它們可能會導致很壞的程式行為,甚至導致程式崩潰。

第10題:++a和a++的區別是什麼?

加加a的意思是先加後取值。

A加加的意思是先取值後增加。

第11題:單等號和雙等號的區別是什麼?

單等號表示賦值運算子。

雙等號是等於條件判斷運算子。

第12題:解釋一下c語言的原型函式。

原型函式是對一個函式的宣告。

它包含函式名,返回值和引數型別列表。

int sum(int,int)

第13題:解釋一下資料型別的cyclic nature。

在c語言中,當一個程式設計師給一個資料型別的變數賦值的時候,有可能會溢位。這種溢位不會產生編譯錯誤。最終的賦值結果會根據資料型別溢位後的剩餘而定。

這種行為稱為cyclic nature. Char, int, long int資料型別有這個特性。Further float, double和long double資料型別沒有這個特性。

第14題:說一下c語言的標頭檔案和用途。

標頭檔案存放了原型函式的定義。這個檔案又稱為庫檔案。

比如說printf和scanf存放在stdio.h裡面。

第15題:解釋一下在除錯過程中對程式碼進行註釋的做法。

這個做法稱為commenting out。透過把一些程式碼遮蔽掉來判斷或排除是否是這些程式碼造成的錯誤。

第16題:說一下c語言中迴圈的型別。

C語言中有4種迴圈型別。

while

for

do while

nested loop

第17題:什麼是nested loop?

一個迴圈包含在另一個迴圈中稱為nested loop。第1個迴圈成為外迴圈。裡面的迴圈稱為內迴圈。內迴圈執行的次數作為總迴圈的次數。

第18題:c語言中函式的通常格式是怎樣的?

C語言的函式,包含4個部分。

返回值, 函式名, 引數, 函式體。

第19題:什麼是指標的指標?

指標的指標是指一個指向指標所在地址的指標。

int a=5, *x=&a, **y=&x;

第20題:Break關鍵字在哪個地方使用?

Break可以用在迴圈中和switch語句當中。是用來終止當前的迴圈或跳出switch。

第21題:使用標頭檔案時雙引號和尖括號的區別是什麼?

使用雙引號時,首先要在當前工作目錄中查詢這個標頭檔案,如果找不到的話就會在內建的include path裡面找。

使用尖括號時,只會在當前工作目錄中查詢這個標頭檔案。

第22題:什麼是sequential訪問檔案?

這種檔案用來儲存資料,在寫資料的時候會按照按照一個序列模式。在讀取的時候也是按照這個模式往外讀取。

第23題:如何向棧資料結構裡面儲存資料?

這樣的資料是先進後出的。只有頂部的資料才可以被訪問到。儲存的時候使用push,獲取的時候使用pop。

第24題:C程式演算法的意義是什麼?

演算法的意義在於提高程式的執行效率,是注重空間的節省,還是注重時間的節省,是寫演算法時需要考慮的因素。

第25題:volatile關鍵字的作用?

volatile指定的關鍵字可能被系統、硬體、程式/執行緒改變,強制編譯器每次從記憶體中取得該變數的值,而不是從被最佳化後的暫存器中讀取。

第26題:如下條件判斷運算子哪個在c語言裡不可用?

==, <>, <=, >=

答案是<>。

第27題:在c語言中可不可以用大括號包含一行程式碼?

是的, 當然可以。很多程式設計師使用大括號來規範程式碼結構,不管是一行還是多行。

第28題:描述一下modifier。

Modifier是資料型別的前置,用來標識儲存空間的大小。

比如說在32位處理器系統中, 整形的長度為4bits。

如果我們加了如下的modifier:

Long Int 就可以存8 bits。

Short Int 佔 2 bits。

第29題:在c語言中有哪些modifiers?

Short

Long

Signed

Unsigned

long long

第30題:在c語言中如何產生隨機數?

rand 函式就是用來產生隨機數的,它可以產生任意從0開始的整數。

第31題:能不能在整型中存放32768這個數?

整數型別可以存放從-32768~32767之間的任何數值。但是32768不在這個範圍之內。這個時候modifier是我們需要的東西。Long Int資料型別就可以存放這個數。

第32題:在c語言中可以自定義標頭檔案嗎?

是的, 當然可以, 定義完標頭檔案以後可以存放函式的原型。

使用的時候, 用include來包含這個檔案的名字。

第33題:解釋一下c語言中的動態資料結構。

動態資料結構在訪問記憶體方面非常高效。記憶體的訪問,要因程式的需求而定。

第34題:什麼是indirection?

如果你定一個指標變數, 它指向一個值變數或者一個記憶體物件。在這種情況下,對這個值變數和物件來說沒有一個直接的引用。這種情況就是indirection.

但是如果我們宣告一個變數,它對值來說就是一個直接的引用。

第35題:在c語言中,什麼時候會用到空指標?

有三種情況,在c語言中會用到空指標。

作為一個錯誤值。

作為一個監測值。

在一個遞迴資料結構中終止indirection。

第36題:解釋一下模組化程式設計。

把主程式分成多個小的,可執行的模組稱為模組化程式設計。這個概念是為了增強重用性。同時也提高了程式的可維護性。

第37題:Call by value和call by reference有什麼區別?

call by value傳的是值。Call by reference傳的是地址。

第38題:如何在c語言中定義一個字串變數?

使用char定義一個字元陣列。

第39題:在函式定義的時候何時用void?

當函式沒有返回值時,可以用void。

第40題:什麼是preprocessor directives?

Preprocessor directives一般放在程式的開頭。主要是用來指定呼叫庫檔案的。還有一個用途是用來定義一些常值變數,宏定義等等。#開頭。

第41題:這樣賦值對不對?錯在哪裡?

myName="test";

不對。

我們不能用等號給一個字串賦值。需要使用strcpy。

第42題:為什麼c語言被認為是中級語言?

這是因為c語言既能像高階語言那樣編寫程式,又可以像低階語言如彙編那樣直接操作硬體。

第43題:什麼是連結串列?

連結串列是一系列的元素連線在一起形成的資料結構。在c語言中,連結串列是用指標來構建的。使用連結串列資料結構是使用記憶體操作比較的一種方式。

第44題:什麼是fifo?

First in first out. 佇列是典型的first in first out,資料結構。

第45題:什麼是二叉樹?

二叉樹是連結串列的延伸。它的每一個節點都有兩個指標,一個指向左,一個指向右。

第46題:C語言中有些保留著是大寫的對嗎?

不對,c語言中的所有保留字必須是小寫,否則的話c的編譯器會報錯。

第47題:什麼是輸出重定向?

輸出重定向是指把程式的輸出,除了輸出在螢幕上以外的另外選擇, 比如說,輸出到一個檔案裡。

第48題:什麼是全域性變數,如何定義它們?

全域性變數是指在程式中任何地方都可以訪問到的變數。它一般定義在preprocessor directives的後面。

第49題:getch和getche, 這兩個函式的區別是什麼?

前者是把使用者的輸入分配給一個變數。

後者是把使用者的輸入列印到螢幕上,同時分配給一個變數。

第50題:文字檔案和二進位制檔案的區別是什麼?

文字檔案存放的是人類可以閱讀的內容,它包含字母數字和其他的字元。

而二進位制檔案存放的是1和0,只有電腦才能夠讀懂。

第51題:如何用隨機訪問的方法在一個資料檔案中搜尋資料?

fseek

在檔案開啟以後提供三個引數給這個函式。一個是檔案的指標,一個是要搜尋的位元組數,再一個是檔案中的搜尋起點。

第52題:在c語言中有沒有內建的排序函式?

qsort

第53題:heap的優點和缺點是什麼?

在heap上存放資料,要比在stack上存放資料要慢。

但是使用heap的主要優勢是靈活性。這是因為記憶體的訪問, 分配以及刪除可以按照任意順序來執行。

透過好的演算法和設計可以規避heap速度慢的問題。

第54題:如何把字串變成數字?

atoi

atof

使用c語言裡面的內建函式可以做到。你也可以自己寫函式。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69902581/viewspace-2667069/,如需轉載,請註明出處,否則將追究法律責任。

相關文章