上海貝爾面試習題_第1頁
上海貝爾面試習題_第2頁
上海貝爾面試習題_第3頁
上海貝爾面試習題_第4頁
上海貝爾面試習題_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE131#include“filename.h”和#include<filename.h>的區(qū)別

答:對于#include<filename.h>編譯器從標準庫開始搜索filename.h

對于#include“filename.h”編譯器從用戶工作路徑開始搜索filename.h2

頭文件的作用是什么?答:一、通過頭文件來調用庫功能。在很多場合,源代碼不便(或不準)向用戶公布,只要向用戶提供頭文件和二進制的庫即可。用戶只需要按照頭文件中的接口聲明來調用庫功能,而不必關心接口怎么實現(xiàn)的。編譯器會從庫中提取相應的代碼。二、頭文件能加強類型安全檢查。如果某個接口被實現(xiàn)或被使用時,其方式與頭文件中的聲明不一致,編譯器就會指出錯誤,這一簡單的規(guī)則能大大減輕程序員調試、改錯的負擔。3

C++函數(shù)中值的傳遞方式有哪幾種?答:C++函數(shù)的三種傳遞方式為:值傳遞、指針傳遞和引用傳遞。4

內存的分配方式的分配方式有幾種?答:一、從靜態(tài)存儲區(qū)域分配。內存在程序編譯的時候就已經(jīng)分配好,這塊內存在程序的整個運行期間都存在。例如全局變量。二、在棧上創(chuàng)建。在執(zhí)行函數(shù)時,函數(shù)內局部變量的存儲單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結束時這些存儲單元自動被釋放。棧內存分配運算內置于處理器的指令集中,效率很高,但是分配的內存容量有限。三、從堆上分配,亦稱動態(tài)內存分配。程序在運行的時候用malloc或new申請任意多少的內存,程序員自己負責在何時用free或delete釋放內存。動態(tài)內存的生存期由我們決定,使用非常靈活,但問題也最多。5

實現(xiàn)雙向鏈表刪除一個節(jié)點P,在節(jié)點P后插入一個節(jié)點,寫出這兩個函數(shù);答:雙向鏈表刪除一個節(jié)點Ptemplate<classtype>voidlist<type>::delnode(intp){intk=1;listnode<type>*ptr,*t;ptr=first;while(ptr->next!=NULL&&k!=p){

ptr=ptr->next;

k++;}

t=ptr->next;cout<<"你已經(jīng)將數(shù)據(jù)項"<<t->data<<"刪除"<<endl;ptr->next=ptr->next->next;length--;deletet;}在節(jié)點P后插入一個節(jié)點:template<classtype>boollist<type>::insert(typet,intp){listnode<type>*ptr;ptr=first;intk=1;while(ptr!=NULL&&k<p){

ptr=ptr->next;

k++;}if(ptr==NULL&&k!=p)

returnfalse;else{

listnode<type>*tp;

tp=newlistnode<type>;

tp->data=t;

tp->next=ptr->next;

ptr->next=tp;

length++;

returntrue;}}6

寫一個函數(shù),將其中的\t都轉換成4個空格。

voidchange(char*pstr)

{

while(*pstr++!='\0')

{

if(*pstr=='\t')

}

}7

Windows程序的入口是哪里?寫出Windows消息機制的流程.8

如何定義和實現(xiàn)一個類的成員函數(shù)為回調函數(shù)?9

C++里面是不是所有的動作都是main()引起的?如果不是,請舉例.答:在運行c++程序時,通常從main()函數(shù)開始執(zhí)行。因此如果沒有main(),程序將不完整,編譯器將指出未定義main()函數(shù)。

例外情況:如,在windows編程中,可以編寫一個動態(tài)連接庫(dll)模塊,這是其他windows程序可以使用的代碼。由于

DLL模塊不是獨立的程序,因此不需要main().用于專用環(huán)境的程序--如機器人中的控制器芯片--可能不需要main().但常規(guī)的獨立程序都需要main().10C++里面如何聲明constvoidf(void)函數(shù)為C程序中的庫函數(shù)?11下列哪兩個是等同的intb;Aconstint*a=&b;Bconst*inta=&b;Cconstint*consta=&b;Dintconst*consta=&b;

12內聯(lián)函數(shù)在編譯時是否做參數(shù)類型檢查13三個float:a,b,c問值(a+b)+c==(b+a)+c(a+b)+c==(a+c)+b14把一個鏈表反向填空

voidreverse(test*head)

