騰訊筆試面試2011

轉載(1) http://qq.dajie.com/discuss/topic/62027/detail

(2)http://technicolor.flycoder.org/articles/471.html

騰訊實習的招聘已經是很久的事了,爲了不讓這個系列草草收尾,我還是在假期裏了結了它吧。這是“找實習”系列的終結篇了~ 其實早就找到實習了,只不過我喜歡做標題黨~ [大笑] ~ 另外兩篇在這裏,和這裏

騰訊實習招聘宣傳的很早,所以我很早就網申了,不過當時投簡歷的時候投了Java方向(這方面也算小有修爲),後來筆試的時候卻陰差陽錯的選了前端開發的JS方向~

網申要過應該很簡單,有個靠譜的大學,有個靠譜的履歷就可以了,學習成績似乎都不用太高~

網申過了就是筆試。我的筆試是在4月23日上午10:00(翻手機記事本找到的~~),在大學城的華工。

 

筆試

筆試題目分爲兩個部分:基礎、拓展。

基礎部分大多是一些微機原理、計算機網絡、操作系統、數據結構的知識,題目不難,就考基礎。

基礎的題目大部分忘了,不過……雖然數據結構掌握的還過得去,但計算機網絡是忘的差不多了,操作系統略有了解,微機原理完全沒學呀!!!! [抓狂] 悲催呀,有木有!!! [淚] 非計算機專業出身的孩子傷不起呀!!!有木有!!!

不過,我基礎部分做的還是說的過去的~哈哈~ [偷笑] ~

總之,縱使代碼能敲的噼啪響,基礎部分還是需要紮實。

拓展部分題目就是當初網申時候選的方向,就一道題。不過所有方向的題目都印在一張捲上,想做啥都行。

我先說說Java的題目吧。

Java方向有兩題,任選一題。第一道是關於Android的多線程,據說不難,可是我看到Android就直接忽略了~ 俺Java後來玩的是Struts2、Spring、Hibernate,估計騰訊中用Java來做Web的不多,SSH還是做商業項目比較有市場,於是果斷忽略之。

然而我這忽略也忽略的太大了,木有看到Java還有第二題,是筆試結束之後別人告訴我的~ 傷感呀~ 第二題那個簡單呀~ 我閉着眼睛都做出來了(主要是之前看過)~

 

第二題題目是這樣的:

某花心男外面有了情婦,他的QQ上超過半數的聊天記錄都是和那情婦對話,也就是說聊天記錄中排除花心男自己講的話之後,他情婦的聊天記錄超過其他人的總和。很不巧,那個花心男的老婆通過特殊渠道取得了他老公的所有QQ聊天記錄msgList(結構爲LinkList,每個數組項包含屬性qqNumber、content、time,約有幾十萬條數據),現在需要你編個程序把那個情婦的名字給找出來。

這個題目太特麼喜感了~ QQ的聊天記錄就這麼容易被盜嗎~ 是社會工程學的偉大?還是安全管家需要再接再厲?哈哈~

說白了,就是找出數組中出現次數超過半數的那個元素。這裏假設msgList只包含情婦和其他人的記錄(不包括花心男),因爲直接刪了花心男的數據也只需時間複雜度o(n),不影響。

解法一:

這是最容易想到的一種方法,也就是遍歷msgList,用一個countMap記錄每個qqNumber出現的次數,然後遍歷countMap的keySet,找出出現次數最多的那個qqNumber。

這種方法的時間複雜度爲o(n),空間複雜度爲o(n)。

解法二:

雖然上面的算法時間複雜度已經是o(n),但是很費空間,因爲n不是個小數目。另一種方法是對msgList的qqNumber進行快速排序,由於情婦的qqNumber出現超過半數,則排序後數組的中數必定是情婦的qqNumber~~~問題解決~~~~

這種方法的時間複雜度爲o(nlogn),空間複雜度爲o(1)。

解法三:

好吧,上面兩種解法都很不錯了,但還能有更好的嗎?複雜度爲o(n),空間複雜度爲o(1)的?

答案是,有的。

每次在msgList裏面刪除兩個不同qqNumber,直到無法再刪爲止。由於情婦的聊天記錄超過半數,所以最後生還的qqNumber肯定是她的。

這種方法的時間複雜度爲o(n),空間複雜度爲o(1)。

 

這道題竟然被我雪亮雪亮的雙眼給硬生生忽略了,悲劇呀~ 不過後面JS的題目很容易,就一題,好像是遍歷一個table,找出某個td,然後改變它的style——我就是靠這題矇混過關的~估計考的是對語法的熟練度。

 

於是,我就踏上了前端JS的道路。

 

一輪面試

筆試完之後,我就去市區玩了,很不幸晚上錯過了地鐵,然後決定和同學在外面通宵。更不幸的是,我在當天很晚的時候收到了第二天早上9點騰訊一面的通知~[淚] ~震精呀~ 改卷效率也太高了吧~

第二天一早就趕7點鐘的地鐵,趕到學校8點多,噼裏啪啦刷牙洗臉換衣服,然後就“精神抖擻”的奔向面試地點(好在離學校近)

面試地點是在華工酒店的客房裏,環境蠻不錯的(騰訊那幾天把華工酒店的幾層樓都給包了~有米)。面試我的是一個GG,年輕俊氣的臉龐,溫文爾雅,藍色的Polo衫彰顯着青春的激情與活力(拍個馬屁,哈~)

他像聊家常一樣和我聊,主要通過我自我介紹的內容來不斷挖掘更深的信息,各種技術社團、項目經歷,不過沒有很深的去探討技術細節的東西。

