嵌入式軟件工程師筆試題_第1頁
嵌入式軟件工程師筆試題_第2頁
嵌入式軟件工程師筆試題_第3頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、頁眉(一)1什么是預編譯,何時需要預編譯:答案: 1、總是使用不經(jīng)常改動的大型代碼體。在這種所有模塊都使用一組標準的包含文件和相同的編譯選項。2、程序由多個模塊組成, 情況下,可以將所有包含文件預編譯為一個預編譯頭。const char *p 上述三個有什么區(qū)別? 2 char * const pchar const * p答案: p 的值不可以修改 char * const p; / 常量指針, char / 和 const char *p ; char const * p ;/ 指向常量的指針,指向的常量值不可以改 const *p3char str1 = abc;char str2 =

2、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;out < < ( str7 = str8 ) <

3、 < endl;0 0 1 1 結果是: 是指針,它們 str5,str6,str7,str8str1,str2,str3,str4 是數(shù)組變量,它們有各自的內 存空間;而 指向相同的常量區(qū)域。sizeof 用法有問題嗎? 4 以下代碼中的兩個 C 易 中的小寫字母轉換成大寫字母 / 將 str void UpperCase( char str ) for( size_t i=0; i <sizeof(str)/sizeof(str0); +i )if( 'a' <=stri && stri <='z' )stri -=

4、('a'-'A' );char str = aBcDe;: < < sizeof(str)/sizeof(str0) < < endl; cout < < str 字符長度為 UpperCase( str );cout < < str < < endl;如用于數(shù)組,只能測出靜態(tài)數(shù)組的大小,有問題。根據(jù)語法,sizeofsizeof 函數(shù)內的 答案: 是一個靜態(tài)定義的數(shù)組,因此其大小為 str 無法檢測動態(tài)分配的或外部數(shù)組大小。函數(shù)外的頁腳頁眉6,因為還有 '0' ,函數(shù)內的 str 實際