{

test*pe=head;

test*ps=head->next;

while(ps)

{

pe->next=ps->next;

ps->next=head;

head=ps;

ps=pe->next;

}

}

15設計一個重采樣系統(tǒng),說明如何anti-alias16某個程序在一個嵌入式系統(tǒng)(200M的CPU,50M的SDRAM)中已經(jīng)最化了,換到另一個系統(tǒng)(300M的CPU,50M的SDRAM)中運行,還需要優(yōu)化嗎17.下面哪種排序法對12354最快aquicksortb.bublesortc.mergesort18.哪種結構,平均來講,獲取一個值最快a.binarytreeb.hashtablec.stack19請問C++的類和C里面的struct有什么區(qū)別答:c++的類的成員默認情況下是私有的,c的struct的成員默認情況下是公共的.20請講一講析構函數(shù)和虛函數(shù)的用法和作用?答:析構函數(shù)的作用是當對象生命期結束時釋放對象所占用的資源。析構函數(shù)用法:析構函數(shù)是特殊的類成員函數(shù)它的名字和類名相同,沒有返回值,沒有參數(shù)不能隨意調用也沒有重載。只是在類對象生命期結束時有系統(tǒng)自動調用。

虛函數(shù)用在繼承中,當在派生類中需要重新定義基類的函數(shù)時需要在基類中將該函數(shù)聲明為虛函數(shù),作用為使程序支持動態(tài)聯(lián)遍。21全局變量和局部變量有什么區(qū)別是怎么實現(xiàn)的操作系統(tǒng)和編譯器是怎么知道的答:一些變量整個程序中都是可見的,它們稱為全局變量,一些變量在函數(shù)內部定義且只在函數(shù)中可知,則稱為局部變量。全局變量由編譯器建立且存放在內存的全局數(shù)據(jù)區(qū),局部變量存放在棧區(qū)22一些寄存器的題目,主要是尋址和內存管理等一些知識。238086是多少尉的系統(tǒng)在數(shù)據(jù)總線上是怎么實現(xiàn)的24多態(tài)。overload和override的區(qū)別。答:重載在相同范圍(同一個類中),函數(shù)名字相同,參數(shù)不同,virtual關鍵字可有可無。覆蓋是指派生類函數(shù)覆蓋基類函數(shù),不同的范圍,函數(shù)名字相同,參數(shù)相同,基類函數(shù)必須有virtual關鍵字。25.完成下列程序**.*.*..*..*..*...*...*...*...**************************#include<iostream>usingnamespacestd;constintn=8;main(){

inti;

intj;

intk;

for(i=n;i>=1;i--)

{

for(j=0;j<n-i+1;j++)

{

cout<<"*";

for(k=1;k<n-i+1;k++)

{

cout<<".";

}

}

cout<<endl;

}

system("pause");}26完成程序,實現(xiàn)對數(shù)組的降序排序#include<iostream>usingnamespacestd;voidsort(int*arr,intn);intmain(){

intarray[]={45,56,76,234,1,34,23,2,3};

sort(array,9);

for(inti=0;i<=8;i++)//曾經(jīng)在這兒出界

cout<<array[i]<<"";

cout<<endl;

system("pause");}voidsort(int*arr,intn){

inttemp;

for(inti=1;i<9;i++)

{

for(intk=0;k<9-i;k++)//曾經(jīng)在這兒出界

{

if(arr[k]<arr[k+1])

{

temp=arr[k];

arr[k]=arr[k+1];

arr[k+1]=temp;

}

}

}}

27費波那其數(shù)列,1,1,2,3,5……編寫程序求第十項??梢杂眠f歸,也可以用其他方法,但要說明你選擇的理由。非遞歸#include<iostream>usingnamespacestd;intPheponatch(intn);main(){

intPh=Pheponatch(10);

cout<<Ph<<endl;

system("pause");

}intPheponatch(intn){

intelem;

intn1=1;

intn2=1;

if(n==1||n==2)

return1;

else

{

for(inti=3;i<=n;i++)

{

elem=n1+n2;

n1=n2;

n2=elem;

}

returnelem;

}}

遞歸#include<iostream>usingnamespacestd;intPheponatch(intn);main(){

intn;

cin>>n;

intph=Pheponatch(n);

cout<<ph<<endl;

system("pause");

}intPheponatch(intn){

if(n<=0)

exit(-1);

else

if(n==1||n==2)

return1;

else

returnPheponatch(n-1)+Pheponatch(n-2);}

28下列程序運行時會崩潰,請找出錯誤并改正,并且說明原因。#include<stdio.h>#include<malloc.h>