後面聊開了就問我在前端開發方面的瞭解和積累。我就開始吹了(不過都是靠譜的吹),說了一些自己對前端工作的看法;說我平時很喜歡瞭解一些關於前端開發的理論與實踐,一直有訂閱博客的習慣,經常看UCDChina、騰訊CDC、淘寶UED的博客;還說有看過jQuery的源碼,瞭解了它的實現方法;還說了自己在前端方面的一些小作品(真的很小~)……

雖然以前一直有接觸前端的技術,也很感興趣,弄過一些小作品,可是一直沒有花大力氣去研究。那個GG人很好,沒有怎麼爲難我,如果那個時候考我一些JS的難題我還真不一定能過~

最後,他問我有什麼問題問他,這個時候我囧了~ 木有想過~ 最後靈光一閃,問了一下他前端開發人員的職業規劃,以及和後臺開發人員的對比(後臺開發以後可以有很多深入研究的方向,例如移動互聯網、雲計算、數據挖掘等,那前端開發人員的技術突破點在哪?)。雖然當初他的答案我不是很滿意,但是我現在似乎已經找到了自己那個問題的答案。

他似乎對我印象很好,走的時候跟我握握手,暗示我“應該沒問題了”。

回宿舍,倒頭大睡~

 

二輪面試

一面後的第二天晚上,我收到了二面的通知,時間是26日上午10:00。

面試我的是一箇中年男人,估計是中層領導。他面試過程中一直滿臉笑容,講話和藹,但總讓我覺得有點笑面虎~哈哈~

他問的問題主要是結合自我介紹和簡歷來問。他會不斷深究你講的項目內容,例如對你影響最大的項目是哪個,在這個項目中做了什麼,怎麼分工合作,遇到最大的難題是什麼,怎麼解決,從中學到什麼,這個項目對你以後的項目有什麼影響等等。

問完項目之後,話鋒一轉,問我有木有學過C++——我說有,不過很久沒用了,主要用Java。他又問,有木有學過數據結構——我說有。然後就出了道算法題考我,給了我紙和筆。

直接上題:

有個幾十萬個節點的單向鏈表,你如何判斷它是否帶環,如何找出環開始的節點。

騰訊面試的算法題

這道題看起來簡單,不過還是要想一陣子的,如果要找到比較優化的解法也不容易。好在,我之前做過~~

第一小問:

最簡單的想法就是遍歷鏈表,記錄每個結點出現的次數,如果有結點重複出現,說明有環。

不過這個方法的很佔空間,正確的做法是從鏈表頭部放兩個不同速度的指針(p、q)去遍歷鏈表,p每次走一個節點,q每次走兩個節點。

如果q到了鏈表尾,則說明不存在環;如果存在環,由於q的速度比p快,當p進入環內之後,q必定會從後面超過p,然後和p重合,兩個指針重合則說明有環。

當p進入環內時,p和q之間的距離必定小於環的長度L,則L步之內p、q必定能重合,所以時間複雜度爲o(n),空間複雜度爲o(1)。

第二小問:

這就是個數學問題了,先說解法:設p、q相遇處爲X,讓p從x處開始,q從鏈表頭結點開始,每步都走一個節點,相遇處則爲環的開始節點。

原理如下:

設頭結點到環開始點H的距離爲h,環的長度爲l,鏈表長度爲L=h+l。分爲兩種情況考慮,一種是l>h,一種是l<h,前者比較容易明白,弄明白前者,後者也就好懂了。我就只說第一種情況的,l>h。

當p到達H時,q已經走了2h,此時p、q都已經進入環中。由於p、q速度不同,他們形成追趕,q到p的距離爲l-h,也就是還要走l-h步才能相遇。設相遇點爲X,則p從頭結點到X走了l=h+(l-h)步,則離環的開始節點還有h=L-l的距離,也就是和頭結點到環開始節點的距離一樣

後一種情況,l<h,只需將餘數h%l弄清楚就可以了。

 

幸好之前做過,思路理順了,不過也還是花了點時間的。期間面試官會各種打岔,問你各種性能,複雜度,有沒其他解法的問題。

然後還問了一些個人興趣愛好,有沒女友,家庭情況,人生規劃的問題。

然後是殺手級問題:我有什麼問題問他~~~再次無語凝咽~~~又是用一面的問題混過去了~~~

最後握握手,say good bye,就回去等三面通知了~~

總之呢,平時多看書,多思考,多積累~~~

 

三輪面試

三面等的就相對比較久,好像是29號上午11:00去面的,是HR面,也就是最後一面了~

那個HR面無表情,寡言少語,眼睛只看電腦,我那個壓力呀~

不過問的問題都是興趣愛好,有沒女友,家庭情況,人生規劃……只要沒大漏子就行了……(據說有個大牛開口就是“我以後要出國”~ [吃驚] 

問了十來分鐘,就say good bye了,餓了吃飯去~

 

等通知及其他

據說進了3面的大部分都能獲得實習機會,所以我回去就沒多想了,坐等消息。不過一等就等了小半個月,5月10號才收到錄用函。

實習期至少兩個月,各種福利待遇還不錯:每月有1400住房補貼(差不多夠吃夠住),有一次性600來回路費(省內),而且剛到的時候還有15天的酒店住宿(據說4星級),還有每月還有“業內富有競爭力的實習工資”。

 

這次騰訊的筆試面試還是蠻順利的,而且騰訊還是我心目中非常向往的企業,實習開始之後一定會努力的!

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