深圳華為 C++面試題

來源:互聯網
上載者:User

C++/MFC 試題

 

一.填空題 (26 分 )

1 . WIN32 平台下, sizeof(short) = __2__ , sizeof(int) = __4__ , sizeof(long) = __4__ 。 (3 分 )

2 .請給出如下程式的結果 (2 分 )

int a = 3;

int b = a << 3;

a = __3__ , b = __24__ 。

3 .請 給出如下程式的結果 (2 分 )

int aaa = 0x01;

htonl(aaa) = _16777216___ 。 //這題運行顯示的是16777216,我覺得可能是隨機值

4 .請給出如下程式的結果 (2 分 )

#define MAX_NUM 100+200

int nTemp = MAX_NUM*10;

則 Temp = __2100__ 。

5 .請給出如下程式的結果 (3 分 )

char szTemp[1000] = "";

int nLen1 = sizeof(szTemp);

int nLen2 = strlen(szTemp);

strcpy(szTemp, "abc");

int nLen3 = sizeof(szTemp);

int nLen4 = strlen(szTemp);

int nTemp[100];

int *pTemp = nTemp;

int nLen5 = sizeof(pTemp);

char szResult[200] = "";

sprintf(szResult, "%d,%d,%d,%d,%02d.", nLen1, nLen2, nLen3, nLen4, nLen5);

則 szResult = ____ 。

6 . MFC 中,大部分類是從哪個類繼承而來( CCmdTarget 、 CObject 、 CWinApp 、 CWnd )? (2 分 )__CObject __

7 .記憶體是進程範圍 or 線程範圍; ____

CPU 調度時,針對進程 or 線程; ____

函數呼叫堆疊,針對進程 or 線程。 ____(3 分 )

8 .調用函數 bbb 後,輸出是什麼 (4 分 )

void ccc(int x)

{

       char szTemp[10] = "";

      

       x = 2;

       sprintf(szTemp, "%d,", x);

       afxDump << szTemp;

      

       if(x = 3)

       {

              int x = 4;

              sprintf(szTemp, "%d,", x);

              afxDump << szTemp;

       }

      

       sprintf(szTemp, "%d,", x);

       afxDump << szTemp;

}

 

void bbb()

{

       char szTemp[10] = "";

 

       int x = 7;

      

       ccc(x);

      

       sprintf(szTemp, "%d,", x);

       afxDump << szTemp;

}

 

二.改錯題 ( 總共 15 分 , 每題 5 分 )

1 .下面代碼有何錯誤

void func1()

{

       int *pa = NULL;

       func2(pa);

       delete pa;

}

void func2(int *pb)

{

       pb = new int(5);

}

2 .下面代碼有何錯誤

void func2(int *value)

{

       *value = 2;

}

void func1()

{

       int *p = 0;

       func2(p);

}

3 .

int func1(int& b)

{

       return 0;

}

void func2()

{

       int bbb = 3;

       func1(&bbb);

       func1(bbb);

}

func2 中有何錯誤, func1 的參數 b 的類型是什麼。

三.簡答題 (64 分 )

1. 請簡述 C 、 C++ 、 VC 、 MFC 在概念上的區別 (4 分 )

2 .請寫一個函數重載的簡單例子 (4 分 )

3. 用什麼函數開啟新進程、線程。 (4 分 )

4.SendMessage 和 PostMessage 有什麼區別 (4 分 )

5.WaitForSingleObject 有何作用; m_pThrd 的類型是 CWinThread* 時, WaitForSingleObject(m_pThrd->m_hThread, INFINITE); 有何作用。 (4 分 )

6. __stdcall 、 __cdecl 、 __pascal 在什麼方面有所不同。 (4 分 )

7 .請把下述代碼加上異常處理。 (6 分 )

int MyWriteFile(CString strFileName, CString strText)

{

       int nRet = 0;

      

       CFile myFile;

       myFile.Open(strFileName, CFile::modeWrite|CFile::shareExclusive|CFile::modeCreate, NULL);

      

       int nLen = strText.GetLength();

       myFile.Write((char*)(LPCSTR)strText, nLen);

      

       myFile.Close();

 

       return nRet;

}

8 .請解釋“ func ”為何種類型,這種類型的作用什麼,變數 ttt 的值是多少? (6 分 )

typedef int (*func)(int, int*);

int xxx(int a, int *p)

{

       return a + *p;

}

int dowork(func aaa, int bbb, int *ccc)

{

       return aaa(bbb, ccc);

}

int sss = 4;

int ttt = dowork(&xxx, 3, &sss);

9 .請問下述代碼中 : int operator+(… )起什麼作用? this 是什嗎? ccc 的值最終為多少? (6 分 )

class Fruit

{

public:

       Fruit()

       {

              weight = 2;

       }

       Fruit(int w)

       {

              weight = w;

       }

       int operator+(Fruit f)

       {

              return this->weight * f.weight;

       }

private:

       int weight;

};

       Fruit aaa;

       Fruit bbb(4);

       int ccc = aaa + bbb;

10. 請解釋下面代碼採用了何種 C++ 特性( C 語言不具備),作用是什嗎? (6 分 )

template<typename T>

T sum(T a, T b)

{

       return (a + b);

}

 

11 .請解釋 aaa.h 中下面代碼的功能 (5 分 )

#if !defined(AFX_MYSUDU_H__9B952BEA_A051_4026_B4E5_0598A39D2DA4__INCLUDED_)

#define AFX_MYSUDU_H__9B952BEA_A051_4026_B4E5_0598A39D2DA4__INCLUDED_

... ...

#endif

 

 

12 . CMemoryState 主要功能是什麼 (5 分 )

13 .請閱讀下述代碼,寫出程式執行的結果( 6 分)

#include <iostream>

using namespace std;

 

class CBase 

{

public:

 virtual void print()

 {

    cout<< "base" << endl;

 }

 void DoPrint()

 {

    print();

 }

};

 

class CChild1: public CBase

{

public:

 virtual void print()

 {

    cout<< "child1" << endl;

 }

};

 

class CChild2: public CBase

{

public:

 virtual void print()

 {

    cout<< "child2" << endl;

 }

};

 

void DoPrint(CBase *base)

{

 base->DoPrint();

}

 

void main()

{

 CBase* base = new CBase();

 CChild1* child1 = new CChild1();

 CChild2* child2 = new CChild2();

 DoPrint(child1);

 DoPrint(child2);

 DoPrint(base);

 

 delete base;

 base = child1;

 base->print();

 delete child1;

 delete child2;

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.