typedefstruct{

TNode*left;

TNode*right;

intvalue;}TNode;

TNode*root=NULL;

voidappend(intN);

intmain(){

append(63);

append(45);

append(32);

append(77);

append(96);

append(21);

append(17);//Again,數(shù)字任意給出}

voidappend(intN){TNode*NewNode=(TNode*)malloc(sizeof(TNode));NewNode->value=N;

if(root==NULL){

root=NewNode;

return;}else{

TNode*temp;

temp=root;

while((N>=temp.value&&temp.left!=NULL)||(N<temp.value&&temp.right!=NULL))

{

while(N>=temp.value&&temp.left!=NULL)

temp=temp.left;

while(N<temp.value&&temp.right!=NULL)

temp=temp.right;

}

if(N>=temp.value)

temp.left=NewNode;

else

temp.right=NewNode;

return;

}}

29.AclassBnetworkontheinternethasasubnetmaskof,whatisthemaximumnumberofhostspersubnet

.a.240

b.255

c.4094

d.6553430.Whatisthedifference:betweeno(logn)ando(logn^2),wherebothlogarithemshavebase.a.o(logn^2)isbigger

b.o(logn)isbigger

c.nodifference31.Foraclasswhatwouldhappenifwecallaclass’sconstructorfromwiththesameclass’sconstructor

.pilationerror

b.linkingerrorc.stackoverflow

d.noneoftheabove32.“new”inc++isa:

.a.libraryfunctionlikemallocincb.keyword

c.operatord.noneoftheabove33.Whichofthefollowinginformationisnotcontainedinaninode

.a.fileowner

b.filesizec.filename

d.diskaddress34.What’sthenumberofcomparisonsintheworstcasetomergetwosortedlistscontainingnelementseach

.a.2n

b.2n-1

c.2n+1

d.2n-235.TimecomplexityofnalgorithmT(n),wherenistheinputsize,isT(n)=T(n-1)+1/nifn>1otherwise1theorderofthisalgorithmis

.a.log(n)

b.n

c.n^2

d.n^n37.設計函數(shù)intatoi(char*s)。38.inti=(j=4,k=8,l=16,m=32);printf(“%d”,i);輸出是多少39.解釋局部變量、全局變量和靜態(tài)變量的含義。40.解釋堆和棧的區(qū)別。棧區(qū)(stack)—

由編譯器自動分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結構中的棧。堆:一般由程序員分配釋放,若程序員不釋放,程序結束時可能由OS回收。注意它與數(shù)據(jù)結構中的堆是兩回事,分配方式倒是類似于鏈表.41.論述含參數(shù)的宏與函數(shù)的優(yōu)缺點。42.以下三條輸出語句分別輸出什么[C易]charstr1[]

="abc";charstr2[]

="abc";constcharstr3[]="abc";constcharstr4[]="abc";constchar*str5

="abc";constchar*str6

="abc";cout<<boolalpha<<(str1==str2)<<endl;//輸出什么cout<<boolalpha<<(str3==str4)<<endl;//輸出什么cout<<boolalpha<<(str5==str6)<<endl;//輸出什么43.非C++內建型別A和B,在哪幾種情況下B能隱式轉化為A[C++中等]答:a.classB:publicA{……}//B公有繼承自A,可以是間接繼承的b.classB{operatorA();}//B實現(xiàn)了隱式轉化為A的轉化c.classA{A(constB&);}//A實現(xiàn)了non-explicit的參數(shù)為B(可以有其他帶默認值的參數(shù))構造函數(shù)d.A&operator=(constA&);//賦值操作,雖不是正宗的隱式類型轉換,但也可以勉強算一個44.以下代碼中的兩個sizeof用法有問題嗎[C易]voidUpperCase(charstr[])//將str中的小寫字母轉換成大寫字母{

for(size_ti=0;i<sizeof(str)/sizeof(str[0]);++i)

if('a'<=str[i]&&str[i]<='z')

str[i]-=('a'-'A');}charstr[]="aBcDe";cout<<"str字符長度為:"<<sizeof(str)/sizeof(str[0])<<endl;UpperCase(str);cout<<str<<endl;45.以下代碼有什么問題[C難]voidchar2Hex(charc)//將字符以16進制表示{

charch=c/0x10+'0';if(ch>'9')ch+=('A'-'9'-1);

charcl=c%0x10+'0';if(cl>'9')cl+=('A'-'9'-1);

