c、c++筆試題-面試題_第1頁
c、c++筆試題-面試題_第2頁
c、c++筆試題-面試題_第3頁
c、c++筆試題-面試題_第4頁
c、c++筆試題-面試題_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

C、筆試題,面試題

筆試,面試,職業(yè)規(guī)劃,考研筆試,面試,職業(yè)規(guī)劃,考研《隱藏

窗體頂端

窗體底端2023C、筆試題大全,被問的概率幾乎100%。、筆試題大全,

筆試題大全。很少有真正精通了C語言編程的學員,一般都有或多或少

概念不是完全清楚的問題,特殊是一些須要豐富的實戰(zhàn)閱歷才能體會和

明白的問題,如字符串,指針,類型轉換,定義指向函數(shù)的指針類型,

這也是導致學習C困難的一個緣由。下面有幾個簡潔測試將能發(fā)覺你對

C語言的駕馭狀況。

1)35;[10];問:0和()的值分別是多少?答:()值不確定,

依據(jù)''0'確定字符串是否結束。()=10一個數(shù)組為數(shù)組長度

(,〃315〃/*共13個字母*/);問:此時x和()的值分別是多少?

答:x為35(*,*)依據(jù)來復制,依照的''0'確定復制的長度,

必需要供應足夠的長度,這而里會引起溢出,返回13,但是數(shù)組外部

的數(shù)據(jù)已經被破壞的值為13,在環(huán)境下的值是要變更的(其他編譯器

下沒試,).雖然表面上看來,在程序中并沒有修改x的值,但是實際運行

的結果是上面的x的值發(fā)生了修改,這是因為以后,把多余的數(shù)據(jù)拷貝

進了的鄰居(類型的x)中,所以x的數(shù)據(jù)也就變了.這是一個曾讓我

刻骨銘心的問題,在我剛出道時遇到這個問題,雖然在摯友的幫助下解決

了這個問題,但始終不明白x的值為何變了,只有最終走上培訓老師的

崗位,才起先梳理自己曾經的困惑,才起先總結以前的閱歷供學員們借鑒.

我覺得這個題目的價值特殊之大,它能引起學員對字符串拷貝越界問題

的足夠重視,并且通過這個問題更能明白字符串的處理是怎么回時,更能

明白字符串與字符數(shù)組的關系:字符串就是一個字符數(shù)組,只是把這個字

符數(shù)組用在處理串的函數(shù)中時,這些函數(shù)不考慮數(shù)組的長度,只是記住數(shù)

組的首地址,從首地址起先處理,并在遇到0時結束處理,

3)[10];〃315〃;(,〃315〃)編譯能通過嗎?答:數(shù)組不能賦

值,只能初始化。[10]=〃315〃;而且初始化時編譯器會檢查數(shù)組的

長度與初始化串的長度是否匹配

4)*;(,〃〃);須要初始化并支配空間上句編譯能通過嗎?運行時

有問題嗎?

答:可以通過編譯,但是指向了常量區(qū),運行時最好只做讀操作,

寫操作不保險。編譯可以通過,但是沒有進行有效的初始化,它指向了

一個不確定的內存區(qū),運行時會出現(xiàn)內存不行寫錯誤!*pl;*p2;

指針必需初始化上面兩句有什么區(qū)分嗎?

答:*和*一樣,都是表示指向常量的字符指針。*表示指

向字符的常量指針pl=(*);假如是P1;編譯能夠通過嗎?明白為什么

要類型轉換?類型轉換的本質是什么?

答:可以通過編譯。關于常量與特殊量指針的關系是這樣的:指

針可以指向或者非區(qū)域,不會造成什么問題。非指針不能指向區(qū)

域,會引起錯誤。(呵呵,這個問題,很經典)(pl,〃〃)編譯能夠通過嗎?

答:不能通過,(*,*);*不能指向*留意:非指針不能

指向區(qū)域,會引起錯誤。(〃〃)有問題嗎?

答:沒有問題,輸出的是的地址信息*;3000編譯能過嗎?假

如不行,該如何修改以保證編譯通過呢?

答:不能通過,*表示是個字符指針,不能指向3000的整形變

量。修改的話,可以這樣:=(*)3000,把指向3000這個地址;()

可以這樣做嗎?

答:可以,y的值為所指的地址。不過假如是純粹要地址的話,

最好是用。*;*0x00313200;(〃〃)會是什么效果?提示0x31對應字

符T',0x32對應字符'2'。

答:首先編譯未必會過關,有些編譯器可能不允許*干脆指向*。

最好是改為*P=(*);過關了效果就是什么東西都沒有。*;P為所

指的地址,*p表示修改了所指向的內存。由于()在32位機上,有

4個字節(jié)(其實具體要看編譯器的配置文件,好像是,一般是4個

字節(jié))所以修改了[0][3]由于0x00313200頭尾都是0,所以字符串

為‘\0'開頭,什么都打印不出來。這里有個和的問題。以

0x31323334為例的機器上面,0x31323334在內存中排列依次為3433

3231,輸出為4321,如芯片的機器上面為31323334,輸出

為1234,如30001的結果會是多少?

答:3000();指針+1均為原來地址加上(指針所指的數(shù)據(jù)類型)*

[100]上述語句在內存中占據(jù)幾個內存塊,怎樣的布局狀況?答:本身

會占用函數(shù)棧一個4字節(jié)的指針長度(具體是否為4個字節(jié)要看機器

和編譯器)。會在堆上申請100個字節(jié)()的連續(xù)空間。(**p){*

[100];}這個編譯函數(shù)有問題嗎?外面要調用這個函數(shù),該怎樣傳遞參

數(shù)?

答:該程序沒有問題。須要在函數(shù)中對指針所指的地址進行變更是

必需傳入指針的地址。緣由是這樣的:假如傳入的為指針本身,在函數(shù)

