中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      名企招聘C++程序員筆試題及分析

      時間:2024-09-03 05:34:13 面試筆試 我要投稿
      • 相關推薦

      名企招聘C++程序員筆試題及分析

      名企招聘C++程序員筆試題及分析

      名企招聘C++程序員筆試題及分析

      (一)

        單向鏈表的反轉是一個經常被問到的一個面試題,也是一個非常基礎的問題。比如一個鏈表是這樣的: 1->2->3->4->5 通過反轉后成為5->4->3->2->1。

        最容易想到的方法遍歷一遍鏈表,利用一個輔助指針,存儲遍歷過程中當前指針指向的下一個元素,然后將當前節點元素的指針反轉后,利用已經存儲的指針往后面繼續遍歷。源代碼如下:

        struct linka {

        int data;

        linka* next;

        };

        void reverse(linka*& head) {

        if(head ==NULL)

        return;

        linka *pre, *cur, *ne;

        pre=head;

        cur=head->next;

        while(cur)

        {

        ne = cur->next;

        cur->next = pre;

        pre = cur;

        cur = ne;

        }

        head->next = NULL;

        head = pre;

        }

        還有一種利用遞歸的方法。這種方法的基本思想是在反轉當前節點之前先調用遞歸函數反轉后續節點。源代碼如下。不過這個方法有一個缺點,就是在反轉后的最后一個結點會形成一個環,所以必須將函數的返回的節點的next域置為NULL。因為要改變head指針,所以我用了引用。算法的源代碼如下:

        linka* reverse(linka* p,linka*& head)

        {

        if(p == NULL || p->next == NULL)

        {

        head=p;

        return p;

        }

        else

        {

        linka* tmp = reverse(p->next,head);

        tmp->next = p;

        return p;

        }

        }

        ②已知String類定義如下:

        class String

        {

        public:

        String(const char *str = NULL); // 通用構造函數

        String(const String &another); // 拷貝構造函數

        ~ String(); // 析構函數

        String & operater =(const String &rhs); // 賦值函數

        private:

        char *m_data; // 用于保存字符串

        };

        嘗試寫出類的成員函數實現。

        答案:

        String::String(const char *str)

        {

        if ( str == NULL ) //strlen在參數為NULL時會拋異常才會有這步判斷

        {

        m_data = new char[1] ;

        m_data[0] = '' ;

        }

        else

        {

        m_data = new char[strlen(str) + 1];

        strcpy(m_data,str);

        }

        }

        String::String(const String &another)

        {

        m_data = new char[strlen(another.m_data) + 1];

        strcpy(m_data,other.m_data);

        }

        String& String::operator =(const String &rhs)

        {

        if ( this == &rhs)

        return *this ;

        delete []m_data; //刪除原來的數據,新開一塊內存

        m_data = new char[strlen(rhs.m_data) + 1];

        strcpy(m_data,rhs.m_data);

        return *this ;

        }

        String::~String()

        {

        delete []m_data ;

        }

        1.求下面函數的返回值(微軟)

        int func(x)

        {

        int countx = 0;

        while(x)

        {

        countx ++;

        x = x&(x-1);

        }

        return countx;

        }

        假定x = 9999。 答案:8

        思路:將x轉化為2進制,看含有的1的個數。

        2. 什么是“引用”?申明和使用“引用”要注意哪些問題?

        答:引用就是某個目標變量的“別名”(alias),對應用的操作與對變量直接操作效果完全相同。申明一個引用的時候,切記要對其進行初始化。引用聲明完畢后,相當于目標變量名有兩個名稱,即該目標原名稱和引用名,不能再把該引用名作為其他變量名的別名。聲明一個引用,不是新定義了一個變量,它只表示該引用名是目標變量名的一個別名,它本身不是一種數據類型,因此引用本身不占存儲單元,系統也不給引用分配存儲單元。不能建立數組的引用。

        3. 將“引用”作為函數參數有哪些特點?

        (1)傳遞引用給函數與傳遞指針的效果是一樣的。這時,被調函數的形參就成為原來主調函數中的實參變量或對象的一個別名來使用,所以在被調函數中對形參變量的操作就是對其相應的目標對象(在主調函數中)的操作。

        (2)使用引用傳遞函數的參數,在內存中并沒有產生實參的副本,它是直接對實參操作;而使用一般變量傳遞函數的參數,當發生函數調用時,需要給形參分配存儲單元,形參變量是實參變量的副本;如果傳遞的是對象,還將調用拷貝構造函數。因此,當參數傳遞的數據較大時,用引用比用一般變量傳遞參數的效率和所占空間都好。


      【名企招聘C++程序員筆試題及分析】相關文章:

      名企招聘有新招02-18

      了解名企的招聘渠道02-28

      名企面試題02-18

      名企面試試題——戴爾02-18

      名企刁鉆面試題02-19

      名企招聘者評點面試問題02-18

      武漢:20家名企取消在高校招聘02-28

      名企面試試題 面試題目 Google02-24

      不可不知的中外名企招聘標準02-27

      普天C++筆試題02-18

      主站蜘蛛池模板: 黑丝美女喷水在线观看| 亚洲免费视频网站在线| 精品人妻一区二区久久| 亚洲Av无码专区尤物| 国产精品玖玖资源站大全| 中文字幕日韩人妻高清在线| 亚洲成a人片在线观看高清| 国产一区二区a毛片色欲| 亚洲国产高清美女在线观看| 国产不卡视频一区二区在线观看 | 国内色精品视频在线网址| 日本一区二区三区专区| 池州市| 泰安市| 九龙县| 明光市| 巴林左旗| 丰满人妻无奈张开双腿av| 97国产精品麻豆性色| 通城县| 镇平县| 友谊县| 男女好痛好深好爽视频一区| 泽州县| 国产免费无码9191精品| av在线亚洲国产精品| 国产成人一区二区三区久久精品 | 国产精品自拍激情在线观看| 一区二区三区在线视频在线观看| 国产亚洲成人精品一区| 成人综合久久精品色婷婷| 国产va在线播放| 真人在线射美女视频在线观看 | 亚洲片在线视频| 亚洲中文字幕有综合久久| 国产av一区二区三区丝袜| 在线一区二区三区视频观看| 日本一区二区精品专区| 久久久久一| 成人黄网站免费永久在线观看| 蜜臀久久人妻一区二区|