騰訊面試經驗2

時間:2017年10月16日11:30面試。

地點:重慶萬達艾美酒店。

信息:女,本科應屆生,面試后臺開發崗位。

?

  在深圳的面試已經全部結束了,偶然間聽朋友說重慶、長沙等場地的面試還在進行中,只要修改面試地點,仍然有機會拿到面試機會。所以我抱著試一試的心態,在騰訊校招官網上修改面試地點為重慶。10月13日中午收到了騰訊的面試通知,面試時間是10月16日11:30,面試地點在重慶萬達艾美酒店。

  收到短信通知的那一刻就已經有點緊張了,一開始我也很猶豫到底要不要跑回重慶去面試,電話里我爸說我既然那么喜歡騰訊,就應該抓住每一次機會去嘗試,不看結果,至少我們經歷過嘛。所以14日一大早就買上了15早上飛往重慶的機票。我也不斷提醒自己,緊張只會影響發揮,就當自己是回重慶改善飲食、度度假的。抱著這種心態,一直到走進萬達艾美酒店之前我都再沒有任何的緊張感。當酒店正門在視野中出現的那一刻還是忍不住緊張,所以我努力使自己保持微笑,一有機會就跟身邊的人閑聊,漸漸熟悉周圍環境之后也就忘記緊張這個名詞了。

  電梯里遇到兩個小哥哥,兩個都是面試產品經理的,其中一個也是跟我一樣來自深圳,酒店服務員讓我們來到4樓,一出電梯就看到一組二維放置的椅子,里面稀稀落落的坐了不少來面試的,他們全是霸面的,凡事有正式通知面試的同學直接被送到里面房間掃碼簽到等待。跟我帶路的是騰訊的小哥哥,面帶微笑詢問我是面試什么崗位,我說后臺,他臉上的表情很豐富,非常驚訝我作為一個女生來面后臺!我說我是本科生,他的表情更加夸張了......驚訝轉佩服,他估計是佩服我的勇氣,說看好我并未我加油。

  簽到后,里面房間的位置也就坐著一個同學在等待面試,我徑直走到他旁邊的位置坐下,主動跟他搭話,他是面試前端的研究生,一邊跟我說著話一邊不停地敲著鍵盤,看他很專心地在研究他的代碼,我也就沒再打擾了。靜坐了一分鐘左右,又進來一個男生,坐在我們后面的位置,主動向我們兩個搭話,他是來復試后臺的重慶大學研究生,旁邊男生一聽是后臺,立馬讓我跟他好好交流,我也很識趣地移到后面男生的旁邊坐下。這個男生很nice,得知我是本科生,看了看我的簡歷,然后向我分享了他的經歷——他在本科畢業之后也向我一樣來面試了騰訊,但是被拒,拖了一年后開始準備考研,考了兩次之后成功考上了重慶大學的研究生,直到現在他自己手上已經有其他公司的offer,然后再來面試騰訊。言語之間已經感受到他十足的信心了。可能覺得這個時候的我很像當年的他,所以給了我很多建議。還沒來得及互相留聯系方式,他就被叫去面試了。他走后立馬又來了一個復試后臺的重慶郵電研究生,坐在我旁邊,得知我是一面且是本科生,不再感興趣,于是掏出手機開始看資料,一邊看一邊告訴我讓我看看XXX,一面可能會被問到。不怕丟臉,講真的,他說的那兩個名詞我都沒聽過......這也許就是本科生和三年研究生的差距吧!

  終于輪到我面試了,地點是7樓,走出等候室,仍然是剛剛的小哥哥給我帶路,幫我刷卡按電梯,并一直夸贊和鼓勵我,我苦笑一句說我自己也覺得很意外,而且我看過來面試的都是研究生,他很溫柔地告訴我沒關系,面試官對研究生的要求和本科生的要求是不一樣的哦~最后送了我一個微笑和好運祝福后讓我關上了電梯門。

  電梯到達7樓,做了一次深呼吸后,我面帶微笑走進了726房間,面試房間的布局和我想象中的一樣,面試官的狀態也和我想象中的一樣 —— 一副剛起床的狀態!面試官坐在書桌的電腦前等我的到來,我在走向他的途中用余光掃到旁邊床上被子是凌亂的,床邊他的靴子東倒西歪并向外吐著襪子,床頭柜上還有打開未吃完的薯片。面試官看起來沒有很好相處,我會這么覺得,大概是因為他沒有回應我的微笑吧。從進門開始我就介紹了我自己的名字,并一直面帶微笑。

  面對著他坐下后,首先被要求做個簡單的自我介紹,名字+大學+專業,然后說明我是深圳過來重慶面試的,他很驚訝我來自深圳,同時也很好奇,我原本以為他是知道我9月份在深圳已經面試過的,而且對于每個已經面試過的同學面試官都會寫一份評語,我也以為他已經看過評語,看他的反應大概是什么都不知道,所以我做了一個詳細的說明之后便接著我的自我介紹模版說下去。待我說完,他估計是看到了之前面試官對我的評語之類的,沒有再問我簡歷上的內容,直奔主題——做題!一共做了三道題。

