久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式招聘 > 嵌入式面試題 > 各大軟件公司(si)c++面試題集合,找工(gong)作人的(de)福利

各大軟件公司c++面試題(ti)集合(he),找工作人的福(fu)利 時間:2018-08-02      來源(yuan):未知

對(dui)于(yu)很多(duo)(duo)找工作的(de)(de)(de)(de)人(ren)(ren)來說,面試(shi)是找工作的(de)(de)(de)(de)最(zui)重(zhong)要的(de)(de)(de)(de)一個環節,很多(duo)(duo)人(ren)(ren)都(dou)(dou)毀在了面試(shi)題上,今天在這里(li)我(wo)總(zong)結了個大公司的(de)(de)(de)(de)面試(shi)題,都(dou)(dou)是我(wo)去面試(shi)時做(zuo)的(de)(de)(de)(de)和我(wo)朋(peng)友做(zuo)的(de)(de)(de)(de),我(wo)都(dou)(dou)搜集整(zheng)理出來,希望可(ke)以幫到你。

1. 引用與指針(zhen)有什么(me)區(qu)別(bie)?

1) 引用必須(xu)被初始(shi)化,指針不必。

2) 引用初(chu)始化(hua)以后不能(neng)被改(gai)變,指針可以改(gai)變所指的(de)對(dui)象。

2) 不存在(zai)指(zhi)向(xiang)空值(zhi)(zhi)的(de)引(yin)用(yong),但是存在(zai)指(zhi)向(xiang)空值(zhi)(zhi)的(de)指(zhi)針(zhen)。

2. 描述實(shi)時系統的(de)基本特(te)性

在特定時(shi)間(jian)內完成特定的任務,實時(shi)性與(yu)可靠性

3. 全局變(bian)量和(he)局部(bu)變(bian)量在內存(cun)中是否(fou)有(you)區(qu)(qu)別?如(ru)果有(you),是什么(me)區(qu)(qu)別?

全局變(bian)(bian)量(liang)儲(chu)存在靜態(tai)數(shu)據庫,局部(bu)變(bian)(bian)量(liang)在堆棧

4. 什么是平衡二叉樹?

左右子樹(shu)都是平衡二叉樹(shu) 且左右子樹(shu)的(de)深度(du)差值的(de)絕對值不大于(yu)1

5. 堆(dui)棧(zhan)溢出一般是由(you)什么原因導致(zhi)的?

沒有回收(shou)垃(la)圾資源。

6. 什么函數不能聲明為虛函數

構(gou)造(zao)函(han)數(shu),友元(yuan)函(han)數(shu)

7. 冒泡(pao)排序算(suan)法的時間復雜(za)度是什么?

O(n^2)

8. 寫出(chu)float x 與“零值(zhi)”比較的if語(yu)句。

if(x〈0.000001&&x〉-0.000001)

9. Internet采(cai)用哪種(zhong)網絡協議?該協議的主要層次結構?

tcp/ip 應用(yong)層(ceng)(ceng)/傳輸(shu)層(ceng)(ceng)/網絡(luo)層(ceng)(ceng)/數據鏈路層(ceng)(ceng)/物理(li)層(ceng)(ceng)

10. Internet物理地址和(he)IP地址轉(zhuan)換采用(yong)什么協議?

ARP (Address Resolution Protocol)(地(di)址解析(xi)協議)

11.IP地址的編(bian)碼分(fen)為哪倆部分(fen)?

IP地址由兩部(bu)分組(zu)成(cheng),網(wang)絡(luo)號和主機號。不過是要和“子網(wang)掩碼”按位(wei)與上之(zhi)后才能區(qu)分哪些(xie)是網(wang)絡(luo)位(wei)哪些(xie)是主機位(wei)。

????月色夫(fu)環(huan)寫(xie)一下2.用戶輸(shu)(shu)(shu)入M,N值,從1至(zhi)N開始順序循(xun)環(huan)數(shu)數(shu),每數(shu)到M輸(shu)(shu)(shu)出(chu)該數(shu)值,直至(zhi)全部(bu)輸(shu)(shu)(shu)出(chu)。寫(xie)出(chu)C程序。

循(xun)環鏈表(biao),用取余操作做(zuo)

12.不(bu)能做switch()的參數類型是:

switch的參數不能為實型。

===========================================================================

華為

1、局部(bu)變量(liang)能否和全局變量(liang)重名?

答:能(neng),局(ju)部會(hui)屏蔽全局(ju)。要(yao)用全局(ju)變(bian)量(liang),需要(yao)使用"::"