調用的時候,實參會被復制一個實例,這樣就不是原來的指針了,對該

指針本身進行的任何變更都不能傳遞回去了??梢赃@樣理解,假如傳入

的參數(shù)為,那么對本身的值的變更就傳不回去啦,加個*也是一樣的。

能明白(*)(y)與其作用嗎?

答:定義了一個函數(shù)指針類型的宏,這樣就表示指向返回值為,

且同時帶2個參數(shù)的函數(shù)指針類型了??梢杂脕矶x這樣的變量:比

如有個函數(shù)為(x,y);p=;補充::函數(shù)指針最大的用處在于它

可以被一個模板方法調用,這是我在學的設計模式時領悟到的.例如,

有兩個函數(shù)的流程結構完全一樣,只是內部調用的具體函數(shù)不同,如下所

示:1(){一段流程代碼和面對方面的代理,如平安檢查,日志記錄等

=(x,y);一段流程代碼和面對方面的代理,如平安檢查,日志記錄等}

2(){與1完全相同的一段流程代碼和面對方面的代理,如平安檢查,日

志記錄等二(x,y);與1完全相同的一段流程代碼和面對方面的代

理,如平安檢查,日志記錄等}那么,可以只定義一個函數(shù),如下所示(P)

(與1完全相同的一段流程代碼和面對方面的代理,如平安檢查,日志記

錄等二p(x,y);與1完全相同的一段流程代碼和面對方面的代理,

如平安檢查,日志記錄等}調用程序在調用時,讓參數(shù)p分別指向和

函數(shù)就可以了.

以下是騰訊的筆試面試題:]

請定義一個宏,比較兩個數(shù)a、b的大小,不能運用大于、小于、語

2、如何輸出源文件的標題和目前執(zhí)行行的行數(shù)3、兩個數(shù)相乘,小

數(shù)點后位數(shù)沒有限制,請寫一個高精度算法4、寫一個病毒5、有A、B、

C、D四個人,要在夜里過一座橋。他們通過這座橋分別須要耗時1、2、

5、10分鐘,只有一支手電,并且同時最多只能兩個人一起過橋。請問,

如何支配,能夠在17分鐘內這四個人都過橋?

2023年騰訊聘請選擇題(60)方面的基礎學問c的函數(shù)有

好幾個!程序填空(40)1.(20)4空x5不運用額外空間,將兩鏈表的

元素交叉歸并2.(20)4空x5將樹序列化轉存在數(shù)組或鏈表中!

1,計算a%?2(運算符優(yōu)先級問題)

2依據(jù)先序中序求后序

3a[3][4]哪個不能表示a[l][1]:*([0][0])*(*(1)+1)*([1]+1)

*([0][0]+4)

4(i...)(j...)0;(j)會出現(xiàn)什么問題

5(0<10);的運行結果

610個數(shù)依次插入查找二叉樹,元素62的比較次數(shù)

710個數(shù)放入模10鏈表,最大長度是多少

8((12),(345))有幾個實參

9希爾冒泡快速插入哪個平均速度最快

10二分查找是依次存儲鏈存儲按有序中的哪些

11依次查找的平均時間

12**[100](p)各為多少

13常見的插入刪除操作運用什么結構比較合適,鏈表還是數(shù)組

14的聲明方式151-20的兩個數(shù)把和告知A,積告知B,A說不

知道是多少,B也說不知道,這時A說我知道了,B接著說我也知道了,

問這兩個數(shù)是多少

大題:

1把字符串轉換為小寫,不成功返回,成功返回新串

*(*)

{*;

(1)

{j;

=0;

=⑵;

(*);

[]二'\0';

(3)[]=(□);

}

;)

2把字符串轉換為整數(shù)例如:〃-123〃->-123

0

{........(*')n=1;

n=0;........}

(*)

{(;!(*0);

){k;

k=2;

J=;

(3)k=k*10;

=+k;}

;}

附加題:1下調試的叮囑,察看堆棧狀態(tài)叮囑

2寫出套接字服務端客戶端通訊程序

3填空補全程序,依據(jù)我的理解是添入:32調入的函數(shù)名查找

函數(shù)入口的函數(shù)名找到函數(shù)的調用形式把加到的聲明將加到

的聲明4123有關系s()c()()問上課程〃〃的學生成果最高的學

生號每科大于90分的人數(shù)主要是、數(shù)據(jù)結構、操作系統(tǒng)等方面的基

礎學問。好像有、樹等選擇題。填空題是補充完整程序。附加題有寫算

法的、編程的、數(shù)據(jù)庫語句查詢的。

還有一張開放性問題。

請定義一個宏,比較兩個數(shù)a、b的大小,不能運用大于、小于、語

句()()

如何輸出源文件的標題和目前執(zhí)行行的行數(shù)

*

?〃<<()<<〃〃〈<<<;

兩個數(shù)相乘,小數(shù)點后位數(shù)沒有限制,請寫一個高精度算法寫一

個病毒

(1){*p=[10000000];}

不運用額外空間,將兩鏈表的元素交叉歸并將樹序列化轉存在

數(shù)組或鏈表中{i;s;C;};

();

8*pl;

*p2;

p3;

p4[10];

(P14)=?4,4,4,10二分查找快速排序雙向鏈表的刪除結點

給一個奇數(shù)階N幻方,填入數(shù)字1,2,3*N,使得橫豎斜方向上的

和都相同

答案:<>

<>

<>;

0

{n;

?n;

i;

***[n]動態(tài)支配二維數(shù)組

(0<)

[i][n]動態(tài)支配二維數(shù)組2代表首行中間數(shù)作為起點,即1所

在位置21初始值0;(*1){往右上角延升,若超出貝!用%轉移到左下角

[()][()];斜行的長度和n是相等的,超出則轉至下一斜行(0);

{;;};}(0<){(0<)?(()10(n*n)+4)?[i][j]格式限制??

格式限制}(0<)[][i];1;}

騰訊的一道面試題:1與百度相像,惋惜昨天百度死在這方面了)