第一題 ?合并多個有序數組

  第一道題是算法設計題:有N個數組,每個數組有M個元素且呈升序,求這N個數組的并集。例如:第一個數組有{1,2,3},第二個數組有{2,3,5},則合并后為{1,2,3,5}。

(1)我首先想到的是犧牲空間節約時間的辦法,申請一個超大的數組A,初始化為0,遍歷這N和數組,將元素作為A數組的下標訪問A數組并置1;N個數組訪問結束之后,再遍歷一次A數組,其中值為1的下標的集合就是合并后的結果。聽我講完,他首先問我時間復雜度和空間復雜度,時間復雜度是O(N*M),空間復雜度是元素的取值范圍。面試官提示我本道題是在64位系統下實現,而我需要的空間大小為元素取值的范圍,也就是說最多能達到2^64遠大于1Gb,所以這個方法是不可行的。

(2)我知道我一直沒有利用到“有序”這個關鍵詞,所以我抓緊這關鍵詞,首先想到的是二分查找:以兩個數組A、B合并為例,以A數組為基準,遍歷B數組的元素,利用二分查找,將B的元素在A中找到最適合的位置,

  • 若A中不存在且處于A數組下標為0的位置,則直接記錄該B數組的元素;
  • 若A中不存在且處于A數組末尾,則返回整個A數組+該B數組元素;
  • 若A中存在且此處A的元素和該B數組的元素不等,則返回此處及其此處以前的A元素+該B數組的元素;
  • 若A中存在且此處A的元素和該B數組的元素想等,則返回此處及其此處以前的A元素。

  說完思路,他接著問我,那N個數組怎么合并呢,我回答的是遞歸拆分,直到只剩兩個數組為止,然后再逐次往上合并。回答完遞歸后,我自己都覺得太過復雜了。他繼續問了下時間和空間復雜度,兩個數組合并的時間復雜度主要取決于二分查找的復雜度O(logM),總共要找M個關鍵字,所以兩個數組合并的復雜度是O(MlogM),再加上N的數組的遞歸拆分大概就是O(N*MlogM)的復雜度了,空間復雜度為常數。能由“有序”關鍵詞想到了二分查找,面試官也勉勉強強接受了。

(3)我看他的表情不太滿意,于是我主動表現出對巧妙方法的興趣與渴望,于是面試官就給了我一個提示:“就以你兩個數組為例,你每次無非就是在確認一個數。”靈光一閃!我知道了!

  • 用兩個指針指向這兩個數組的頭節點,指針內容進行比較,
  • 如果內容相等,則記錄其中一個元素,兩個指針同時向后移動一個位置;
  • 如果第一個小,記錄該元素,該指針向后移動;
  • 如果第一個大,記錄另一指針指向的元素,另一指針向后移動。

  那么N個呢?遞歸的話容易實現,但不一定是最好的,如果每個數組一個指針會不會空間太大呢?只有N個數組,只需要N個指針,N個指針同時進行比較,每次找最小的一個數記錄(問題簡化了,相當于在N個數中尋找最小的一個數)。顯然N的指針更佳令人滿意。那這N的指針如何進行比較?我先說的是快排的拆分函數(以一個數為基準,比該數小的在左邊、大的在右邊),而這個基準數是隨機的,所以調用一次拆分函數,返回函數中基準值下標,如果下標大于1,再對下標的左邊部分繼續調用函數;如果下標小于等于1,直接返回下標為0的元素。這樣的做法減少了遞歸次數,不必使得整個序列有序。但是這個做法還是不能讓面試官滿意。N個數中,只是找一個最小的數,我還能想到的是堆,但是我對于堆不熟悉,只知道當記錄數很多的時候用堆最合適。我也是這樣同跟面試官說的,最后再次問了時間和空間的復雜度,我理解的堆排序時間復雜度是O(nlogn),但是這個復雜度是將整個序列變得有序的復雜度,而我們只需要找一個最小的,所以我的回答是,若堆排序的時間復雜度是X,那么這種解法的時間復雜度是O(N*M*X),空間復雜度為常數。

