天天看點

騰訊PCG微視部門-背景開發暑期實習一面-面經

面試時間:4月12日上午11點

面試官:小主管

面試時長:20分鐘

面試過程:

面試官介紹部門,現在部門内主要用golang和C++做開發。

沒有讓我自我介紹

Q:你的履歷上寫的是21屆畢業生?未來打算?

A:目前大四在讀,計劃讀研,在九月開學前大概有四個月的空閑時間計劃實習。

Q:程序和線程的差別?

A:

早期單道批處理作業系統中,CPU和IO串行,為了提高CPU使用率,提出程序,可以進行程序切換。提出線程是為了減小程序切換的開銷,因為同一程序内的線程互相切換開銷更小,進一步提高CPU使用率。

程序是資源配置設定的最小機關,在有線程的作業系統中,線程是最小基本機關。

程序有獨立的記憶體空間,而同一程序的不同線程共享該程序的記憶體。

(還想繼續往下說的時候被打斷了)

Q:哪些時候會進行程序切換?

A:

主要回答了從運作态切換到就緒态/阻塞态,可能的原因:

時間片到,被搶占;缺少資源,等待IO。

Q:了解過協程嗎?

A:協程是進一步對線程的劃分,它的優勢在于可以在使用者态進行切換,不需要轉到核心态,進而節省開銷。

Q:記憶體管理的虛實位址?

A:回答了分頁,分段,請求分頁,請求分段的具體内容。

Q:free或者delete一個零位址會不會報錯?

A:沒明白他的意思,于是我類比了JDK1.7中Hashmap底層中的table[0]存null,說這個零位址裡面存的應該是null,那麼會報錯。

Q:

char*p=“123”;

char a[]=“123”;

strlen§,sizeof§,strlen(a),sizeof(a)傳回值分别是多少?

A:沒複習過,猜的3,6B,3,6B。

Q:給定一個亂序int數組,先進行排序,然後輸出相鄰元素的最大內插補點。要求時空複雜度都為O(n)

測試輸入:3,1,9,10

測試輸出:6 (因為9-3)

測試輸入:5,5,5,5

測試輸出:0

A:我先用sort+周遊的方法AC了,他問我時間複雜度,我回答了sort底層,O(nlogn)。但是要求的O(n)沒想出來,說了一下大緻思路:肯定是一次周遊+輔助數組,排序算法的時間複雜度至少是nlogn,是以應該不需要實作真正意義上的排序(類比top k問題利用快排partition解決),輔助數組裡面存的應該是每個相鄰數字的內插補點,最後對它周遊求最大內插補點。

Q:對分布式有沒有了解?

A:了解過負載均衡算法,但是他沒讓細說。

反問:

今天面的部門屬于什麼事業群?(因為那邊雜音太大,面試官自我介紹的時候沒聽清)

今天面的怎麼樣?

我有哪些需要提高的地方?

結果:

已挂(騰訊辦事效率還是很高的,履歷是前幾天下午投的,無意向,傍晚就被撈了,中午面試完,午休之後就出結果了)

總結:

剛考完研,實習面試沒有準備充分,有的問題回答不上來,有的回答的不夠深。遺憾的是算法題沒有寫出最優解,平常刷題的時候忽視了有時空複雜度限制的題型。面試官知道我有讀研計劃之後好像對我不太感興趣了(猜測),是以提問大多沒有深挖。

不管怎麼說,這也是我面向企業的第一次面試,意識到自己的不足,有壓力才會有動力。

繼續閱讀