在一個文件中有10G個整數(shù),亂序排列,要求找出中位數(shù)。內存

限制為2G。只寫出思路即可。答案:1,把整數(shù)分成256M段,每段

可以用64位整數(shù)保存該段數(shù)據(jù)個數(shù),256M*8=2G內存,先清0

2,讀10G整數(shù),把整數(shù)映射到256M段中,增加相應段的記數(shù)

3,掃描256M段的記數(shù),找到中位數(shù)的段和中位數(shù)的段前面全部段

的記數(shù),可以把其他段的內存釋放

4,因中位數(shù)段的可能整數(shù)取值已經比較小(假如是32整數(shù),當然

假如是64整數(shù)的話,可以再次分段),對每個整數(shù)做一個記數(shù),再讀一

次10G整數(shù),只讀取中位數(shù)段對應的整數(shù),并設置記數(shù)。

5,對新的記數(shù)掃描一次,即可找到中位數(shù)。假如是32整數(shù),讀10G

整數(shù)2次,掃描256M記數(shù)一次,后一次記數(shù)因數(shù)量很小,可以忽視不

記(設是32整數(shù),按無符號整數(shù)處理整數(shù)分成256M段?整數(shù)范圍是

0-2-32-1一共有4G種取值,4256M=16,每16個數(shù)算一段0-15

是1段,16-31是一段,..?整數(shù)映射到256M段中?假如整數(shù)是

0-15,則增加第一段記數(shù),假如整數(shù)是16-31,則增加其次段記數(shù),...

其實可以不用分256M段,可以分的段數(shù)少一寫,這樣在掃描記數(shù)段時會

快一些,還能節(jié)約一些內存)

騰訊題二:一個文件中有40億個整數(shù),每個整數(shù)為四個字節(jié),內

存為1,寫出一個算法:求出這個文件里的整數(shù)里不包含的一個整數(shù)

答:方法一:4個字節(jié)表示的整數(shù),總共只有2-32約等于4G個

可能。為了簡潔起見,可以假設都是無符號整數(shù)。支配500內存,每

一代表一個整數(shù),剛好可以表示完4個字節(jié)的整數(shù),初始值為0o基

本思想每讀入一個數(shù),就把它對應的位置為1,處理完40G個數(shù)后,

對500M的內存遍歷,找出一個為0的位,輸出對應的整數(shù)就是未出

現(xiàn)的。算法流程:

1)支配500MB內存,初始化為0

2)0x1;

jx<<j;

(3)(0;i<=0;)(!(&x<<i)){(i);;}以上只是針

對無符號的,有符號的整數(shù)可以依此類推。

方法二:文件可以分段讀啊,這個是0(2n)算法,應當是很快的

了,而且空間也允許的。不過還可以構造更快的方法的,更快的方法主

要是針對定位輸出的整數(shù)優(yōu)化算法。思路或許是這樣的,把值空間等分

成若干個值段,比如值為無符號數(shù),則0001..........0000F0000000……

000這樣可以訂立一個規(guī)則,在一個值段范圍內的數(shù)第一次出現(xiàn)時,對應

值段指示值1,假如該值段的全部整數(shù)都出現(xiàn)過,則1000H,這樣后面

輸出定位時就可以干脆跳過這個值段了,因為題目僅僅要求輸出一個,

這樣可以大大削減后面對標記數(shù)值的遍歷步驟。理論上值段的劃分有確

定的算法可以快速的實現(xiàn),比如利用位運算干脆定位值段對應值進行計

算。騰訊面試題:有1到10w這10w個數(shù),去除2個并打亂次序,

如何找出那兩個數(shù)。(不準用位圖?。。┪粓D解決:位度的方法如下假設

待處理數(shù)組為A[102]定義一個數(shù)組這里假設B中每個元素占

用1比特,并初始化為全0(0<102){B[A[i]]=1}那么B中不為

零的元素即為缺少的數(shù)據(jù)這種方法的效率特殊高,是計算機中最常用的

算法之一其它方法:求和以與平方和可以得到結果,不過可能求平方和

運算量比較大(用64位不會溢出)騰訊面試題:騰訊服務器每秒有

2w個號同時上線,找出5內重新登入的號并打印出來。解答:其

次題假如空間足夠大,可以定義一個大的數(shù)組a[號],初始為零,然后這

個號登陸了就a[號]最終統(tǒng)計大于等于2的號這個用空間來代

替時間其次個題目,有不成熟的想法。2wx300s所以用6,000,000個

桶。刪除超時的算法后面說,所以平均桶的大小是1。假設號碼一

共有1010個,所以每個桶裝的q號碼是1010/(6*10^6)個,

這個是插入時候的最壞效率(插入同一個桶的時候是依次查找插入位置

的)。的節(jié)點結構和上面大家探討的基本一樣,增加一個指針指向輸出

列表,后面說。

*;

*;

*;用于節(jié)點的時候,順便更新一下輸出列表,}

另外增加兩個指針列表。第一個大小300的循環(huán)鏈表,自帶一

個指向的域,循環(huán)存300秒內的指針。時間一過就掉,所以

保證全部桶占用的空間在2wX300以內。其次個是輸出列表,就是

存放題目須耍輸出的節(jié)點。假如登陸的用戶,5分鐘內完全沒有重復的

話,每秒掉2w個節(jié)點。不過在的時候,要推斷一下時間是不是真

的超時,因為把節(jié)點入桶的時候,遇到重復的,會更新一下最終登陸的

時間。當然啦,這個時候,要把這個號碼放到須要輸出的列表里面

1、局部變量能否和全局變量重名?

答:能,局部會屏蔽全局。要用全局變量,須要運用〃::〃局部變量