第二題 ?回文數函數實現

  第二道題是寫代碼,讓我寫出回文數的代碼實現,給了我一個函數的定義,讓我實現該函數。當然我會故意問一位數的數字算不算回文數!這道題沒什么難度,所以我不慌不忙地寫,也把所有邊界情況都考慮到位。寫了一個最簡單的代碼:

 1 //-1:異常
 2 //0:不是回文數
 3 //1:是回文數
 4 #define N 100
 5 int Palindromic(int value)
 6 {
 7     int x = value, k = 0 ,start, end;
 8     int a[N] = {0};
 9     
10     //拆分數字,將每一位存放進一個數組
11     if(x==0)
12         return 1;
13     while(x!=0)
14     {
15         a[k++] = x%10;
16         x = x/10;
17     }
18     
19     //從兩頭開始比較
20     start = 0, end = k-1;
21     if(start > end)
22         return -1;//不可能發生
23     else if(start == end)
24         return 1;
25     else
26     {
27         while(start<end && a[start]==a[end])
28         {
29             start++;
30             end--;
31         }
32         if(start<end)
33             return 0;
34         return 1;
35     }
36 }
回文數

?  后來仔細想想以前的代碼,還有更簡單不易錯的代碼:

 1 //0:不是回文數
 2 //1:是回文數
 3 int Palindromic2(int value)
 4 {
 5     int x = value;
 6     int remainder = 0;
 7     int reverse_value = 0;//反轉數字初始化為0,使得value=0時函數也成立
 8     while(x!=0)
 9     {
10         remainder = x%10;
11         reverse_value = reverse_value*10 + remainder;
12         x = x/10;
13     }
14     
15     if(value == reverse_value)
16         return 1;
17         
18     return 0;
19 }
回文數(優化)?

第三題 ?服務器壓力測試設計

  第三道題他說是設計題,讓我設計一種方法來測試服務器的壓力,聽完他的題目說明,我是一臉萌比的,大概是問的“假設:服務器tps=100000,怎么測試服務器壓力”,很尷尬的向他求助,能不能給點提示,他又說“假設一個線程tps=1000”,結合他的提示,我只能把與相關的知識全部說出來,如線程的通信方式:(1)管道(2)系統IPC(信號量、____、消息隊列)(3)套接字Socket,其中漏了一個,因為這個問題毫無頭緒,我已經有點著急了,接著繼續說,要想達到100000的tps,肯定需要多個線程,我想用信號量來實現,例如我100個進程就能達到想要的tps的話,我給這些進程100個鎖來實現。他忍不了,說用共享內存來實現多個進程的通信更快,我恍然大悟,哦!!我遺漏了共享內存......我急忙贊同他的說法,他又接著問我這多的線程要怎么管理呢?這...我只能認輸不知道。他告訴我,需要用一個線程來管理其他多線程的并發操作。

  后來自己百度了下這個問題,原來是WeTest的測試大師http://wetest.qq.com/gaps/

  三個問題問完之后,對于面試結果,我心里還是有點B數的,面試官并沒有走流程讓我問他問題,說今天的面試就到此吧。我起身拿起包打算離開,但還是很像問他問題,所以我先問他我能否向他提一個問題,他同意之后,我問他我們這樣的本科應屆生有什么建議和意見嗎?他還是很耐心的跟我講了一些對應屆本科生的建議,最后說我閱歷太少,經驗不夠,基礎功不扎實。我回應了幾句,并向他表示了真心的感謝之后離開了房間。

  面試官的評價很到位,赤裸裸的現實,還是回校補補營養吧!不過這份經歷還是值的,一個毫無經驗的應屆本科生同幾個研究生來競爭同樣的職位,雖然結果很明顯,但還是非常感謝面試官給我這個面試機會,而且整個面試過程中還那么耐心的引導我!

