天天看點

PPS 2013校園招聘 研發類筆試題目(C++)

文章來源:http://www.mianshibaike.com/a/C_C__/C__/20130710/301_2.html,轉載請注明。

1、vector和list的差別

差別:1)vector的對象實在一塊連續的記憶體空間上,而list的對象可以不在來連續的記憶體空間上。

   2)vector元素的随機通路的效率很高,插入和删除效率較低,當vector存儲的對象的構造較為複雜時,移動vector的元素需要調用對象的拷貝構造函數,效率因而很低。vector是離散存儲的,通路元素時需要從頭或者尾部開始時進行周遊(不能随機通路),删除和插入元素相比vector的效率高,不需要移動元素。vector的大小擴張通常是2倍的擴充。

  3)vector是單向的,list是雙向的。

  4)vector适用:對象數量變化少,簡單對象,随機通路元素頻繁;list适用:對象數量變化大,對象複雜,插入和删除頻繁。

2、C++中const的一些常用方法

1)定義一個隻讀的變量。(而非一個常量)

2)修飾函數的參數。當我們希望函數的實參不被改變時,用const修飾函數的形參,防止實參發生改變,特别是指針參數,防      止指針本身發生改變。

3)修飾類的成員函數,可以防止類的資料成員和this指針發生改變。

4 )修飾一個類的對象。

      例如:const CMyClass mc,這時的mc對類成員變量和成員函數的調用是有限制的:

      a、能讀取類的成員變量而不能去修改它;

      b、隻能調用末端有const修飾的函數。

3、輸出數組的K個最大值

使用STL中的partial_sort.

partial_sort使用的是堆排序,建堆的時間複雜度為O(n),調整堆的時間度雜度為o(logn),如果調用partial_sort時middle的值為last的值,則相當于調用sort,對所有元素排序,但是堆排序是穩定的排序。假如求的是m個元素的partial_sort,則,o(n) + m*o(logn);

相比使用sort()函數使用的快速排序,其時間複雜度為n(logn)。

4、對連結清單進行排序

struct Node

{

int key;

Node *next

};

5、 給出隻允許程序單例運作的代碼

在linux/unix環境下通過檔案所實作,見APUE-單執行個體守護程序。

為了正常運作,某些守護程序時實作為單執行個體的,也就是在忍一時刻隻運作該守護程序的一個副本。例如,該守護程序可能需要互斥的通路一個裝置。在cron守護進城的情況下,如果同時有多個實力運作,那麼每個飛奔都可能試圖開始某個預定的操作,于是造成了該作業系統的重複執行,很可能導緻出錯。

使用檔案鎖和記錄鎖機制的方法可以用來保證一個守護進城隻有一個副本在運作。如果每一個守護程序建立一個檔案,并且在整個檔案上加上一把寫鎖,那就隻允許建立一把這樣的寫鎖。是以在此之後的如試圖在建立一把這樣的寫鎖就将失敗,一次後序的守護程序副本指明已有一個副本正在運作。

檔案和記錄鎖提供了一種友善的互斥機制。如果守護程序在整個檔案上得到一把寫鎖,那麼在該守護程序終止時,這把鎖江北自動的删除。簡化了複原蘇圩的處理,出去了對以前的守護程序實力需要進城清理的有關操作。

6、讀出指定目錄下的txt檔案,統計txt檔案數目

7、tcp三次握手的序列圖

文章來源:http://www.mianshibaike.com/a/C_C__/C__/20130710/301_2.html,轉載請注明。

繼續閱讀