Autodest第一電面試題 (二)

4constc++c中的用法與區別(包括用在函數與變量前)

這裏就不多說了,特別指明一點是,const成員函數對一般的數據成員是不能改變的,只有一種特例,就是mutable修飾的數據成員,這個也有被問到。

5、說一下函數重載的好處,在什麼時候要用函數重載,如果返回類型不同是不是重載

函數重載就是將語義,功能相似的幾個函數用同一個名字表示,便於記憶,提高函數的易用性(C++語言採用重載機制的另一個理由是:類的構造函數需要重載機制)。重載函數只有參數不同,返回值必須是一樣,編譯器根據參數爲每個重載函數產生不同的內部標識符。

6、自定義int strlen(char *p),函數體內不能有任何變量申明,也不能使用循環

Int strlen(char *p)

{

       If(NULL==p|| p==’/0’)

              Return 0;

       Else

              Retun 1+strlen(p-1);

}

7、有n階臺梯,一個人一步可以走一梯或者走二梯,問有多少種走法,寫出程序來

一般的想法是用遞歸,第n階的走法,一定是到第n-1階的走法,與n-2階走法的和,所以何師兄立即就問,你還記得這是數學中什麼有名的結構麼,還好當助教有看到過這個,其實就是一個斐波那奇數列。

8、菲波那其數的程序實現,寫出程序來,爲什麼你不用遞歸,要用for語句,用遞歸他的時間複雜度是多少

然後立刻讓我寫出程序來,我選擇了用數組做,而不用遞歸,因爲遞歸時間複雜度太大。

long fib(int n)

{

       int t1=0 ,t2=1 ,t3;

       For(int i=0 ;i<n ;i++)

       {

               t3 = t1 + t2 ;

               t1 = t2;

               t2 = t3

}

Return t3;

}

不過說實在,說起什麼排序算法,遞歸的時間複雜度,就暈了,當年ACM集訓的東西,全都還給劉老大了,唉~~是得補補了

9、函數模板是什麼,爲什麼要使用模板,怎麼樣進行模板實例化

這個就不多講了哈。

10、快速排序是什麼,描述一下過程,時間複雜度是多少,最壞和最差情況下,時間複雜度又是多少

冒泡,選擇排序什麼的,估計是太簡單,所以沒有問,簡單簡介了一下快速排序的原理。又問到時間複雜度是多少,truly,這個又是我蒙的,人品再一次爆發了,又蒙對了。不過蒙也是要有道理的,要分析,雖然不知道,到底是怎麼出來的,不過即不是n平方,也不是n,一定以前見過的這個這麼怪異的值了。因爲無論是否交換,快速排序比較的次數都是一樣的,所以最壞最差情況下,應該一樣。

11listvector的區別,如果向vectorpuch_back時,數據已經超過開始分配的空間,系統會怎麼樣

這個說實在不知道,不過猜了一個,會新分配內存空間,居然猜對了。

12、自定義棧結構,遵守前進後出的原則,可是必須能知道當前棧中最小值(不要保存最小值,因爲最小值如果出棧以後,還要知道次小值)

這個題討論的最久,因爲我設計了兩種算法,雖然都可以實現,似乎效率不高,後來何師兄說了一種 算法導論 中提到的方法,的確比我用索引來得快。

13、用英文說明爲什麼你要來這個公司和部門

14、你現在作的項目是什麼,你負責什麼

15、用英文說明你的優點,並舉例說明

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章