?

  我的博客即將同步至騰訊云+社區,邀請大家一同入駐。

轉載于:https://www.cnblogs.com/Christal-R/p/7691375.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253084.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253084.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253084.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

簡易有效Api接口防攻擊策略

API&#xff08;Application Programming Interface&#xff0c;應用程序編程接口&#xff09;是一些預先定義的函數&#xff0c;目的是提供應用程序與開發人員基于某軟件或硬件得以訪問一組例程的能力&#xff0c;而又無需訪問源碼&#xff0c;或理解內部工作機制的細節。 簡單…

CSS 如何設置垂直居中

1、水平居中我們都知道&#xff0c;可以直接用&#xff1a; margin:0 auto; 2、垂直居中&#xff0c;需要做一點小小的計算&#xff0c;關鍵代碼如下&#xff1a; height: 600px; position: absolute; top: 50%; margin-top:-300px; 如需水平且垂直居中&#xff1a; height: 60…

被稱為海淀媽媽四大神器之一的傾聽者K3 硬件拆解

暑假期間發現很多博主都在推薦傾聽者K3&#xff0c;被海淀媽媽們稱為四大神器之一&#xff0c; 雖然暫沒聽說其他三大神器是什么&#xff0c;作為教育硬件愛好者還是決定先整個回來拆拆看。 在京東上搜到傾聽者K3版本一共有三種顏色&#xff0c;分別是藍色&#xff08;悟空藍&…

有名信號量sem_open和內存信號量sem_init創建信號量的區別

有名信號量sem_open和內存信號量sem_init創建信號量的區別 分類&#xff1a; C/C sem_t *sem sem_open(const char *name, int oflag, .../*mode_t mode,unsinged int value) ;int sem_init(sem_t *sem,int shared, unsigned int value);區別&#xff1a;1.創建有名信號量必須…

KVM虛擬機相關步驟

KVM是Kernel-based Virtual Machine的簡稱&#xff0c;是一個開源的虛擬化模塊&#xff0c;該文檔是基于CentOS 7.4環境操作的 一、操作系統安裝 本文采用的是CentOS 7.4 1、查看系統版本 cat /etc/redhat-release 2、系統更新 Yum makecache &&yum update && …

dds設計信號發生器

高一 150206101 Dds數字信號發生器設計方案 DDS的工作原理框圖如下 在微機內&#xff0c;若插入一塊D/A轉換卡&#xff0c;然后編制一段小程序&#xff0c;如連續進行加一運算到一定值&#xff0c;然后連續進行減一 運算回到原值&#xff0c;在反復運行該程序&#xff0c;則微機…

Maven--資源文件resource的問題

2019獨角獸企業重金招聘Python工程師標準>>> Maven項目的目錄有&#xff1a; src/java/main src/java/resource src/test/main src/test/resource 有的時候在resource目錄下添加文件卻不能加載出來&#xff0c;解決的辦法是從把添加的資源文件添加到properties---&g…

pthread_create()創建線程最大個數

線程應用程序最常見導致創建線程失敗的原因是線程棧大小的設置。創建一個新的線程&#xff0c;默認情況下系統為線程棧預留了2MB的尋址空間。線程棧起始于進程虛擬 內存的高端地址&#xff0c;并向虛擬內存底端地址方向擴展。取決于線程本身的大小以及其它線程內存分配的情況&a…

C++ Primer 5 CH4 表達式

4.1 基礎 函數調用也是一種特殊的運算符&#xff0c;它對運算對象的數量沒有限制。C 的表達式要么是左值&#xff0c;要么是右值。左值可以位于賦值語句的左邊&#xff0c;右值則不可以。當一個對象被用作右值的時候&#xff0c;用的是對象的值&#xff1b;當對象被用作左值的時…

PHY以太網自動協商原理