可以與全局變量同名,在函數(shù)內引用這個變量時,會用到同名的局部變

量,而不會用到全局變量。對于有些編譯器而言,在同一個函數(shù)內可以定

義多個同名的局部變量,比如在兩個循環(huán)體內都定義一個同名的局部變

量,而那個局部變量的作用域就在那個循環(huán)體內。2、如何引用一個已

經定義過的全局變量?答:可以用引用頭文件的方式,也可以用關鍵

字,假如用引用頭文件方式來引用某個在頭文件中聲明的全局變理,假

定你將那個變寫錯了,那么在編譯期間會報錯,假如你用方式引用時,

假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯。

3、全局變量可不行以定義在可被多個文件包含的頭文件中?為什么?

答:可以,在不同的C文件中以形式來聲明同名全局變量??梢栽诓?/p>

同的C文件中聲明同名的全局變量,前提是其中只能有一個C文件中

對此變量賦初值,此時連接不會出錯4、語句(;1;)有什么問題?它

是什么意思?答:和(1)相同。5、和有什么區(qū)分?答:

前一個循環(huán)一遍再推斷,后一個推斷以后再循環(huán)6、請寫出下列代碼的輸

出內容?(){;10;;;10*;(〃b,c,d:,,b,c,d);0;)答:

10,12,1207、全局變量與一般的全局變量有什么區(qū)分?局部變量和

一般局部變量有什么區(qū)分?函數(shù)與一般函數(shù)有什么區(qū)分?全局變量

(外部變量)的說明之前再冠以就構成了靜態(tài)的全局變量。全局變量本

身就是靜態(tài)存儲方式,靜態(tài)全局變量當然也是靜態(tài)存儲方式。這兩者在

存儲方式上并無不同。這兩者的區(qū)分雖在于非靜態(tài)全局變量的作用域是

整個源程序,當一個源程序由多個源文件組成時,非靜態(tài)的全局變量在

各個源文件中都是有效的。而靜態(tài)全局變量則限制了其作用域,即只

在定義該變量的源文件內有效,在同一源程序的其它源文件中不能運用

它。由于靜態(tài)全局變量的作用域局限于一個源文件內,只能為該源文件

內的函數(shù)公用,因此可以避開在其它源文件中引起錯誤。從以上分析

可以看出,把局部變量變更為靜態(tài)變量后是變更了它的存儲方式即變更

了它的生存期。把全局變量變更為靜態(tài)變量后是變更了它的作用域,限

制了它的運用范圍。函數(shù)與一般函數(shù)作用域不同。僅在本文件。只在當

前源文件中運用的函數(shù)應當說明為內部函數(shù)(),內部函數(shù)應當在當前源

文件中說明和定義。對于可在當前源文件以外運用的函數(shù),應當在一個

頭文件中說明,耍運用這些函數(shù)的源文件要包含這個頭文件全局變量

與一般的全局變量有什么區(qū)分:全局變量只初使化一次,防止在其他

文件單元中被引用;局部變量和一般局部變量有什么區(qū)分:局部變量

只被初始化一次,下一次依據(jù)上一次結果值;函數(shù)與一般函數(shù)有什么

區(qū)分:函數(shù)在內存中只有一份,一般函數(shù)在每個被調用中維持一份拷貝

8、程序的局部變量存在于(棧)中,全局變量存在于(靜態(tài)區(qū))中,動

態(tài)申請數(shù)據(jù)存在于(堆)中。9、設有以下說明和定義:{i;k[5];

c;);{;;;};;貝I語句(〃〃()());的執(zhí)行結果是:52答:

是一個,變量公用空間.里面最大的變量類型是[5],占用20個字

節(jié).所以它的大小是20是一個,每個變量分開占用空間.依次為4+

20+8=32.所以結果是20+32=52.當然.??在某些16位編輯器

下,可能是2字節(jié),那么結果是2+10+8=2010、隊列和棧有什么

區(qū)分?隊列先進先出,棧后進先出11、寫出下列代碼的輸出內容?(a)

{0;}(***c){(**a**b);}(1)();(2)(***);(21,*2){;

(1);(1,2);(〃\n〃,*2);}(){a;(,10);0;}答:11012、請找

出下面代碼中的所以錯誤說明:以下代碼是把一個字符串倒序,如“”

倒序后變?yōu)?、〃〃2、()3、{4、*〃〃;5、*;6、();7、(*)();

8、*;9、*口;10、⑼11、;12、(〃〃);13、0;14、}答:

方法1:(){*二〃〃;=();*=(*)(1)要為\0支配一個空間*

d=;*s=⑴指向最終一個字符(0)**;*d=0尾部要加\0(〃\n〃);

0運用完,應當釋放空間,以免造成內存匯泄露0;}方法2:<><>

0{□=〃〃;0;t;(0;i<2;){[i];[i][l];[1];}O;0;}

11,2,7,28,,126請問28和126中間那個數(shù)是什么?為什么?第一題

的答案應當是43-1=63規(guī)律是if3-1(當n為偶數(shù)0,2,4)rf3+l(當n

為奇數(shù)1,3,5)答案:632,用兩個棧實現(xiàn)一個隊列的功能?要求給出

算法和思路!設2個棧為,一起先均為空.入隊:將新元素入棧A;

出隊:(1)推斷棧B是否為空;(2)假如不為空,則將棧A中全部元素

依次出并到棧B;(3)將棧B的棧頂元素出;這樣實現(xiàn)的隊列入

隊和出隊的平攤困難度都還是0(1),比上面的幾種方法要好。3.在c

語言庫函數(shù)中將一個字符轉換成整型的函數(shù)是()嗎,這個函數(shù)的原型是

什么?函數(shù)名:功能:把字符串轉換成長整型數(shù)用法:(*);程

