• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            SmartPtr
            本博客已搬至:http://www.cnblogs.com/baiyanhuang/
            posts - 29,comments - 176,trackbacks - 0
            By SmartPtr(http://www.shnenglu.com/SmartPtr/)
                  
                近一年以來(lái),AUTODESK的面試題在網(wǎng)上是鬧的沸沸揚(yáng)揚(yáng),作為一個(gè)名企,這是可以理解的,況且其面試題質(zhì)量也是不錯(cuò)的。抽一些閑暇時(shí)間,把網(wǎng)上傳的比較多的70道題簡(jiǎn)單的解答了一遍,不為別的,只為再熟悉一下在大學(xué)學(xué)過(guò)的一些基礎(chǔ)知識(shí)。希望對(duì)大家有用。當(dāng)然,這只是我的個(gè)人解答,有什么不對(duì)的或者需要補(bǔ)充的,大家盡管提上來(lái),好的話我加上去的。。。

                 

            1. 在類的普通成員函數(shù)中調(diào)用虛函數(shù),情況是怎么樣的?(對(duì)象、引用、指針)

            多態(tài), 事實(shí)上,這是 Template Method模式的關(guān)鍵
            2.
            關(guān)于成員變量初始化順序,幾個(gè)有依賴關(guān)系的成員變量要初始化,讓寫出構(gòu)造函數(shù)。

            在初始化列表中,成員變量的初始化順序是其在類中聲明順序,而非列表中的順序。

            3. 寫一個(gè)雙鏈表。

            Struct ListNode

            {

                int nData;

                ListNode* pPreviousNode;

                ListNode* pNextNode;

            }

            一般鏈表都會(huì)有一個(gè)表頭節(jié)點(diǎn)與指向表頭節(jié)點(diǎn)的頭指針, 應(yīng)該會(huì)提供列表接口, 按此數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)即可。

            4. 寫個(gè)is-ahas-a

            這個(gè)比較簡(jiǎn)單

            Class Pet{};

            Class Dog: public Pet{};

            Class Boy{Pet* m_pPet;};

            5. struct vs. class.

            1)默認(rèn)訪問屬性, structpublic, classprivate

            2) 默認(rèn)繼承屬性,structpublic, classprivate
            3)class
            可以用來(lái)聲明模板參數(shù),而struct不能

            6. 8個(gè)小球的問題

            沒題

            7. stl 里面vector的實(shí)現(xiàn)(內(nèi)部空間的申請(qǐng)與分配)

            Vector中文名字是動(dòng)態(tài)數(shù)組, 其內(nèi)部數(shù)據(jù)結(jié)構(gòu)就是一個(gè)數(shù)組, 但是在數(shù)組元素不夠用的時(shí)候,就要?jiǎng)討B(tài)的重新分配, 一般是現(xiàn)在大小的兩倍, 然后把原數(shù)組的內(nèi)容拷貝過(guò)去。所以, 在一般情況下, 其訪問速度同一般數(shù)組, 只有在重新分配發(fā)生時(shí), 其性能才會(huì)下降

            8. struct /class的區(qū)別

            重復(fù)了

            9. 為什么要用struct

            成員的默認(rèn)屬性不同,用struct的話,主要是作為數(shù)據(jù)的集合。

            10. 怎樣使一個(gè)class不能被實(shí)例化

            1,構(gòu)造函數(shù)私有化,2,抽象類

            11. 私有繼承和public繼承的區(qū)別。

            私有繼承: 只繼承實(shí)現(xiàn),不繼承實(shí)現(xiàn) has-a

            公有繼承:繼承接口與實(shí)現(xiàn)    is-a

            12. void *p的問題

            不能++

            13. 引用和指針的區(qū)別與聯(lián)系。引用是否可以更改

            聯(lián)系: 支持多態(tài),可以用來(lái)引用同一對(duì)象

            區(qū)別:指針可以為NULL, 引用不可以; 指針可以重賦值, 引用不可以;

            14. windows編程基礎(chǔ),線程與進(jìn)程的區(qū)別

            程序是一系列靜態(tài)的指令序列

            進(jìn)程是程序的一次動(dòng)態(tài)執(zhí)行,進(jìn)程其實(shí)是一個(gè)資源的容器,包括一個(gè)私有的虛擬地址空間,一些初始的代碼與數(shù)據(jù), 一些系統(tǒng)資源的句柄等

            線程是一個(gè)進(jìn)程中的執(zhí)行體, 一般包括CPU寄存器狀態(tài),兩個(gè)棧(內(nèi)核模式,用戶模式)以及一個(gè)TLS(Thread-Local Storage)

            15. com+是否熟悉

            COM+COM技術(shù)的延伸與發(fā)展, 它包括了所有COM的基本功能(基于接口的編程模型,基本組件服務(wù)),并組合了DCOM(使組件技術(shù)延伸到了分布式領(lǐng)域)和MTS-Microsoft Transaction Server(提供了服務(wù)器端的組件管理與配置管理),并新增了一些服務(wù):負(fù)載平衡,內(nèi)存數(shù)據(jù)庫(kù),事件模型,隊(duì)列服務(wù)等,主要用于Windows DNA(Distributed interNet Application Architecture)三層結(jié)構(gòu)的中間層。

            16. 簡(jiǎn)述一下hash算法

            哈希表的目的是表查詢插入修改能夠達(dá)到O(1)的算法復(fù)雜度, 通過(guò)對(duì)key編碼來(lái)確定其存儲(chǔ)地址來(lái)實(shí)現(xiàn), 當(dāng)不同的key得到相同的編碼時(shí),便需要進(jìn)行沖突檢測(cè)與處理,一般方法有除留余數(shù)法, 線性探測(cè)法,平方探測(cè)法, 這使其無(wú)法真正達(dá)到O(1)

            17. 一個(gè)32位的數(shù)據(jù),怎樣找到最左邊的一個(gè)1?

            如果是在最左位,這個(gè)數(shù)是負(fù)數(shù),否則的話,左移一位,看是否變成負(fù)數(shù),這是O(n)的算法, 也可以用一個(gè)模板去與,并不斷改變這個(gè)模板

            O(n/2)的算法:二分方式查找 ???

            18. 一個(gè)4*4的格子,填入1~15 然后給個(gè)目標(biāo)狀態(tài),怎樣去搜索。
            比如:
             1   2  3    6
             0   4  5    7
             8   9  10 11
            12 13 14 14

            再給出個(gè)最終的狀態(tài) (隨便都可以)
            0 表示一個(gè)空格,可以移動(dòng),有點(diǎn)像拼圖;
             

            人工智能的教材上用的應(yīng)該就是這個(gè)例子,用A*算法,它既不是廣度搜索,也不是深度搜索,而是一種啟發(fā)式搜索,在進(jìn)行下一步搜索之前,會(huì)用一個(gè)估價(jià)函數(shù)來(lái)對(duì)后面的節(jié)點(diǎn)評(píng)分, 取評(píng)分最優(yōu)的進(jìn)行下一步搜索,如果找不到結(jié)果,回溯。對(duì)于本題,用曼哈頓距離作為評(píng)分標(biāo)準(zhǔn)是個(gè)不錯(cuò)的選擇。

            19. 給你100萬(wàn)個(gè)數(shù)據(jù),數(shù)據(jù)的值在0~65535之間 用最快的速度排序

            多關(guān)鍵字基數(shù)排序MSD(MOST SIGNIFICANT DIGIT FIRST)

            20. 如果我們的一個(gè)軟件產(chǎn)品,用戶回復(fù)說(shuō):運(yùn)行速度很慢,你怎么處理?

            詢問其Workflow, 用戶的硬件環(huán)境

            21. 八皇后問題,詳述解法 八皇后問題說(shuō)的是在8*8國(guó)際象棋棋盤上,要求在每一行放置一個(gè)皇后,且能做到在豎方向,斜方向都沒有沖突

            回溯法

            22. kmp快速匹配算法 ---不算輕松的搞定

            普通的模式匹配算法,一旦不匹配,模式串右移一位;但是其實(shí)根據(jù)一直條件,我們可以算出應(yīng)該向右移幾位以避免不必要的比較;算法實(shí)現(xiàn)比較曲折

            23. 無(wú)向圖中兩點(diǎn)間最短路問題 ---偉大的迪杰克斯拉算法

            假設(shè)一共有N個(gè)節(jié)點(diǎn), 需要一個(gè)一維數(shù)組Previous[N]來(lái)記錄前一個(gè)節(jié)點(diǎn)序號(hào);一個(gè)一維數(shù)組TotalLength[N]來(lái)記錄從原點(diǎn)到當(dāng)前節(jié)點(diǎn)最短路徑;一個(gè)二維數(shù)組Weights[N][N]來(lái)記錄各點(diǎn)之間邊的權(quán)重(如果存在) 然后從源點(diǎn)到終點(diǎn)進(jìn)行深度搜索或廣度搜索, 按以下規(guī)則:搜索到某個(gè)節(jié)點(diǎn)b時(shí),假設(shè)其前一個(gè)節(jié)點(diǎn)為a, TotalLength[a] + Weights[a][b]TotalLength[b]相比較,如果小于TotalLength[b] TotalLength[b] = TotalLength[a] + Weights[a][b], Previous[b] = a; 反之則不做任何操作。這樣到搜索結(jié)束后, Previous[N]數(shù)組中就能得到整條最短路徑了

            24. 空間中任意給兩個(gè)向量,求角平分線

            先單位化, 假設(shè)單位化后結(jié)果為nv1, nv2, 則角平分線為(nv1+nv2) / 2

            25. 什么是平衡樹

            左右子樹都是平衡樹,且高度相差不超過(guò)1的有序二叉樹

            26. 哈夫曼編碼問題

            理論基礎(chǔ):霍夫曼樹是帶權(quán)路徑長(zhǎng)度(WPLWeighted Path Length)最小的二叉樹,它不一定是完全二叉樹,應(yīng)該是權(quán)值大的外結(jié)點(diǎn)離根節(jié)點(diǎn)最近的擴(kuò)充二叉樹?;舴蚵幋a是為了實(shí)現(xiàn)數(shù)據(jù)的最小冗余編碼,是數(shù)據(jù)壓縮學(xué)的基礎(chǔ)。 它根據(jù)字符在電文中出現(xiàn)的頻率為權(quán)值,構(gòu)造霍夫曼樹,左為0, 右為1. 其有兩個(gè)效果,一是保證電文有最短的編碼,二是字符間不需要分隔符,因?yàn)椴煌淖址囟ㄓ胁煌拈_頭(成為前綴編碼)。

            27. 有向圖求環(huán)

            以該節(jié)點(diǎn)為源點(diǎn)與終點(diǎn)嗎進(jìn)行深度優(yōu)先或廣度優(yōu)先搜索

            28. .n個(gè)點(diǎn),求凸包問題

            凸包(convex hull)是指一個(gè)最小凸多邊形,滿足這N個(gè)點(diǎn)都在多邊形上,或其內(nèi)。算法描述:

            求出最右的那個(gè)點(diǎn)作為凸多邊形的一個(gè)頂點(diǎn)(P0),遍歷其他所有點(diǎn)(Pi), 如果其他點(diǎn)都在向量P0Pi的同一側(cè),則Pi也為凸多邊形的頂點(diǎn)。

            29. 四則運(yùn)算(給一個(gè)前綴表達(dá)式(波蘭式)或后綴表達(dá)式(逆波蘭式),然后求解;給一個(gè)中綴表達(dá)式)

            +*-CDBA -/EF---------------------> A+B*(C-D)-E/F       前綴-中綴

            操作符進(jìn)棧,一個(gè)變量tmp放上一個(gè)中間操作數(shù)(運(yùn)算結(jié)果),遇到操作數(shù)檢查tmp是否為空, 空的話取兩個(gè)操作數(shù),不空的話取一個(gè)操作數(shù),另一個(gè)就是tmp了,操作符出棧運(yùn)算,結(jié)果放入tmp中,如果是操作符,tmp清空

             ABCD-*+EF/- ---------------------> A+B*(C-D)-E/F     后綴-中綴

            操作數(shù)進(jìn)棧,遇到操作符,兩個(gè)操作數(shù)出棧,計(jì)算結(jié)果入棧

            30. STLcontainer有哪些?

            序列容器: vector, list, deque, bitset

            關(guān)聯(lián)容器:     set, multiset, map, multimap

            適配容器:stack, queue, priority_queue

            類容器:         string, valarray, bitset

            擴(kuò)展容器:hash_set, hash_multiset, hash_map, hash_multimap

            31. map中的數(shù)據(jù)存儲(chǔ)方式是什么?

            紅黑樹, 是一種平衡二叉搜索樹, 具有良好的最壞情況運(yùn)行時(shí)間(統(tǒng)計(jì)性能好與AVL樹)

            32. maphashmap有什么區(qū)別?

            內(nèi)部數(shù)據(jù)結(jié)構(gòu)不同, map是紅黑樹,hashmap是哈希表

            33. hashmap是標(biāo)準(zhǔn)庫(kù)中的嗎?

            不是的,但在SGI stlvc2005中都提供了。

            34. vector中的erase方法跟algorithmremove有什么區(qū)別?

            vectorerase是真正刪除了元素, 迭代器訪問不到了。 algorithm中的remove只是簡(jiǎn)單的把要remove的元素移到了容器最后面,迭代器還是可以訪問到的。因?yàn)?/span>algorithm通過(guò)迭代器操作,不知道容器的內(nèi)部結(jié)構(gòu),所以無(wú)法做到真正刪除。

            35. object是什么?

            具有內(nèi)部狀態(tài),以及操作的 軟件構(gòu)造,用來(lái)表示真實(shí)存在(物理上或概念上)的對(duì)象

            36. C++中如何阻止一個(gè)類被實(shí)例化?

            純虛函數(shù);構(gòu)造函數(shù)私有化(友元)

            37. 一般在什么時(shí)候構(gòu)造函數(shù)被聲明成private呢?

             singleton模式; 阻止某些操作(如阻止拷貝構(gòu)造

            38. 什么時(shí)候編譯器會(huì)生成默認(rèn)的copy constructor呢?

            用戶沒有自定義copy constructor;在代碼中使用到了copy constructor;

            39. 如果你已經(jīng)寫了一個(gè)構(gòu)造函數(shù),編譯器還會(huì)生成copy constructor嗎?

            如果我寫的是copy constructor, 不會(huì)

            如果我寫的不是copy constructor, 38

            40. 為什么說(shuō)如果一個(gè)類作為基類,則它的析構(gòu)函數(shù)要聲明成virtual的?

            因?yàn)?,如?/span>delete一個(gè)基類的指針時(shí), 如果它指向的是一個(gè)子類的對(duì)象,那么析構(gòu)函數(shù)不為虛就會(huì)導(dǎo)致無(wú)法調(diào)用子類析構(gòu)函數(shù),從而導(dǎo)致資源泄露。 當(dāng)然,另一種做法是將基類析構(gòu)函數(shù)設(shè)為protected.

            41. inline的函數(shù)和#define有什么區(qū)別?什么時(shí)候會(huì)真的被inline,什么時(shí)候不會(huì)呢?

            1) 宏是在預(yù)編譯階段簡(jiǎn)單文本替代, inline在編譯階段實(shí)現(xiàn)展開

            2)宏肯定會(huì)被替代,而復(fù)雜的inline函數(shù)不會(huì)被展開

            3)宏容易出錯(cuò)(運(yùn)算順序),且難以被調(diào)試,inline不會(huì)

            4)宏不是類型安全,而inline是類型安全的,會(huì)提供參數(shù)與返回值的類型檢查

            當(dāng)出現(xiàn)以下情況時(shí)inline失敗

            函數(shù)size太大

            inline虛函數(shù)

            函數(shù)中存在循環(huán)或遞歸

            函數(shù)調(diào)用其他inline函數(shù)

            42. 如果把一個(gè)類的成員函數(shù)寫在類的聲明中是什么意思?

            inline此函數(shù) inlinetemplate類似, 必須在.h中實(shí)現(xiàn))

            43. public繼承和private繼承有什么架構(gòu)上的區(qū)別?

            publicis-a的關(guān)系,繼承接口與實(shí)現(xiàn)

            privatehas-a的關(guān)系 ,只繼承實(shí)現(xiàn)

            44. 在多繼承的時(shí)候,如果一個(gè)類繼承同時(shí)繼承自class Aclass B,而class AB中都有一個(gè)函數(shù)叫foo(),如何明確的在子類中指出override哪個(gè)父類的foo()?

            首先,fooA,B總應(yīng)該都是虛函數(shù),否則就直接覆蓋了,就沒有這個(gè)問題了;其次,這個(gè)問題從語(yǔ)法角度來(lái)看似乎是無(wú)法解決。因?yàn)槲覀儾荒芨脑性O(shè)計(jì)(不然也沒這個(gè)問題了:),所有只好從extend來(lái)考慮:

            class EA: public class A

            {

            public:

               virtual void foo(){fooA();}

            private:

               virtual void fooA() = 0;

            }

             

            class EB: public class B

            {

            public:

               virtual void foo(){fooB();}

            private:

               virtual void fooB() = 0;

            }

             

            這樣, 我就可以override不同的函數(shù)來(lái)達(dá)到這個(gè)目的了

            class AB: public EA, pubic EB

            {

            private:

            virtual void fooA(){}

            virtual void fooB(){}

            }

            45. 虛擬繼承的語(yǔ)法是什么?

                A

             /     \

            B      C

               \ /

                D

            class A{};

            class B: virtual public A{};

            class C: virtual public A{};

            class D: public B, public C{};

            46. 部分模版特例化和全部模版特例化有什么區(qū)別?

            偏特化只使用于類模板,而全特化適用與函數(shù)模板,類模板。

            偏特化的結(jié)果還是一個(gè)模板,而全特化的結(jié)果是一個(gè)具體的類型。

            47. 編一個(gè)函數(shù),使一個(gè)單項(xiàng)鏈表轉(zhuǎn)置。

            應(yīng)該是逆序吧

            這個(gè)小算法竟然花了我不少時(shí)間,沒有測(cè)試過(guò)的:

            struct ListNode
            {
                
            int data;
                ListNode
            * next;
            };

            void ReverseList(ListNode* p)
            {
                ListNode
            * p0 = NULL;
                ListNode
            * p1 = p->next;
                ListNode
            * p2 = p1 ? p1->next : NULL;

                
            // 三個(gè)指針,分別表示當(dāng)前處理節(jié)點(diǎn),前一節(jié)點(diǎn)與后一節(jié)點(diǎn)
                
            // 復(fù)用頭節(jié)點(diǎn)的next來(lái)保存節(jié)點(diǎn)
                while (NULL != p2)
                {
                    p
            ->next = p2->next; //暫存

                    p1
            ->next = p0;      //逆轉(zhuǎn)
                    p2->next = p1;

                    p0 
            = p1;            //往下一個(gè)節(jié)點(diǎn)
                    p1 = p2;
                    p2 
            = p->next;
                }
                p
            ->next = p1;    //p1末元素變?yōu)槭自?,鏈到頭節(jié)點(diǎn)上
            }

             

            48. 拆解一個(gè)整數(shù),比如4,可以拆解成4=3+1;4=2+24=2+1+14=1+1+1+1

            首先,對(duì)一個(gè)數(shù)進(jìn)行拆分后,可能又要對(duì)最后一個(gè)因子進(jìn)行拆分,所以要用遞歸;其次,第n+1個(gè)因子是小于等于第n個(gè)因子的;再者,對(duì)最后一個(gè)因子,我可以直接輸出,也可以繼續(xù)拆分。

            算法如下:

            void print(int res[], int num)
            {
                
            for (int i = 0; i < num; ++i)
                {
                    printf(
            "%d ", res[i]);
                }
                printf(
            "\n");
            }
            // n表示總數(shù),m表示最大因子
            void split(int n, int m)
            {
                
            static int res[100]; //保存結(jié)果
                static int num = -1//當(dāng)前因子下標(biāo)
                num++;
                
            //遞歸終止條件,為0不可再分,直接輸出
                if(0 == n) 
                {
                    print(res, num
            +1);
                    num
            --;
                    
            return;
                }
                
            else
                {
                    
            if(n == m) 
                    {
                        
            // 不拆,直接輸出
                        res[num] = m;
                        print(res,num
            +1);
                        num
            --;
                    }
                    
            else
                    {
                        
            // 拆分出第一個(gè)
                        res[num] = m;
                        n 
            = n-m;
                        
            //最大因子不可能大于總數(shù)
                        if(m>n) m = n;

                        
            // 循環(huán),第二個(gè)因子可以繼續(xù)拆分,而且按照最大因子不同可以拆分成多個(gè)
                        for (int i = m; i>=1--i)
                        {
                            split(n, i);
                        }
                        num
            --;
                    }    
                }
            }

            void Split(int n)
            {
                
            for (int i = n-1; i>=1; i--)
                {
                    split(n, i);
                }
            }


            唉,老了,這個(gè)小東西搞了我N久的。。。。

            49. 不用庫(kù)函數(shù),實(shí)現(xiàn)strcpy或者memcpy等函數(shù)

            一個(gè)字節(jié)一個(gè)字節(jié)的拷過(guò)去吧,但是要考慮源內(nèi)存與目標(biāo)內(nèi)存的重疊。

            50. 內(nèi)聯(lián)函數(shù)的作用和缺點(diǎn)

            把代碼直接插入到調(diào)用的地方,可以減少函數(shù)調(diào)用的次數(shù),但是會(huì)增加代碼的size,還有,如果內(nèi)聯(lián)失敗,在每個(gè)調(diào)用的obj里,都會(huì)產(chǎn)生一份該函數(shù)的拷貝,這樣既沒有怎么減少代碼的size,又沒有減少函數(shù)的調(diào)用,賠了夫人又折兵。。。

            51. 指針和引用的區(qū)別

            指針可以不初始化,引用必須初始化

            指針可以是NULL,而引用必須引用一個(gè)實(shí)在的對(duì)象

            指針可以重指向其他對(duì)象,引用一旦初始化,便不再改變

            52. 友元的意義

            使被聲明為友元的函數(shù)或類可以訪問某個(gè)類的非共有成員。

            53. 虛函數(shù)的意義

            實(shí)現(xiàn)多態(tài)

            54. Overload, Overwrite, Override 各自的特點(diǎn)和意義

            Overload: 函數(shù)重載(名字相同,參數(shù)不同)

            Overwrite:覆蓋

            Override: 虛函數(shù)重載

            55. 頭文件中的ifndef/define/endif 干什么用?

            防止該頭文件被重復(fù)引用。

            56. i nclude <filename.h> 和#i nclude “filename.h” 有什么區(qū)別?

            i nclude <filename.h> 從標(biāo)準(zhǔn)庫(kù)路徑去尋找該文件,對(duì)于VC來(lái)說(shuō),應(yīng)該還包括VC環(huán)境設(shè)置選項(xiàng)中的包含目錄以及工程屬性中指定的目錄

            i nclude “filename.h”:先在當(dāng)前目錄查找,如果找不到,按上面那種方式尋找

            57. C++ 程序中調(diào)用被C 編譯器編譯后的函數(shù),為什么要加extern “C”?

            C++語(yǔ)言支持函數(shù)重載,C 語(yǔ)言不支持函數(shù)重載。函數(shù)被C++編譯后在庫(kù)中的名字與C 語(yǔ)言的不同。C++提供了C 連接交換指定符號(hào)extern“C”來(lái)解決名字匹配問題

            58. 一個(gè)類有基類、內(nèi)部有一個(gè)其他類的成員對(duì)象,構(gòu)造函數(shù)的執(zhí)行順序是怎樣的?

            先執(zhí)行基類的(如果基類當(dāng)中有虛基類,要先執(zhí)行虛基類的,其他基類則按照聲明派生類時(shí)的順序依次執(zhí)行),再執(zhí)行成員對(duì)象的,最后執(zhí)行自己的。

            59. 請(qǐng)描述一個(gè)你熟悉的設(shè)計(jì)模式

            這個(gè)看你熟悉什么了。singleton最簡(jiǎn)單了,template method用的最多了,bridge挺炫的,command吹吹undo,redo也不錯(cuò)。。。。。

            60. UML 中,聚合(aggregation)和組合(composition)有什么區(qū)別?

            其實(shí)從名字就能分別出來(lái)了。

            聚合表示只是簡(jiǎn)單的聚聚,沒什么本質(zhì)的聯(lián)系,所以這些對(duì)象的生存時(shí)間也就沒什么關(guān)系了;

            組合表示了更加緊密的一種關(guān)系,這些對(duì)象有著共同的生存期。

            一個(gè)典型的例子是孫悟空,手臂,金箍棒的關(guān)系。。。。

            61. C#C++除了語(yǔ)法上的差別以外,有什么不同的地方?

            C++是直接生成可執(zhí)行代碼,而C#是先生成中間代碼,等到第一次執(zhí)行時(shí),才由JITJust In Time)生成可執(zhí)行的機(jī)器碼。

            還有就是(1) c#有垃圾自動(dòng)回收機(jī)制,程序員不用擔(dān)心對(duì)象的回收。(2)c#嚴(yán)禁使用指針,只能處理對(duì)象。如果希望使用指針,則僅可在unsafe 程序塊中能使用指針。(3)c#只能單繼承。(4)必須通過(guò)類名訪問靜態(tài)成員。不能像C++中那樣,通過(guò)對(duì)象訪問靜態(tài)成員。(5)在子類中重寫父類的虛函數(shù)時(shí)必須用關(guān)鍵字override,覆蓋父類的方法要用關(guān)鍵字new

            62. New deletemalloc free 的區(qū)別

            對(duì)于類,New delete會(huì)調(diào)用構(gòu)造,析構(gòu)函數(shù)

            new,delete都是能感知到類型的。new返回一個(gè)制定的類型,delete刪除一個(gè)指定的類型,從而不用給定size。而mallocfree都是處理void類型的。用時(shí)時(shí)必須經(jīng)過(guò)強(qiáng)制類型轉(zhuǎn)換。

            63. #define DOUBLE(x) x+xi = 5*DOUBLE(10);i是多少?正確的聲明是什么?

            I = 5*10+10 = 60 60

            正確的聲明是:

            #define DOUBLE(x) ((x)+(x))

            64. 有哪幾種情況只能用intialization list 而不能用assignment?

            當(dāng)類中含有constreference 成員變量;基類的構(gòu)造函數(shù)都需要參數(shù);類中含有其他類的成員對(duì)象,而該類的構(gòu)造函數(shù)都需要參數(shù)。

            65. C++是不是類型安全的?

            不是。兩個(gè)不同類型的指針之間可以強(qiáng)制轉(zhuǎn)換。C#是類型安全的。

            66. main 函數(shù)執(zhí)行以前,還會(huì)執(zhí)行什么代碼?

            全局對(duì)象的構(gòu)造函數(shù)會(huì)在main 函數(shù)之前執(zhí)行。

            67. 描述內(nèi)存分配方式以及它們的區(qū)別。

            1)從靜態(tài)存儲(chǔ)區(qū)域分配。內(nèi)存在程序編譯的時(shí)候就已經(jīng)分配好,這塊內(nèi)存在程序的整個(gè)運(yùn)行期間都存在。例如全局變量,static 變量。

            2 在棧上創(chuàng)建。在執(zhí)行函數(shù)時(shí),函數(shù)內(nèi)局部變量的存儲(chǔ)單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時(shí)這些存儲(chǔ)單元自動(dòng)被釋放。棧內(nèi)存分配運(yùn)算內(nèi)置于處理器的指令集。用的是cache,速度較快但容量較小。

            3 從堆上分配,亦稱動(dòng)態(tài)內(nèi)存分配。程序在運(yùn)行的時(shí)候用malloc new 申請(qǐng)任意多少的內(nèi)存,程序員自己負(fù)責(zé)在何時(shí)用free delete 釋放內(nèi)存。動(dòng)態(tài)內(nèi)存的生存期由我們決定,使用非常靈活,但問題也最多。

             (4)文字常量區(qū), 如char* p = "hello, world"就是一個(gè)例子,其內(nèi)存也在程序編譯的時(shí)候就已經(jīng)分配好?

              一個(gè)程序除了上面這些,還有一個(gè)(5)程序代碼區(qū)了。

            68. 比較一下C++static_cast dynamic_cast 的區(qū)別。

            Static_cast可以顯式的做一些自動(dòng)轉(zhuǎn)換,如一些int, char一些基礎(chǔ)類型的轉(zhuǎn)換,以及指針之間的轉(zhuǎn)換。但是其不保證安全性。Dynamic_cast主要作用其實(shí)在于把一個(gè)基類指針轉(zhuǎn)化為子類指針,因?yàn)檫@個(gè)基類指針真正指向的不一定是我們想轉(zhuǎn)換的類型的對(duì)象,所以轉(zhuǎn)換可能失敗,dynamic_cast能夠知道失敗而返回NULL,而static_cast就沒那么聰明了,原因是dynamic_cast會(huì)利用rtti去查找該轉(zhuǎn)換是否可行.(耗費(fèi)時(shí)間多點(diǎn)。)

            69. 當(dāng)一個(gè)類A 中沒有生命任何成員變量與成員函數(shù),這時(shí)sizeof(A)的值是多少,如果不是零,請(qǐng)解釋一下編譯器為什么沒有讓它為零。

            不為零,不同的對(duì)象應(yīng)該有不同的地址,假設(shè)我聲明一個(gè)A的數(shù)組A a[2],如果為零,那么a[0]a[1]的地址豈不相同了

            70. 已知兩個(gè)鏈表head1 head2各自有序,請(qǐng)把它們合并成一個(gè)鏈表依然有序,要求用遞歸方法進(jìn)行。

            歸并排序,應(yīng)該比較簡(jiǎn)單。要注意的是如果一個(gè)鏈表為空,那么可以簡(jiǎn)單的把另一個(gè)直接鏈過(guò)去了。


            注:有一部分題的答案是在網(wǎng)上看到的題中就包含了的。 

            posted on 2007-08-17 12:28 SmartPtr 閱讀(6006) 評(píng)論(14)  編輯 收藏 引用

            FeedBack:
            # re: Autodesk面試技術(shù)題解答
            2007-08-17 14:29 | 夢(mèng)在天涯
            恩,收集的不錯(cuò),準(zhǔn)備到autodesk嗎?

            關(guān)注CAD哦!  回復(fù)  更多評(píng)論
              
            # re: Autodesk面試技術(shù)題解答
            2007-08-17 14:39 | SmartPtr
            沒有啦。。。  回復(fù)  更多評(píng)論
              
            # re: Autodesk面試技術(shù)題解答
            2007-08-17 19:14 | 空明流轉(zhuǎn)
            autodesk的面試是問到你答不上來(lái)為止。  回復(fù)  更多評(píng)論
              
            # re: Autodesk面試技術(shù)題解答
            2007-08-17 22:07 | 黃少翔
            如此,點(diǎn)到為止,可能不足以知道你的底細(xì)吧......但是這樣豈不是讓每個(gè)面試的人都充滿挫折感....  回復(fù)  更多評(píng)論
              
            # re: Autodesk面試技術(shù)題解答
            2007-08-18 09:43 |
            5. struct vs. class 樓主好像答錯(cuò)了一半.struct是可以用模板的,我在VC7上試過(guò)了,pass
              回復(fù)  更多評(píng)論
              
            # re: Autodesk面試技術(shù)題解答
            2007-08-18 10:17 |
            63.題最好是#define DOUBLE(x) ((x)+(x))吧。這樣在遇到DOUBLE(1 << 5)就不會(huì)出錯(cuò)了(<<優(yōu)先級(jí)別比+低)
              回復(fù)  更多評(píng)論
              
            # re: Autodesk面試技術(shù)題解答
            2007-08-18 10:24 |
            67好像還有“常量字符串區(qū)”,跟靜態(tài)數(shù)據(jù)區(qū)類似,只是存放字符串。
            ---認(rèn)真拜讀過(guò)了,樓主總結(jié)得很詳細(xì),受益匪淺。樓主功力深厚,值得我這晚輩學(xué)習(xí).  回復(fù)  更多評(píng)論
              
            # re: Autodesk面試技術(shù)題解答
            2007-08-18 18:53 | SmartPtr
            謝謝 騰 的建議,63,65已作修改,第5點(diǎn)的話,我在VS2005上是不行的,如下:
            template<struct T>
            class A
            {
            public:
            T t;
            };
              回復(fù)  更多評(píng)論
              
            # re: Autodesk面試技術(shù)題解答
            2007-08-19 19:37 | linwen
            5. struct vs. class.
            還有一個(gè)默認(rèn)的繼承關(guān)系:
            struct 是 public 和 class 是 private
              回復(fù)  更多評(píng)論
              
            # re: Autodesk面試技術(shù)題解答
            2007-08-19 19:47 | linwen
            18. 一個(gè)4*4的格子,填入1~15 然后給個(gè)目標(biāo)狀態(tài),怎樣去搜索。

            比如: 1 2 3 6 再給出個(gè)最終的狀態(tài) (隨便都可以)
            0 4 5 7
            8 9 10 11
            12 13 14 14

            0 表示一個(gè)空格,可以移動(dòng),有點(diǎn)像拼圖;

            一般是用寬搜吧。  回復(fù)  更多評(píng)論
              
            # re: Autodesk面試技術(shù)題解答
            2007-08-20 08:46 | SmartPtr
            @linwen
            謝謝提醒:)
            struct和class的默認(rèn)繼承屬性的確也是區(qū)別, 對(duì)于18題的狀態(tài)搜索, 我想應(yīng)該用A*算法比較合適  回復(fù)  更多評(píng)論
              
            # re: Autodesk面試技術(shù)題解答
            2007-08-20 09:30 | Anders06
            哇,題可真多. 好多C++的都不清楚了

            @夢(mèng)在天涯
            哈哈,你們是同一個(gè)公司的,我都認(rèn)識(shí),嘎嘎  回復(fù)  更多評(píng)論
              
            # re: Autodesk面試技術(shù)題解答
            2007-09-07 14:09 | 夢(mèng)在天涯

            哦,那我們3個(gè)都一個(gè)公司哦!

            可以加msn哦1  回復(fù)  更多評(píng)論
              
            # re: Autodesk面試技術(shù)題解答
            2008-06-10 19:31 | Lotto
            不錯(cuò),頂了,有不少收獲,剛寫一個(gè)模版類,如果成員函數(shù)實(shí)現(xiàn)放在,cpp就一直報(bào)錯(cuò),剛想找點(diǎn)資料,看了這片不用找了,~~  回復(fù)  更多評(píng)論
              

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久久久久久久久久久中文字幕 | 久久亚洲欧美国产精品| 久久福利片| 91精品日韩人妻无码久久不卡| 久久精品aⅴ无码中文字字幕重口| 久久亚洲精品无码VA大香大香| 青青热久久国产久精品| 久久精品国产亚洲Aⅴ香蕉| 国内精品久久久久久久亚洲| 中文精品久久久久国产网址| 精品免费久久久久国产一区| 久久久久人妻精品一区三寸蜜桃 | 亚洲精品乱码久久久久久自慰| 2021国产精品久久精品| 亚洲欧美成人综合久久久| 久久青青草原亚洲av无码app| 久久精品99久久香蕉国产色戒 | 国产午夜精品理论片久久影视| 99久久人妻无码精品系列蜜桃 | 久久av免费天堂小草播放| 久久人人爽人人爽人人片AV麻豆| 蜜臀久久99精品久久久久久| 久久青青草视频| 久久精品无码一区二区无码| 人人狠狠综合久久亚洲婷婷| 久久伊人五月天论坛| 亚洲中文字幕无码久久精品1| 日韩人妻无码精品久久免费一| 国产精品久久波多野结衣| 久久精品国产欧美日韩| 精产国品久久一二三产区区别| 久久亚洲AV成人出白浆无码国产| 久久综合九色综合97_久久久| 国产精品免费看久久久香蕉 | 久久精品天天中文字幕人妻| 欧美精品一本久久男人的天堂| 久久中文字幕视频、最近更新| 久久国产劲爆AV内射—百度| 91久久成人免费| 无码人妻久久一区二区三区免费 | 久久精品国产亚洲精品2020|