c語言面試題

2021-10-07 18:06:41 字數 4699 閱讀 5614

3. 描述實時系統的基本特性

在特定時間內完成特定的任務,實時性與可靠性

8. 氣泡排序演算法的時間複雜度是什麼?

o(n^2)

2.使用者輸入m,n值,從1至n開始順序迴圈數數,每數到m輸出該數值,直至全部輸出。寫出c程式。

迴圈鍊錶,用取餘操作做

華為8.enum string

x;問x= 0x801005,0x8010f4 ;

9.unsigned char *p1;

unsigned long *p2;

p1=(unsigned char *)0x801000;

p2=(unsigned long *)0x810000;

請問p1+5= ;

p2+5= ;

三.選擇題:

1.ethternet鏈結到internet用到以下那個協議?

a.hdlc;b.arp;c.udp;d.tcp;e.id

2.屬於網路層協議的是:

a.tcp;b.ip;c.icmp;d.x.25

3.windows訊息排程機制是:

a.指令佇列;b.指令堆疊;c.訊息佇列;d.訊息堆疊;

4.unsigned short hash(unsigned short key)

請問hash(16),hash(256)的值分別是:

a.1.16;b.8.32;c.4.16;d.1.32

四.找錯題:

1.請問下面程式有什麼錯誤?

int a[60][250][1000],i,j,k;

for(k=0;k<=1000;k++)

for(j=0;j<250;j++)

for(i=0;i<60;i++)

a[i][j][k]=0;

把迴圈語句內外換一下

2.#define max_cb 500

void lmiquerycsmd(struct msgcb * pmsg)

死迴圈3.以下是求乙個數的平方的程式,請找出錯誤:

#define square(a)((a)*(a))

int a=5;

int b;

b=square(a++);

4.typedef unsigned char byte

int examply_fun(byte gt_len; byte *gt_code)

.......

}五.問答題:

1.ip phone的原理是什麼?

ipv6

3.1號信令和7號信令有什麼區別,我國某前廣泛使用的是那一種?

4.列舉5種以上的**新業務?

微軟亞洲技術中心的面試題!!!

3.windows下的記憶體是如何管理的?

4.介紹.net和.net的安全性。

5.客戶端如何訪問.net元件實現web service?

6.c/c++編譯器中虛表是如何完成的?

7.談談com的執行緒模型。然後討論程序內/外元件的差別。

8.談談ia32下的分頁機制

小頁(4k)兩級分頁模式,大頁(4m)一級

10.在ia32中一共有多少種辦法從使用者態跳到核心態?

通過呼叫門,從ring3到ring0,中斷從ring3到ring0,進入vm86等等

11.如果只想讓程式有乙個例項執行,不能執行兩個。像winamp一樣,只能開乙個視窗,怎樣實現?

用記憶體對映或全域性原子(互斥變數)、查詢視窗控制代碼..

findwindow,互斥,寫標誌到檔案或登錄檔,共享記憶體。.

12.如何擷取鍵盤的響應,讓所有的『a』變成『b』?

鍵盤鉤子setwindowshookex

13.apartment在com中有什麼用?為什麼要引入?

14.儲存過程是什麼?有什麼用?有什麼優點?

我的理解就是一堆sql的集合,可以建立非常複雜的查詢,編譯執行,所以執行一次後,以後再執行速度比單獨執行sql快很多

15.template有什麼特點?什麼時候用?

16.談談windows dna結構的特點和優點。

同時,執行緒適合於在smp機器上執行,而程序則可以跨機器遷移。

思科2.陣列a[n],存放了1至n-1個數,其中某個數重複一次。寫乙個函式,找出被重複的數字.時間複雜度必須為o(n)函式原型:

int do_dup(int a,int n)

3 一語句實現x是否為2的若干次冪的判斷

int i = 512;

cout << boolalpha << ((i & (i - 1)) ? false : true) << endl;

4.unsigned int intvert(unsigned int x,int p,int n)實現對x的進行轉換,p為起始轉化位,n為需要轉換的長度,假設起始點在右邊.如x=0b0001 0001,p=4,n=3轉換後x=0b0110 0001

unsigned int intvert(unsigned int x,int p,int n)

_t = _t << p;

x ^= _t;

return x;

}慧通:

char * const p;

char const * p

const char *p

上述三個有什麼區別?

char * const p; //常量指標,p的值不可以修改