序例:<><>(){1;*="98765432〃;1=();(〃==\n〃,,

1);(0);}13,對于一個頻繁運用的短小函數(shù),在C語言中應用什么實現(xiàn),

在中應用什么實現(xiàn)?c用宏定義,用17,軟件測試都有那些種類?黑

盒:針對系統(tǒng)功能的測試白合:測試函數(shù)功能,各函數(shù)接口18.確定模

塊的功能和模塊的接口是在軟件設計的那個隊段完成的?概要設計階段

19.{xl,x2,x3=10,x4,x5,}x;問0x801005,0x8010f4;20.

*pl;*p2;pl=(*)0x801000;p2=(*)0x810000;請問pl+5=;

p2+5=;

25.請問下面程序有什么錯誤?

a[60][250][1000];

(0<=1000)

(0<250)

(0<60)

a[i][j][k]=0;把循環(huán)語句內外換一下

26.500

(*)

(0<)

{......;}死循環(huán)

27.以下是求一個數(shù)的平方的程序,請找出錯誤:

(a)((a)*(a))

5;b;();28.(;*){*;(*)();.....(?

{;}......}

C語言面試題大匯總之華為面試題整理1、局部變量能否和全局變

量重名?答:能,局部會屏蔽全局。要用全局變量,須要運用〃::〃;局

部變量可以與全局變量同名,在函數(shù)內引用這個變量時,會用到同名的

局部變量,而不會用到全局變量。對于有些編譯器而言,在同一個函數(shù)內

可以定義多個同名的局部變量,比如在兩個循環(huán)體內都定義一個同名的

局部變量,而那個局部變量的作用域就在那個循環(huán)體內。

2、如何引用一個己經定義過的全局變量?答:可以用引用頭文件

的方式,也可以用關鍵字,假如用引用頭文件方式來引用某個在頭文

件中聲明的全局變理,假定你將那個編寫錯了,那么在編譯期間會報錯,

假如你用方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會

報錯,而在連接期間報錯。

3、全局變量可不行以定義在可被多個文件包含的頭文件中?為什

么?答:可以,在不同的C文件中以形式來聲明同名全局變量。

4、請寫出下列代碼的輸出內容<>(){;10;;;10*;Cb,c,

d:,,〃,b,c,d);0;)答:10,12,120

5、全局變量與一般的全局變量有什么區(qū)分?局部變量和一般局部

變量有什么區(qū)分?函數(shù)與一般函數(shù)有什么區(qū)分?答:1)全局變量(外

部變量)的說明之前再冠以就構成了靜態(tài)的全局變量。全局變量本身就

是靜態(tài)存儲方式,靜態(tài)全局變量當然也是靜態(tài)存儲方式。這兩者在存

儲方式上并無不同。這兩者的區(qū)分在于非靜態(tài)全局變量的作用域是整個

源程序,當一個源程序由多個源文件組成時,非靜態(tài)的全局變量在各個

源文件中都是有效的。而靜態(tài)全局變量則限制了其作用域,即只在定

義該變量的源文件內有效,在同一源程序的其它源文件中不能運用它。

由于靜態(tài)全局變量的作用域局限于一個源文件內,只能為該源文件內的函

數(shù)公用,因此可以避開在其它源文件中引起錯誤。2)從以上分析可以

看出,把局部變量變更為靜態(tài)變量后是變更了它的存儲方式即變更了它

的生存期。把全局變量變更為靜態(tài)變量后是變更了它的作用域,限制了

它的運用范圍。3)函數(shù)與一般函數(shù)作用域不同,僅在本文件。只在當前

源文件中運用的函數(shù)應當說明為內部函數(shù)(),內可以在不同的C文件中

聲明同名的全局變量,前提是其中只能有一個C文件中對此變量賦初

值,此時連接不會出錯.部函數(shù)應當在當前源文件中說明和定義。對于可

在當前源文件以外運用的函數(shù),應當在一個頭文件中說明,要運用這些

函數(shù)的源文件要包含這個頭文件綜上所述:全局變量與一?般的全局變

量有什么區(qū)分:全局變量只初使化一次,防止在其他文件單元中被引用;

局部變量和一般局部變量有什么區(qū)分:局部變量只被初始化一次,下一

次依據(jù)上一次結果值;函數(shù)與一般函數(shù)有什么區(qū)分:函數(shù)在內存中只

有一份,一般函數(shù)在每個被調用中維持一份拷貝

6、程序的局部變量存在于(棧)中,全局變量存在于(靜態(tài)區(qū))中,

動態(tài)申請數(shù)據(jù)存在于(堆)中。

7、設有以下說明和定義:

{i;k[5];c;};

{;;;};

;則語句(〃〃()());的執(zhí)行結果是:52考點:區(qū)分與.(一般假

定在32位機器上)答:是一個,變量公用空間.里面最大的變量類型

是[5],占用20個字節(jié).所以它的大小是20.是一個,每個變量

分開占用空間.依次為4+20+8=32.所以結果是20+32=52.當

然...在某些16位編輯器下,可能是2字節(jié),那么結果是2+10+8=

20

8、隊列和棧有什么區(qū)分?隊列先進先出,棧后進先出

9、寫出下列代碼的輸出內容

<>(a)

{0;}

(***c)((**a**b);}

(1)();(2)(***);

(21,*2)

{1;(1);(1,2);

(〃〃,*2);}

0{a;局部變量a為0;(,10);0;}

答:110

10、請找出下面代碼中的全部錯誤(題目不錯,值得一看)說明:以

下代碼是把一個字符串倒序,如“”倒序后變?yōu)?/p>

0{

*〃〃;

*;

0;

(*)();

(0);

(〃〃);0;)

答:方法1:一共有4個錯誤;(){*二〃〃;=();*=(*)(1)

要為支配一個空間*s=[1];(0)**;*d=0;();=;0;尾

部要加''0'運用完,應當釋放空間,以免造成內存匯泄露防止產生

野指針(〃〃);指向最終一個字符*d=;}方法2:(方法一須要額外

的存儲空間,效率不高.)不錯的想法<><>(){口=〃〃;0;t;

(0;i<2;){[i];當心一點[1];}(〃〃);0;}

