1. 程式人生 > 實用技巧 >網易互娛初級遊戲研發(一面面經)估計涼!很詳細!希望幫助你!

網易互娛初級遊戲研發(一面面經)估計涼!很詳細!希望幫助你!

點關注,不迷路;持續更新Java相關技術及資訊!!!
內容源於群友投稿!記錄面試網易互娛遊戲研發的面經,整理一下經驗,分享給大家,感謝支援!

在這裡插入圖片描述

前言

我主攻 Java,面試官確定我不會 C 和 C++ 後放棄問了,就轉向 Java 大本營。

撕程式碼環節

面試總共 1.5h,前 0.5h 手撕程式碼,然後面試官面了我 1h

程式碼題:實現陣列的隨機排序 Reorder()

題目:提供 rand() 和 floor() 函式,其中 rand() 生成 [0, 1) 的隨機浮點數,floor() 返回小於浮點數 f 的最大整數

樣例輸入:[7, 9, 0, 3, 1]
樣例輸出:[3, 1, 0, 9, 7]

要求:演算法儘量地高效,除了上面兩個函式,不要呼叫其它函式

程式碼我就不貼出來了,本質上就是簡單的“洗牌演算法”,然而我在寫這個面經時才知道有這種演算法,在面試時我都是憑直覺寫的。。罪過罪過~

正式面試環節

  1. 自我介紹一下
  2. 解釋一下你上面寫的程式碼(我就說了乘一個因子)
  3. 有沒有更快的演算法啊(上面寫的程式碼時間複雜度是 O(n) 了,我就想著怎麼降低到 O(logN),然後突然提到分治?)
  4. 我們今天的面試分為 Java,作業系統,計算機網路還有資料結構與演算法,你做好心理準備哈(瑟瑟發抖,雖然面試官很隨和)

Java 部分

  1. 你知道 HashMap 的實現原理嗎?你知道什麼就都說出來吧
  2. HashMap 是執行緒安全的嗎?為什麼?有哪些可以保證執行緒安全的方法呀?(Collections.synchronizedMap(),Hashtable,ConcurrentHashMap)
  3. HashMap 擴容過程呢?(以預設容量 1 << 4 這種寫法解釋,展開說)
  4. 你知道 Vector 和 ArrayList 嗎?它們有什麼區別呀?(執行緒安全性、初始容量大小、擴容機制、資料結構)
  5. 你知道 LinkedList 和 ArrayList 的區別嗎?(資料的儲存結構、查詢、插入的時間複雜度···)
  6. 如果我有100W個數據要儲存,你說用 ArrayList 好還是 LinkedList 好?(100W個數據,如果是遍歷查詢的話,其實效能已經體現出來了,定址的過程會耗費時間;還有從佔用空間方面考慮···)
  7. 你知道有哪幾種鎖機制嗎?(我扯遠了,扯到作業系統上了,估計面試官是想問 synchronized
    的鎖機制,還有讀寫鎖【共享、排它】、自旋鎖、阻塞鎖)
  8. 我們儲存一個常量是儲存在哪裡呀?【 實際上這個問題是從作業系統問到“const”我不會,面試官轉向問這個問題的;】(如果是字串,在 JDK.1.6 還是 1.7 就被存到堆裡面了,如果是其它執行時常量,則存在方法區/元空間)
  9. 你知道過載是怎麼實現的嗎?面試官說這是個探討性問題,沒有對錯哈(我懵了····)

接著引導:假設有兩個函式 int a(int) 和 int a(int,
int),我們要設計一個編譯器識別它們,如果是你,你怎麼設計呢?我就不給出我的答案了,太 low 了,面試官雖然點了點頭。。

  1. 來寫個單例模式吧(Double Check + Lock,沒錯)
  2. 來寫個生產者-消費者模型吧(跟面試官說第一次寫,後來沒寫好,大體上沒錯,細枝末節有錯)

在這裡插入圖片描述

作業系統部分

  1. 你知道分頁記憶體管理吧?說一下(一塊塊大小相同的頁,Linux 上是
    4Kb,分配記憶體時將其分配為一塊塊記憶體大小相同的頁,是一種離散式的記憶體管理,減少記憶體碎片)

  2. 那分段呢?(將程式看作成一段段連續的記憶體分配,弊端是有大量的記憶體碎片,當無法分配更多記憶體時,需要利用 Swap 空間整理記憶體)

  3. 那一個程式有多少個段呀?(沒了解過,不好意思,菇了 )

  4. 你知道系統呼叫的過程嗎?(說了從使用者態陷入到核心態)

  5. 追問:那是怎麼陷入核心態的呀?(亂說一通,面試官說:“好了不用答了,不是我想要的哈,沒事”,我就尷尬地說了不好意思)

  6. 你知道作業系統的 const 嗎?(不會,面試官換成 Java 部分的第8題了)

  7. 瞭解 epoll 嗎?(我瞭解過,但我不敢說,因為只是瞭解了皮毛,但是瞭解過 select,跟面試官解釋了 select 的過程和同步非阻塞IO的主要原理)

  8. 不記得了。。。

計算機網路部分

  • TCP 是什麼呀?
  • TCP 和 UDP 的區別?
  • 王者榮耀你覺得是 UDP 還是 TCP 呀?(老問題了,都沒答出來,就說了應該是
    UDP,然後說了一下自己的理解,面試官無奈的說:“也許有這種可能吧···”)
  • TCP 三次握手的過程,越詳細越好
  • 不記得了。。。

資料結構與演算法部分

  • 假設有 100W 個使用者,它們都有一個分值,根據這個分值進行排名的,如何最快的計算出一個玩家在多少名呀?(計數排序,當時我說了很多錯誤答案,面試官最後看不下去了,耐心跟我說解答了,利用高考來類比,真的感激!)
  • 太緊張,又忘了。。。
    在這裡插入圖片描述

反問環節

  • 你覺得我在哪些地方要加強的嗎?

面試官:我覺得吧,你的 Java 水平很不錯,瞭解了很多底層的知識,也非常紮實,就是在計算機基礎這一塊,深度不夠噢,就是舉個例子·······(一些瞭解底層的益處),如果你能夠鑽研下去,我覺得你的前途是有的(感動落淚,謝謝面試官)

  • 面試官:面試結果 3-5 天出來哈(估計涼了,被掏空)

總結

在這裡插入圖片描述

這次面試的確看到了自己和大廠的差距了,還有很多需要學習的東西都沒有深度去了解,也一直都關注著應用層以上的知識點,之後可能會更加樂意去了解深層次的東西吧,反正學東西就開心地學,一絲不苟地學就對了,不忘初心,希望能幫到你們!
在這裡整理了一些我平時刷題所看的文件,戳這裡免費領取,暗號:CSDN
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

整理了一些面試資料&最新2020收集的一些大廠的面試真題(都整理成文件,小部分截圖),戳這裡免費領取,暗號:CSDN

在這裡插入圖片描述