數(shù)據(jù)結(jié)構(gòu)和算法_第1頁
數(shù)據(jù)結(jié)構(gòu)和算法_第2頁
數(shù)據(jù)結(jié)構(gòu)和算法_第3頁
數(shù)據(jù)結(jié)構(gòu)和算法_第4頁
數(shù)據(jù)結(jié)構(gòu)和算法_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

一.選擇題(共15題,每題3分)下面關(guān)于算法說法錯(cuò)誤的是。算法最終必須由計(jì)算機(jī)程序?qū)崿F(xiàn)為解決某問題的算法同為該問題編寫的程序含義是相同的算法的可行性是指指令不能有二義性以上幾個(gè)都是錯(cuò)誤的下面說法錯(cuò)誤的是.算法原地工作的含義是指不需要任何額外的輔助空間在相同的規(guī)模n下,復(fù)雜度O(n)的算法在時(shí)間上總是優(yōu)于復(fù)雜度O(2n)的算法所謂時(shí)間復(fù)雜度是指最壞情況下,估算算法執(zhí)行時(shí)間的一個(gè)上界同一個(gè)算法,實(shí)現(xiàn)語言的級(jí)別越高,執(zhí)行效率就越低在下面的程序段中,對x的賦值語句的頻度為。for(inti;i<n;i++)(for(intj=o;j<n;j++)(x:=x+1;})0(2n)b.0(n)c.0(n2)d.O(log2n)下面說法正確的是。數(shù)據(jù)元素是數(shù)據(jù)的最小單位;數(shù)據(jù)元素是數(shù)據(jù)的最小單位;數(shù)據(jù)的物理結(jié)構(gòu)是指數(shù)據(jù)在計(jì)算機(jī)內(nèi)的實(shí)際存儲(chǔ)形式數(shù)據(jù)結(jié)構(gòu)的抽象操作的定義與具體實(shí)現(xiàn)有關(guān)下面說法正確的是。在順序存儲(chǔ)結(jié)構(gòu)中,有時(shí)也存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)中元素之間的關(guān)系順序存儲(chǔ)方式的優(yōu)點(diǎn)是存儲(chǔ)密度大,且插入、刪除運(yùn)算效率高數(shù)據(jù)結(jié)構(gòu)的基本操作的設(shè)置的最重要的準(zhǔn)則是,實(shí)現(xiàn)應(yīng)用程序與存儲(chǔ)結(jié)構(gòu)的獨(dú)立數(shù)據(jù)的邏輯結(jié)構(gòu)說明數(shù)據(jù)元素之間的順序關(guān)系,它依賴于計(jì)算機(jī)的儲(chǔ)存結(jié)構(gòu)下述是順序存儲(chǔ)結(jié)構(gòu)的優(yōu)點(diǎn)。存儲(chǔ)密度大插入運(yùn)算方便刪除運(yùn)算方便可方便地用于各種邏輯結(jié)構(gòu)的存儲(chǔ)表示下面關(guān)于線性表的敘述中,錯(cuò)誤的是。線性表采用順序存儲(chǔ),必須占用一片連續(xù)的存儲(chǔ)單元線性表采用順序存儲(chǔ),便于進(jìn)行插入和刪除操作線性表采用鏈接存儲(chǔ),不必占用一片連續(xù)的存儲(chǔ)單元線性表采用鏈接存儲(chǔ),便于插入和刪除操作某線性表中最常用的操作是在最后一個(gè)元素之后插入一個(gè)元素和刪除第一個(gè)元素,則采用存儲(chǔ)方式最節(jié)省時(shí)間。順序表b.雙鏈表 c.帶頭結(jié)點(diǎn)的雙循環(huán)鏈表 d.單循環(huán)鏈表靜態(tài)鏈表中指針表示的是。內(nèi)存地址 b.數(shù)組下標(biāo) c.下一元素地址d.左、右孩子地址(10)下面的敘述不正確的是。線性表在鏈?zhǔn)酱鎯?chǔ)時(shí),查找第i個(gè)元素的時(shí)間同i的值成正比線性表在鏈?zhǔn)酱鎯?chǔ)時(shí),查找第i個(gè)元素的時(shí)間同i的值無關(guān)線性表在順序存儲(chǔ)時(shí),查找第i個(gè)元素的時(shí)間同i的值成正比線性表在順序存儲(chǔ)時(shí),查找第i個(gè)元素的時(shí)間同i的值無關(guān)(11)下面說法錯(cuò)誤的是。靜態(tài)鏈表既有順序存儲(chǔ)的優(yōu)點(diǎn),又有動(dòng)態(tài)鏈表的優(yōu)點(diǎn)。所以,它存取表中第i個(gè)元素的時(shí)間與i無關(guān)。靜態(tài)鏈表中能容納的元素個(gè)數(shù)的最大數(shù)在表定義時(shí)就確定了,以后不能增加。靜態(tài)鏈表與動(dòng)態(tài)鏈表在元素的插入、刪除上類似,不需做元素的移動(dòng)。靜態(tài)鏈表就是一直不發(fā)生變化的鏈表。(12)在雙向鏈表指針p的結(jié)點(diǎn)前插入一個(gè)指針q的結(jié)點(diǎn)操作是。p->Llink=q;q->Rlink=p;p->Llink->Rlink=q;q->Llink=q;p->Llink=q;p->Llink->Rlink=q;q->Rlink=p;q->Llink=p->Llink;q->Rlink=p;q->Llink=p->Llink;p->Llink->Rlink=q;p->Llink=q;q->Llink=p->Llink;q->Rlink=q;p->Llink=q;p->Llink=q;(13)下面說法正確的是。順序存儲(chǔ)結(jié)構(gòu)的主要缺點(diǎn)是不利于插入或刪除操作;線性表采用鏈表存儲(chǔ)時(shí),結(jié)點(diǎn)和結(jié)點(diǎn)內(nèi)部的存儲(chǔ)空間可以是不連續(xù)的;順序存儲(chǔ)方式插入和刪除時(shí)效率太低,因此它不如鏈?zhǔn)酱鎯?chǔ)方式好;順序存儲(chǔ)方式只能用于存儲(chǔ)線性結(jié)構(gòu)。(14)下面說法正確的是。線性表只能用順序存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)。為了很方便的插入和刪除數(shù)據(jù),可以使用雙向鏈表存放數(shù)據(jù)。順序存儲(chǔ)方式的優(yōu)點(diǎn)是存儲(chǔ)密度大,且插入、刪除運(yùn)算效率高。鏈表是采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的線性表,進(jìn)行插入、刪除操作時(shí),在鏈表中比在順序存儲(chǔ)結(jié)構(gòu)中效率高。(15)下面說法正確的是。數(shù)據(jù)元素是數(shù)據(jù)的最小單位。隊(duì)列邏輯上是一個(gè)下端口和上端能增加又能減少的線性表。任何一個(gè)遞歸過程都可以轉(zhuǎn)換成非遞歸過程。只有那種使用了局部變量的遞歸過程在轉(zhuǎn)換成非遞歸過程時(shí)才必須使用棧。二.填空題(共5題,每題5分)(1) 下列程序的功能是創(chuàng)建單向鏈表,請補(bǔ)充完整。#include<stdio.h>#include<alloc.h>structlink(charname[10];intmark;structlink*next;);voidinsert(char*name,intmark);structlink*head=NULL;main()(charname[10];intmark;structlink*t;while(1)(scanf("%s%d”,name,&mark);if(strcmp(name,“#”)==0)(break;}(1);}for(t=head;(2))(printf("<%s>:%d\n”,t->name,t->mark);}}voidinsert(char*name,intmark)(structlink*p;p=(3);strcpy(p->name,name);p->mark=mark;(4);if(head!=NULL)((5);}head=p;}用循環(huán)鏈表表示的隊(duì)列長度為n,若只設(shè)頭指針,則出隊(duì)和入隊(duì)的時(shí)間復(fù)雜度分別是和;若只設(shè)尾指針,則出隊(duì)和入隊(duì)的時(shí)間復(fù)雜度分別是和。在n個(gè)記錄的有序順序表中進(jìn)行折半查找,最大的比較次數(shù)是。仔細(xì)閱讀下列程序,在空白處填入適當(dāng)?shù)恼Z句。函數(shù)match(s,t)完成在字符串s中尋找與t匹配的字符,若存在一個(gè)匹配,則返回t在字符串s中的下標(biāo);否則,返回-1。其中,字符指針*b始終指向s的第一元素。Match(s,t)Chars,t;{char*b=s;char*p,*r;for {for(p=s,r=t;*r!='\0'&&*p==*r;p++,r++);if return(s-b);}return(-1);}補(bǔ)充下列程序:設(shè)一棵二叉序列樹b,下列算法函數(shù)是實(shí)現(xiàn)在b中插入一個(gè)結(jié)點(diǎn)s。函數(shù):voidinsert(btree*b,btree*s)(if(b==NULL)b=s;elseif(s->data==b->data)return();elseif(s->data<b->data);else;)三.簡答題(共3題,每題10分)在一個(gè)包含n個(gè)元素的數(shù)組M中查找一個(gè)元素x。算法假設(shè)M已經(jīng)按升序排列了,請寫出二分搜索算法的步驟。試將一個(gè)無序的線性表A=(11,16,8,5,14,10,38,23)轉(zhuǎn)換成一個(gè)按升序排列的有序線性表(用鏈表實(shí)現(xiàn))。何為棧和隊(duì)列?簡述兩者的區(qū)別和聯(lián)系。選擇題(共15題,每題3分。)在C語言中,char型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式是。a.補(bǔ)碼b.反碼c.原碼d.ASCII碼設(shè)C語言中,一個(gè)int型數(shù)據(jù)在內(nèi)存中占2個(gè)字節(jié),則unsignedint型數(shù)據(jù)的取值范圍為0?255b.0?32767 c.0?65535d.0?2147483647已知ch是字符型變量,下面不正確的賦值語句是。ch='a+b';b.ch='\0';c.ch='7'+'9‘;d.ch=5+9;已知ch是字符型變量,下面正確的賦值語句是。ch='123';b.ch=?\xff';c.ch='\08'; d.ch=”\”;以下選項(xiàng)中不正確的整型常量是。12Lb.-10c.1,900d.123U假設(shè)int型變量占兩個(gè)字節(jié)的存儲(chǔ)單元,若有定義:intx[10]={0,2,4};則數(shù)組x在內(nèi)存中所占字節(jié)數(shù)為。a.3b.6c.10d.20C語言中能用八進(jìn)制表示的數(shù)據(jù)類型為。a.字符型、整型 b.整形、實(shí)型c.字符型、實(shí)型、雙精度型 d.字符型、整型、實(shí)型、雙精度型以下只有在使用時(shí)才為該類型變量分配內(nèi)存的存儲(chǔ)類說明是。a.auto和staticb.auto和registerc.register和staticd.extern和register下面四個(gè)選項(xiàng)中,均是合法整型常量的選項(xiàng)是。a.160b.0xcdfc.01d.0x48aTOC\o"1-5"\h\z0xffff 01a 986,012 2e5011 0xe0668 0x下面四個(gè)選項(xiàng)中,均是不合法的整型常量的選項(xiàng)是。a.0f1b.0Xcdfc.018d.0x48eg0xffff017 999 0680011 12,456 5e2 03f下面四個(gè)選項(xiàng)中,均是不合法的浮點(diǎn)數(shù)的選項(xiàng)是。a.160.b.123c.18d.e30.122e4.2123e4.234e3.e5 0.0 1e3下面四個(gè)選項(xiàng)中,均是合法浮點(diǎn)數(shù)的選項(xiàng)是。a.+le+1b.60.c.123ed.e3TOC\o"1-5"\h\z5e-9.412e-4 1.2e-.4 .8e403e2 8e5 +2e 5.e下面四個(gè)選項(xiàng)中,均是合法轉(zhuǎn)義字符的選項(xiàng)是―a.?\” b.'\' c.,\018,d.'\\0'?\\, ‘\017‘ 賦,101‘?\n' '\”‘ ,xab' ,xlf'下面四個(gè)選項(xiàng)中,均是不合法的轉(zhuǎn)義字符的選項(xiàng)是.a.?\” b.'\1011' c.'\011' d.,\abc'?\\, ?、’ ?\f' ?\1011,偵, ?\a, ?\}, ,xlf'(15)下面正確的字符常量是.a."a”b.?\\” c.,W'd.”填空題(每題6分)。說明下面變量的定義:char(*p[])(); char*p()[]; char(*p)[10][10]; char(*(*p())[])[]; 下面共同體的存儲(chǔ)空間是unionBOOKNUMBER(T_S16age;T_S8title[10];T_S8post[32];)若整數(shù)值范圍是-32768至32767。在執(zhí)行下面的表達(dá)式之后,i的結(jié)果是什么?inti=32766;i=i+1; i=i=i+1; i=對于聯(lián)合類型:unionx(charch[7];inti[2];floatf;)tom;那么,sizeof(tom)=有以下程序,程序的輸出結(jié)果是(注意:ch[0]在低字節(jié),ch[1]在高字節(jié))。#include<stdio.h>unionpw(inti;charch[2];}a;main()(a.ch[0]=13;a.ch[1]=0;printf("%d\n”,a.i);}簡單題(共3題,每題10分)已知a為整數(shù),比較下面代碼的效率并說明原因:a++;a=a+1;已知a為整數(shù),比較下面代碼的效率并說明原因:a=a*4;a<<2;說明一個(gè)變量和定義一個(gè)變量有什么區(qū)別?選擇題(共15題,每題3分。)設(shè)有以下語句:chara=3,b=6,c;c=aAb<<2;則c的二進(jìn)制值是。00011011000101000001110000011000表達(dá)式0x13&0x17的值是—。TOC\o"1-5"\h\z0x170x130xf80xec表達(dá)式0xl3|0xl7的值是。0x130x170xE80xc8以下敘述中正確的是。表達(dá)式a&=b等價(jià)于a=a&b表達(dá)式a|=b等價(jià)于a=a|b表達(dá)式a!=b等價(jià)于a=a!b表達(dá)式aA=b等價(jià)于a=aAb運(yùn)作對象必須是整型數(shù)的運(yùn)算符是a.%b..c./d.**根據(jù)以下定義,錯(cuò)誤的表達(dá)式是。struct(inta;charb;}Q,*p=&Q;Q.a(*p).bp->a*p.b若x是單精度實(shí)型變量,表達(dá)式x=10/4的值是。a.2.5b.2.0c.3d.2表達(dá)式!x等價(jià)于。a.x==0b.x==1c.x!=0d.x!=1是合法的用戶自定義標(biāo)識(shí)符。a.b-bb.floatc.<fr>d._isw若變量已正確定義并賦值,表達(dá)式不符合C語言語法。a.a*b/c;b.3.14%2c.2,bd.a/b/c是不正確的字符常量。a.'\n' b.'1'c."a”d.'\101'在C程序中,用表示邏輯值”真”。a.1b.非0的數(shù)c.非1的數(shù)d.大于0的數(shù)把x、y定義成float類型變量,并賦同一初值3.14。a.floatx,y=3.14;b.floatx,y=2*3.14;c.floatx=3.14,y=x=3.14;d.floatx=y=3.14;假設(shè)變量已正確定義,表達(dá)式的值不是2。a.2&3 b.1<<1c.a==2d.1A3若變量已正確定義,語句if(a>b)k=0;elsek=1;和等價(jià)。a.k=(a>b)?1:0; b.k=a>b;c.k=a<=b; d.a<=b?0:1;填空題(每題5分)。&運(yùn)算符作為單目運(yùn)算符時(shí)表示的是運(yùn)算;作為雙目運(yùn)算符時(shí)表示的是運(yùn)算。請計(jì)算sizeof的值:charstr[]="Hello”;char*p=str;intn=10;請計(jì)算sizeof(str)=sizeof(p)=sizeof(n)=請計(jì)算sizeof的值:voidFunc(charstr[100])(//請計(jì)算sizeof(str)=)請計(jì)算sizeof的值:void*p=malloc(100);//請計(jì)算sizeof(p)=下列程序段的輸出是。#definef(a,b,x)a*x+bprintf(“%d,%d\n”,f(3,2,1),f(6,5,f(3,2,1)));下列程序段的輸出是。main()(intk;for(k=1;k<5;k++)(if(k%2)printf("*”);elsecontinue;printf("#”);})簡單題(共3題,每題10分)指出下面程序的錯(cuò)誤并改正:voidmain(void)(inta,b;a=1;b=a/++a;printf(“bequals%d\n”,b);)inta=391,b=1971;寫出aAbAa的值。(3)語句:x++;?++x;x=x+1;?x=l+x;,執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句。嵌入式開發(fā)1、 解釋C語言關(guān)鍵字extern、static的含義。2、 解釋C語言關(guān)鍵字volatile>const的含義。3、 舉例說明typedef和define的用法。4、語句for(;1;)有什么問題?它是什么意思?5、 do while和while do有什么區(qū)別?6、 請寫出下列代碼的輸出內(nèi)容#includemain()inta,b,c,d;a=10;b=a++;c=++a;d=10*a++;printf("b,c,d:%d,%d,%d”,b,c,d);}答:}答:7、 設(shè)有以下說明和定義:(32位編譯器情況下)typedefunion(longi;intk[5];charc;}DATE;structdata(intcat;DATEcow;doubledog;}too;DATEmax;則語句printf("%d”,sizeof(stre)tsifeQof(max));的執(zhí)行結(jié)果是:8、 下面是51單片機(jī)最小系統(tǒng)電路圖,試分析該電路結(jié)構(gòu)以及實(shí)現(xiàn)原理?9、 談?wù)剠R編語言、C和C++三種語言在嵌入式開發(fā)中的區(qū)別和特點(diǎn)?簡述你對嵌入式概念的理解?10、 列舉常見的嵌入式操作系統(tǒng)和單片機(jī)?簡要介紹你以前做過的項(xiàng)目,在項(xiàng)目中用過什么處理器和操作系統(tǒng),實(shí)現(xiàn)什么功能以及關(guān)鍵技術(shù)。:編程1:給了一點(diǎn)簡短程序(包括鏈表結(jié)構(gòu)的定義,判斷函數(shù)的聲明),主題是判斷一個(gè)單向鏈表中是否存在循環(huán)的部分,要求完成判斷程序的編寫。2:給了一個(gè)二叉樹的結(jié)構(gòu)程序。要求完成二叉樹的中序遍歷,使用遞歸或者非遞歸實(shí)現(xiàn),其中非遞歸(棧)實(shí)現(xiàn)可以加分。二:問答給了通信編碼以及其中出現(xiàn)的概率,要求說出霍夫曼編碼的原理和特點(diǎn)。寫出實(shí)現(xiàn)過程,最后給出編碼結(jié)果。自己加一題:C程序的存儲(chǔ)結(jié)構(gòu):局部變量棧空閑內(nèi)存全局變量C程序指令堆永久存儲(chǔ)區(qū)1:假設(shè)一個(gè)8位的帶符號(hào)數(shù)a的真值為1,用二進(jìn)制表示其反碼和補(bǔ)碼是什么?2:32位的存儲(chǔ)空間(原題是用程序定義、移位的),符號(hào)數(shù)一1>>1;無符號(hào)數(shù)0xffffffff>>1;之后兩者用十六進(jìn)制表示分別是什么?0xffffffff,0x7ffffffff3:考查位域的問題。一共1024個(gè),最低存儲(chǔ)空間是2個(gè)字節(jié),則以下兩種分別占用的空間是多大?Typedefstruct(Chara;Shortb;Unsignedcharc;)Typedefstruct(Chara;Unsignedcharc;Shortb;)4:一段程序,判斷程序的意思。涉及到C語言的移位運(yùn)算。v=(vA(v-1))>>1for(c=1;v;c++);(v>>=1;)5:概率統(tǒng)計(jì)題,P(A)的全概率公式,貝葉斯公式分別是什么?6:請列舉出5中嵌入式系統(tǒng)的設(shè)備名稱:7:假設(shè)一個(gè)32位系統(tǒng),有1KBytescache和SDRAM,cache是一行16Bytes的全相聯(lián)結(jié)構(gòu)。內(nèi)存中有一個(gè)a[256][256]的數(shù)組。比較:兩者運(yùn)行速度的比較以及理由。for(i=1;i<256;i++)for(j=1;j<256;j++)(Sum+=a[j][i];)for(i=1;i<256;i++)(for(j=1;j<256;j++)(Sum+=a[i][j];)8:說明采樣定律的內(nèi)容:不知道是否時(shí)域采樣頻域采樣兩者都要求。9:說說goto語句存在與否的選擇,以及原因。goto語句用于無條件得從程序的一處跳轉(zhuǎn)到另一處。goto語句中斷了程序的正常運(yùn)行順序,經(jīng)常用在程序的末尾,用來指示控制權(quán)跳轉(zhuǎn)到輸入語句,以便讀取更多的數(shù)據(jù),但是應(yīng)避免出現(xiàn)無限循環(huán)的情況。另一種使用是。當(dāng)遇到某些特定條件時(shí),吧控制權(quán)從循環(huán)(或嵌套循環(huán))中轉(zhuǎn)移出來。良好的編程習(xí)慣是避免使用goto語句,因?yàn)楫?dāng)使用它時(shí),很多編譯器的代碼效率更低。國多的使用使得程序的邏輯太復(fù)雜,程序可讀性更差。程序指令、全局變量和靜態(tài)變量存儲(chǔ)在永久存儲(chǔ)區(qū)內(nèi),局部變量存儲(chǔ)在棧中。位于這兩個(gè)區(qū)之間的內(nèi)存空間可以用作程序運(yùn)行時(shí)的動(dòng)態(tài)分配。這些內(nèi)存區(qū)稱為堆。當(dāng)程序運(yùn)行時(shí),堆的大小是不斷變化的,因?yàn)闀?huì)發(fā)生函數(shù)或代碼塊的局部變量的創(chuàng)建和銷毀。因此,在動(dòng)態(tài)分配過程中,有可能會(huì)遇到內(nèi)存的“溢出“。在這種情況下,使用內(nèi)存分配函數(shù)將返回空指針(當(dāng)它們不能分配到所請求的足夠內(nèi)存時(shí))。、將一個(gè)字符串逆序2、 將一個(gè)鏈表逆序3、 計(jì)算一個(gè)字節(jié)里(byte)里面有多少bit被置14、 搜索給定的字節(jié)(byte)5、 在一個(gè)字符串中找到可能的最長的子字符串6、 字符串轉(zhuǎn)換為整數(shù)7、 整數(shù)轉(zhuǎn)換為字符串威盛什么是平衡二叉樹?編寫一個(gè)刪除平衡二叉樹的程序?寫一個(gè)程序,求有向有權(quán)圖兩點(diǎn)之間的最小權(quán)?根據(jù)你的理解,寫出Cstring類的構(gòu)造函數(shù)和析構(gòu)函數(shù)?使用C語言實(shí)現(xiàn)對ini文件的訪問,使程序可以對int,double,字符串類進(jìn)行讀寫。nxn個(gè)方格(n為任意整數(shù)),定義若兩個(gè)格有公共邊則稱兩個(gè)格相鄰。現(xiàn)將個(gè)格中的N個(gè)格子圖黑,使每個(gè)格子都與黑格子相鄰。試編程,使N最小。1.static變量和static函數(shù)各有什么特點(diǎn)?描述一下嵌入式基于ROM的運(yùn)行方式基于ram的運(yùn)行方式有什么區(qū)別。task有幾種狀態(tài)?task有幾種通訊方式?C函數(shù)允許重入嗎?嵌入式操作系統(tǒng)和通用操作系統(tǒng)有什么差別?一面,技術(shù)面(1) VxWorks、uc/OS、Palm嵌入式系統(tǒng)操作系統(tǒng)的區(qū)別?(2) 做嵌入式軟件開發(fā)和普通桌面軟件開發(fā)有什么區(qū)別?(3) c語言問題,union和struct的區(qū)別?(4) sizeof(一大堆變量),如果用這個(gè)函數(shù)分配內(nèi)存的大小一定與定義相同嗎?(5) 解釋什么是優(yōu)先級(jí)反轉(zhuǎn)。Canstructuresbepassedtothefunctionsbyvalue?Whycannotarraysbepassedbyvaluestofunctions?Advantagesanddisadvantagesofusingmacroandinlinefunctions?Whathappenswhenrecursionfunctionsaredeclaredinline?Scopeofstaticvariables?Differencebetweenobjectorientedandobjectbasedlanguages?Multipleinheritance-objectscontainhowmanymultiplyinheritedancestor?Whatarethe4differenttypesofinheritancerelationship?Howwouldyoufindoutthenoofinstanceofaclass?Isjavaapureobjectorientedlanguage?Why?Orderofconstructoranddestructorcallincaseofmultipleinheritance?Canuhaveinlinevirtualfunctionsinaclass?Whenyouinheritaclassusingprivatekeywordwhichmembersofbaseclassarevisibletothederivedclass?Whatistheoutputofprintf(“\nab\bcd\ref”);->ef#definecat(x,y)x##yconcatenatesxtoy.Butcat(cat(1,2),3)doesnotexpandbutgivespreprocessorwarning.Why?Canyouhaveconstantvolatilevariable?Yes,youcanhaveavolatilepointer?++*ipincrementswhat?itincrementswhatippointstoOperationsinvolvingunsignedandsigned-unsignedwillbeconvertedtosigneda+++b->(a++)+bmalloc(sizeof(0))willreturn-validpointermain(){fork();fork();fork();printf("helloworld”);}-willprint8times.Arrayofptstofunctions-void(*fptr[10])()Whichwayofwritinginfiniteloopsismoreefficientthanothers?thereare3ways.#error-whatitdoes?Howisfunctionitoa()written?Whotoknowwethersystemusesbigendianorlittleendianformatandhowtoconvertamongthem?Whatisinterruptlatency?Whatisforwardreferencew.r.t.pointersinc?Howisgenericlistmanipulationfunctionwrittenwhichacceptselementsofanykind?Whatisthedifferencebetweenhardreal-timeandsoftreal-timeOS?Whatisinterruptlatency?Howcanyourecuceit?Whatisthedifferncebetweenembeddedsystemsandthesysteminwhichrtosisrunning?Howcanyoudefineastructurewithbitfieldmembers?WhatarethefeaturesdifferentinpSOSandvxWorks?Howdoyouwriteafunctionwhichtakes2arguments-abyteandafieldinthebyteandreturnsthevalueofthefieldinthatbyte?WhatarethedifferentstorageclassesinC?WhatarethedifferentqualifiersinC?WhatarethedifferentBSDandSVR4communicationmechanisms一位資深的嵌入式項(xiàng)目經(jīng)理曾這樣對我說:搞嵌入式要往下走,要搞底層要搞算法,因?yàn)樗鼈儽容^有前途。EmbeddedfirmwareinterviewquestionsWritefunctioninCthatgetsarrayofchars,andsearchforthelongestsequenceofrepeatedly1bits.Itreturnsthethefirstbitplaceinthesequenceandthenumberof1bitsinthesequence.-(a)loopof2A0,2A1,...,2A7isdonewith1<<="j<=7."(b)=""take=""care=""of=""remembering=""the=""first=""place=""bit=""sequence=""you=""are=""counting.Youhave16bitregisterthatincrementitselfandloopsabouteverysecond.Whentheregisterreach0xffffitwillissueaninteruptandwillrunthefunctionupdate_time().Thereisafunctionunsignedlongget_time()thatreturnsthetime.Youneedtoimplementthetwofunctions.-(a)Youneedtocounteveryinterruptinordertosavethenumberofseconds.(b)Thecounterwillbethe16bitMSB,andtheactualregisterwillbe16bitLSB.(c)Iftheregisterwillbeat~0xfff0,youwillreturnMSBthatisnotcorrect,becauseyouwillreadthecounter,theninterruptwillaccureandincrementbyone.Nowyouhavecounterthatisnotcorrect.(d)Youneedtocheckforthe(c)problem,andifyoucatchtheproblem,youneedtoreadonceagaintheregisterandthecounterbeforeyoureturnthem.Youdependonthefacttheyouhaveaboutanotherseconduntiltheregisterwillloop.對嵌入式初學(xué)者有必要解釋一下什么是firmware,中文為固件,一般跑在DSP上,是比較底層的東西,也是目前比較熱門和有挑戰(zhàn)性的嵌入式工種。從下面的一則招聘信息中我們也可以知道Firmware大概干些什么。招聘職位:Firmwareengineer/SeniorFirmwareengineer職位描述:FirmwareEngineerResponsibility:DevelopingoradaptinghardwaredevicedriverDevelopingoradaptingembeddedapplicationsoftwareforVideoCodecImplementingsoftwareonsystem-on-chipsolutionusingacombinationofCandassemblyprogramminglanguages.TuningsoftwareforperformanceRequirements:.SolidskillsdevelopinginCandassemblylanguages,Experiencedevelopi

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論