11.對于一個頻繁運用的短小函數(shù),在C語言中應用什么實現(xiàn),在中

應用什么實現(xiàn)?c用宏定義,用

12.干脆鏈接兩個信令點的一組鏈路稱作什么?點到點連接

13.接入網用的是什么接口?V5接口

14都用了那些協(xié)議?H.323協(xié)議簇、協(xié)議、協(xié)議、H.248和協(xié)

15.軟件測試都有那些種類?黑盒:針對系統(tǒng)功能的測試白盒:測試

函數(shù)功能,各函數(shù)接口

16.確定模塊的功能和模塊的接口是在軟件設計的那個隊段完成的?

概要設計階段

17.*pl;*p2;pl=(*)0x801000;p2=(*)0x810000;請問

pl+5=;p2+5=;

答案:0x801005(相當于加上5位)0x810014(相當于加上20位);

選擇題:21鏈接到用到以下那個協(xié)議?D22.屬于網絡層協(xié)議的

是:(BC).2523消息調度機制是:(C)A.指令隊歹ij.指令堆棧.消息隊列.

消息堆棧;找錯題:25.請問下面程序有什么錯誤?a[60][250][1000];

(0){)問答題:29的原理是什么?電話(又稱或)是建立在技

術上的分組化、數(shù)字化傳輸技術,其基本原理是:通過語音壓縮算法對語

音數(shù)據(jù)進行壓縮編碼處理,然后把這些語音數(shù)據(jù)按等相關協(xié)議進行打包,

經過網絡把數(shù)據(jù)包傳輸?shù)浇邮盏?再把這些語音數(shù)據(jù)包串起來,經過解

碼解壓處理后,復原成原來的語音信號,從而達到由網絡傳送語音的目

的。30通信建立的過程怎樣,端口有什么作用?三次握手,確定是哪

個應用程序運用該協(xié)議31.1號信令和7號信令有什么區(qū)分,我國某前

廣泛運用的是那一種?1號信令接續(xù)慢,但是穩(wěn)定,牢靠。7號信令的

特點是:信令速度快,具有供應大量信令的潛力,具有變更和增加信令的

靈敏性,便于開放新業(yè)務,在通話時可以隨意處理信令,成本低。目前

得到廣泛應用。32.列舉5種以上的電話新業(yè)務如“闈鐘服務”、“免

干擾服務”、“熱線服務”、“轉移呼叫”、“遇忙回叫”、“缺席用戶

服務”、“追查惡意呼叫”、“三方通話”、“會議電話”、“呼出限

制”、“來電顯示”、“虛擬網電話”等;......}答:死循環(huán)找

錯題:四.找錯題找錯題L請問下面程序有什么錯誤?

a[60][250][1000];(0<=1000)(0<250)(0<60)a[i][j][k]=0;答:把

循環(huán)語句內外換一下2500(*){;.....(0<){.....;}答:

死循環(huán)的取值范圍是0~2553.以下是求一個數(shù)的平方的程序,請找出錯

誤:(a)((a)*(a))5;b;();答:結果與編譯器相關,得到的可能不是

平方值.微軟亞洲技術中心的面試題?。。?/p>

1.進程和線程的差別,答:線程是指進程內的一個執(zhí)行單元,也是進

程內的可調度實體.與進程的區(qū)分:(D調度:線程作為調度和支配的基

本單位,進程作為擁有資源的基本單位(2)并發(fā)性:不僅進程之間可以并

發(fā)執(zhí)行,同一個進程的多個線程之間也可并發(fā)執(zhí)行(3)擁有資源:進程是

擁有資源的一個獨立單位,線程不擁有系統(tǒng)資源,但可以訪問隸屬于進程

的資源.(4)系統(tǒng)開銷:在創(chuàng)建或撤消進程時,由于系統(tǒng)都要為之支配和

回收資源,導致系統(tǒng)的開銷明顯大于創(chuàng)建或撤消線程時的開銷。

2.測試方法答:人工測試:個人復查、抽查和會審機器測試:黑盒

測試和白盒測試3.與的差別。

答是堆,是棧。的空間由操作系統(tǒng)自動支配/釋放,上的空間手

動支配/釋放??臻g有限,是很大的自由存儲區(qū)C中的函數(shù)支配的

內存空間即在堆上中對應的是操作符。程序在編譯期對變量和函數(shù)支

配內存都在棧上進行,且程序運行過程中函數(shù)調用時參數(shù)的傳遞也在棧上

進行4.下的內存是如何管理的?分頁管理8.談談32下的分頁機

制小頁(4K)兩級分頁模式,大頁(4M)一級9.給兩個變量,如何找出一

個帶環(huán)單鏈表中是什么地方出現(xiàn)環(huán)的?一個遞增一,一個遞增二,他們

指向同一個接點時就是環(huán)出現(xiàn)的地方10.在32中一共有多少種方法從

用戶態(tài)跳到內核態(tài)?通過調用門,從3到0,中斷從3到0,進入86

等等11.假如只想讓程序有一個實例運行,不能運行兩個。像一樣,

只能開一個窗口,怎樣實現(xiàn)?用內存映射或全局原子(互斥變量)、查找

窗口句柄,互斥,寫標記到文件或注冊表,共享內存。.12.如何截取

鍵盤的響應,讓全部的‘a‘變成'b'?答:鍵盤鉤子14.存儲過程是什

么?有什么用?有什么優(yōu)點?答:我的理解就是一堆的集合,可以建立

特殊困難的查詢,編譯運行,所以運行一次后,以后再運行速度比單獨

執(zhí)行快許多15.有什么特點?什么時候用?答:可以獨立于任何特

定的類型編寫代碼,是泛型編程的基礎.當我們編寫的類和函數(shù)能夠多態(tài)

的用于跨越編譯時不相關的類型時,用.模板主要用于中的容器,算法,

迭代器等以與模板元編程,(的是實現(xiàn)在庫設計和嵌入式設計中的關鍵。

能實現(xiàn)抽象和效率的結合;同時還能有效地防止代碼膨脹)16.談談

結構的特點和優(yōu)點。答(分布式應用結構,簡稱)是微軟創(chuàng)建新

一代高適應性商業(yè)解決方案的框架,它使公司能夠充分地挖掘數(shù)字神經系

統(tǒng)的優(yōu)點。是第一個將、客戶/服務器、和用于計算的模型結合并集

成在一起的為新一類分布式計算方案而設計的應用軟件體系結構17.

網絡編程中設計并發(fā)服務器,運用多進程與多線程,請問有什么區(qū)分?

答:1)進程:子進程是父進程的復制品。子進程獲得父進程數(shù)據(jù)空間、堆

和棧的復制品。2)線程:相對與進程而言,線程是一個更加接近與執(zhí)行