cout<<ch<<cl<<'';}charstr[]="Ilove中國";for(size_ti=0;i<strlen(str);++i)

char2Hex(str[i]);cout<<endl;46.以下代碼有什么問題[C++易]structTest{

Test(int){}

Test(){}

voidfun(){}};voidmain(void){

Testa(1);

a.fun();

Testb();

b.fun();}***

Testb();//定義了一個函數(shù)47.以下代碼有什么問題[C++易]cout<<(true?1:"1")<<endl;8.以下代碼能夠編譯通過嗎,為什么[C++易]unsignedintconstsize1=2;charstr1[size1];unsignedinttemp=0;cin>>temp;unsignedintconstsize2=temp;charstr2[size2];48.以下代碼中的輸出語句輸出0嗎,為什么[C++易]structCLS{

intm_i;

CLS(inti):m_i(i){}

CLS()

{

CLS(0);

}};CLSobj;cout<<obj.m_i<<endl;49.C++中的空類,默認產(chǎn)生哪些類成員函數(shù)[C++易]答:classEmpty{public:

Empty();

//缺省構造函數(shù)

Empty(constEmpty&);

//拷貝構造函數(shù)

~Empty();

//析構函數(shù)

Empty&operator=(constEmpty&);//賦值運算符

Empty*operator&();

//取址運算符

constEmpty*operator&()const;

//取址運算符const};50.以下兩條輸出語句分別輸出什么[C++難]

floata=1.0f;

cout<<(int)a<<endl;

cout<<(int&)a<<endl;

cout<<boolalpha<<((int)a==(int&)a)<<endl;//輸出什么

floatb=0.0f;

cout<<(int)b<<endl;

cout<<(int&)b<<endl;

cout<<boolalpha<<((int)b==(int&)b)<<endl;//輸出什么

51.以下反向遍歷array數(shù)組的方法有什么錯誤[STL易]vectorarray;array.push_back(1);array.push_back(2);array.push_back(3);for(vector::size_typei=array.size()-1;i>=0;--i)//反向遍歷array數(shù)組{

cout<<array[i]<<endl;}52.以下代碼有什么問題[STL易]typedefvectorIntArray;IntArrayarray;array.push_back(1);array.push_back(2);array.push_back(2);array.push_back(3);//刪除array數(shù)組中所有的2for(IntArray::iteratoritor=array.begin();itor!=array.end();++itor){

if(2==*itor)array.erase(itor);}53.寫一個函數(shù),完成內存之間的拷貝。[考慮問題是否全面]

答:

void*mymemcpy(void*dest,constvoid*src,size_tcount)

{

char*pdest=static_cast<char*>(dest);

constchar*psrc=static_cast<constchar*>(src);

if(pdest>psrc&&pdest<psrc+cout)能考慮到這種情況就行了

{

for(size_ti=count-1;i!=-1;--i)

pdest[i]=psrc[i];

}

else

{

for(size_ti=0;i<count;++i)

pdest[i]=psrc[i];

}

returndest;

}

intmain(void)

{

charstr[]="09";

mymemcpy(str+1,str+0,9);

cout<<str<<endl;

system("Pause");

return0;}54線程與進程的區(qū)別55:請你分別劃劃OSI的七層網(wǎng)絡結構圖,和TCP/IP的五層結構圖56:請你詳細的解釋一下IP協(xié)議的定義,在哪個層上面,主要有什么作用TCP與UDP呢

IP協(xié)議是網(wǎng)絡層的協(xié)議,它實現(xiàn)了Internet中自動路由的功能,即尋徑的功能,

TCP協(xié)議是一個傳輸性的協(xié)議它向下屏蔽了IP協(xié)議不可靠傳輸?shù)奶匦?,向上提供一個可靠的點到點的傳輸,

UDP提供的是一種無連接的服務,主要考慮到很多應用不需要可靠的連接,但需要快速的傳輸57:請問交換機和路由器分別的實現(xiàn)原理是什么分別在哪個層次上面實現(xiàn)的

