c 大公司筆試題.doc_第1頁
c 大公司筆試題.doc_第2頁
c 大公司筆試題.doc_第3頁
c 大公司筆試題.doc_第4頁
c 大公司筆試題.doc_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余77頁可下載查看

下載本文檔

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

文檔簡介

大公司筆試題目1一個(gè)父類寫了一個(gè)virtual 函數(shù),如果子類覆蓋它的函數(shù)不加virtual ,也能實(shí)現(xiàn)多態(tài)? 在子類的空間里,有沒有父類的這個(gè)函數(shù),或者父類的私有變量? (華為筆試題)答案:只要基類在定義成員函數(shù)時(shí)已經(jīng)聲明了virtue關(guān)鍵字,在派生類實(shí)現(xiàn)的時(shí)候覆蓋該函數(shù)時(shí),virtual關(guān)鍵字可加可不加,不影響多態(tài)的實(shí)現(xiàn)。子類的空間里有父類的所有變量(static除外)。2.main主函數(shù)執(zhí)行完畢后,是否可能會(huì)再執(zhí)行一段代碼?(朗訊的一道筆試題)答案:可以,可以用_onexit 注冊一個(gè)函數(shù),它會(huì)在main 之后執(zhí)行;如果你需要加入一段在main退出后執(zhí)行的代碼,可以使用atexit()函數(shù),注冊一個(gè)函數(shù)。 語法: #include int atexit(void (*function)(void); #include #include void fn1( void ), fn2( void ), fn3( void ), fn4( void ); int main( void ) atexit( fn1 ); atexit( fn2 ); atexit( fn3 ); atexit( fn4 ); printf( This is executed first.n ); void fn1() printf( next.n ); void fn2() printf( executed ); void fn3() printf( is ); void fn4() printf( This ); 結(jié)果:This is executed first. This is executed next. 3. 有雙向循環(huán)鏈表結(jié)點(diǎn):(華為面試題)typedef struct node int date; struct node *front,*next;_Node;有兩個(gè)雙向循環(huán)鏈表A,B,知道其頭指針為:pHeadA,pHeadB,請寫一函數(shù)將兩上鏈表中date值相同的結(jié)點(diǎn)刪除參考算法: 1.取出A的一個(gè)元素d 2.收集B中有相同元素d的結(jié)點(diǎn)到垃圾箱,并從B里刪除 3.收集A中有相同元素d的結(jié)點(diǎn)到垃圾箱,并從A里刪除 4.刪除垃圾箱中的所有元素 5.A鏈的指針指向下一個(gè) 6.重復(fù)15,直到A鏈循環(huán)到頭了 注意的是第3步,在2步執(zhí)行后垃圾箱不為空時(shí)才執(zhí)行。 上述算法還可以做一點(diǎn)點(diǎn)優(yōu)化: 1.加入兩個(gè)變量cA, cB,分別記錄當(dāng)前A中和B中的元素個(gè)數(shù) 每次從較長者中取出一個(gè)元素來,先從較小者中找起 若沒有,則不必在較長者中浪費(fèi)時(shí)間了#include ? struct NODE int date; NODE *front,*next; ; void redel(NODE *&ahead,NODE *&bhead) int boy=0; NODE *pa=ahead,*pb=bhead,*paa,*paaa,*paaaa,*pbb; while(pa-next!=ahead) int boys=pa-date; /取pa中一個(gè)值 paaaa=pa; paa=pa; pb=bhead; while(pb-next!=bhead) if(boys=pb-date) /如果pa,pb中有值相同 coutendl; coutdelete B:datefront-next=pb-next; pb-next-front=pb-front; bhead=bhead-next; pbb=pb; pb=pb-next; delete pbb; else boy=1; pb-front-next=pb-next; pb-next-front=pb-front; pbb=pb; pb=pb-next; delete pbb; else pb=pb-next; while(paa-next!=ahead & boy=1) if(paa-date=boys) coutdelete A:datenext; ahead=pa; paa-front-next=paa-next; paa-next-front=paa-front; paaa=paa; paa=paa-next; delete paaa; else paa-front-next=paa-next; paa-next-front=paa-front; paaa=paa; paa=paa-next; delete paaa; else paa=paa-next; boy=0; if(paaaa=pa) pa=pa-next; coutendl; int main() NODE *A,*pHeadA,*B,*pHeadB; A=new NODE; B=new NODE; pHeadA=A; pHeadB=B; for(int i=1;idate=i; A-next=new NODE; A-next-front=A; A=A-next; A=A-front; delete A-next; A-next=pHeadA; pHeadA-front=A; for(int i=1;idate=i; B-next=new NODE; B-next-front=B; B=B-next; B=B-front; delete B-next; B-next=pHeadB; pHeadB-front=B; redel(pHeadA,pHeadB); /調(diào)用函數(shù)刪除相同結(jié)點(diǎn)! 4. C+里面如何聲明const void f(void)函數(shù)為C程序中的庫函數(shù)(華為)11 下列哪兩個(gè)是等同的 int b; A const int* a = &b; B const* int a = &b; C const int* const a = &b; D int const* const a = &b;5. 把一個(gè)鏈表反向 填空 (lucent)void reverse(test* head)test* pe = head;test* ps = head-next;while(ps) pe-next = ps-next;ps-next = head;head = ps;ps = pe-next;從第一個(gè)元素開始,ps指向他,將他(ps)指向頭節(jié)點(diǎn)(ps-next = head),將ps設(shè)為頭節(jié)點(diǎn)(head = ps;)操作下一個(gè)元素(ps = pe-next;)等于是依次將每個(gè)元素翻到原頭節(jié)點(diǎn)前面。25完成下列程序*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.#include #define N 8int main() int i;int j;int k; - | | | | | | - return 0;北電昨天筆試共5道題目:1.英譯漢 ,關(guān)于ITU和CCITT的2.漢譯英,關(guān)于VMware的3.兩個(gè)有序數(shù)組的合并,寫一個(gè)完整的程序4.填空題,排序二叉樹節(jié)點(diǎn)的刪除,5個(gè)空5.調(diào)試題,多線程文件的讀寫,編譯沒有錯(cuò)誤,請找出至少三個(gè)bug.翻譯只占10分,后面三道每道301實(shí)現(xiàn)雙向鏈表刪除一個(gè)節(jié)點(diǎn)P,在節(jié)點(diǎn)P后插入一個(gè)節(jié)點(diǎn),寫出這兩個(gè)函數(shù)。 2寫一個(gè)函數(shù),將其中的t都轉(zhuǎn)換成4個(gè)空格。 3Windows程序的入口是哪里?寫出Windows消息機(jī)制的流程。 4如何定義和實(shí)現(xiàn)一個(gè)類的成員函數(shù)為回調(diào)函數(shù)? 5C+里面是不是所有的動(dòng)作都是main()引起的?如果不是,請舉例。 6C+里面如何聲明const void f(void)函數(shù)為C程序中的庫函數(shù)? 7下列哪兩個(gè)是等同的 int b; A const int* a = &b; B const* int a = &b; C const int* const a = &b; D int const* const a = &b; 8內(nèi)聯(lián)函數(shù)在編譯時(shí)是否做參數(shù)類型檢查? void g(base & b) b.play; void main() son s; g(s); return; 1,程序設(shè)計(jì)(可以用自然語言來描述,不編程):C/C+源代碼中,檢查花括?。ㄊ牵ㄅc),與)是否匹配,若不匹配,則輸出不匹配花括弧所在的行與列。 2,巧排數(shù)字,將1,2,.,19,20這20個(gè)數(shù)字排成一排,使得相鄰的兩個(gè)數(shù)字之和為一個(gè)素?cái)?shù),且首尾兩數(shù)字之和也為一個(gè)素?cái)?shù)。編程打印出所有的排法。 3,打印一個(gè)N*N的方陣,N為每邊字符的個(gè)數(shù)( 3N20 ),要求最外層為X,第二層為Y,從第三層起每層依次打印數(shù)字0,1,2,3,.例子:當(dāng)N =5,打印出下面的圖形:X X X X XX Y Y Y XX Y 0 Y XX Y Y Y XX X X X X普天C+筆試題c+最后幾個(gè)大題目是1,實(shí)現(xiàn)雙向鏈表刪除一個(gè)節(jié)點(diǎn)P,在節(jié)點(diǎn)P后插入一個(gè)節(jié)點(diǎn),這兩個(gè)函數(shù)。(北電 重復(fù))2,寫一個(gè)函數(shù)將其中的t都轉(zhuǎn)換成4個(gè)空格。3,windows程序的入口是哪里?寫出windows消息機(jī)制的流程。4,如何定義和實(shí)現(xiàn)一個(gè)類的成員函數(shù)為回調(diào)函數(shù)。還有前面的幾個(gè):1. class Aint a;int b;問的是編譯時(shí)的default constructor function的問題。還有一個(gè)說,A有其他自己定義的構(gòu)造函數(shù),問是否還有default constructor function還是什么來著,記不清樂。2. c+里面是不是所有的動(dòng)作都是main()引起的?如果不是,請舉例。3. c+里面如何聲明const void f(void)函數(shù)為C庫函數(shù)?(這個(gè)我前幾天還看來著,居然就忘記樂, )對了,還考樂一些關(guān)于const的問題問下列哪兩個(gè)是等同的int b;A const int* a = &b;B const* int a = &b;C const int* const a = &b;D int const* const a = &b;還有一個(gè)是考類的成員函數(shù)是 void f() const;型的時(shí)候調(diào)用的問題。幸好昨天剛剛看樂這部分的內(nèi)容,呵呵內(nèi)聯(lián)函數(shù)考了一題,問內(nèi)聯(lián)函數(shù)在編譯時(shí)是否做參數(shù)類型檢查。虛函數(shù)也考了一題,不過不難。class basepublic:virtual void play()coutbase;class son: public basepublic:void play()coutson;void g(base & b)b.play;void main()son s;g(s);return;我所收集的intel比試題面試題:(熟悉大公司的題目,并不僅僅是為了進(jìn)這些公司,而是很多國內(nèi)公司考察內(nèi)容都很接近而已.)2005筆試 :1。高效的內(nèi)存管理2。8皇后問題面試q:(2) 編譯中的問題:全局變量如int i=5; int*(pf)()=foo; 分別在何時(shí)被初始化?設(shè)計(jì)時(shí)候如何具體的實(shí)現(xiàn)。(3) OS相關(guān)的問題,內(nèi)存訪問,cache等(包括cache在整個(gè)系統(tǒng)中的位置,畫出來,并解釋)(4) 解釋例如mov ax,100H 這樣一條指令的cpu, os, memory等都完成了什么樣的工作。(5) Strlen()的C語言實(shí)現(xiàn),不能使用任何變量。(6) 編譯中display表的一些問題(7) 一個(gè)hash函數(shù),輸入隨機(jī),現(xiàn)發(fā)生沖突,如數(shù)據(jù)集中在某幾條中,問怎樣處理hash函數(shù)保證高效的訪問,怎樣實(shí)現(xiàn)?(8) 把Switch()case語句翻譯成三元組。(9) 一個(gè)byte(用C語言實(shí)現(xiàn)計(jì)數(shù)其中1的個(gè)數(shù)),給出最高效的實(shí)現(xiàn)方法。(位域)或者查表最快的;(10) 上海有多少個(gè)加油站?你是怎樣解決這一問題?(11) C語言參數(shù)的入棧順序?為什么這么實(shí)現(xiàn)?(12) 你的最大的優(yōu)點(diǎn)和缺點(diǎn)分別是什么?(13) C語言中字符串的翻轉(zhuǎn),最高效率(時(shí)間和空間)的實(shí)現(xiàn)?2005年騰訊招聘選擇題(60)c/c+oslinux方面的基礎(chǔ)知識c的Sizeof函數(shù)有好幾個(gè)!程序填空(40)1.(20)4空x5不使用額外空間,將A,B兩鏈表的元素交叉歸并2.(20)4空x5MFC將樹序列化轉(zhuǎn)存在數(shù)組或鏈表中! 1.請定義一個(gè)宏,比較兩個(gè)數(shù)a、b的大小,不能使用大于、小于、if語句 / 這樣轉(zhuǎn)向定義應(yīng)該不算違規(guī)吧!_ #include stdafx.h #include #include using namespace std; #define Cmp(x,y) compare(x,y) int compare( int a, int b) a=(131); b=(131); int i=31; while (i-1) & !(a&(1i)(b&(1i)&1)?1:-1):0; int _tmain() int c; c = Cmp(5,4); coutcendl; return 0; jruv (一葉落而知天下秋) 的答案: #define COMPARE(a,b) (a)-(b) /0: a0:ab 2.如何輸出源文件的標(biāo)題和目前執(zhí)行行的行數(shù) cout Filename _FILE_ Line _LINE_ endl; 3.兩個(gè)數(shù)相乘,小數(shù)點(diǎn)后位數(shù)沒有限制,請寫一個(gè)高精度算法 算法提示: 輸入 string a, string b; 計(jì)算string c=a*b; 返回 c; 1, 紀(jì)錄小數(shù)點(diǎn)在a,b中的位置l1,l2, 則需要小數(shù)點(diǎn)后移動(dòng)位置數(shù)為l=length(a)+length(b)-l1-l2-2; 2, 去掉a,b中的小數(shù)點(diǎn),(a,b小數(shù)點(diǎn)后移,使a,b變?yōu)檎麛?shù)) 3, 計(jì)算c=a*b; (同整數(shù)的大數(shù)相乘算法) 4, 輸出c,(注意在輸出倒數(shù)第l個(gè)數(shù)時(shí),輸出一個(gè)小數(shù)點(diǎn)。若是輸出的數(shù)少于l個(gè),就補(bǔ)0) du51(郁郁思揚(yáng))的答案: 變?yōu)檎麛?shù)求就行了.輸入的時(shí)候記一下,小數(shù)點(diǎn)位置.輸出再做點(diǎn)文章就行了.下面的是大整數(shù)的運(yùn)算.#include using namespace std; #define MAX 10000 struct Node int data; Node *next; ; void output(Node *head) if(!head-next&!head-data)return; output(head-next); coutdata; void Mul(char *a,char *b,int pos) char *ap=a,*bp=b; Node *head=0; head=new Node;head-data=0,head-next=0; /頭 Node *p,*q=head,*p1; int temp=0,temp1,bbit; while(*bp) /若乘數(shù)不為空 ,繼續(xù). p=q-next;p1=q; bbit=*bp-48; /把當(dāng)前位轉(zhuǎn)為整型 while(*ap|temp) /若被乘數(shù)不空,繼續(xù) if(!p) /若要操作的結(jié)點(diǎn)為空,申請之 p=new Node; p-data=0; p-next=0; p1-next=p; if(*ap=0)temp1=temp; else temp1=(p1-data)+(*ap-48)*bbit+temp;ap+; p1-data=temp1%10; /留當(dāng)前位 temp=temp1/10; /進(jìn)位以int的形式留下. p1=p;p=p-next; /被乘數(shù)到下一位 ap=a;bp+;q=q-next; /q進(jìn)下一位 p=head; output(p); /顯示 coutnext; delete head; head=p; int main() cout請輸入兩個(gè)數(shù)endl; char test1MAX,test2MAX; cin.getline(test1,MAX,n); cin.getline(test2,MAX,n); Mul(strrev(test1),strrev(test2); system(PAUSE); return 0; 上面大整數(shù)已經(jīng)寫了.你加幾個(gè)東西就行了.#include using namespace std; #define MAX 10000 struct Node int data; Node *next; ; void output(Node *head,int pos) if(!head-next&!head-data)return; output(head-next,pos-1); coutdata; if(!pos)coutdata=0,head-next=0; /頭 Node *p,*q=head,*p1; int temp=0,temp1,bbit; while(*bp) /若乘數(shù)不為空 ,繼續(xù). p=q-next;p1=q; bbit=*bp-48; /把當(dāng)前位轉(zhuǎn)為整型 while(*ap|temp) /若被乘數(shù)不空,繼續(xù) if(!p) /若要操作的結(jié)點(diǎn)為空,申請之 p=new Node; p-data=0; p-next=0; p1-next=p; if(*ap=0)temp1=temp; else temp1=(p1-data)+(*ap-48)*bbit+temp;ap+; p1-data=temp1%10; /留當(dāng)前位 temp=temp1/10; /進(jìn)位以int的形式留下. p1=p;p=p-next; /被乘數(shù)到下一位 ap=a;bp+;q=q-next; /q進(jìn)下一位 p=head; output(p,pos); /顯示 coutnext; delete head; head=p; int main() cout請輸入兩個(gè)數(shù)endl; char test1MAX,test2MAX,*p; int pos=0; cin.getline(test1,MAX,n); cin.getline(test2,MAX,n); if(p=strchr(test1,.) pos+=strlen(test1)-(p-test1)-1; do p+; *(p-1)=*p; while(*p); if(p=strchr(test2,.) pos+=strlen(test2)-(p-test2)-1; do p+; *(p-1)=*p; while(*p); Mul(strrev(test1),strrev(test2),pos); system(PAUSE); return 0; 4.寫一個(gè)病毒 cout一個(gè)病毒endl; (開玩笑的,沒搞過,_) 5.讓你在100000000個(gè)浮點(diǎn)數(shù)中找出最大的10000個(gè),要求時(shí)間復(fù)雜度優(yōu)。 /本算法使用快排,O(n*lg(n) /最低可以找到線性算法,使用預(yù)先區(qū)域統(tǒng)計(jì)劃分!類試于構(gòu)造Quad Trees! 寫起來代碼會(huì)長些! #include #include #define Max 100000000 int aMax+10; int cmp( const void *a, const void *b) int *x = ( int *) a; int *y = ( int *) b; return *x-*y; int main() int n=0; while (scanf(%d,&an)=1) n+; qsort(a,n,4,cmp); for ( int i=0;i1/4(左邊除以2是一架飛機(jī)飛行距離為1/2),但是有一點(diǎn)點(diǎn)剩余,所以想像為一個(gè)滑輪(中間一個(gè)飛機(jī)是個(gè)繩子,兩邊兩架飛機(jī)是個(gè)棒)的話,可以滑動(dòng)一點(diǎn)距離,就說加油地點(diǎn)可以在一定距離內(nèi)變動(dòng)(很容易算出來每架飛機(jī)的加油地點(diǎn)和加油數(shù)量,等等)數(shù)學(xué)篇11000!有幾位數(shù),為什么?2F(n) 1 n8 n12F(n) 2 n2F(n) 3 n 6F(n)4 n other使用+ * /和sign(n)函數(shù)組合出F(n)函數(shù)sign(n) 0 n 0sign(n)1 n03編一個(gè)程序求質(zhì)數(shù)的和,例如F(7) 1+3+5+7+11+13 +17 57。邏輯推理題1此題源于1981年柏林的德國邏輯思考學(xué)院,98%的測驗(yàn)者無法解答此題。有五間房屋排成一列;所有房屋的外表顏色都不一樣;所有的屋主來自不同的國家;所有的屋主都養(yǎng)不同的寵物;喝不同的飲料;抽不同的香煙。(1)英國人住在紅色房屋里;(2)瑞典人養(yǎng)了一只狗;(3)丹麥人喝茶;(4)綠色的房子在白色的房子的左邊;(5)綠色房屋的屋主喝咖啡;(6)吸Pall Mall香煙的屋主養(yǎng)鳥;(7)黃色屋主吸Dunhill香煙;(8)位于最中間的屋主喝牛奶;(9)挪威人住在第一間房屋里;(10)吸Blend香煙的人住在養(yǎng)貓人家的隔壁;(11)養(yǎng)馬的屋主在吸Dunhill香煙的人家的隔壁;(12)吸Blue Master香煙的屋主喝啤酒;(13)德國人吸Prince香煙;(14)挪威人住在藍(lán)色房子隔壁;(15)只喝開水的人住在吸Blend香煙的人的隔壁問:誰養(yǎng)魚? 提示:首先確定房子顏色:紅、黃、綠、白、藍(lán) Color 1 2 3 4 5國籍:英、瑞、丹、挪、德= Nationality 1 2 3 4 5飲料:茶、咖、奶、酒、水= Drink 1 2 3 4 5煙:PM、DH、BM、PR、混= Tobacco 1 2 3 4 5寵物:狗、鳥、馬、貓、魚= Pet 1 2 3 4 5然后有:(9)=N1=挪威(14)=C2=藍(lán)(4)=如C3=綠,C4=白,則(8)和(5)矛盾,所以C4=綠,C5=白剩下紅黃只能為C1,C3(1)=C3=紅,N3=英國,C1=黃(8)=D3=牛奶(5)=D4=咖啡(7)=T1=DH(11)=P2=馬那么:挪威 ? 英國 ? ?黃 藍(lán) 紅 綠 白? ? 牛奶 咖啡 ?DH ? ? ? ? 馬 ? ? ?(12)=啤酒只能為D2或D5,BM只能為T2或T5=

溫馨提示

  • 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)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論