體的概念,它可以與同進程的其他線程共享數(shù)據(jù),但擁有自己的棧空間,

擁有獨立的執(zhí)行序列。兩者都可以提高程序的并發(fā)度,提高程序運行效

率和響應時間。線程和進程在運用上各有優(yōu)缺點:線程執(zhí)行開銷小,但

不利于資源管理和愛惜;而進程正相反。同時,線程適合于在機器上

運行,而進程則可以跨機器遷移。思科1.用宏定義寫出(x,y)答(x,

y)x=x+y;y=x-y;x=x-y;2.數(shù)組a[N],存放了1至1個

數(shù),其中某個數(shù)重復一次。寫一個函數(shù),找出被重復的數(shù)字.時間困難度必

需為。(N)函數(shù)原型:(a[]N)答(a[]N){=0;2;(0<){[i];}

2=(11)*2;(2);}3一語句實現(xiàn)x是否為2的若干次哥的推斷答:

方法1)i=512;??((i&(i-1))?:)?;位與為0,貝IJ

表示是2的若干次幕2)(x?l);未經調試4(n)實現(xiàn)對x的進

行轉換為起始轉化位為須要轉換的長度,假設起始點在右邊.如

ObOOOl000143轉換后ObOllO0001答(n)假定43{=0;

=1;(i=0;i<n;)循環(huán)的目的主要是{;位或=?1;}=

?p;x八二;x;}轉換后變?yōu)?110000/異或,將原來的位取反慧通:

慧通:1.什么是預編譯,何時須要預編譯:答:就是指程序執(zhí)行前的

一些預處理工作,主要指#表示的.何時須要預編譯?1)、總是運用不經

常改動的大型代碼體。2)、程序由多個模塊組成,全部模塊都運用一組

標準的包含文件和相同的編譯選項。在這種狀況下,可以將全部包含文

件預編譯為一個預編譯頭。2.下述三個有什么區(qū)分?*p;*p

*P解答:*p;常量指針,p的值不行以修改*p;指向常量的指

針,指向的常量值不行以改*p;和*p3.說明下列輸出結果1口

二〃〃;2[]=〃〃;3[]=〃〃;4□二〃〃;*5=〃〃;*6=〃〃;*7

二〃〃;*8=〃〃;?(12)?;?(34)?;?(56)

?;?(78)?;結果是:0011解答:1234是數(shù)組變量,它

們有各自的內存空間;而5678是指針,它們指向相同的常量區(qū)域。4.

以下代碼中的兩個用法有問題嗎?[C易](口)將中的小寫字

母轉換成大寫字母{(0;i<()([0]);)('a'<[i])[i]

(‘a'」A');}[]=〃〃;<<〃字符長度為:〃<<()([0D?;();

??;答:函數(shù)內的有問題。依據(jù)語法,如用于數(shù)組,只能測出靜

態(tài)數(shù)組的大小,無法檢測動態(tài)分配的或外部數(shù)組大小。函數(shù)外的是一

個靜態(tài)定義的數(shù)組,因此其大小為6,函數(shù)內的實際只是一個指向字

符串的指針,沒有任何額外的與數(shù)組相關的信息,因此作用于上只將其

當指針看,一個指針為4個字節(jié),因此返回4O留意:數(shù)組名作為函數(shù)

參數(shù)時,退化為指針.數(shù)組名作為()參數(shù)時,數(shù)組名不退化,因為不是

函數(shù).4.一個32位的機器,該機器的指針是多少位指針是多少位只要

看地址總線的位數(shù)就行了。80386以后的機子都是32的數(shù)據(jù)總線。所以

指針的位數(shù)就是4個字節(jié)了。5.指出下面代碼的輸出,并說明為什么。

(不錯,對地址駕馭的深化挖潛)0{a[5]={l,2,3,4,5};*(*)(1);

(〃〃,*(1),*(1));}輸出:2,5*(1)就是a[l],*(1)就是a[4],執(zhí)行結

果是2,51不是首地址+1,系統(tǒng)會認為加一個a數(shù)組的偏移,是偏移

了一個數(shù)組的大小(本例是5個)*(*)(1);則實際是&(a[5]),也

就是5緣由如下:是數(shù)組指針,其類型為而指針加1要依

據(jù)指針類型加上確定的值,不同類型的指針+1之后增加的大小不同a

是長度為5的數(shù)組指針,所以要加5*()所以實際是a[5]但是

與⑴類型是不一樣的(這點很重要)所以1只會減去(*)的地址是一

樣的,但意思不一樣,a是數(shù)組首地址,也就是a[0]的地址,是對象(數(shù)

組)首地址,1是數(shù)組下一元素的地址,即a[l]l是下一個對象的地址,

即a[5].6?請問以下代碼有什么問題:1).(){a;*;(,〃〃);0;

0;}答;沒有為支配內存空間,將會發(fā)生異樣問題出在將一個字符串

復制進一個字符變量指針所指地址。雖然可以正確輸出結果,但因為越界

進行內在讀寫而導致程序崩潰。的在庫函數(shù)中.程序的主要錯誤在于

越界進行內存讀寫導致程序崩潰2).*〃〃;(〃〃);s[0]='B';(〃〃);有