交換機用在局域網(wǎng)中,交換機通過紀錄局域網(wǎng)內各節(jié)點機器的MAC地質(物理地址)就可以實現(xiàn)傳遞報文,無需看報文中的IP地質。路由器識別不同網(wǎng)絡的方法是通過識別不同網(wǎng)絡的網(wǎng)絡ID號(IP地址的高端部分)進行的,所以為了保證路由成功,每個網(wǎng)絡都必須有一個唯一的網(wǎng)絡編號。路由器通過察看報文中IP地址,來決定路徑,向那個子網(wǎng)(下一跳)路由,也就是說交換機工作在數(shù)據(jù)鏈路層看MAC地址,路由器工作在網(wǎng)際層看IP地質但是由于現(xiàn)在網(wǎng)絡設備的發(fā)展,很多設備既有交換機的功能有由路由器的功能(交換試路由器)使得兩者界限越來越模糊。59:請講一講析構函數(shù)和虛函數(shù)的用法和作用60:全局變量和局部變量有什么區(qū)別實怎么實現(xiàn)的操作系統(tǒng)和編譯器是怎么知道的

全局變量是整個程序都可訪問的變量,誰都可以訪問,生存期在整個程序從運行到結束(在程序結束時所占內存釋放),而局部變量存在于模塊(子程序,函數(shù))中,只有所在模塊可以訪問,其他模塊不可直接訪問,模塊結束(函數(shù)調用完畢),局部變量消失,所占據(jù)的內存釋放。全局變量分配在全局數(shù)據(jù)段并且在程序開始運行的時候被加載.局部變量則分配在堆棧里面。61:一些寄存器的題目,主要是尋址和內存管理等一些知識。

2、交換機用在局域網(wǎng)中,交換機通過紀錄局域網(wǎng)內各節(jié)點機器的MAC地質(物理地址)就可以實現(xiàn)傳遞報文,無需看報文中的IP地質。路由器識別不同網(wǎng)絡的方法是通過識別不同網(wǎng)絡的網(wǎng)絡ID號(IP地址的高端部分)進行的,所以為了保證路由成功,每個網(wǎng)絡都必須有一個唯一的網(wǎng)絡編號。路由器通過察看報文中IP地址,來決定路徑,向那個子網(wǎng)(下一跳)路由,也就是說交換機工作在數(shù)據(jù)鏈路層看MAC地址,路由器工作在網(wǎng)際層看IP地質但是由于現(xiàn)在網(wǎng)絡設備的發(fā)展,很多設備既有交換機的功能有由路由器的功能(交換試路由器)使得兩者界限越來越模糊。3、IP協(xié)議是網(wǎng)絡層的協(xié)議,它實現(xiàn)了Internet中自動路由的功能,即尋徑的功能,TCP協(xié)議是一個傳輸性的協(xié)議它向下屏蔽了IP協(xié)議不可靠傳輸?shù)奶匦裕蛏咸峁┮粋€可靠的點到點的傳輸,UDP提供的是一種無連接的服務,主要考慮到很多應用不需要可靠的連接,但需要快速的傳輸62:8086是多少位的系統(tǒng)在數(shù)據(jù)總線上是怎么實現(xiàn)的63.怎樣用最快的方法判斷鏈表是否有環(huán)64.c++中引用和指針有什么不同指針加上什么限制等于引用答:1引用被創(chuàng)建的時候必須被初始化,而指針不是必需的。2引用在創(chuàng)建后就不能改變引用的關系,而指針在初始化后可以隨時指向其它的變量或對象。3沒有NULL引用,引用必須與合法的存儲單元關聯(lián),而指針可以是NULL。65.做的項目,遇到的困難,怎樣解決

69.操作符重載classCMyObject:pulicCObject{Public:CMyObject();CMyObject&operator=(constCMyObject&my);private:CStringstrName;intnId:};請重載賦值操作符70.鏈表StructstructList{intvalue;structList*pHead;}StructLinkedList*pMyList;請編寫刪除鏈表的頭、尾和第n個節(jié)點的程序71.用SocketAPI制作一個聊天程序,通訊協(xié)議使用tcp/ip。要求有簡單界面即可,支持多人聊天。73對于C++中類(class)與結構(struct)的描述正確的為:

A,類中的成員默認是private的,當是可以聲明為public,private和protected,結構中定義的成員默認的都是public;

B,結構中不允許定義成員函數(shù),當是類中可以定義成員函數(shù);

C,結構實例使用malloc()動態(tài)創(chuàng)建,類對象使用new操作符動態(tài)分配內存;

D,結構和類對象都必須使用new創(chuàng)建;

E,結構中不可以定義虛函數(shù),當是類中可以定義虛函數(shù).

F,結構不可以存在繼承關系,當是類可以存在繼承關系.答:A,D,F74,兩個互相獨立的類:ClassA和ClassB,都各自定義了非靜態(tài)的公有成員函數(shù)PublicFunc()和非靜態(tài)的私有成員函數(shù)Priva

溫馨提示

  • 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

提交評論