2015趨勢科技校招筆試面試

2022-02-21 10:46:33 字數 3817 閱讀 3919

一、筆試

1.多型類中的虛函式表是

compile-time

,還是run-time

時建立的

?

.而物件的隱藏成員

--虛函式表指標是在執行期

--也就是建構函式被呼叫時進行初始化的

,這是實現多型的關鍵

.2.乙個父類寫了乙個

virtual 

函式,如果子類覆蓋它的函式不加

virtual ,

也能實現多型

? 在子類的空間裡,有沒有父類的這個函式,或者父類的私有變數?

答案:只要基類在定義成員函式時已經宣告了virtual

關鍵字,在派生類實現的時候覆蓋該函式時,

virtual

關鍵字可加可不加,不影響多型的實現。子類的空間裡有父類的所有變數(static除外)。  

3.建構函式可以為虛函式嗎?

不能,建構函式是在物件完全構造之前執行的,在建構函式執行的時候,物件的動態型別還不完整。

4.常成員函式和非常成員函式可以共存嗎?

可以,常量物件呼叫常成員函式

5.對於下列的程式片段,哪些表示式的結果為6?bc

int arr[3][3]=,,};int i=1,j=2;

a.**(arr+3*i+j)  b.*(*(arr+i)+j)  c.*(arr[i]+j)  d.*(arr+3*i+j)

6.string str=;

cout<*sizeof 不是函式,也不是一元運算子,他是個類似巨集定義的特殊關鍵字;sizeof()括號內在編譯過程中是不被編譯的,而是被替代型別,如

int a=8

;sizeof(a

);在編譯過程中,它不管

a的值是什麼,只是被替換成型別

sizeof

(int

);結果為

4.如果

sizeof

(a=6

);呢,

也是一樣的轉換成

a的型別,但是要注意

因為a=6

是不被編譯的,所以執行完

sizeof

(a=6);a

的值還是

6,是不變的

.二、面試

面試真真是想吐槽一下,也不知道是趨勢最近不缺人還是咋的,也有可能我第乙個還沒安排好流程,我報的是開發,一上來就安排了乙個搞測試的,然後聊到一半正到重點被打斷,接著換了乙個據說來自最有錢的部門的技術經理,然後又重新開始,c++基礎、繼承、多型、記憶體分配機制,實現快速插入查詢用什麼資料結構最好,問得都挺簡單的,讓寫了乙個字串替換的小程式(輸入乙個帶有'\r\n'的字串,將其中的'\r\n'全部替換為'\r',當時只傻傻的用兩層迴圈實現);

回來後研究了下,可以轉string實現:

1

//用string的replace()或erase()和insert()

2const

char* replace1(char *input)

11char *end=new

char[strlen(input)+1

];12

strcpy(end,s.c_str());

13return

end;

14//

return s.c_str();

//error: s物件被釋放

15 }

稍微難一點關於stl裡面map底層是通過什麼資料結構實現的?

tcp是阻塞機制的嗎?

c++stl底層資料結構實現

(重要,待研究)

:1.vector      底層資料結構為陣列 ,支援快速隨機訪問 

2.list            底層資料結構為雙向鍊錶,支援快速增刪 

3.deque       底層資料結構為乙個**控制器和多個緩衝區,詳細見stl原始碼剖析p146,支援首尾(中間不能)快速增刪,也支援隨機訪問。

deque是乙個雙端佇列(double-ended queue),也是在堆中儲存內容的.它的儲存形式如下:

[堆1] --> [堆2] -->[堆3] --> ...

每個堆儲存好幾個元素,然後堆和堆之間有指標指向,看起來像是list和vector的結合品.

4.stack        底層一般用list或deque實現,封閉頭部即可,不用vector的原因應該是容量大小有限制,擴容耗時 

5.queue     底層一般用list或deque實現,封閉頭部即可,不用vector的原因應該是容量大小有限制,擴容耗時 

(stack和queue其實是介面卡,而不叫容器,因為是對容器的再封裝) 

6.priority_queue     的底層資料結構一般為vector為底層容器,堆heap為處理規則來管理底層容器實現 

7.set                   底層資料結構為紅黑樹,有序,不重複 

8.multiset         底層資料結構為紅黑樹,有序,可重複  

9.map                底層資料結構為紅黑樹,有序,不重複 

10.multimap    底層資料結構為紅黑樹,有序,可重複 

11.hash_set     底層資料結構為hash表,無序,不重複

12.hash_multiset 底層資料結構為hash表,無序,可重複  

13.hash_map    底層資料結構為hash表,無序,不重複 

14.hash_multimap 底層資料結構為hash表,無序,可重複 

1.vector      底層資料結構為陣列 ,支援快速隨機訪問 

2.list            底層資料結構為雙向鍊錶,支援快速增刪 

3.deque       底層資料結構為乙個**控制器和多個緩衝區,詳細見stl原始碼剖析p146,支援首尾(中間不能)快速增刪,也支援隨機訪問。

deque是乙個雙端佇列(double-ended queue),也是在堆中儲存內容的.它的儲存形式如下:

[堆1] --> [堆2] -->[堆3] --> ...

每個堆儲存好幾個元素,然後堆和堆之間有指標指向,看起來像是list和vector的結合品.

4.stack        底層一般用list或deque實現,封閉頭部即可,不用vector的原因應該是容量大小有限制,擴容耗時 

5.queue     底層一般用list或deque實現,封閉頭部即可,不用vector的原因應該是容量大小有限制,擴容耗時 

(stack和queue其實是介面卡,而不叫容器,因為是對容器的再封裝) 

6.priority_queue     的底層資料結構一般為vector為底層容器,堆heap為處理規則來管理底層容器實現 

7.set                   底層資料結構為紅黑樹,有序,不重複 

8.multiset         底層資料結構為紅黑樹,有序,可重複  

9.map                底層資料結構為紅黑樹,有序,不重複 

10.multimap    底層資料結構為紅黑樹,有序,可重複 

11.hash_set     底層資料結構為hash表,無序,不重複

12.hash_multiset 底層資料結構為hash表,無序,可重複  

13.hash_map    底層資料結構為hash表,無序,不重複 

14.hash_multimap 底層資料結構為hash表,無序,可重複 

2017趨勢科技校園招聘演算法題

題目 現有給定公升序排列的整形陣列a n 和整數s,需要在整型陣列中找到任意個小標,使得各小標對應數字之和為s,輸出所有可能的下標組合。例如 陣列 1,4,8,10,12,15,22,25,31,x 30 可得 下標 2,6 a 2 a 6 30 下標 0,1,3,5 a 0 a 1 a 3 a 5...

趨勢科技筆試題

1 下面程式的輸出是多少?cpp view plain copy print?voidgetmemory char p intmain void void getmemory char p int main void a hello b hello world c hello world run t...

趨勢科技筆試題

3 以下的 可放在vc 6.0裡面執行。題目是要求輸出 trendmicrosoftuscn 然後要求修改程式,使程式能輸出以上結果 如下 include include using namespace std int main int argc,char argv string p new str...