什么錯?答:〃〃是字符串常量。s是指針,指向這個字符串常量,所以

聲明s的時候就有問題。*〃〃;然后又因為是常量,所以對是s[0]的

賦值操作是不合法的。1、寫一個“標準”宏,這個宏輸入兩個參數(shù)并返

回較小的一個。答(X,Y)((X)>(Y)?(Y):(X))結尾沒有;2、嵌入式系

統(tǒng)中經常要用到無限循環(huán),你怎么用C編寫死循環(huán)。答(1){}或者(;;)

前面那個較好3、關鍵字的作用是什么?答:1)定義靜態(tài)局部變量,作

用域從函數(shù)起先到結束.2)在模塊內的函數(shù)只可被這一模塊內的其它

函數(shù)調用,這個函數(shù)的運用范圍被限制在聲明它的模塊內;3)在類中的

成員變量屬于整個類所擁有,對類的全部對象只有一份拷貝4、關鍵字

有什么含意?答:1)表示常量不行以修改的變量。2)可以修飾參數(shù),作

為輸入參數(shù).3)修飾函數(shù),防止以外的改動.4)修飾類的成員函數(shù),不變更

類中的數(shù)據(jù)成員.5、關鍵字有什么含意?并舉出三個不同的例子?答:

提示編譯器對象的值可能在編譯器未監(jiān)測到的狀況下變更。例子:硬件

時鐘;多線程中被多個任務共享的變量等6.(*s[10])()表示的是什么

啊(*s[10])()函數(shù)指針數(shù)組,每個指針指向一個()的函數(shù)。1.有

以下表達式:248;421*;**f;請問下列表達式哪些會被編

譯器禁止?為什么?答:*32;*43340x321f;*c這是個什么東東,禁止*d

說了是,禁止e二說了是禁止*f;禁止2.交換兩個變量的值,

不運用第三個變量。即35,交換之后53;答:有兩種解法,一種用算術算

法,一種用八(異或)a=a+b;b=a-b;a=a-b;a=a"只能

對..b=a"b;a=ab;a*=b*=a;3和中的有什么不同?答:

c和中的主要區(qū)分是c中的不行以含有成員函數(shù),而中的可以。

中和的主要區(qū)分在于默認的存取權限不同,默認為,而默認為.

400(*p){(*)(100);}(){*;();(p,〃〃);(〃〃);0;

0;}答:程序崩潰,中的不能返回動態(tài)內存,()對操作很緊急5

[10];(,〃0123456789〃);產生什么結果?為什么?答;正常輸出,長度不

一樣,會造成非法的,覆蓋別的內容.6.列舉幾種進程的同步機制,并比

較其優(yōu)缺點。答:原子操作信號量機制自旋鎖管程,會合,分布式系

統(tǒng)7.進程之間通信的途徑答共享存儲系統(tǒng)消息傳遞系統(tǒng)管道:以文

件系統(tǒng)為基礎面試經典試題6|02一月,202311:41面試經典試題:

-------即使你是個編程高手,你在面試前也應當要看看這套題,她或許

會給你帶來好運,否則你有可能后悔當時為什么沒有看而跳樓自殺,這

樣我會很內疚的。這套題看似簡潔,但你未必能得高分,即使你看不懂

也要把她背下來!歡迎轉載此文,轉載時請注明文章來源:文斯測試技

術探討中心1編程基礎1.1基本概念1.的理解:*,*,*的區(qū)分

問題幾乎是面試中每次都會有的題目。事實上這個概念誰都有只是三

種聲明方式特殊相像很簡潔記混。在他的里面給出過一個助記的

方法:把一個聲明從右向左讀。*;(*讀成)a*p;P

a;*p;同上因為里面沒有*的運算符,所以只能屬于前面的

類型。2.c指針*p[n]指針數(shù)組,每個元素均為指向整型數(shù)據(jù)的指針。

(*p)[n]為指向一維數(shù)組的指針,這個一維數(shù)組有n個整型數(shù)據(jù)。*p()

函數(shù)帶回指針,指針指向返回的值。(*p)()為指向函數(shù)的指針。3.數(shù)

組越界問題(這個題目還是有點小險的)下面這個程序執(zhí)行后會有什么

錯誤或者效果:255(){A口;(0<)A[i];}解答:255,數(shù)組A的

下標范圍為:01,這是其一,其二當i循環(huán)到255時,循環(huán)內執(zhí)行:

A[255]=255;這句本身沒有問題,但是返回(0<)語句時,由于的取值

范圍在(0..255)以后i又為0了.,無限循環(huán)下去.注:類型為一個字

節(jié),取值范圍是[T28,127],[0,255]4.和的根本區(qū)分?答〃〃

用來對一段內存空間全部設置為某個字符,一般用在對定義的字符串進

行初始化為’‘或'';例a[100](a,(a));用來做內存拷貝,你可

以拿它拷貝任何數(shù)據(jù)類型的對象,可以指定拷貝的數(shù)據(jù)長度;例:

a[100][50];(b,a,(b));留意如用(a),會造成b的內存地址溢出。就

只能拷貝字符串了,它遇到、。就結束拷貝;例:a[100][50]();如用(),

要留意a中的字符串長度(第一個''0'之前)是否超過50位,如超過,

則會造成b的內存地址溢出。原型:*(**);{(()());*二;

((**)'\0');

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論