char const * p;//指向常量的指標,指向的常量值不可以改

const char *p; //和char const *p

char str1 = "abc";

char str2 = "abc";

const char str3 = "abc";

const char str4 = "abc";

const char *str5 = "abc";

const char *str6 = "abc";

char *str7 = "abc";

char *str8 = "abc";

cout << ( str1 == str2 ) << endl;

cout << ( str3 == str4 ) << endl;

cout << ( str5 == str6 ) << endl;

cout << ( str7 == str8 ) << endl;

結果是:0 0 1 1

解答:str1,str2,str3,str4是陣列變數,它們有各自的記憶體空間;

而str5,str6,str7,str8是指標,它們指向相同的常量區域。

12. 以下**中的兩個sizeof用法有問題嗎?[c易]

void uppercase( char str ) // 將 str 中的小寫字母轉換成大寫字母

char str = "abcde";

cout << "str字元長度為: " << sizeof(str)/sizeof(str[0]) << endl;

uppercase( str );

cout << str << endl;

答:函式內的sizeof有問題。根據語法,sizeof如用於陣列,只能測出靜態陣列的大小,無法檢測動態分配的或外部陣列大小。

函式外的str是乙個靜態定義的陣列,因此其大小為6,函式內的str實際只是乙個指向字串的指標,沒有任何額外的與陣列相關的資訊,因此sizeof作用於上只將其當指標看,乙個指標為4個位元組,因此返回4。

乙個32位的機器,該機器的指標是多少位

指標是多少位只要看位址匯流排的位數就行了。80386以後的機子都是32的資料匯流排。所以指標的位數就是4個位元組了。

main()

;int *ptr=(int *)(&a+1);

printf("%d,%d",*(a+1),*(ptr-1));

}輸出:2,5

*(a+1)就是a[1],*(ptr-1)就是a[4],執行結果是2,5

&a+1不是首位址+1,系統會認為加乙個a陣列的偏移,是偏移了乙個陣列的大小(本例是5個int)

int *ptr=(int *)(&a+1);

則ptr實際是&(a[5]),也就是a+5

原因如下:

&a是陣列指標,其型別為 int (*)[5];

而指標加1要根據指標型別加上一定的值,

不同型別的指標+1之後增加的大小不同

a是長度為5的int陣列指標,所以要加 5*sizeof(int)

所以ptr實際是a[5]

但是prt與(&a+1)型別是不一樣的(這點很重要)

所以prt-1只會減去sizeof(int*)

a,&a的位址是一樣的,但意思不一樣,a是陣列首位址,也就是a[0]的位址,&a是物件(陣列)首位址,a+1是陣列下一元素的位址,即a[1],&a+1是下乙個物件的位址,即a[5].

1.請問以下**有什麼問題:

int main()

沒有為str分配記憶體空間,將會發生異常

問題出在將乙個字串複製進乙個字元變數指標所指位址。雖然可以正確輸出結果,但因為越界進行內在讀寫而導致程式崩潰。

char* s="aaa";

printf("%s",s);

s[0]='b';

printf("%s",s);

有什麼錯?

"aaa"是字串常量。s是指標,指向這個字串常量,所以宣告s的時候就有問題。

cosnt char* s="aaa";

然後又因為是常量,所以對是s[0]的賦值操作是不合法的。

1、寫乙個「標準」巨集,這個巨集輸入兩個引數並返回較小的乙個。

c語言面試題

c c 的基礎知識 推薦給想學c 的朋友乙個簡單但是完整的學習c 的讀書路線圖 c primer c 標準程式庫 effective c effective stl 深入探索c 物件模型 c程式常用演算法原始碼 演算法 algorithm 計算機解題的基本思想方法和步驟。演算法的描述 是對要解決乙個...

C語言面試題

1.傳入乙個不多於4位的正整數,返回這個數字逆序後的數 逆序部分用函式封裝 10分 函式原型如下 int reversenumber int num 注 比如這個數字是 5328 返回 8235 返回的這個數字是八千兩百三十五 數字是 652 返回256 返回的這個數字二百五十六 2.傳入數字n,求...

c語言面試題之華為面試題

1 區域性變數能否和全域性變數重名?答 能,區域性會遮蔽全域性。要用全域性變數,需要使用 區域性變數可以與全域性變數同名,在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。對於有些編譯器而言,在同乙個函式內可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義乙個同名的區域性變數...