5、只是一個指向字符串的指針,沒有任何額外的與數(shù)組相關的 信息,因此 sizeof 作用于上只將其當指針看,一個指針為 4 個字節(jié),因此返回4。5 一個 32 位的機器 ,該機器的指針是多少位答案:指針是多少位只要看地址總線的位數(shù)就行了 。 80386 以后的機子都是 32 的數(shù)據(jù)總線。所以指針 的位數(shù)就是 4 個字節(jié)了。6 main()int a5=1,2,3,4,5;int *ptr=(int *)(&a+1);printf(%d,%d,*(a+1),*(ptr-1);答案: 2 5分析:*(a+1 )就是a1 , *(ptr-1)就是a4,執(zhí)行結果是2, 5。&a+1不是首地

6、址+1,系統(tǒng)會認為加一個 a 數(shù)組的偏移,是偏移了一個數(shù)組的大小(本例是 5 個 int ) int *ptr=(int *)(&a+1); 則 ptr 實際是 &(a5), 也就是 a+5 原因如下: &a 是數(shù)組指針,其類型為 int (*)5; 而指針加 1 要根據(jù)指針類型加上一定的值,不同類型的指針 +1 之后增加的大小不同 a 是長度為 5 的 int 數(shù)組指針, 所以要加 5*sizeof(int) 所以 ptr 實際是 a5 但是 prt 與 (&a+1) 類型是不一樣的 (這點很重要 ) 所以 prt-1 只會減去 sizeof(int*) 。

7、a,&a 的地址是一樣的,但意 思不一樣, a 是數(shù)組首地址,也就是 a0 的地址, &a 是對象(數(shù)組)首地址, a+1 是數(shù)組下一 元素的地址,即 a1,&a+1 是下一個對象的地址,即 a5.7 請問以下代碼有什么問題:int main() char a;char *str=&a;strcpy(str,hello);printf(str);return 0;答案:沒有為 str 分配內存空間,將會發(fā)生異常,問題出在將一個字符串復制進一個字符變量指 針所指地址。 雖然可以正確輸出結果,但因為越界進行內存讀寫而導致程序崩潰。8Char * s=AAA;prin

8、tf(%s,s);s0='B'printf(%s,s); 有什么錯?答案:?是字符串常量。s是指針,指向這個字符串常量,所以聲明s的時候就有問題。cosnt char* s=AAA; 然后又因為是常量,所以對是 s0 的賦值操作是不合法的。9 寫一個“標準”宏,這個宏輸入兩個參數(shù)并返回較小的一個。頁腳頁眉答案: .#define Min(X, Y) (X)>(Y)?(Y):(X)/ 結尾沒有; 'C 編寫死循環(huán)?10 嵌入式系統(tǒng)中經(jīng)常要用到無限循環(huán),你怎么用 答案: while(1) 或者 for(;)11 關鍵字 static 的作用是什么? 答案:定義靜態(tài)變量

9、 或 靜態(tài)函數(shù)12 關鍵字 const 有什么含意? 答案:表示常量不可以修改的變量。13 關鍵字 volatile 有什么含意?并舉出三個不同的例子? 答案:提示編譯器對象的值可能在編譯器未監(jiān)測到的情況下改變。(1) 并行設備的硬件寄存器(如狀態(tài)寄存器)(2) 中斷函數(shù)中會訪問到的非自動變量(3) 多線程應用中被幾個任務共享的變量14 int (*s10)(int) 表示的是什么啊?答案: int (*s10)(int) 函數(shù)指針數(shù)組,每個指針指向一個 int func(int param) 的函數(shù)。15 有以下表達式:int a=248 , b=4;int const c=21;const

10、 int *d=&a;int *const e=&b;int const *f const =&a; 請問下列表達式哪些會被編譯器禁止?為什么?答案: *c=32; d=&b; *d=43; e=34; e=&a; f=0x321f; *c 這是個什么東東,禁止 *d 說了是 const , 禁止 e = &a 說了是 const 禁止 const *f const =&a; 禁止16 交換兩個變量的值,不使用第三個變量。即 a=3,b=5, 交換之后 a=5,b=3;答案:有兩種解法,一種用算術算法,一種用人(異或)。a = a + b

11、; b = a - b; a = a - b;或者 a = aAb;/ 只能對 int,char. b = aAb; a = aAb; or a A= b A= a;17 c 和 c+ 中的 struct 有什么不同?答案: c 和 c+ 中 struct 的主要區(qū)別是 c 中的 struct 不可以含有成員函數(shù),而 c+ 中的 struct 可以。 c+ 中 struct 和 class 的主要區(qū)別在于默認的存取權限不同, struct 默認為 public ,而 class 默認為 private18.#include <stdio.h>#include <stdlib.

12、h>void getmemory(char *p)頁腳頁眉p=(char *) malloc(100);strcpy(p,hello world);int main( )char *str=NULL;getmemory(str);printf(%s/n,str);free(str);return 0;答案:程序崩潰, getmemory 中的 malloc 不能返回動態(tài)內存, free ()對 str 操作很危險19char szstr10;strcpy(szstr,3456789);產生什么結果?為什么?答案: 長度不一樣,會造成非法的 OS20 列舉幾種進程的同步機制,并比較其優(yōu)缺點

13、答案: 原子操作 信號量機制自旋鎖管程,會合,分布式系統(tǒng)21. 進程之間通信的途徑 答案:共享存儲系統(tǒng)消息傳遞系統(tǒng)管道:以文件系統(tǒng)為基礎22. 進程死鎖的原因 答案:資源競爭及進程推進順序非法23. 死鎖的 4 個必要條件 答案:互斥、請求保持、不可剝奪、環(huán)路24. 死鎖的處理 答案:鴕鳥策略、預防策略、避免策略、檢測與解除死鎖25. 操作系統(tǒng)中進程調度策略有哪幾種?答案:FCFS(先來先服務),優(yōu)先級,時間片輪轉,多級反饋26. 類的靜態(tài)成員和非靜態(tài)成員有何區(qū)別? 答案:類的靜態(tài)成員每個類只有一個,非靜態(tài)成員每個對象一個27. 純虛函數(shù)如何定義?使用時應注意什么?答案: virtual vo

14、id f()=0; 是接口,子類必須要實現(xiàn)頁腳頁眉28. 數(shù)組和鏈表的區(qū)別答案:數(shù)組:數(shù)據(jù)順序存儲,固定大小連表:數(shù)據(jù)可以隨機存儲,大小可動態(tài)改變29.ISO 的七層模型是什么?tcp/udp 是屬于哪一層? tcp/udp 有何優(yōu)缺點?答案:應用層 表示層 會話層 傳輸層 網(wǎng)絡層 鏈路層 物理層 ;tcp /udp 屬于傳輸層 ;TCP 服務提供了數(shù)據(jù)流傳輸、可靠性、有效流控制、全雙工操作和多路復用技術等。與 TCP 不同, UDP 并不提供對 IP 協(xié)議的可靠機制、流控制以及錯誤恢復功能等。由于 UDP 比較簡 單, UDP 頭包含很少的字節(jié), 比 TCP 負載消耗少。 tcp: 提供穩(wěn)定

15、的傳輸服務, 有流量控制, 缺點是包頭大,冗余性不好 udp: 不提供穩(wěn)定的服務,包頭小,開銷小30: (void *)ptr 和 (*(void*)ptr 的結果是否相同?其中 ptr 為同一個指針答案: .(void *)ptr 和 (*(void*)ptr 值是相同的31:int main()int x=3; printf(%d,x);return 1; 問函數(shù)既然不會被其它函數(shù)調用,為什么要返回1?答案:mian中,c標準認為0表示成功,非0表示錯誤。具體的值是某中具體岀錯信息32 要對絕對地址 0x100000 賦值,我們可以用 (unsigned int*)0x100000 = 1

16、234; 那么要是想 讓程序跳轉到絕對地址是 0x100000 去執(zhí)行,應該怎么做?答案: *(void (*)( )0x100000 ) ( ); 首先要將 0x100000 強制轉換成函數(shù)指針 ,即: (void (*)()0x100000 然后再調用它 : *(void (*)()0x100000)(); 用 typedef 可以看得更直觀些 : typedef void(*)() voidFuncPtr;*(voidFuncPtr)0x100000)();33,已知一個數(shù)組 table ,用一個宏定義,求岀數(shù)據(jù)的元素個數(shù) 答案: #define NTBL(table) (sizeof(

17、table)/sizeof(table0)34。線程與進程的區(qū)別和聯(lián)系 ? 線程是否具有相同的堆棧 ? dll 是否有獨立的堆棧 ? 答案:進程是死的,只是一些資源的集合, 真正的程序執(zhí)行都是線程來完成的, 程序啟動的時候 操作系統(tǒng)就幫你創(chuàng)建了一個主線程。每個線程有自己的堆棧。DLL 中有沒有獨立的堆棧,這個問題不好回答,或者說這個問題本身是否有問題。因為DLL 中的代碼是被某些線程所執(zhí)行,只有線程擁有堆棧,如果DLL中的代碼是EXE中的線程所調用,那么這個時候是不是說這個DLL沒有自己獨立的堆棧?如果 DLL 中的代碼是由 DLL 自己創(chuàng)建的線程所執(zhí)行,那么是不是說 DLL 有獨立的堆棧?以

18、上講的是堆棧,如果對于堆來說,每個DLL 有自己的堆,所以如果是從 DLL中動態(tài)分配的內存,最好是從DLL中刪除,如果你從DLL中分配內存,然后在 EXE中,或者另外一個 DLL 中刪除,很有可能導致程序崩潰頁腳頁眉35。 unsigned short A = 10; printf(A = %un, A);char c=128; printf(c=%dn,c);輸岀多少?并分析過程 第所以輸岀4294967285 但輸岀的是uint。0xfffffff5,int 值為11 ,= 答案:第一題,A,128所以它的值就是 0x00的補碼就是int,最高位為1,是負數(shù),0x10,二題,。=輸岀的是或

19、uint 轉換時的最高位處理。所以輸岀 128 。這兩道題都是在考察二進制向 int1. -1,2,7,28,126 請問 28 和 126 中間那個數(shù)是什么?為什么?答案:第一題的答案應該是4A3-1=63規(guī)律是nA3-1(當n為偶數(shù)0, 2,4)n人3+1(當n為奇數(shù) 1 , 3, 5)2. 用兩個棧實現(xiàn)一個隊列的功能?要求給岀算法和思路!答案:設2個棧為A,B, 一開始均為空.入隊:將新元素push入棧代 岀隊:(1)判斷棧B是否為 空; (2) 如果不為空, 則將棧 A 中所有元素依次 pop 岀并 push 到棧 B; (3) 將棧 B 的棧頂元素 pop 岀;這樣實現(xiàn)的隊列入隊和岀

20、隊的平攤復雜度都還是O(1), 比上面的幾種方法要好。3. 在 c 語言庫函數(shù)中將一個字符轉換成整型的函數(shù)是 atol() 嗎,這個函數(shù)的原型是什么? 答案:函數(shù)名 : atol 功 能: 把字符串轉換成長整型數(shù) 用 法: long atol(const char *nptr);程序例 :#include <stdlib.h>#include <stdio.h>int main(void) long l;char *str = 98765432;l = atol(lstr);printf(string = %s integer = %ldn, str, l);retur

21、n(0);4. 對于一個頻繁使用的短小函數(shù),在 C 語言中應用什么實現(xiàn) ,在 C+ 中應用什么實現(xiàn) ?答案: c 用宏定義, c+ 用 inline5. 直接鏈接兩個信令點的一組鏈路稱作什么?答案: PPP 點到點連接7。軟件測試都有那些種類 ?答案:黑盒:針對系統(tǒng)功能的測試白合:測試函數(shù)功能,各函數(shù)接口頁腳頁眉8。確定模塊的功能和模塊的接口是在軟件設計的那個隊段完成的 答案:概要設計階段9。enum stringx4, x5, x1, x2, x3=10,x;x;問 中的一個 。 11 。 121 答案:取值在 0。1010。unsigned char *p1;unsigned long *

22、p2;p1=(unsigned char *)0x801000;p2=(unsigned long *)0x810000; 請問 p1+5=p2+5= ;進制就 16 要加 20 變?yōu)椋?810014 。不要忘記了這個是 16 進制的數(shù)字, p2 答案: 801005 是 14: 選擇題 ? 鏈接到 Internet 用到以下那個協(xié)議 1.Ethternet E. ID D. TCP; B. ARP; C. UDP; A. HDLC;D答案 : 2.屬于網(wǎng)絡層協(xié)議的是D.X.25 B.IP; C.ICMP; A.TCP;B答案: 3.Windows 消息調度機制是 ; ;D. 消息堆棧指令堆棧

23、 A. 指令隊列 ;B.;C. 消息隊列 C 答案:找錯題:1. 請問下面程序有什么錯誤 ?int a602501000,i,j,k;for(k=0;k <=1000;k+)for(j=0;j <250;j+)for(i=0;i <60;i+)aijk=0;答案:把循環(huán)語句內外換一下2 。以下是求一個數(shù)的平方的程序 ,請找出錯誤 :頁腳頁眉(a)*(a)#define SQUARE(a)int a=5;int b;b=SQUARE(a+);)唯一要注意的就是計算后a + +) (a + + )x(答案:這個沒有冋題,s(a +),就是(了3: typedef unsigned

24、 char BYTEint examply_fun(BYTE gt_len; BYTE *gt_code) BYTEgt_buf=(BYTE )MALLOC(Max_GT_Length);if(gt_len>Max_GT_Length)return GT_Length_ERROR;: 答案:要釋放內存問答題的原理是什么 ?1.IP Phone 答案: IPV6答案:三次握手,確定是哪個應用程序使2. TCP/IP 通信建立的過程怎樣,端口有什么作用? 用該協(xié)議1、局部變量能否和全局變量重名? 答案:能,局部會屏蔽全局。要用全局變量,需要使用 : 局部變量可以與全局變量同名,在函 數(shù)內引用

25、這個變量時,會用到同名的局部變量,而不會用到全局變量。 對于有些編譯器而言, 在 同一個函數(shù)內可以定義多個同名的局部變量,比如在兩個循環(huán)體內都定義一個同名的局部變量, 而那個局部變量的作用域就在那個循環(huán)體內2、如何引用一個已經(jīng)定義過的全局變量?答案: extern 可以用引用頭文件的方式,也可以用 extern 關鍵字,如果用引用頭文件方式來 引用某個在頭文件中聲明的全局變理, 假定你將那個變寫錯了, 那么在編譯期間會報錯, 如果你 用 extern 方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯3 、全局變量可不可以定義在可被多個.C 文件包含的頭文件中?為什么?

26、答案:可以,在不同的 C 文件中以 static 形式來聲明同名全局變量??梢栽诓煌?C 文件 頁腳 頁眉文件中對此變量賦初值,此時連接不會 C 中聲明同名的全局變量,前提是其中只能有一個 出 錯有什么問題?它是什么意思?; )4 、語句 for( ;1while(1) 相同。答案:和有什么區(qū)別?和 while do 5、do while 答案:前一個循環(huán)一遍再判斷,后一個判斷以后再循環(huán)。int a,b,c,d;a=10; b=a+; c=+a; d=10*a+;10,12 ,答案 d=10*a+;/a=13; dc ,), %d , 搥 , b , printf( , c , d : %d

27、 return 0; c=+a;/a=12 b=10 a=10; b=a+;/a=11 120 d=120 c=12高級題1、 static 全局變量與普通的全局變量有什么區(qū)別? static 局部變量和普通局部變量有什么區(qū)別? static 函數(shù)與普通函數(shù)有什么區(qū)別?就構成了靜態(tài)的全局變量。全局變量本身 這兩者在存儲方式上并無不同。這 當一個源程序由多個源文件組成時, 即只在定在同一源程序的其它源文件中不能使用它。由于靜態(tài)全局變量的作 只能為該源文件內的函數(shù)公用, 因此可以避免在其它源文件中引起錯 把局部變量改變?yōu)殪o態(tài)變量后是改變了它的存儲方式即改變了它的 static 函答案:全局變量 (

28、 外部變量 ) 的說明之前再冠以 static 就是靜態(tài)存儲方式,靜態(tài)全局變量當然也是靜態(tài)存儲方式。 兩者的區(qū)別雖在于非靜態(tài)全局變量的作用域是整個源程序, 非靜態(tài)的全局變量在各個源文件中都是有效的。而靜態(tài)全局變量則限制了其作用域, 義該變量的源文件內有效, 用域局限于一個源文件內, 誤。從以上分析可以看出, 生存期。把全局變量改變?yōu)殪o態(tài)變量后是改變了它的作用域,限制了它的使用范圍。 數(shù)與普通函數(shù)作用域不同。僅在本文件。只在當前源文件中使用的函數(shù)應該說明為內部函數(shù) (static) ,內部函數(shù)應該在當前源文件中說明和定義。對于可在當前源文件以外使用的函數(shù),應該在一個頭文件中說明,要使用這些函數(shù)的