局(ju)(ju)(ju)(ju)部變(bian)(bian)量(liang)可以與全局(ju)(ju)(ju)(ju)變(bian)(bian)量(liang)同(tong)(tong)名,在函數內(nei)引用(yong)這個(ge)變(bian)(bian)量(liang)時(shi),會用(yong)到(dao)同(tong)(tong)名的(de)(de)局(ju)(ju)(ju)(ju)部變(bian)(bian)量(liang),而不會用(yong)到(dao)全局(ju)(ju)(ju)(ju)變(bian)(bian)量(liang)。對于有些編(bian)譯器而言,在同(tong)(tong)一個(ge)函數內(nei)可以定義多個(ge)同(tong)(tong)名的(de)(de)局(ju)(ju)(ju)(ju)部變(bian)(bian)量(liang),比(bi)如(ru)在兩(liang)個(ge)循(xun)環體內(nei)都定義一個(ge)同(tong)(tong)名的(de)(de)局(ju)(ju)(ju)(ju)部變(bian)(bian)量(liang),而那(nei)個(ge)局(ju)(ju)(ju)(ju)部變(bian)(bian)量(liang)的(de)(de)作用(yong)域就在那(nei)個(ge)循(xun)環體內(nei)

?2、如何(he)引用一個已(yi)經定義過的全(quan)局(ju)變量?

答:extern可以(yi)(yi)用(yong)引用(yong)頭文(wen)件(jian)的(de)(de)方(fang)式,也(ye)可以(yi)(yi)用(yong)extern關鍵字,如(ru)果用(yong)引用(yong)頭文(wen)件(jian)方(fang)式來(lai)引用(yong)某個(ge)在(zai)頭文(wen)件(jian)中聲(sheng)明的(de)(de)全局變理,假定(ding)你將(jiang)那個(ge)變寫錯了,那么(me)在(zai)編(bian)譯(yi)期(qi)間(jian)會(hui)報(bao)錯,如(ru)果你用(yong)extern方(fang)式引用(yong)時,假定(ding)你犯了同樣(yang)的(de)(de)錯誤,那么(me)在(zai)編(bian)譯(yi)期(qi)間(jian)不會(hui)報(bao)錯,而在(zai)連接期(qi)間(jian)報(bao)錯

3、全局變量可(ke)不可(ke)以(yi)定義在(zai)可(ke)被多個.C文件包含的頭文件中?為什(shen)么(me)?

 答:可(ke)以,在不(bu)同的(de)C文(wen)件中以static形式(shi)來聲明同名全局(ju)變(bian)量。

可以在不同的(de)C文件(jian)中聲明同名的(de)全(quan)局變(bian)量(liang),前提是其中只能有一個C文件(jian)中對此變(bian)量(liang)賦(fu)初值,此時連接不會出錯(cuo)

4、語句for( ;1 ;)有什(shen)么問(wen)題?它(ta)是什(shen)么意思?

答:和while(1)相同(tong)。

5、do……while和while……do有(you)什(shen)么區別?

答(da):前一(yi)個循(xun)環一(yi)遍再判斷(duan),后(hou)一(yi)個判斷(duan)以后(hou)再循(xun)環

6、請寫出(chu)下列代碼的輸出(chu)內容

#i nclude

main()

{

int a,b,c,d;

a=10;

b=a++;

c=++a;

d=10*a++;

printf("b,c,d:%d,%d,%d",b,c,d);

return 0;

}

答:10,12,120

??1、static全(quan)局變(bian)(bian)量(liang)與普(pu)通的(de)全(quan)局變(bian)(bian)量(liang)有(you)什(shen)么區別?static局部(bu)(bu)變(bian)(bian)量(liang)和普(pu)通局部(bu)(bu)變(bian)(bian)量(liang)有(you)什(shen)么區別?static函數與普(pu)通函數有(you)什(shen)么區別?