自協商原理&#xff1a;自協商是通過一種叫做快速連接脈沖&#xff08;Fast Link Pulse&#xff09;的信號實現的&#xff0c;簡稱FLP。自協商的雙方通過FLP來交換數據。 在具備自協商能力的端口沒有Link的情況下&#xff0c;端口一直發送FLP&#xff0c;在FLP中包含著…

canvas--初級

摘要&#xff1a; canvas:默認寬高為300*150&#xff0c;需用canvas的API定義其寬高繪畫路徑以beginPath()開始,以closePath()結束常用方法fill()、stroke()、rect()、arc()、text()、lineTo()、moveTo()以下為代碼&#xff1a; var cdocument.getElementById("mycanvas&q…

撲克牌翻牌問題(遞歸)

撲克牌翻牌問題 題目描述&#xff1a; 有52張牌&#xff0c;使它們全部正面朝上&#xff0c;從第2張開始&#xff0c;凡是2的倍數位置上的牌翻成正面朝下&#xff1b;接著從第3張牌開始&#xff0c;凡是3的倍數位置上的牌&#xff0c;正面朝上的翻成正面朝下,正面朝下的翻成正面…

以太網自動協商原理

自協商基本原理 自動協商模式是端口根據另一端設備的連接速度和雙工模式&#xff0c;自動把它的速度調節到最高的公共水平&#xff0c;即線路兩端能具有的最快速度和雙工模式。 自協商功能允許一個網絡設備能夠將自己所支持的工作模式信息傳達給網絡上的對端&#xff0c;并接受…

Python學習-文件的調用-讀取

1.文件的打開 open(filename[,mode[,buffering]]) #這個一定要記得關文件。close.() filename,要以路徑的形式展示&#xff0c;比如在"c:\"中&#xff0c;則要這樣寫: rc:\filename 如果不用路徑展示&#xff0c;那就用filename.其會在執行文件所在的文件夾進行搜索…

javascript . 05 json的組成、for...in 遍歷對象、簡單數據類型與復雜數據類型的傳值與傳址、內置對象...

對象字面量 JSON var obj { aaa :999};   var json{"aaa":999&#xff0c;“bbb”&#xff1a;888}; ”kay“&#xff1a;value 對象字面2??定義方法和json很像&#xff0c;只有一點不同&#xff0c;json的key 必須加“”   &#xff1b; 對象&#xff0c;數…

nohup命令

nohup命令 起因 ssh到機器上&#xff0c;然后執行某個程序&#xff0c;再登錄發現程序早就不運行了。 原因 ssh過去之后&#xff0c;執行的大部分命令&#xff08;守護進程不會斷開&#xff09;&#xff0c;都是ssh進程的子進程&#xff0c;ssh斷開&#xff0c;命令自然會中斷 …

mac與phy如何實現網絡自適應

這兩天修改網卡驅動以實現10/100/1000M自適應&#xff0c;因此研究了下phy芯片和emac驅動如何兼容10/100/1000M網絡環境&#xff0c;記錄在此。 網絡中設備端數據鏈路層由mac芯片和phy芯片組成&#xff0c;phy芯片根據外部網絡環境完成自動協商以及配置&#xff0c;驅動中根據p…

asp.net(mvc) 框架

1、NFine mvcef 2、Grove orm架構 3、NHibernate orm 4、NBear 5、petshop 6、Membership 7、Brnshop 網上商城 8、cms快速開發&#xff1a;http://www.open-open.com/news/view/a90f1 9、c#開源框架&#xff1a;http://www.cnblogs.com/gaoyuchuanIT/articles/5612268.html 來…

LVM邏輯卷詳解及創建

我們先來看一下這張圖片&#xff1a;PV: 底層的一個硬盤設備&#xff0c;可以是一個分區&#xff0c;也可能是一個RAID。我們可以把這個塊設備創建成一個物理卷格式&#xff0c;即一個PV。VG: 將一個或多個PV提供的存儲空間在一個更低的單位上劃分成一個個獨立的存儲單元&#…

python文件操作總結

python中對文件、文件夾&#xff08;文件操作函數&#xff09;的操作需要涉及到os模塊和shutil模塊。 得到當前工作目錄&#xff0c;即當前Python腳本工作的目錄路徑: os.getcwd() 返回指定目錄下的所有文件和目錄名:os.listdir() 函數用來刪除一個文件:os.remove() 刪除多個目…