29、源文件要包含這個頭文件 static 全局變量與普通的 全局變量有什么區(qū)別: static 全局變量只初使化一次,防止在其他文件單元中被引用; static 局部變量和普通局部變量有什么區(qū)別: static 局部變量只被初始化一次, 下一次依據(jù)上一次結果值; static 函數(shù)與普通函數(shù)有什么區(qū)別: 頁腳頁眉static 函數(shù)在內存中只有一份,普通函數(shù)在每個被調用中維持一份拷貝2 、程序的局部變量存在于()中,全局變量存在于()中,動態(tài)申請數(shù)據(jù)存在于( )中 答案:棧;靜態(tài)區(qū);堆3、設有以下說明和定義: typedef union long i;int k5; char c; DATE;str

30、uct dataint cat;DATE cow;double dog; too;DATE max;則語句 printf(%d,sizeof(too)+sizeof(max);的執(zhí)行結果是:_20_ 答案:DATE是一個union,變量公用空間.里面最大的變量類型是int5,占用20個字節(jié).所以它的大小是 20 data 是一個struct,每個變量分開占用空間依次為int4 + DATE20 + double8 = 32. 所以結果是 20 + 32 = 52.當然在某些16位編輯器下,int可能是2字節(jié),那么 結果是 int2 + DATE10 + double8 = 204、隊列和棧有什

31、么區(qū)別?答案:隊列先進先岀,棧后進先岀6、已知一個單向鏈表的頭,請寫岀刪除其某一個結點的算法,要求,先找到此結點,然后刪除。答案:slno detype *Delete(s lno detype *Head,i nt key)if(Head->n umber=key)Head=Po in ter- >n ext;free(Po in ter);break;Back = Poin ter;Poin ter=Po in ter- >n ext;if(Po in ter- >n umber=key)頁腳頁眉Back- >n ext=Po in ter- >n ex

32、t;free(Po in ter);break;void delete(Node* p)if(Head = Node)while(p)、請找出下面代碼中的所以錯誤說明:以下代碼是把一個字符串倒序, 變?yōu)椤?dcba ”includestring.h main() char*src=hello,world;char* dest=NULL;int len=strlen(src);dest=(char*)malloc(len);char* d=dest;char* s=srclen;7 如“ abcd ”倒序后while(len-!=0) d+=s-;printf(%s,dest);return 0

