2013年海康威視校園招聘筆試題_第1頁(yè)
2013年??低曅@招聘筆試題_第2頁(yè)
2013年海康威視校園招聘筆試題_第3頁(yè)
2013年??低曅@招聘筆試題_第4頁(yè)
2013年海康威視校園招聘筆試題_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、10、10、4、4四個(gè)數(shù),怎么算出24點(diǎn)?

(10*10-4)/4=24

2、下列表達(dá)式在32位機(jī)器編譯環(huán)境下的值()[cpp]\o"viewplain"viewplain\o"copy"copy\o"print"print\o"?"?class

A

{

};

class

B

{

public:

B();

virtual

~B();

};

class

C

{

private:

#pragma

pack(4)

int

i;

short

j;

float

k;

char

l[64];

long

m;

char

*p;

#pragma

pack()

};

class

D

{

private:

#pragma

pack(1)

int

i;

short

j;

float

k;

char

l[64];

long

m;

char

*p;

#pragma

pack()

};

int

main(void)

{

printf("%d\n",sizeof(A));

printf("%d\n",sizeof(B));

printf("%d\n",sizeof(C));

printf("%d\n",sizeof(D));

return

0;

}

A、1、4、84、82

B、4、4、82、84

C、4、4、84、82

D、1、4、82、82

3、以下程序在32位機(jī)器下運(yùn)行的結(jié)果是()[cpp]\o"viewplain"viewplain\o"copy"copy\o"print"print\o"?"?#pragma

pack(4)

struct

info_t

{

unsigned

char

version;

unsigned

char

padding;

unsigned

char

extension;

unsigned

char

count;

unsigned

char

marker;

unsigned

char

payload;

unsigned

short

sequence;

unsigned

int

timestamp;

unsigned

int

ssrc;

};

union

info_u

{

unsigned

char

version;

unsigned

char

padding;

unsigned

char

extension;

unsigned

char

count;

unsigned

char

marker;

unsigned

char

payload;

unsigned

short

sequence;

unsigned

int

timestamp;

unsigned

int

ssrc;

};

#pragma

pack()

int

main(void)

{

printf("%d\n",sizeof(info_t));

printf("%d\n",sizeof(info_u));

return

0;

}

A、12

12

B、12

4

C、16

4

D、16

12

E、16

1

4、以下表達(dá)式result的值是()[cpp]\o"viewplain"viewplain\o"copy"copy\o"print"print\o"?"?#define

VAL1(a,b)

a*b

#define

VAL2(a,b)

a/b--

#define

VAL3(a,b)

++a%b

int

a

=

1;

int

b

=

2;

int

c

=

3;

int

d

=

3;

int

e

=

5;

int

result

=

VAL2(a,b)/VAL1(e,b)+VAL3(c,d);

A、-2

B、1

C、0

D、2

5、請(qǐng)寫出以下程序的輸出(5分)[cpp]\o"viewplain"viewplain\o"copy"copy\o"print"print\o"?"?void

swap_1(int

a

,

int

b)

{

int

c;

c

=

a;

a

=

b;

b

=

c;

return

;

}

void

swap_2(int

&a

,

int

&b)

{

int

c;

c

=

a;

a

=

b;

b

=

c;

return

;

}

void

swap_3(int

*a

,

int

*b)

{

int

c;

c

=

*a;

*a

=

*b;

*b

=

c;

return

;

}

int

main(void)

{

int

a

=

100;

int

b

=

200;

swap_1(a

,

b);

printf("a

=

%d

,

b

=

%d\n",a

,

b);

swap_2(a

,

b);

printf("a

=

%d

,

b

=

%d\n",a

,

b);

swap_3(&a

,

&b);

printf("a

=

%d

,

b

=

%d\n",a

,

b);

return

0;

}

輸出結(jié)果:

a=100,b=200

a=200,b=100

a=100,b=200

6、下面的程序是否有問(wèn)題,如有問(wèn)題,請(qǐng)重構(gòu)代碼(5分)[cpp]\o"viewplain"viewplain\o"copy"copy\o"print"print\o"?"?void

test_type(bool

b

,

const

char

*p

,

float

f)

{

if(!b)

{

return

;

}

else

if(!p)

{

return

;

}

else

if(!f)

{

return

;

}

}

修改如下:[cpp]\o"viewplain"viewplain\o"copy"copy\o"print"print\o"?"?void

test_type(bool

b

,

const

char

*p

,

float

f)

{

if(!b)

{

return

;

}

else

if(!p)

{

return

;

}

else

if(f

>

-1e-10

&&

f

<

1e-10)

{

return

;

}

}

7、請(qǐng)指出以下程序有什么問(wèn)題(5分)[cpp]\o"viewplain"viewplain\o"copy"copy\o"print"print\o"?"?void

test_mem()

{

char

*p

=

new

char[64];

delete

p;

p

=

NULL;

return

;

}

應(yīng)該修改為delete[]p;

p指向的是一個(gè)字符型的數(shù)組空間,原來(lái)的代碼只是簡(jiǎn)單的釋放了指向申請(qǐng)空間的指針,并沒(méi)有釋放申請(qǐng)的空間,容易造成內(nèi)存崩潰。

回收用new分配的單個(gè)對(duì)象的內(nèi)存空間的時(shí)候用delete,回收用new[]分配的一組對(duì)象的內(nèi)存空間的時(shí)候用delete[]。