全(quan)(quan)局(ju)(ju)(ju)變(bian)(bian)量(liang)(liang)(liang)(外部(bu)變(bian)(bian)量(liang)(liang)(liang))的(de)(de)(de)(de)(de)說(shuo)明之(zhi)前再冠以static 就構成(cheng)了靜(jing)態(tai)(tai)的(de)(de)(de)(de)(de)全(quan)(quan)局(ju)(ju)(ju)變(bian)(bian)量(liang)(liang)(liang)。全(quan)(quan)局(ju)(ju)(ju)變(bian)(bian)量(liang)(liang)(liang)本身就是靜(jing)態(tai)(tai)存(cun)儲(chu)(chu)方式(shi)(shi), 靜(jing)態(tai)(tai)全(quan)(quan)局(ju)(ju)(ju)變(bian)(bian)量(liang)(liang)(liang)當然也是靜(jing)態(tai)(tai)存(cun)儲(chu)(chu)方式(shi)(shi)。 這(zhe)兩者在(zai)存(cun)儲(chu)(chu)方式(shi)(shi)上并無(wu)不(bu)同(tong)。這(zhe)兩者的(de)(de)(de)(de)(de)區別雖(sui)在(zai)于非靜(jing)態(tai)(tai)全(quan)(quan)局(ju)(ju)(ju)變(bian)(bian)量(liang)(liang)(liang)的(de)(de)(de)(de)(de)作(zuo)用域是整個源程序, 當一個源程序由多個源文(wen)件(jian)組成(cheng)時,非靜(jing)態(tai)(tai)的(de)(de)(de)(de)(de)全(quan)(quan)局(ju)(ju)(ju)變(bian)(bian)量(liang)(liang)(liang)在(zai)各(ge)個源文(wen)件(jian)中(zhong)都是有效的(de)(de)(de)(de)(de)。 而靜(jing)態(tai)(tai)全(quan)(quan)局(ju)(ju)(ju)變(bian)(bian)量(liang)(liang)(liang)則限制了其作(zuo)用域, 即只(zhi)在(zai)定義該(gai)變(bian)(bian)量(liang)(liang)(liang)的(de)(de)(de)(de)(de)源文(wen)件(jian)內(nei)有效, 在(zai)同(tong)一源程序的(de)(de)(de)(de)(de)其它源文(wen)件(jian)中(zhong)不(bu)能(neng)使用它。由于靜(jing)態(tai)(tai)全(quan)(quan)局(ju)(ju)(ju)變(bian)(bian)量(liang)(liang)(liang)的(de)(de)(de)(de)(de)作(zuo)用域局(ju)(ju)(ju)限于一個源文(wen)件(jian)內(nei),只(zhi)能(neng)為該(gai)源文(wen)件(jian)內(nei)的(de)(de)(de)(de)(de)函數公用, 因(yin)此可以避免在(zai)其它源文(wen)件(jian)中(zhong)引起(qi)錯誤。

從以上分(fen)析(xi)可以看出(chu), 把局部變(bian)量(liang)(liang)改(gai)變(bian)為靜態變(bian)量(liang)(liang)后(hou)是改(gai)變(bian)了它的存儲方式即改(gai)變(bian)了它的生存期。把全局變(bian)量(liang)(liang)改(gai)變(bian)為靜態變(bian)量(liang)(liang)后(hou)是改(gai)變(bian)了它的作用(yong)(yong)域, 限制了它的使用(yong)(yong)范圍。

static函(han)數(shu)(shu)與(yu)普通函(han)數(shu)(shu)作用域不同。僅在(zai)(zai)(zai)本文(wen)(wen)件(jian)。只在(zai)(zai)(zai)當前源文(wen)(wen)件(jian)中(zhong)使用的(de)函(han)數(shu)(shu)應該(gai)(gai)說明(ming)為(wei)內部函(han)數(shu)(shu)(static),內部函(han)數(shu)(shu)應該(gai)(gai)在(zai)(zai)(zai)當前源文(wen)(wen)件(jian)中(zhong)說明(ming)和定義。對于可在(zai)(zai)(zai)當前源文(wen)(wen)件(jian)以外使用的(de)函(han)數(shu)(shu),應該(gai)(gai)在(zai)(zai)(zai)一(yi)個(ge)(ge)頭(tou)文(wen)(wen)件(jian)中(zhong)說明(ming),要使用這些(xie)函(han)數(shu)(shu)的(de)源文(wen)(wen)件(jian)要包含(han)這個(ge)(ge)頭(tou)文(wen)(wen)件(jian)

?static全局(ju)變(bian)量與普通的全局(ju)變(bian)量有(you)什(shen)么區別:static全局(ju)變(bian)量只(zhi)初使化一次(ci),防止(zhi)在其(qi)他文件單元(yuan)中被引用;

static局部(bu)(bu)變量和(he)普通局部(bu)(bu)變量有什么區別:static局部(bu)(bu)變量只被初始化一(yi)次,下(xia)一(yi)次依據上(shang)一(yi)次結果(guo)值;