33、;答案: include <stdio.h>int main()char* src = hello,world;int len = strlen(src);char* dest = (char*)malloc(len+1)*sizeof(char); char* d = dest;char* s = &srclen-1;/ 指向最后一個字符while( len- != 0 )*d+=*s-;*d = 0;/ 尾部要加 0printf(%sn,dest);頁腳頁眉/ 使用完,應當釋放空間,以免造成內存匯泄露/ 要為 0 分配一個空間free(dest);return 0;20

34、06-09-29 19:41華為筆試題 ( 3) 分,共 F 并說明原因,每小題420分)一、判斷題(對的寫T,錯的寫 )a01的值為01、有數(shù)組定義。3;(正確則2、int (*ptr) (), 則 ptr 是一維數(shù)組的名字。 (錯誤 int (*ptr) (); 定義一個指向函數(shù)的指針變量)3 、指針在任何情況下都可進行 >, <,>=, <=,= 運算。(錯誤)4、 switch(c) 語句中 c 可以是 int ,long,char ,float ,unsigned int類型。 (錯,不能用實形)二、填空題(共 30 分)1 、在 windows 下,寫出運行

35、結果,每空 2 分,共 10 分。char str = Hello ;char *p=str;int n=10;sizeof(str)=()sizeof(p)=()sizeof(n)=( )void func(char str100) sizeof(str)=( )答案: 6,4,4, 4, 具體解釋請參看我的空間里的“C/C+ 程序員應聘試題剖析”2、void getmemory(char *p, int num)*p=(char*)malloc(num);void test(void)char *str=NULL;getmemory(&str,100);strcpy(str, he

36、llo );printf(str);運行 test 函數(shù)有什么結果? ()10 分 答案: 輸出 hello ,但是發(fā)生內存泄漏。3、設int arr=6,7,8,9,10;頁腳頁眉int *ptr=arr;*(ptr+)+=123;/ 先算 *ptr=*ptr+123; 再 ptr+; 所以 arr0= 129;printf( %d,%d ,*ptr,*(+ptr); / 按從右到左的順序( ) 10 分答案: 8 ,8 。這道題目的意義不大,因為在不同的編譯器里 printf 的參數(shù)的方向是不一樣的,在 vc6.0 下 是從右到左,這里先 *(+ptr) 后 *pt ,于是結果為 8, 8

37、三、編程題(第一小題 20 ,第二小題 30 分)*source, char *dest) 相等返回 0 ,不等返回1 、 不使用庫函數(shù), 編寫函數(shù) int strcmp(char -1;答案:一、int strcmp(char*source, char *dest) assert(source!=NULL)&&(dest!=NULL); int i,j;for(i=0; sourcei=desti; i+) if(sourcei='0' && desti='0') return 0;elsereturn -1; 答案:二、 in

38、t strcmp(char *source, char *dest)while ( (*source != '0') && (*source = *dest) source+; dest+; return ( (*source) - (*dest) ) ? -1 : 0;2 、 寫一函數(shù) int fun(char *p) 判斷一字符串是否為回文,是返回 1,不是返回 0,出錯返回 -1 答案:一、int fun(char *p)if(p=NULL)return -1;頁腳頁眉elseint length = 0;int i = 0;int judge = 1;l

39、ength = strlen(p);for(i=0; i <length/2; i+)if(pi!=plength-1-i) judge = 0;break;if(judge = 0) return 0;elsereturn 1;答案:二、int fun(char *p)int len = strlen(p) - 1; char *q = p + len;if (!p) return -1;while (p < q)if (*p+) != (*q-) return 0;return 1;2006-09-30 12:48 3 華為筆試網(wǎng)絡題()B )1.在OSI 7層模型中,網(wǎng)絡層的

40、功能有(D.B.確定數(shù)據(jù)包如何轉發(fā)與路由C.在信道上傳送比特流 A. 確保數(shù)據(jù)的傳送正確無誤 糾錯與流控 (C ) 光纖分布式數(shù)據(jù)接口 2.FDDI() 使用 的是局域網(wǎng)技術。D.令牌環(huán);令牌總線。以太網(wǎng)A.;B.快速以太網(wǎng); C. C) LAN是應用 CSMA/CD 協(xié)議的( 3.下面那種 B.FDDIC.ETHERNET D.NOVELL A. 令牌環(huán)( C) UDP 協(xié)議的相似之處是 4.TCP 和 以上均不對 C. 傳輸層協(xié)議 D. 面向非連接的協(xié)議 A. 面向連接的協(xié)議 B.5. 應用程序 PING 發(fā)出的是 _報文.( C)A.TCP 請求報文。B.TCP 應答報文。C.ICMP

41、請求報文。 D.ICMP 應答報文。頁腳頁眉6. 以下說法錯誤的是 (多) ( BD)路由器中繼器是工作在物理層的設備B. C.集線器和以太網(wǎng)交換機工作在數(shù)據(jù)連路層A.橋能隔離網(wǎng)絡層廣播 是工作在網(wǎng)絡層的設備D. 當橋接收的分組的目的 MAC 地址在橋的映射表中沒有對應的表項時,采取的策略是(C) 7.向其他端口廣播該分組D.以上答案均不對A.丟掉該分組B.將該分組分片 C. 8.LAN Switch在網(wǎng)絡層次模型中的地位(B)網(wǎng)絡層D.以上都不是 A.物理層 B.鏈路層 C.此數(shù)字以上的端口號可自由分的TCP/UDP 端口號已保留與現(xiàn)有服務一一對應,9.小于_ D.2048 配。 ( C)

42、A.199B.100C.1024( B) 當一臺主機從一個網(wǎng)絡移到另一個網(wǎng)絡時, 以下說法正確的是 10. 但不需改動 MAC 地址 B.MAC 地址 必須改變它的 IP 地址 ,A. 必須改變它的 IP 地址和 地址 .IP 地址都不需改動 IP 地址 ,但不需改動地址D.MAC C. 必須改變它的 MAC答案: 1.B; 2.C; 3.C; 4.C; 5.C; 6.BD; 7.C; 8.B; 9.C; 10.B.2006-09-30 13:00 華為筆試題( 4)找錯 1. void test1()char string10;char* str1=3456789; strcpy(strin

43、g, str1);那這個賦值 string 數(shù)組原意表示的是字符串的話,答:表面上并且編譯都不會錯誤。 但如果, 這 樣最后一個元素可以存儲字符串結尾符 char string11 就沒有達到意圖。最好定義為 '0'void test2()char string10,str110;for(int I=0; I <10;I+)str1I ='a'strcpy(string, str1);并沒有結尾標志, str1'0' 才會結束,而只有遇到字符串末尾的答: strcpy 使用錯誤, strcpy , 這樣就正常了。 函數(shù)越界訪問,不妨讓導致

44、strcpystr19='0'void test3(char* str1)char string10; if(strlen(str1) <=10) 頁腳頁眉strcpy(string, str1);答:這又會出現(xiàn)第一道改錯題的錯誤了。 strlen(str1) 算出來的值是不包含結尾符 '0' 的,如果 str1 剛好為 10 個字符 1 結尾符, string 就得不到結尾符了。 可將 strlen(str1) <=10 改為 strlen(str1)2. 找錯#define MAX_SRM 256DSN get_SRM_no()static in

45、t SRM_no;int I;for(I=0;I<MAX_SRM;I+,SRM_no+)SRM_no %= MAX_SRM; if(MY_SRM.state=IDLE)break; if(I>=MAX_SRM) return (NULL_SRM);elsereturn SRM_no;答:我不知道這段代碼的具體功能, 但明顯有兩個錯誤 1,SRM_no 沒有賦初值2,由于 static的聲明,使該函數(shù)成為不可重入(即不可預測結果)函數(shù),因為SRM_no 變量放在程序的全局存儲區(qū)中,每次調用的時候還可以保持原來的賦值。這里應該去掉 static 聲明。3. 寫出程序運行結果int su

46、m(int a)auto int c=0;static int b=3;c+=1;b+=2;return(a+b+c);void main()int I;頁腳頁眉int a=2;for(I=0;I <5;I+)printf(%d, sum(a);答: 8,10,12,14,16 該題比較簡單。只要注意 b 聲明為 static 靜態(tài)全局變量,其值在下次調用時 是可以保持住原來的賦值的就可以。4. int func(int a)int b;switch(a)case 1: b=30;case 2: b=20;case 3: b=16;default: b=0;return b;則 func

47、(1)=?答: func(1)=0 ,因為沒有 break 語句, switch 中會一直計算到 b=0 。這是提醒我們不要忘了 break 。呵呵。5:int a3;a0=0;a1=1;a2=2;int *p, *q;p=a;q=&a2;則 aq-p=?答: aq-p=a2=2; 這題是要告訴我們指針的運算特點6. 定義 int *a34, 則變量占有的內存空間為: 答:此處定義的是指向指針的指針數(shù)組,對于 32 位系統(tǒng),指針占內存空間 4 字節(jié),因此總空間 為 3 X 4 X 4 = 48。7. 編寫一個函數(shù),要求輸入年月日時分秒,輸出該年月日時分秒的下一秒。如輸入2004 年 1

48、2月 31 日 23 時 59 分 59 秒,則輸出 2005 年 1 月 1 日 0 時 0 分 0 秒。答: /* 輸入年月日時分秒,輸出年月日時分秒的下一秒,輸出仍然在原內存空間*/void NextMinute(int *nYear,int *nMonth,int *nDate,int *nHour,int *nMinute,int *nSecond)頁腳頁眉int nDays; (*nSecond)+; / 秒加 1 if(*nSecond>=60) / 秒滿 60 ,做出特殊處理, 下 面時,日,月等類同*nSecond=0;(*nMinute)+; if(*nMinute&

49、gt;=60) *nMinute=0;(*nHour)+;if(*nHour>=24)*nHour=0;(*nDate)+; switch(*nMonth)case 1:case 3:case 5:case 7:case 8:case 10:case 12: nDays=31; break;case 2:/ 判斷閏年if(*nYear0=0 | |*nYear_x0010_0!=0&&*nYear%4=0) nDays=29;else nDays=28;break; default: nDays=30;break;if(*nDate>nDays)*nDate=1;(

50、*nMonth)+; if(*nMonth>12) 頁腳頁眉*nMonth=1;(*nYear)+; /* 示例可運行代碼 */void main()int nYear=2004,nMonth=12,nDate=31,nHour=59,nMinute=59,nSecond=59;NextMinute(&nYear,&nMonth,&nDate,&nHour,&nMinute,&nSecond);printf(Theresult:%d-%d-%d %d:%d:%d,nYear,nMonth,nDate,nHour,nMinute,nSecon

51、d);華為硬件筆試題 2006-09-30 13:01一 選擇 13 個題目 ,沒有全部抄下來 , 涉及的課程有電路 , 模擬電路 ,數(shù)字電路 ,信號與系統(tǒng) ,微機原 理,網(wǎng)絡,數(shù)字信號處理 有關于 1.微分電路 2.CISC,RISC 3. 數(shù)據(jù)鏈路層二 填空 10 個題目 ,沒有全部抄下來 , 涉及的課程有電路 , 模擬電路 ,數(shù)字電路 ,信號與系統(tǒng) ,微機原 理,網(wǎng)絡 ,數(shù)字信號處理 有關于1. TIC6000 DSP 2. 二極管 3.RISC 4.IIR三 簡答1.x(t) 的傅立葉變換為 X(jw)=$(w)+$(w-PI)+$(w-5) h(t)=u(t)-u(t-2) 問: (

52、1),x(t) 是周期的嗎 ? (2),x(t)*h(t) 是周期的嗎 ? (3), 兩個非周期的信號卷積后可周期嗎 ? 2.簡述分組交換的特點和不足 四 分析設計 1.波形變換題目 從正弦波 -方波-鋸齒波 -方波 ,設計電路 2.74161 計數(shù)器組成 計數(shù)電路,分析幾進制的 3.用D觸發(fā)器構成2分頻電路 4.判斷MCS-51單片機的指令正確還是 錯誤,并指出錯誤原因 (1) MUL R0,R1 (2) MOV A,R7 (3) MOV A,#3000H(4) MOVC A+DPTR,A (5) LJMP #1000H () 5.MCS-51單片機中 ,采用 12Mhz 時鐘,定時器 T0

53、采用模式 1(16 位計數(shù)器 ),請問在下面程序中 ,p1.0 的輸出頻率 MOV TMOD,#01H SETBTR0 LOOP:MOV TH0,#0B1H MOV TL0,#0E0H LOOP1:JNB TF0,LOOP1 CLR TR0 CPLP1.0 SJMP LOOP華為硬件面試題 2006-09-30 13:02 全都是幾本模電數(shù)電信號單片機題目1. 用與非門等設計全加法器2. 給出兩個門電路讓你分析異同3. 名詞 :sram,ssram,sdram4 .信號與系統(tǒng) :在時域與頻域關系5 .信號與系統(tǒng) :和4題差不多6. 晶體振蕩器 ,好像是給出振蕩頻率讓你求周期(應該是單片機的 ,

54、12 分之一周期 .)7. 串行通信與同步通信異同 ,特點 ,比較8. RS232C高電平脈沖對應的TTL邏輯是?(負邏輯?)9. 延時問題 ,判錯10. 史密斯特電路 , 求回差電壓11. VCO 是什么 ,什么參數(shù) (壓控振蕩器 ?)12. 用D觸發(fā)器做個二分顰的電路.又問什么是狀態(tài)圖頁腳頁眉13. 什么耐奎斯特定律 ,怎么由模擬信號轉為數(shù)字信號14. 用 D 觸發(fā)器做個 4 進制的計數(shù)15. 那種排序方法最快 ?一、 研發(fā)(軟件)用C語言寫一個遞歸算法求 N !; 給一個C的函數(shù),關于字符串和數(shù)組,找岀錯誤; 防火墻是怎么實現(xiàn)的? 你對哪方面編程熟悉?硬件: 1、繼電器控制電路。 2 、

55、 SDRAM 是怎么工作的 3、寫岀邏輯表達式說明A2A1A0 大于 B2B1B0 。 4、常用觸發(fā)器有幾種 5、示波器有幾種觸發(fā)方式,舉岀三種 華為 3COM 數(shù)據(jù)通信工程師試題 2006-09-29 18:531 H.323 協(xié)商答案: 12 個包協(xié)商,先 H225 然后 H245 ,需要注意的是面試官可能會問到跟 SIP 的比較2 ipsec 為什么是三層的。 L2tp 為什么是二層的? 答案: IPSec (Internet 協(xié)議安全 )是一個工業(yè)標準網(wǎng)絡安全協(xié)議, 為 IP 網(wǎng)絡通信提供透明的安全服務, 保護 TCP/IP 通信免遭竊聽和篡改, 可以有效抵御網(wǎng)絡攻擊, 同時保持易用性。 IPSec 有兩個基本目標: 1)保護 IP 數(shù)據(jù)包安全; 2 ) 為抵御網(wǎng)絡攻擊提供防護措施。 第三層保護的優(yōu)點 通常 IPSec 提供的保護需要對系統(tǒng)做一 定的修改。但是 IPSec 在 IP 傳輸層即第三層的策略執(zhí)行(strategicimplementation

溫馨提示

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

最新文檔

評論

0/150

提交評論