面...面筋!軟滑Q彈!2024秋招個(gè)人面經(jīng)匯總
一.網(wǎng)龍——游戲客戶端開發(fā)(已掛)
- 一面:技術(shù)面試(過)
- 自我介紹
- Unity和虛幻引擎的區(qū)別
- 問項(xiàng)目——如何設(shè)計(jì)接口、如何制作關(guān)卡設(shè)計(jì)器等
- C++部分
- std::vector和std::queue的區(qū)別:std::queue是分段連續(xù)的
- C++會默認(rèn)為類生成什么函數(shù):注意移動構(gòu)造和new、delete
- 反問環(huán)節(jié)
- 總結(jié):面試官比較和善但未開攝像頭,問題難度總體不大,幾個(gè)小時(shí)之后通過了
- 二面:技術(shù)面試+HR面試
- 自我介紹
- Unity和虛幻引擎在開發(fā)體驗(yàn)上的區(qū)別
- 問項(xiàng)目
- 解決的最大的問題是什么:回答能夠?qū)崿F(xiàn)不斷迭代需求且不會產(chǎn)生耦合,這個(gè)回答影響了面試官后續(xù)的提問
- 當(dāng)需求不穩(wěn)定且不可控時(shí)如何在程序上保持可控:不會,但面試官說這是加分項(xiàng)
- 怎么用虛幻引擎的AI系統(tǒng)IGenericTeamAgentInterface實(shí)現(xiàn)偽裝系統(tǒng),即自己被友軍和敵軍識別為友軍,但自己的友軍仍會被敵軍識別為敵人:不會,面試官說這個(gè)問題只是為了啟發(fā)我需求的變化是不可控的
- C++部分
- 列舉一些STL容器:vector,list,stack,queue,unordered_set,unordered_map,set,map
- vector和list的區(qū)別:底層實(shí)現(xiàn)分別是數(shù)組和鏈表,vector有隨機(jī)訪問迭代器而list沒有
- 數(shù)組和鏈表的優(yōu)缺點(diǎn):回答鏈表無法排序,這個(gè)回答影響了面試官后續(xù)的提問
- 如何給鏈表排序:面試官說這個(gè)問題是想要啟發(fā)我數(shù)據(jù)結(jié)構(gòu)的選擇是考慮到效率高不高,而非考慮能不能做
- 算法部分
- 給定非負(fù)整數(shù),如何判斷是否是2的整數(shù)次冪:題目很簡單但我想復(fù)雜了,被面試官提示(T_T)
- 面試官建議多刷一點(diǎn)算法(暴擊)
- HR部分
- 游戲開發(fā)是否是自己課外學(xué)習(xí)的內(nèi)容:是
- 為什么想走游戲道路:從兒時(shí)經(jīng)歷方面回答
- 在這么多制作游戲的經(jīng)歷中,認(rèn)為自己更擅長程序還是策劃:程序,從個(gè)人優(yōu)勢回答
- 為什么想去沿海城市發(fā)展(網(wǎng)龍公司在福州):希望能有更好的見識,并且愿意在沿海地區(qū)長期發(fā)展
- 反問環(huán)節(jié)
- 總結(jié):面試官非常好且很有耐心,具有啟發(fā)性,但由于未開攝像頭且面試官網(wǎng)絡(luò)信號差而降低了面試體驗(yàn),個(gè)人感覺沒有發(fā)揮好,運(yùn)氣好可以通過,運(yùn)氣不好大概率掛(T_T)——更新:已掛(9.27)
二.多益網(wǎng)絡(luò)——游戲客戶端開發(fā)(已掛)
- 一面:HR面試(掛)
- 自我介紹
- 詢問實(shí)習(xí)經(jīng)歷,包括業(yè)務(wù)內(nèi)容和感悟
- 是否了解過公司,了解過什么
- 關(guān)于產(chǎn)品:了解過公司的游戲產(chǎn)品,反問為什么沒有玩過,回答全心全意準(zhǔn)備秋招,沒有時(shí)間
- 關(guān)于其他方面:猜測可能是關(guān)于網(wǎng)絡(luò)上對于此公司的負(fù)面評價(jià),回答不是很喜歡關(guān)注網(wǎng)友們的七嘴八舌,因?yàn)檎婕匐y辨(個(gè)人不給出明顯的傾向)
- 為什么不留在實(shí)習(xí)公司,是否未通過實(shí)習(xí)考核:盡量回答得高情商
- 對于找工作最看重的是什么:盡量不回答薪資,因?yàn)榇斯鹃_的工資較低
- 是否接受加班(委婉地):非常重要!回答不接受一定掛,回答接受可能掛
- 核實(shí)身高體重(???????離譜)
- 觀點(diǎn)題回答部分
- 為什么認(rèn)為世界上大多數(shù)事物都是不公平的:個(gè)人從相對公平和絕對公平的區(qū)別回答
- 為什么認(rèn)為寵物狗不該在小區(qū)里被禁止:個(gè)人從動物是生命的角度回答
- 反問環(huán)節(jié)
- 總結(jié):面試官的面相透露出的情緒不是很友善,耐心值不高,反問環(huán)節(jié)拒絕回答一些常規(guī)問題,周末結(jié)束后掛
三.網(wǎng)易互娛——游戲客戶端開發(fā)(已掛)
- 一面:技術(shù)面試(大概率掛)
- 無自我介紹
- 詢問實(shí)習(xí)經(jīng)歷,其中最具有挑戰(zhàn)性的、值得一說的工作是什么
- C++部分
- C++程序從代碼到.exe中間發(fā)生的過程
- std::map和std::set
- 這兩個(gè)容易的底層數(shù)據(jù)結(jié)構(gòu)是什么:紅黑樹
- 紅黑樹的最壞查找效率是O(logn)嗎:是
- 指針和引用的區(qū)別
- 虛函數(shù)的實(shí)現(xiàn)原理、內(nèi)聯(lián)函數(shù)不能是虛函數(shù)的原因:前一個(gè)問題的答案是虛函數(shù)表,后一個(gè)問題的答案忘記了
- std::shared_ptr和std::weak_ptr的區(qū)別
- C++內(nèi)存分布
- 全局變量和靜態(tài)變量是否存儲在一個(gè)區(qū):都在全局區(qū)
- 局部變量和靜態(tài)局部變量是否存儲在一個(gè)區(qū):一個(gè)在棧區(qū),一個(gè)在全局區(qū)
- 靜態(tài)局部變量會被初始化幾次:一次
- 為什么相較于switch更推薦用if-else:不會
- 數(shù)據(jù)結(jié)構(gòu)部分
- 在一個(gè)游戲場景中有非常多個(gè)敵人對象,如果敵人距離自己太近就要顯示敵人身上的UI控件,每一幀遍歷所有敵人的距離計(jì)算量太大且沒有必要,如何優(yōu)化計(jì)算量:多級隊(duì)列可以適量優(yōu)化計(jì)算量但面試官認(rèn)為不是最佳答案,最優(yōu)解是世界分區(qū),將場景分成多個(gè)網(wǎng)格
- 單鏈表如何判斷是否有環(huán):哈希表或快慢指針(http://www.fangfengwang8.cn/share/jump/4995603211693970224972)
- 哈希表如何解決哈希沖突:鏈地址、開放地址、再散列
- 堆排序和快速排序的時(shí)間復(fù)雜度區(qū)別:考慮最壞情況(一個(gè)是O(n^2),一個(gè)是O(nlogn))
- 操作系統(tǒng)部分——從這一部分開始接觸到了一些沒聽過的名詞,因此記憶丟失較為嚴(yán)重qwq
- 靜態(tài)鏈接庫和動態(tài)鏈接庫
- 各自的優(yōu)缺點(diǎn)
- 速度快慢
- 線程池
- 如何在寫代碼前確定大致線程的個(gè)數(shù):不會
- 線程的數(shù)量應(yīng)該和什么有關(guān)系:不會,只因!
- (記憶丟失,也可能沒有丟失,看我這部分基礎(chǔ)一般就沒咋問了TAT)
- 計(jì)算機(jī)網(wǎng)絡(luò)部分
- TCP和UDP
- 為什么TCP的揮手比握手多一次:只有在服務(wù)器在接收到FIN時(shí)沒有需要發(fā)送的數(shù)據(jù)時(shí)才會合并發(fā)送ACK和FIN轉(zhuǎn)而變成三次揮手
- TCP和UDP的區(qū)別
- 是否接觸過KCP:沒有
- Socket的頭部由哪些變量確定:忘記了,只因!
- (記憶丟失,也可能沒有丟失,看我這部分基礎(chǔ)一般就沒咋問了TAT)
- 算法部分
- 給定圓心的坐標(biāo)和圓的半徑,設(shè)計(jì)一個(gè)隨機(jī)生成點(diǎn)的算法,使其能夠在圓內(nèi)生成均勻分布的點(diǎn):不會,只能生成不均勻分布的點(diǎn),只因!(更新:某扣478題)
- 反問環(huán)節(jié)
- 總結(jié):面試官態(tài)度較為敷衍,加上自身八股文基礎(chǔ)薄弱和HC少,大概率要掛——更新:已掛(9.11)
四.上海域起網(wǎng)絡(luò)——游戲客戶端開發(fā)
- 一面:技術(shù)面試+HR面試
- 自我介紹
- 是否學(xué)習(xí)過lua:沒有
- C#數(shù)據(jù)結(jié)構(gòu)部分
- 棧和隊(duì)列的區(qū)別是什么
- 哈希表如何解決哈希沖突:老問題了,參考本文——三.1.d.iii
- C#的HashTable存儲的是什么類型
- C#的List和ArrayList有什么區(qū)別
- C#的List是如何擴(kuò)容的
- 什么是閉包函數(shù)
- 設(shè)計(jì)模式部分
- 觀察者模式的應(yīng)用場景
- 狀態(tài)模式的應(yīng)用場景
- 單例模式的應(yīng)用場景
- 迭代器模式的應(yīng)用場景
- Unity引擎部分
- Unity如何在編輯器里查找Asset
- 對象池的應(yīng)用場景
- 項(xiàng)目中提到的動畫系統(tǒng)如何實(shí)現(xiàn):我并沒有實(shí)現(xiàn)一套自己的動畫系統(tǒng),而僅僅是對Unity的動畫系統(tǒng)進(jìn)行了一層封裝
- 什么是協(xié)程
- 協(xié)程和線程的區(qū)別
- 有無使用過多線程:在C#中沒有,在C++寫過
- 如何存檔(json和二進(jìn)制文件)
- 如何實(shí)現(xiàn)數(shù)據(jù)表讀取
- 計(jì)算機(jī)網(wǎng)絡(luò)部分
- 用對話模擬TCP的三次握手和四次分手(什么鬼,為啥要叫分手,面試當(dāng)場繃不住了)
- 項(xiàng)目中和游戲服務(wù)器開發(fā)成員合作經(jīng)歷以及使用API:以WebRequest的Post為主
- HR部分
- 戶籍和現(xiàn)居地
- 為什么要學(xué)習(xí)Unity和虛幻兩個(gè)引擎:Unity用來參賽
- 游戲開發(fā)是否是自己課外學(xué)習(xí)的內(nèi)容:是
- 是否介意入職后使用的引擎和公司的base:Open
- 是否愿意提前實(shí)習(xí):是
- 意象薪資
- 為什么不留在實(shí)習(xí)公司:老問題了
- 找工作最看重什么:不要說不加班
- 反問環(huán)節(jié)
- 總結(jié):本人是游戲引擎雙修選手,但由于幾個(gè)月沒接觸Unity,部分細(xì)節(jié)生疏了,好在影響不大,大概率可以通過
五.騰訊云智——客戶端開發(fā)
- 一面:技術(shù)面試
- 自我介紹
- 設(shè)計(jì)模式部分
- 在實(shí)習(xí)期間用了什么設(shè)計(jì)模式:工廠模式、適配器模式、觀察者模式、代理模式、狀態(tài)模式、迭代器模式
- 工廠模式的應(yīng)用場景
- 手寫抽象工廠模式
- 計(jì)算機(jī)網(wǎng)絡(luò)部分
- 簡述TCP的三次握手和四次揮手
- 為什么是四次揮手:有點(diǎn)生疏了,只因......
- 有無了解過網(wǎng)絡(luò)框架:沒有,個(gè)人項(xiàng)目經(jīng)驗(yàn)均未涉及服務(wù)器
- C++部分
- virtual的作用是什么:好像沒有回答出最好的答案
- 虛函數(shù)是如何實(shí)現(xiàn)的
- static的作用:局部變量、全局變量或函數(shù)、類成員變量或函數(shù)
- 可不可以在static成員函數(shù)中訪問非static成員變量:不能直接訪問
- std::map和std::unordered_map的區(qū)別:一個(gè)是紅黑樹,一個(gè)是哈希表
- 數(shù)據(jù)結(jié)構(gòu)部分
- 什么時(shí)候用紅黑樹,什么時(shí)候用哈希表:當(dāng)需要保證序列有序時(shí)用紅黑樹,當(dāng)需要很高的查找效率時(shí)用哈希表
- 兩種map的key是否可以重復(fù):不可以
- 數(shù)組和鏈表的區(qū)別
- 鏈表插入元素的最壞時(shí)間復(fù)雜度:沒完全理解面試官的意思,插入節(jié)點(diǎn)之前可能需要查找插入位置,所以最壞是O(n)
- 算法部分
- 某扣第2題變式,給定兩個(gè)非空的鏈表,表示兩個(gè)非負(fù)的整數(shù)。它們每位數(shù)字都是按照順序的方式存儲的,并且每個(gè)節(jié)點(diǎn)只能存儲一位數(shù)字,請將兩個(gè)數(shù)相加,并返回一個(gè)表示和的新鏈表,并自己處理輸入輸出:想用stack但被面試官打斷了,最后使用逆轉(zhuǎn)數(shù)組的方式解決,輸入輸出格式和本人編寫代碼在下方
- 反問環(huán)節(jié)
- 總結(jié):是一位女面試官,人很好,十分溫柔,奈何本人基礎(chǔ)薄弱,算法題折騰了很久(大約35分鐘)才做出來,好害怕掛了TAT——更新:已掛(9月15日)
輸入:[1, 3, 6, 8], [9, 4, 3] 輸出:[2, 3, 1, 1] 解釋:1368+943=2311 輸入:[1, 2, 3, 4], [9, 0, 0, 0] 輸出:[1, 0, 2, 3, 4] 解釋:1234+9000=10234
/*struct LinkedNode { int val; LinkedNode* next; };*/ class Solution { LinkedNode* reverse(LinkedNode* head) { if (!head) { return nullptr; } if (!head->next) { return head; } LinkedNode* curr = head; LinkedNode* next = head->next; LinkedNode* prev = nullptr; while (curr) { curr->next = prev; prev = curr; curr = next; if (curr) { next = curr->next; } } return prev; } public: LinkedNode* calc(LinkedNode* headA, LinkedNode* headB) { headA = headA->next; headB = headB->next; headA = reverse(headA); headB = reverse(headB); LinkedNode* nodeA = headA; LinkedNode* nodeB = headB; LinkedNode* res = new LinkedNode{-1, nullptr}; LinkedNode* node = res; int bit = 0; for (; nodeA && nodeB; nodeA = nodeA->next, nodeB = nodeB->next) { int sum = bit + nodeA->val + nodeB->val; bit = sum / 10; sum %= 10; node->next = new LinkedNode{sum, nullptr}; node = node->next; } for (; nodeA; nodeA = nodeA->next) { int sum = bit + nodeA->val; bit = sum / 10; sum %= 10; node->next = new LinkedNode{sum, nullptr}; node = node->next; } for (; nodeB; nodeB = nodeB->next) { int sum = bit + nodeB->val; bit = sum / 10; sum %= 10; node->next = new LinkedNode{sum, nullptr}; node = node->next; } if (bit) { node->next = new LinkedNode{1, nullptr}; node = node->next; } res = reverse(res->next); return res; } }; //main.cpp int main() { std::string linkA, linkB; std::getline(std::cin, linkA); std::getline(std::cin, linkB); LinkedNode* headA = new LinkedNode{-1, nullptr}; LinkedNode* headB = new LinkedNode{-1, nullptr}; LinkedNode* nodeA = headA; LinkedNode* nodeB = headB; for (const auto& chA : linkA) { nodeA->next = new LinkedNode{chA - '0', nullptr}; nodeA = nodeA->next; } for (const auto& chB : linkB) { nodeB->next = new LinkedNode{chB - '0', nullptr}; nodeB = nodeB->next; } Solution* sol = new Solution(); LinkedNode* res = sol->calc(headA, headB); for (LinkedNode* node = res; node; node = node->next) { std::cout << node->val << " "; } }
最后附一下鄙人的簡歷可供參考(雙非本,其實(shí)沒啥好康的,評論區(qū)有個(gè)朋友想要了解一下就給放粗來了,輕噴QAQ)
此文章會持續(xù)更新,面試題回答得錯誤、不準(zhǔn)確以及不會的地方希望且歡迎大牛們批評指正!
2023年9月27日
#面經(jīng)##24屆軟開秋招面試經(jīng)驗(yàn)大賞##懸賞#