static函(han)數(shu)與普通函(han)數(shu)有什(shen)么區(qu)別:static函(han)數(shu)在內(nei)存(cun)中(zhong)只有一份(fen),普通函(han)數(shu)在每個被(bei)調(diao)用中(zhong)維(wei)持一份(fen)拷貝

2、程(cheng)序的局部變(bian)量存在(zai)于(堆棧)中(zhong),全局變(bian)量存在(zai)于(靜(jing)態區 )中(zhong),動態申請數據存在(zai)于( 堆)中(zhong)。

3、設有以下說(shuo)明和定(ding)義:

typedef union {long i; int k[5]; char c;} DATE;

struct data { int cat; DATE cow; double dog;} too;

DATE max;

則語句 printf("%d",sizeof(struct date)+sizeof(max));的(de)執行結果是:___52____

答:DATE是一個(ge)union, 變量公(gong)用空間. 里面最大的(de)變量類型是int[5], 占用20個(ge)字節. 所以它的(de)大小(xiao)是20

data是一個struct, 每個變量分開(kai)占用空(kong)間. 依次為(wei)int4 + DATE20 + double8 = 32.

所以結果(guo)是(shi) 20 + 32 = 52.

當然...在某些(xie)16位編輯器下, int可(ke)能是2字(zi)節,那么結果(guo)是 int2 + DATE10 + double8 = 20

4、隊(dui)列和(he)棧有什么區別?

隊列(lie)先進先出,棧后進先出

5、寫出下(xia)列代碼(ma)的(de)輸出內容

#i nclude

int inc(int a)

{

return(++a);

}

int multi(int*a,int*b,int*c)

{

return(*c=*a**b);

}

typedef int(FUNC1)(int in);

typedef int(FUNC2) (int*,int*,int*);

void show(FUNC2 fun,int arg1, int*arg2)

{

INCp=&inc;

int temp =p(arg1);

fun(&temp,&arg1, arg2);

printf("%d\n",*arg2);

}

main()

{

int a;

show(multi,10,&a);

return 0;

}

答:110

7、請找出下面(mian)代碼中的所以錯誤

說明:以下代碼是把(ba)一個字符串倒(dao)序,如“abcd”倒(dao)序后變為(wei)“dcba”

1、#i nclude"string.h"

2、main()

3、{

4、 char*src="hello,world";

5、 char* dest=NULL;

6、 int len=strlen(src);

7、 dest=(char*)malloc(len);

8、 char* d=dest;

9、 char* s=src[len];

10、 while(len--!=0)

11、 d++=s--;

12、 printf("%s",dest);

13、 return 0;

14、}

答:

方法1:

int main(){

char* src = "hello,world";

int len = strlen(src);

char* dest = (char*)malloc(len+1);//要為\0分配一(yi)個空間

char* d = dest;

char* s = &src[len-1];//指向最后一個字(zi)符

while( len-- != 0 )

*d++=*s--;

*d = 0;//尾部(bu)要加\0

printf("%s\n",dest);

free(dest);// 使用(yong)完,應(ying)當釋放空間,以免(mian)造成內存匯泄(xie)露

return 0;

}

方法2:

#i nclude

#i nclude

main()

