亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學(xué)習(xí)啦 > 創(chuàng)業(yè)指南 > 職場 > 筆試題 > C++筆試題目及答案

      C++筆試題目及答案

      時間: 護托1061 分享

      C++筆試題目及答案

        C++由于語言本身過度復(fù)雜,這甚至使人類難于理解其語義。更為糟糕的是C++的編譯系統(tǒng)受到C++的復(fù)雜性的影響,非常難于編寫,即使能夠使用的編譯器也存在了大量的問題,這些問題大多難于被發(fā)現(xiàn)。下面就由學(xué)習(xí)啦小編為大家介紹一下C++筆試題目及答案的文章,歡迎閱讀。

        C++筆試題目及答案篇1

        1. What’s overload function in C++?

        “重載”是指編寫一個與已有函數(shù)同名但參數(shù)表不同的函數(shù)。構(gòu)成重載的條件是:在相同的范圍內(nèi)(比如說在同一個類中),函數(shù)名字相同,但函數(shù)參數(shù)不同(要么參數(shù)類型不同,要么參數(shù)個數(shù)不同,要么兩者都不同)

        2. A. What’s inline function in C++?

        內(nèi)聯(lián)函數(shù)是指嵌入代碼,就是在調(diào)用函數(shù)的地方不是跳轉(zhuǎn),而是直接把代碼寫到那里去。它與普通函數(shù)相比能提高效率,因為它不需要中斷調(diào)用,在編譯的時候內(nèi)聯(lián)函數(shù)可以直接把代碼鑲嵌到目標代碼中去,省去了函數(shù)調(diào)用的開銷,但是它是以代碼膨脹為代碼的(以增加空間消耗為代價)

        B. When would you use inline function?

        (1)一個函數(shù)不斷的被重復(fù)調(diào)用

        (2)函數(shù)只有簡單的幾行,且函數(shù)內(nèi)部包含:for,while,switch語句。

        C. Please write sample code.

        void Foo(int x,int y);

        inline void Foo(int x,int y){...}

        需要注意的是:關(guān)鍵字inline必須與函數(shù)定義體放在一起才能使函數(shù)構(gòu)成內(nèi)聯(lián),僅將inline放在函數(shù)聲明前不起任何作用。

        3. Which of the following are legal? For those usages thatare illegal, explain why.

        const int buf;

        不合法。因為定義const變量(常量)時必須進行初始化,而buf沒有初始化。

        int cnt = 0;

        const int sz = cnt;

        合法。

        cnt++; sz++;

        不合法。因為修改了const變量sz的值。

        4. Please point out the errors in the following C++ code. Andwhy?

        switch ( ival )

        {

        case 1, 3, 5, 7, 9:oddcnt++;

        break;

        case 2, 4, 6, 8, 10:evencnt++;

        break;

        }

        貌似case 不能把所有的情況并列列出來,沒見過 case 1, 3, 5, 7,9:這種寫法,改為 case1:oddcnt++; case 3:oddcnt++;

        C++筆試題目及答案篇2

        1. Given the following base and derived class definitions:

        class Base

        {

        public:

        foo ( int );

        protected:

        int _bar;

        double _foo_bar;

        };

        class Derived: public Base

        {

        public:

        foo ( string );

        bool bar ( Base *pb );

        void foobar ();

        protected:

        string _bar;

        };

        Identify what is wrong with each of thefollowing code fragments and how each might be fixed:

        (a) Derived d; d.foo ( 1024 );

        錯誤:定義個派生類的對象d,d.foo( 1024 );派生類中foo的參數(shù)是string,不能將int型轉(zhuǎn)換為"string"

        (b) void Derived :: foobar () { _bar=1024;}

        正確:定義派生類的成員函數(shù)foobar();把整形1024賦給string ,發(fā)生類型轉(zhuǎn)換

        (c) bool Derived :: bar { Base *pb }

        { return _foo_bar = = pb->_foo_bar; }

        錯誤:沒有參數(shù)列表,還有下面不應(yīng)該為"==",還有在派生類中無法訪問基類的保護成員。

        應(yīng)該改為:boolDerived :: bar (Base *pb)

        { return _foo_bar = pb->_foo_bar; }

        2. A. Please list all the design patterns you known.

        常見的設(shè)計模式有23種,比如說:單例模式、工廠模式,觀察者模式、組合模式、策略模式、適配器模式、命令模式等等

        B. Please explain the pattern of “Factory” and give anexample if you can.

        工廠模式使一個類的實例化延遲到子類,換句話說也就是將創(chuàng)建對象實例的責任,

        轉(zhuǎn)移到工廠類中,并利用抽象的原理,將實例化行為延遲到具體工廠類。

        3. A. Please list all the sorting algorithms you known.

        排序算法:冒泡排序(最簡單了,就是2個for循環(huán))、快速排序、選擇排序、插入排序、歸并排序、希爾排序、堆排序等等

        B. Please use pseudo code to describe the algorithm of “QuickSort”.

        快速排序采用的是分治策略,分治法的基本思想是:將原問題分解為若干個規(guī)模更小但結(jié)構(gòu)與原問題相似的子問題,遞歸解決這些子問題,然后將這些子問題的解組合為原問題的解。

        快速排序:快速排序是對冒泡排序的一種改進,時間復(fù)雜度均是O(nlogn)空間復(fù)雜度是:O(logn)

        基本思想:通過一趟排序算法將待排記錄分割成2部分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,則可分別對這兩部分記錄進行排序以達到整個序列有序。

        一趟快速排序做法:

        附設(shè)兩個指針low和high,設(shè)樞軸記錄關(guān)鍵字為pivotkey,則先從高位(high)起向前搜索找到第一個關(guān)鍵字小于pivotkey的記錄和樞軸記錄進行交換,然后從低位(low)所指位置向后搜索,找到第一個關(guān)鍵字大于pivotkey的記錄和樞軸記錄進行交換,重復(fù)這兩步,直至low=high為止。

        源代碼:

        void quicksort(int a[], int low, int high)

        {

        inti,j,key,temp;

        if(low< high)

        {

        key= a[low];

        i= low;

        j= high;

        while(i< j)

        {

        for(i = i + 1; i < high; i++)

        if(a[i] > key)

        break;

        for(j = j; j > low; j--)

        if(a[j] < key)

        break;

        if(i< j)

        {temp = a[i];

        a[i]= a[j];

        a[j]= temp;

        }

        }

        temp= a[low];

        a[low]= a[j];

        a[j]= temp;

        quicksort(a,low,j-1);

        quicksort(a,i,high);

        }

        }

        測試:int_tmain(int argc, _TCHAR* argv[])

        {

        inta[]={49,38,65,97,76,13,27,49};

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

        quicksort(a,0,size-1);

        for(int i=0;i

        {

        cout<

        cout<

        }

        system("pause");

        return0;

        }

        C++筆試題目及答案篇3

        Please answer the following questions:

        A. What’s process scheduling and list all schedulingalgorithms you known.

        調(diào)度算法是指:根據(jù)系統(tǒng)的資源分配策略所規(guī)定的資源分配算法。

        1.先來先服務(wù)和短作業(yè)(進程)優(yōu)先調(diào)度算法

        2.高優(yōu)先權(quán)優(yōu)先調(diào)度算法

        3.基于時間片的輪轉(zhuǎn)調(diào)度算法

        B. What’s the “Race Condition”?

        競態(tài)條件(racecondition)是一個在設(shè)備或者系統(tǒng)試圖同時執(zhí)行兩個操作的時候

        出現(xiàn)的不希望的狀況,但是由于設(shè)備和系統(tǒng)的自然特性,為了正確地執(zhí)行,操作必

        須按照合適順序進行?!〕S迷诙嗑€程環(huán)境中。

        C. Please explain the diagram of process state change.

        進程有3種基本狀態(tài),等待、就緒、運行。

        運行態(tài)→等待態(tài):往往是由于等待外設(shè),等待主存等資源分配或等待人工干預(yù)而引

        起的。(服務(wù)請求,如請求I/O等)

        等待態(tài)→就緒態(tài):等待的條件已滿足,只需分配到處理器后就能運行。(服務(wù)完

        成/事件來到)

        運行態(tài)→就緒態(tài):不是由于自身原因,而是由外界原因使運行狀態(tài)的進程讓出處理

        器,這時候就變成就緒態(tài)。例如時間片用完,或有更高優(yōu)先級的進程來搶占處理器

        等。 (時間片到等)

        就緒態(tài)→運行態(tài):系統(tǒng)按某種策略選中就緒隊列中的一個進程占用處理器,此時就

        變成了運行態(tài)(進程調(diào)度)

      3157688