8、以下程序有什么問(wèn)題,請(qǐng)指出。[cpp]\o"viewplain"viewplain\o"copy"copy\o"print"print\o"?"?char*

GetMem()

{

char

p[]

=

"hello";

return

p;

}

void

test_get_mem()

{

char

*p

=

GetMem();

printf(p);

return

;

}

GetMem函數(shù)中的p是一個(gè)在棧上的局部變量,當(dāng)函數(shù)運(yùn)行結(jié)束的時(shí)候,棧上的內(nèi)容會(huì)自動(dòng)釋放的,此處返回的值有可能會(huì)成為一個(gè)野指針,會(huì)出現(xiàn)一個(gè)意想不到的結(jié)果。

9、請(qǐng)寫出strcpy和memcpy的區(qū)別(5分)

答:strcpy和memcpy都是標(biāo)準(zhǔn)C庫(kù)函數(shù),它們有下面的特點(diǎn)。

strcpy提供了字符串的復(fù)制。即strcpy只用于字符串復(fù)制,并且它不僅復(fù)制字符串內(nèi)容之外,還會(huì)復(fù)制字符串的結(jié)束符。

strcpy函數(shù)的原型是:char*strcpy(char*dest,constchar*src);

memcpy提供了一般內(nèi)存的復(fù)制。即memcpy對(duì)于需要復(fù)制的內(nèi)容沒(méi)有限制,因此用途更廣。

memcpy函數(shù)的原型是:void*memcpy(void*dest,constvoid*src,size_tcount);

strcpy和memcpy主要有以下3方面的區(qū)別。

1、復(fù)制的內(nèi)容不同。strcpy只能復(fù)制字符串,而memcpy可以復(fù)制任意內(nèi)容,例如字符數(shù)組、整型、結(jié)構(gòu)體、類等。

2、復(fù)制的方法不同。strcpy不需要指定長(zhǎng)度,它遇到被復(fù)制字符的串結(jié)束符"\0"才結(jié)束,所以容易溢出。memcpy則是根據(jù)其第3個(gè)參數(shù)決定復(fù)制的長(zhǎng)度。

3、用途不同。通常在復(fù)制字符串時(shí)用strcpy,而需要復(fù)制其他類型數(shù)據(jù)時(shí)則一般用memcpy。

10、請(qǐng)寫出以下程序的輸出結(jié)果[cpp]\o"viewplain"viewplain\o"copy"copy\o"print"print\o"?"?class

Base

{

public:

Base()

{

printf("I

am

Base()\n");

}

virtual

~Base()

{

printf("I

am

~Base()\n");

}

public:

virtual

void

SayHello()

{

printf("Hello

Base\n");

}

void

SayWorld()

{

printf("World

Base\n");

}

};

class

Derived

:

public

Base

{

public:

Derived()

{

printf("I

am

Derived()\n");

}

virtual

~Derived()

{

printf("I

am

~Derived()\n");

}

public:

void

SayHello();

void

SayWorld();

};

void

Derived::SayHello()

{

printf("Hello

Derived\n");

}

void

Derived::SayWorld()

{

printf("World

Derived\n");

}

int

main(void)

{

Base

*b1

=

new

Base;

Base

*b2

=

new

Derived;

Derived

*d

=

new

Derived;

b1->SayHello();

b1->SayWorld();

b2->SayHello();

b2->SayWorld();

d->SayHello();

d->SayWorld();

delete

d;

delete

b2;

delete

b1;

d=

NULL;

b2

=

NULL;

b1

=

NULL;

return

0;

}

輸出結(jié)果:

IamBase()

IamBase()

IamDerived()

IamBase()

IamDerived()

HelloBase

WorldBase

HelloDerived

WorldBase

HelloDerived

WorldDerived

Iam~Derived()

Iam~Base()

Iam~Derived()

Iam~Base()

Iam~Base()

11、閱讀以下程序并給出執(zhí)行結(jié)果[cpp]\o"viewplain"viewplain\o"copy"copy\o"print"print\o"?"?class

Bclass

{

public:

Bclass(int

i

,

int

j)

{

x

=

i;

y

=

j;

}

virtual

int

fun()

{

return

0;

}

protected:

int

x

,

y;

};

class

lclass

:

public

Bclass

{

public:

lclass(int

i

,

int

j

,

int

k)

:

Bclass(i

,

j)

{

z

=

k;

}

int

fun()

{

return

(x+y+z)/3;

}

private:

int

z;

};

int

main(void)

{

lclass

obj(2,4,10);

Bclass

p1

=

obj;

cout<<p1.fun()<<endl;

Bclass

&p2

=

obj;

cout<<p2.fun()<<endl;

cout<<p2.Bclass::fun()<<endl;

Bclass

*p3

=

&obj;

cout<<p3->fun()<<endl;

return

0;

}

輸出結(jié)果:

0

5

0

5

12、如何減少頻繁分配內(nèi)存(malloc或者new)造成的內(nèi)存碎片?(10分)

13、請(qǐng)寫出strchr的實(shí)現(xiàn)(10分)

函數(shù)功能:找出在字符串str中第一次出現(xiàn)字符ch的位置,找到就返回該字符位置的指針(也就是返回該字符在字符串中的地址的位置),找不到就返回空指針(就是NULL)

constchar*strchr(constchar*str,charch)[cpp]\o"viewplain"viewplain\o"copy"copy\o"p

溫馨提示

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

評(píng)論

0/150

提交評(píng)論