{

char str[]="hello,world";

int len=strlen(str);

char t;

for(int i=0; i

{

t=str[i];

str[i]=str[len-i-1];

str[len-i-1]=t;

}

printf("%s",str);

return 0;

}

1.-1,2,7,28,,126請問28和126中(zhong)間那個數(shu)是(shi)什么?為什么?

第一題(ti)的答案應該是4^3-1=63

規(gui)律是(shi)n^3-1(當n為偶數0,2,4)

n^3+1(當(dang)n為奇數1,3,5)

答案:63

2.用兩個(ge)棧實現一個(ge)隊(dui)列的功能?要求給出算(suan)法(fa)和思路!

設2個棧為A,B, 一(yi)開始(shi)均為空(kong).

入隊:

將新元素push入棧A;

出隊:

(1)判斷棧B是(shi)否為空;

(2)如果不為(wei)空(kong),則將棧(zhan)(zhan)A中所有元素依次pop出并push到(dao)棧(zhan)(zhan)B;

(3)將棧B的棧頂(ding)元素(su)pop出(chu);

這樣(yang)實現的(de)(de)隊(dui)列入隊(dui)和出隊(dui)的(de)(de)平攤復雜度都還(huan)是O(1), 比上(shang)面的(de)(de)幾種方法要(yao)好。3.在(zai)c語言庫(ku)函(han)數中將(jiang)一(yi)個(ge)字(zi)符轉(zhuan)換成整型(xing)的(de)(de)函(han)數是atool()嗎,這個(ge)函(han)數的(de)(de)原(yuan)型(xing)是什(shen)么(me)?

函數名: atol

功 能(neng): 把字(zi)符串轉換成長整型數

用 法(fa): long atol(const char *nptr);

程序例:

#i nclude

#i nclude

int main(void)

{

long l;

char *str = "98765432";

l = atol(lstr);

printf("string = %s integer = %ld\n", str, l);

return(0);

}

2.對于一個頻繁(fan)使用的短小(xiao)函數(shu),在(zai)C語言中應(ying)用什么實(shi)現,在(zai)C++中應(ying)用什么實(shi)現?

c用宏定義,c++用inline

3.直接(jie)鏈(lian)接(jie)兩個信(xin)令點的一組(zu)鏈(lian)路稱作(zuo)什么?

PPP點到點連接

4.接(jie)入網用的(de)是什么接(jie)口?

5.voip都用了那些協議?

6.軟件測試都有那些種類?

黑盒:針(zhen)對系統功能的(de)測(ce)試(shi)(shi) 白合(he):測(ce)試(shi)(shi)函數(shu)功能,各函數(shu)接口

7.確定模塊(kuai)的(de)(de)功(gong)能和模塊(kuai)的(de)(de)接(jie)口是在(zai)軟件設(she)計的(de)(de)那個隊段完(wan)成的(de)(de)?

概要設計階段

8.enum string

{

x1,

x2,

x3=10,

x4,

x5,

}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鏈接到(dao)Internet用到(dao)以下那個協(xie)議?

A.HDLC;B.ARP;C.UDP;D.TCP;E.ID

2.屬于網(wang)絡(luo)層協議的是:

A.TCP;B.IP;C.ICMP;D.X.25

3.Windows消息調度機制是:

A.指令(ling)隊(dui)列;B.指令(ling)堆(dui)棧;C.消息隊(dui)列;D.消息堆(dui)棧;

4.unsigned short hash(unsigned short key)

{

return (key>>)%256

}

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

A.1.16;B.8.32;C.4.16;D.1.32

四.找(zhao)錯題:

1.請問(wen)下面程序有什么(me)錯誤?

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;

把循環語句(ju)內外(wai)換一下

2.#define Max_CB 500

void LmiQueryCSmd(Struct MSgCB * pmsg)

{

unsigned char ucCmdNum;

......

for(ucCmdNum=0;ucCmdNum

{

......;

}

死循環

3.以下是求一個數的平方的程序,請(qing)找出(chu)錯誤:

#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)

{

BYTE *gt_buf;

gt_buf=(BYTE *)MALLOC(Max_GT_Length);

......

if(gt_len>Max_GT_Length)

{

return GT_Length_ERROR;

}

.......

}

五.問答(da)題:

1.IP Phone的原理是什么?

IPV6

2.TCP/IP通信建立的(de)過程(cheng)怎樣,端口有什么作用?

三次握手(shou),確定是哪個應用程序使(shi)用該協(xie)議

3.1號(hao)(hao)信(xin)令和7號(hao)(hao)信(xin)令有什么(me)區別,我(wo)國某前廣泛使用的(de)是那一種?

4.列舉5種(zhong)以上的電話新業(ye)務?

高級題

6、已知一個(ge)(ge)單向鏈表的頭,請寫出刪(shan)(shan)除(chu)其某一個(ge)(ge)結(jie)點的算法(fa),要求,先找到此結(jie)點,然后刪(shan)(shan)除(chu)。

slnodetype *Delete(slnodetype *Head,int key){}中(zhong)if(Head->number==key)

{

Head=Pointer->next;

free(Pointer);

break;

}

Back = Pointer;

Pointer=Pointer->next;

if(Pointer->number==key)

{

Back->next=Pointer->next;

free(Pointer);

break;

}

void delete(Node* p)

{

if(Head = Node)

while(p)

}

有一個16位(wei)的整數,每4位(wei)為一個數,寫函數求他(ta)們(men)的和。

解釋:

整(zheng)數1101010110110111

和(he) 1101+0101+1011+0111

感覺應該不(bu)難,當時(shi)對題理解(jie)的不(bu)是很清(qing)楚,所(suo)以(yi)寫了一個函數,也(ye)不(bu)知道對不(bu)對。

疑問:

 既然是(shi)16位的(de)整數(shu),1101010110110111是(shi)2進制的(de),那么函數(shu)參數(shu)怎(zen)么定義呢,請大蝦指教。

答(da)案:用十進制做參數(shu),計算時(shi)按二進制考(kao)慮。

/* n就是16位的數,函數返回它的四(si)個部分(fen)之和 */

char SumOfQuaters(unsigned short n)

{

char c = 0;

int i = 4;

do

{

c += n & 15;

n = n >> 4;

} while (--i);

return c;

}

有1,2,....一直到n的無(wu)序(xu)(xu)數組,求排序(xu)(xu)算(suan)法,并且(qie)要求時(shi)間復(fu)雜(za)(za)度為(wei)O(n),空間復(fu)雜(za)(za)度O(1),使用交(jiao)換,而且(qie)一次只能交(jiao)換兩個數.(華為(wei))

#i nclude

int main()

{

int a[] = {10,6,9,5,2,8,4,7,1,3};

int len = sizeof(a) / sizeof(int);

int temp;

for(int i = 0; i < len; )

{

temp = a[a[i] - 1];

a[a[i] - 1] = a[i];

a[i] = temp;

if ( a[i] == i + 1)

i++;

}

for (int j = 0; j < len; j++)

cout<

return 0;

}

華為面試(shi)題:怎么判斷鏈表中是否有環?

bool CircleInList(Link* pHead)

{

if(pHead = = NULL || pHead->next = = NULL)//無節點或(huo)只(zhi)有一個節點并(bing)且無自環(huan)

return (false);

if(pHead->next = = pHead)//自環

return (true);

Link *pTemp1 = pHead;//step 1

Link *pTemp = pHead->next;//step 2

while(pTemp != pTemp1 &&amp; pTemp != NULL &&amp; pTemp->next != NULL)

{

pTemp1 = pTemp1->next;

pTemp = pTemp->next->next;

}

if(pTemp = = pTemp1)

return (true);

return (false);

}

兩個(ge)字符(fu)(fu)串(chuan),s,t;把t字符(fu)(fu)串(chuan)插入到s字符(fu)(fu)串(chuan)中,s字符(fu)(fu)串(chuan)有足夠的(de)空(kong)間存(cun)放t字符(fu)(fu)串(chuan)

void insert(char *s, char *t, int i)

{

memcpy(&s[strlen(t)+i],&s[i],strlen(s)-i);

memcpy(&s[i],t,strlen(t));

s[strlen(s)+strlen(t)]='\0';

}

1。編(bian)寫一個 C 函(han)數(shu),該(gai)函(han)數(shu)在一個字(zi)(zi)符(fu)(fu)串中(zhong)找(zhao)到可能的(de)最(zui)長的(de)子(zi)字(zi)(zi)符(fu)(fu)串,且該(gai)字(zi)(zi)符(fu)(fu)串是由同一字(zi)(zi)符(fu)(fu)組成(cheng)的(de)。

char * search(char *cpSource, char ch)

{

char *cpTemp=NULL, *cpDest=NULL;

int iTemp, iCount=0;

while(*cpSource)

{

if(*cpSource == ch)

{

iTemp = 0;

cpTemp = cpSource;

while(*cpSource == ch)

++iTemp, ++cpSource;

if(iTemp > iCount)

iCount = iTemp, cpDest = cpTemp;

if(!*cpSource)

break;

}

++cpSource;

}

return cpDest;

}

2。請編寫一個 C 函(han)數(shu),該(gai)函(han)數(shu)在給定的內存(cun)區域搜(sou)索給定的字符,并返回(hui)該(gai)字符所在位置索引值。

int search(char *cpSource, int n, char ch)

{

int i;

for(i=0; i

return i;

}

一個(ge)單向鏈表(biao),不(bu)知道頭節點(dian),一個(ge)指(zhi)針指(zhi)向其中的一個(ge)節點(dian),問(wen)如(ru)何刪除(chu)這個(ge)指(zhi)針指(zhi)向的節點(dian)?

將這個指(zhi)針指(zhi)向(xiang)的(de)(de)next節(jie)(jie)點(dian)值copy到(dao)本節(jie)(jie)點(dian),將next指(zhi)向(xiang)next->next,并(bing)隨后(hou)刪(shan)除原next指(zhi)向(xiang)的(de)(de)節(jie)(jie)點(dian)。

#i nclude

void foo(int m, int n)

{

printf("m=%d, n=%d\n", m, n);

}

int main()

{

int b = 3;

foo(b+=3, ++b);

printf("b=%d\n", b);

return 0;

}

輸出:m=7,n=4,b=7(VC6.0)

這(zhe)種方(fang)式(shi)和編(bian)譯(yi)器中得函數調(diao)用關(guan)(guan)系相關(guan)(guan)即先后入棧順序。不過(guo)不同

編譯器(qi)得處理不(bu)同。也是因(yin)為(wei)C標(biao)準中對(dui)這種方式說(shuo)明為(wei)未定義,所以

各(ge)個(ge)編譯器廠(chang)商都有自己(ji)得(de)理解,所以最后(hou)產生得(de)結果完全(quan)不同。

因為這樣,所以遇見這種函(han)數,我們(men)首(shou)先(xian)要考慮我們(men)得(de)編(bian)譯器會如何處(chu)理(li)

這樣得(de)函(han)數(shu),其次看函(han)數(shu)得(de)調(diao)用(yong)方(fang)式(shi),不同得(de)調(diao)用(yong)方(fang)式(shi),可能產(chan)生不同得(de)

結果(guo)。最后是看編譯器優化。

2.寫(xie)一(yi)函數,實現刪除字符串str1中含(han)有的(de)字符串str2.

第二個(ge)就是利(li)用(yong)(yong)一(yi)個(ge)KMP匹配算法找到str2然后刪除(chu)(用(yong)(yong)鏈表實現的話,便捷于數組)

==============================================================================

微軟亞洲技術中心(xin)的面試題(ti)!!!

1.進程和線程的差別。

 線程(cheng)是指進程(cheng)內的一個執行單元,也是進程(cheng)內的可(ke)調度實(shi)體.

與進程(cheng)的區別:

(1)調(diao)度:線程作(zuo)為(wei)(wei)調(diao)度和分配的基本單(dan)位,進程作(zuo)為(wei)(wei)擁有資源(yuan)的基本單(dan)位

(2)并(bing)發性:不僅進(jin)程(cheng)(cheng)之間可以并(bing)發執(zhi)行(xing),同一個進(jin)程(cheng)(cheng)的(de)多個線(xian)程(cheng)(cheng)之間也可并(bing)發執(zhi)行(xing)

(3)擁(yong)有(you)(you)資(zi)源(yuan):進程是擁(yong)有(you)(you)資(zi)源(yuan)的(de)一(yi)個(ge)獨立單位(wei),線程不擁(yong)有(you)(you)系統資(zi)源(yuan),但可以訪問隸屬于進程的(de)資(zi)源(yuan).

(4)系統開(kai)銷:在創建(jian)或撤消進程時,由于(yu)系統都要為之分配和回(hui)收資源,導致系統的開(kai)銷明顯大(da)于(yu)創建(jian)或撤消線程時的開(kai)銷。

2.測(ce)試方法

人工測試:個人復查、抽查和會審

機器測試(shi):黑(hei)盒測試(shi)和白盒測試(shi)

2.Heap與stack的(de)差別。

Heap是(shi)堆,stack是(shi)棧。

Stack的空間由操作(zuo)系統自(zi)動分配/釋放,Heap上的空間手(shou)動分配/釋放。

Stack空間有限,Heap是很大的自由(you)存(cun)儲區

C中的malloc函數分配(pei)的內存空間即在堆上,C++中對應(ying)的是new操作(zuo)符。

程(cheng)序在(zai)編譯期對變量(liang)和函數(shu)分配內存都在(zai)棧上進(jin)(jin)行,且程(cheng)序運(yun)行過程(cheng)中函數(shu)調用時參數(shu)的(de)傳遞也在(zai)棧上進(jin)(jin)行

3.Windows下的內存是如何管理的?

4.介(jie)紹.Net和.Net的安全性。

5.客戶端如何訪(fang)問.Net組件(jian)實現Web Service?

6.C/C++編譯(yi)器中虛表是(shi)如(ru)何(he)完成(cheng)的?

7.談談COM的線程模型。然后討論(lun)進(jin)程內/外(wai)組件的差(cha)別。

8.談談IA32下的分頁機制

小頁(ye)(4K)兩級(ji)分頁(ye)模式,大頁(ye)(4M)一(yi)級(ji)

9.給兩(liang)個(ge)變量,如何找出(chu)一個(ge)帶環單鏈表中是什么(me)地方出(chu)現環的?

一個(ge)遞(di)(di)增(zeng)一,一個(ge)遞(di)(di)增(zeng)二,他們指向同一個(ge)接點(dian)時就是環出現(xian)的地方

10.在IA32中一(yi)共有多(duo)少種辦法從(cong)用戶(hu)態跳到內(nei)核態?

通過調用門,從ring3到ring0,中斷從ring3到ring0,進入vm86等等

11.如果只想讓程序(xu)有一(yi)個實(shi)例運行,不能運行兩(liang)個。像(xiang)winamp一(yi)樣,只能開一(yi)個窗口,怎樣實(shi)現?

用(yong)內存映射或全局(ju)原子(互(hu)斥(chi)變量)、查找窗口(kou)句(ju)柄..

FindWindow,互斥,寫標志到文(wen)件或(huo)注冊表,共享(xiang)內存。.

12.如何截取(qu)鍵(jian)盤(pan)的(de)響應(ying),讓所有(you)的(de)‘a’變成&lsquo;b’?

鍵盤(pan)鉤(gou)子SetWindowsHookEx

13.Apartment在COM中有什么用?為什么要引入?

14.存儲過(guo)程是什么?有什么用(yong)?有什么優點?

我的理(li)解就(jiu)是一堆sql的集(ji)合,可以建立(li)非常復雜的查(cha)詢,編譯運行,所以運行一次后,以后再運行速(su)度比單(dan)獨執(zhi)行SQL快很多

15.Template有什(shen)么特點?什(shen)么時候用?

16.談談Windows DNA結構的特點(dian)和(he)優點(dian)。

網絡編程(cheng)中設計并發服(fu)務器,使用多進程(cheng) 與 多線程(cheng) ,請問有什(shen)么區別(bie)?

1,進(jin)程(cheng):子(zi)進(jin)程(cheng)是父進(jin)程(cheng)的(de)復制品(pin)。子(zi)進(jin)程(cheng)獲得父進(jin)程(cheng)數(shu)據空間、堆(dui)和棧的(de)復制品(pin)。

2,線程(cheng)(cheng):相對與(yu)(yu)進(jin)程(cheng)(cheng)而言,線程(cheng)(cheng)是一個更加(jia)接近(jin)與(yu)(yu)執(zhi)行體的(de)概(gai)念,它(ta)可以與(yu)(yu)同進(jin)程(cheng)(cheng)的(de)其他線程(cheng)(cheng)共享數據,但擁有自己的(de)棧空間,擁有獨立的(de)執(zhi)行序列。

兩者都可以提高程序的并發度,提高程序運行效(xiao)率和響應時間。

線程(cheng)(cheng)和進(jin)(jin)程(cheng)(cheng)在(zai)(zai)使用上各有優缺點:線程(cheng)(cheng)執行開銷(xiao)小,但不利于(yu)資源管(guan)理和保(bao)護;而(er)進(jin)(jin)程(cheng)(cheng)正相反。同時,線程(cheng)(cheng)適(shi)合于(yu)在(zai)(zai)SMP機(ji)器上運行,而(er)進(jin)(jin)程(cheng)(cheng)則可以跨機(ji)器遷移。

===============================================================================

思科

1. 用宏定義寫出swap(x,y)

#define swap(x, y)\

x = x + y;\

y = x - y;\

x = x - y;

2.數(shu)(shu)組a[N],存放了1至N-1個(ge)數(shu)(shu),其中某個(ge)數(shu)(shu)重復(fu)一(yi)次。寫(xie)一(yi)個(ge)函(han)(han)數(shu)(shu),找出(chu)被(bei)重復(fu)的數(shu)(shu)字.時間復(fu)雜度(du)必須為(wei)o(N)函(han)(han)數(shu)(shu)原型:

int do_dup(int a[],int N)

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

int i = 512;

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

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

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

unsigned int _t = 0;

unsigned int _a = 1;

for(int i = 0; i < n; ++i){

_t |= _a;

_a = _a << 1;

}

_t = _t << p;

x ^= _t;

return x;

}

上一篇:重慶博澳特C語言經典筆試題

下一篇:嵌入式企業面試題匯總,還不趕快收藏起來

熱點文章推(tui)薦
華清學員(yuan)就(jiu)業榜單(dan)
高薪學員(yuan)經驗分享
熱點新聞(wen)推(tui)薦
前臺專線:010-82525158 企業(ye)培訓洽談專線(xian):010-82525379 院校(xiao)合作洽(qia)談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部