杭州雙非渣碩。前段時間師兄內推雷火,沒有筆試直接打電話約我去面試了,地點在網易大廈。早上不到七點起牀,晚上七點多才回到宿舍,能夠說是很疲憊了。
原本面試現場投影上寫的上午三輪交叉面,若是經過的話下午一輪總監面一輪hr面。 結果我上午三面完了以後,下午又給我來了四輪面試,沒有總監面和hr面,因此一共7輪技術面(第一次參加面試就這場面,吃不消吃不消),還好都是1v1的形式。
由於對第一輪面試印象深入一點,就單獨說一下,其餘六輪題目我可能搞混,索性後邊直接一塊兒列出來了。
一面:面試官很年輕,看樣子就比我大幾歲,感受技術很強,有種鄰家大哥哥的感受。。。
- 一開始讓自我介紹;(有沒有問我項目記不清了,反正後邊幾面也有問到)。
- 而後給我一張紙,讓我把知道的排序方法都寫下來,(我寫了六七種吧記不清了,主流的都寫了,包括希爾排序 桶排序),而後讓我把他們的實現方法都介紹一下,而後時間複雜度 空間複雜度都寫一下,把他們是否穩定都寫一下;
- 你瞭解的最複雜的數據結構是什麼?(我一開始說的散列表,問我有沒有更復雜的,我說各類樹,紅黑樹,B+樹,B樹,平衡樹等等)問我這些可能都是本科時候學的,如今還記得起來麼?(能記得大概,具體的左旋右旋可能細節想不起來);ps:其實我仍是能說出來一點的,可是當時慫了怕讓寫出來就gg了;
- 兩個平衡二叉樹合併怎麼作?(一開始覺得就是簡單的比較大小+遞歸,後來發現好像還得知足高度的特性,就先說了平衡二叉樹的特色,而後想了一小會,面試官說不會也不要緊,恩不會);
(4.9日修改:今天才發現平衡二叉樹其實只要求高度差不大於1,並不要求左子樹比根小,右子樹比根大... 有這種要求的是紅黑樹。我記錯了! 這樣的話 合併兩顆平衡二叉樹其實就是層序遍歷吧,唉當時要是沒記錯就能夠擼出來 了。。。)前端
- 如今有100W個帳戶密碼,要存起來,要求查找時速度儘量快,你選擇什麼數據結構?(B+樹);
爲何?(我簡單扯了扯B+樹的特性);
說一下要往裏插入、刪除、查找帳戶密碼的複雜度。(我不太肯定,瞎猜的:nlogn,nlogn,logn);
- 對圖論算法瞭解多少?(BFS,DFS,最短路徑,最小生成樹,最小割最大流...)日常有用過嗎?(項目裏用過DFS BFS);
- 好,如今給你道題,一個二維座標系,給你n個點的座標,畫一條直線把他們分紅兩份(任意直線),要求數量儘可能等分,複雜度不能過高。
(剛說完圖就出這道題,我下意識以爲考察我圖論,想了一下感受不是的,而後給他講了講個人思路:假設按照y座標分,那麼遍歷n個座標,用一個最大堆來保存,而後從頂部彈出n/2次,若是當前頂部的數和最後彈出的數不同,就能夠在中間畫一條線);
他說若是全部點縱座標都同樣呢?若是有點重合的呢?
(我有點矇蔽了,以爲我這思路是錯的,又想了幾分鐘其餘的方法,又情不自禁往圖論上想,最後仍是沒想起來。其實貌似再一樣作法對橫座標處理一次應該能夠避免他說的問題吧),最後問他怎麼作,他說用二分的思想,而後對橫縱座標求中位數、衆數什麼的,我也沒太聽懂,裝模做樣點了點頭;
- 玩過哪些遊戲?(說了一大堆)對哪一個比較熟?(LOL) 如今讓我對亞索的e作測試,怎麼測?(我吧啦吧啦一大堆把能想到的都說的,ps:這裏以前問過師兄經驗,要有條理,用樹狀圖來測,先分紅幾大類,再慢慢細分之類的)。但最後面試官又提醒我e技能帶不帶普通攻擊,會不會觸發裝備特效?(這點確實沒想到,但也是提醒了我,後邊幾輪面試也有問測技能的,我就把這一點都說上去了)。
- 問我亞索的e在一小段時間內是不能對同一目標使用的,怎麼測?(簡單說了一下) 你以爲不能對一個目標釋放e的判斷是怎麼實現的(我一開始說面向對象,對每一個單位對象設置時間標記之類的。後來他說不是面向對象,提醒我是buff仍是什麼,我說是buff);
- 在e的瞬間敵方回城了你以爲應該被帶到泉水嗎?(不該該)。
那dota裏白牛的大招會不會?(會。ps:由於我也玩過dota);
你以爲是爲何?(可能在代碼實現上白牛的大招是在大招釋放完畢後出如今目標的身後); 那亞索怎麼避免這樣?(能夠在釋放技能時根據目標和本身的位置關係計算出技能釋放後的位置,而不是以釋放後的目標位置爲參照物);
你以爲這樣能夠解決嗎?(能夠);
- 討論bug和外掛的問題:
- 面試官小聲嘀咕+心算「你如今研二...dota高中玩的....恩應該是6.72版本」。
(我心裏:???臥槽! 這都能算出來)。
- 說一下你當時玩dota的時候發現的bug。
(我心裏:???dota作得這麼好,哪裏有bug啊。 想了一會說 確實沒發現);
- 當時某種狀況下蝙蝠開大招的時候能夠A本身的塔,是最出名的bug。
(我心裏:??? 還有這種事? 我怎麼不知道)
- 說一下dota 的外掛吧。
(??還有外掛? 哦對 開圖掛)
- 那你知道原理是什麼嗎?
(我心裏:???臥槽 我說我不知道開圖的效果是怎樣的,因此很差說原理,是整個地圖戰爭迷霧都沒了嗎?仍是隻對英雄有記號?)
- 顯然面試小哥也沒開過全圖不知道效果 那你說說LOL的外掛吧。
(??lol還有外掛? 我趕快扯開 我還玩過穿越火線,那個外掛特別多)
- 都有什麼你說說看。
(顯示幽靈,透視,穿牆,自動瞄準,飛天 入地。。。)
- 那你知道原理嗎?
(我心裏:??臥槽 到底仍是沒躲過 我說曾經幽靈模式剛出來的時候,能夠經過刪除安裝目錄下的一個文件,來使幽靈的刀子顯形,並且我也確實試過是能夠的)
- 面試官點點頭 算是混過去了;
- 可能還有暫時想不起來了...
- 有什麼要問個人麼?(問了一下我理解的防禦就是測開,須要對作抵禦外掛的工做嗎?) 也要作的,這個東西不想作也避免不了。 結束。
其他六面:
- 除了最後一面面試官以爲我已經比較累了,其他的都要自我介紹;
- 項目被問了好幾回,包括具體實現,項目主要解決的問題,從項目中學到的最好的技術,項目經驗對作咱們這個崗位的好處(由於個人項目就是可靠性自動化測試) 等等;
- 不少測試場景題,包括測技能,測英雄,登陸窗口等等,問你怎麼測;
機率題:
兩盒火柴每盒n根,每次隨機從任意盒取出一根, 求當一個盒子被取完時,另外一個盒子恰好還剩r根的機率。
(有點緊張有點懵逼,最後答錯了,但仍是講了一下思路寫了一下個人公式雖然多是錯的但總歸沒放棄抵抗~) ;java
智力題:
- 兩個盲人各買了一白一黑兩雙襪子,不當心弄混了,問他們本身怎麼分紅恰好每人一白一黑。
(以前見到過,稍微想了一下就答上來了。可是先入爲主是我理解的那樣了,面試官問我爲何以爲襪子都是同樣大的,不能夠用手區分開?固然實際上我問的話 她確定說是同樣大的 只憑手感摸不出來~);
- 一個圓桌,兩我的往上放硬幣,只能平鋪不能重合,最後一個放的人勝利(接下來硬幣無處可放了),問先放的贏仍是後放的贏。
(初中就見過的題,直接跟他說這題我作過,而後講了一下秒殺之);
測試知識題:
- 說一下了解的測試方法;
- 性能測試有哪些指標;好比對一個登陸功能作性能測試,有哪些指標?(響應時間,可同時處理的最大請求數量...) 怎麼測出可同時處理的最大請求數量? (秒答 二分)面試官會心一笑 「恩 二分 沒問題」 ;
- 用什麼作的單元測試(junit);
- 有沒有作過壓力測試(沒有);
- 面試官看到個人項目裏有提到流程圖,因而問了如下題目:
- 任務流程圖,是串行的,好比跟一個個NPC對話,可是有可能有的玩家提早跟某個NPC對話,致使後邊的任務出不來了,這種狀況下怎麼測?(把串行的全部任務全排列)。
- 若是當任務太多了會怎樣?(那測試用例數量要爆炸了)
- 怎麼優化?(想了一會想不出來,硬憋一下 問能不能用 堆排序的思想,先兩兩顛倒順序測試,把已測試過的當成一組再兩兩測,這樣測試用例應該減小不少)。
- 面試官還不太滿意,讓從遊戲的角度來講,(我實在不太會,又說根據重要程度,好比正常的流程確定是最重要的,而後根據日誌,玩家走得比較多的流程 來排序,重要度高的分配更多測試資源)。
- 最後面試官說他們如今就遇到了這個問題,而後講了下他的思路;
- 還有不少,一時想不起來了;
java基礎:
- protected,public,private的區別(面試官說我protected說的不太對);
- 抽象類和接口的區別;
- static的做用;
- List和ArrayList的區別;
- int和Integer的區別;
- 全局變量,臨時變量,靜態變量分別存在哪裏;
- c++和java 的區別;
- java內存裏有什麼(結構);
- 說說垃圾回收機制(忘得差很少了,加上知道本身已經忘得差很少了更加緊張, 就把能想起來的隨便說了說);
- 怎麼判斷哪些對象是能夠刪除的? 可達是什麼意思?
- 接口有什麼限制;
- 可能還有一些,暫時想起來這麼多;
數據結構:
- 講一下你知道的數據結構;
- 有一些數,每次能夠插入,或者取出第1/4大的數,用什麼數據結構?
(我回答:維護當前數據量1/4大小的 最小堆,插入時被擠出來的數用最大堆保存,取操做從最小堆頂部取,而後把最大堆頂部取出插入最小堆。 瞎說的不知道對不對 不過看面試官當時的態度反饋 應該還算滿意);
- 數組和鏈表的區別;
- BST的特色;
- 應該還有,記不清了;
算法題:
- 求a和b的最大公約數;
(講思路,一開始想的是用最小的數往下遞減,每次判斷另外一個數能不能被整除;剛說完就優化了一下,改爲不是每次遞減,而是用除以2,除以3...這樣找。 我知道好像有公式仍是什麼的...但我真的想不起來了);
- 字符串轉int類型,要求不能用已有的方法,也不能強轉。
問了下其餘的要求,好比+-號之類的,還有不是數字的字符返回error等。還問了若是超過int最大值怎麼辦,他問int最大值是多少(214..什麼的,具體不知道..我日常都直接用的Integer.MAX_VALUE),好吧 這樣也行算你過了。
(ok,紙上手撕,用的 str.charAt(index)- '0'作的,但最後仍是16進制標記0x沒有考慮到);
- 求x的n次方,已知能夠用n*(n-1)!來作,但有沒有更好的方法。
(ok,紙上手撕,前兩天恰好看到了, 先對x,n判斷是不是負數,0之類的, 而後把n轉成2進制,經過&1和右移來作);
- 給一個二叉樹,怎麼獲得這顆樹的鏡像。(簡單題目, 講了下思路,遞歸,左右對稱就行了);
- 01揹包
(ok,紙上手撕,dp,好久沒寫了對這個不太熟,一開始用的一維來寫的發現錯了,後來改爲二維寫出來了);
- 給一顆樹,判斷是否是BST。
(ok,紙上手撕,用的遞歸,方法裏有max和min兩個約束,不符合直接返回false,初始是Integer.MAX_VALUE和Integer.MIN_VALUE往左遞歸時更新max,往右遞歸時更新min。)
面試官本身在紙上畫了畫,表示第一次見到我這種方法,但好像也沒啥毛病,恩沒毛病~;
- 說兩個nlogn複雜度的排序方法,衡量算法的三個維度?快排是穩定的嗎?快排基準點怎麼選擇?
(這已是第六面了,我一直覺得穩定是指複雜度的穩定,結果經面試官提醒才知道理解錯了... 這樣想起來一面時候讓寫的穩不穩定怕是也錯了);
- 印象中還有讓講思路的題目,但實在想不起來題目了。
算法總結:
紙上手寫仍是跟日常本身作的時候感受不同的,本身太急了,沒仔細想好就開始寫,致使寫錯的要劃掉很難看,還有寫完了沒有檢查代碼,一些特殊狀況也沒太多考慮。 主要是面試官在旁邊,很差意思讓他一直等着,就老想趕快寫完得了。還好面試官挺好的,不是很苛刻,否則小細節能懟死我。c++
其餘題目:(想到哪說哪,徹底亂序的)
- 其餘語言會嗎?(幾乎不會)
- 項目是Windows的是嗎?不是網頁的(對);
- 寫過web項目嗎?(最近寫了一點,用的spring boot);
- 項目規模(兩到三人);
- 有人專門負責前端是嗎(對);
- 數據庫是用的MySQL嗎?(是的)那日常數據庫的語句都是怎麼寫的?(用啥網上查啥)join做用(不會)想刪除一行怎麼作(delete);
- 遊戲手感是什麼?能不能用數據來描述?
- FPS啥意思?(幀) 幀是什麼?(畫面)你真的理解FPS是什麼嗎?(我想了幾秒,恩...FPS是越高越好,是每秒的幀數,當足夠大的時候,肉眼看起來就像是連貫的) 說到這裏面試官終於點了點頭;
- 讀過什麼源碼嗎?(只讀過java的一些源碼)好比什麼(HashMap,我想你趕忙問問我好吹一波,結果面試官可能對這個不太熟 就沒繼續問下去);
- 還有不少想不起來了。
恩總之仍是很不錯的一次體驗,網易伙食也很棒,就是吃飯的位子感受有點擠。還有昨天有點降溫,就穿了件襯衫的我瑟瑟發抖.....