版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2026年游戲開發(fā)部游戲開發(fā)工程師面試題及答案一、編程基礎(chǔ)(共5題,每題10分,總分50分)1.題目:請用C++實(shí)現(xiàn)一個(gè)函數(shù),輸入一個(gè)整數(shù)數(shù)組,返回該數(shù)組中所有子數(shù)組的和的最大值。例如,輸入`{1,-2,3,5,-1,2}`,輸出`12`(子數(shù)組`{3,5,-1,2}`)。答案:cppinclude<vector>include<algorithm>usingnamespacestd;intmaxSubArraySum(constvector<int>&nums){intmaxSum=nums[0];intcurrentSum=nums[0];for(size_ti=1;i<nums.size();++i){currentSum=max(nums[i],currentSum+nums[i]);maxSum=max(maxSum,currentSum);}returnmaxSum;}解析:采用動態(tài)規(guī)劃思想,`currentSum`記錄以當(dāng)前元素結(jié)尾的最大子數(shù)組和,`maxSum`記錄全局最大值。時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(1)。2.題目:用Python實(shí)現(xiàn)一個(gè)函數(shù),輸入一個(gè)字符串,返回該字符串中所有重復(fù)字符的頻率(字典形式)。例如,輸入`"hello"`,輸出`{'e':1,'l':2,'o':1}`。答案:pythondefchar_frequency(s):freq={}forcharins:freq[char]=freq.get(char,0)+1return{char:countforcharinfreqifcount>1}解析:使用字典統(tǒng)計(jì)字符頻率,過濾掉只出現(xiàn)一次的字符。3.題目:用Java實(shí)現(xiàn)一個(gè)方法,判斷一個(gè)整數(shù)是否為完全平方數(shù)。例如,輸入`16`,返回`true`;輸入`14`,返回`false`。答案:javapublicbooleanisPerfectSquare(intnum){if(num<0)returnfalse;longleft=0,right=num;while(left<=right){longmid=left+(right-left)/2;if(midmid==num)returntrue;if(midmid<num)left=mid+1;elseright=mid-1;}returnfalse;}解析:二分查找法判斷平方根是否為整數(shù),避免溢出用`long`類型。4.題目:用C#實(shí)現(xiàn)一個(gè)方法,輸入一個(gè)字符串,返回該字符串的所有子集(不重復(fù))。例如,輸入`"abc"`,輸出`{"","a","b","ab","c","ac","bc","abc"}`。答案:csharpusingSystem.Collections.Generic;publicclassSolution{publicIList<string>Subsets(strings){List<string>result=newList<string>();char[]chars=s.ToCharArray();Array.Sort(chars);//保證順序一致intn=chars.Length;for(inti=0;i<(1<<n);i++){stringsubset="";for(intj=0;j<n;j++){if((i&(1<<j))!=0)subset+=chars[j];}result.Add(subset);}returnresult;}}解析:使用位運(yùn)算枚舉所有子集,時(shí)間復(fù)雜度O(2^n)。5.題目:用JavaScript實(shí)現(xiàn)一個(gè)函數(shù),輸入一個(gè)數(shù)組,返回一個(gè)新數(shù)組,其中每個(gè)元素為原數(shù)組中該元素之前所有比它小的數(shù)的和。例如,輸入`[3,1,2,4]`,輸出`[0,3,3,8]`。答案:javascriptfunctionsmallerNumbersThanCurrent(nums){constsorted=nums.slice().sort((a,b)=>a-b);constmap=newMap();for(leti=0;i<sorted.length;i++){if(!map.has(sorted[i])){map.set(sorted[i],i);}}returnnums.map(num=>map.get(num));}解析:先排序并記錄每個(gè)數(shù)的較小數(shù)個(gè)數(shù),再映射回原數(shù)組順序。二、數(shù)據(jù)結(jié)構(gòu)與算法(共5題,每題10分,總分50分)1.題目:用Python實(shí)現(xiàn)快速排序算法,輸入一個(gè)亂序數(shù)組,返回排序后的數(shù)組。答案:pythondefquick_sort(arr):iflen(arr)<=1:returnarrpivot=arr[len(arr)//2]left=[xforxinarrifx<pivot]middle=[xforxinarrifx==pivot]right=[xforxinarrifx>pivot]returnquick_sort(left)+middle+quick_sort(right)解析:分治思想,選擇樞軸劃分左右子數(shù)組,遞歸排序。2.題目:用Java實(shí)現(xiàn)二叉樹的層序遍歷(廣度優(yōu)先搜索),返回遍歷結(jié)果列表。例如,輸入`[3,9,20,null,null,15,7]`(對應(yīng)二叉樹),輸出`[3,9,20,15,7]`。答案:javaimportjava.util.;publicclassTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(intx){val=x;}}publicList<Integer>levelOrder(TreeNoderoot){List<Integer>result=newArrayList<>();if(root==null)returnresult;Queue<TreeNode>queue=newLinkedList<>();queue.offer(root);while(!queue.isEmpty()){TreeNodenode=queue.poll();result.add(node.val);if(node.left!=null)queue.offer(node.left);if(node.right!=null)queue.offer(node.right);}returnresult;}解析:使用隊(duì)列實(shí)現(xiàn)BFS,按層遍歷二叉樹。3.題目:用C++實(shí)現(xiàn)深度優(yōu)先搜索(DFS)遍歷一個(gè)無向圖,輸入鄰接表,返回遍歷順序。例如,輸入`{{1,2},{0,3},{0,3},{1,2}}`(表示節(jié)點(diǎn)0連1、2,節(jié)點(diǎn)1連0、3等),輸出`[0,1,3,2]`。答案:cppinclude<vector>include<iostream>usingnamespacestd;voiddfs(intnode,vector<bool>&visited,vector<int>&result,constvector<vector<int>>&adj){visited[node]=true;result.push_back(node);for(intneighbor:adj[node]){if(!visited[neighbor]){dfs(neighbor,visited,result,adj);}}}vector<int>dfsTraversal(constvector<vector<int>>&adj){intn=adj.size();vector<bool>visited(n,false);vector<int>result;for(inti=0;i<n;++i){if(!visited[i]){dfs(i,visited,result,adj);}}returnresult;}解析:遞歸實(shí)現(xiàn)DFS,標(biāo)記已訪問節(jié)點(diǎn),避免重復(fù)遍歷。4.題目:用Java實(shí)現(xiàn)拓?fù)渑判颍↘ahn算法),輸入有向圖的鄰接表和入度數(shù)組,返回拓?fù)漤樞?。例如,輸入`adj={{1},{2},{3},{}}`,`inDegree={0,1,1,0}`,輸出`[0,1,2,3]`。答案:javaimportjava.util.;publicclassTopologicalSort{publicint[]topologicalSort(intnumCourses,int[][]prerequisites){List<List<Integer>>adj=newArrayList<>();int[]inDegree=newint[numCourses];for(inti=0;i<numCourses;i++)adj.add(newArrayList<>());for(int[]pre:prerequisites){adj.get(pre[1]).add(pre[0]);inDegree[pre[0]]++;}Queue<Integer>queue=newLinkedList<>();for(inti=0;i<numCourses;i++){if(inDegree[i]==0)queue.offer(i);}List<Integer>result=newArrayList<>();while(!queue.isEmpty()){intcourse=queue.poll();result.add(course);for(intneighbor:adj.get(course)){inDegree[neighbor]--;if(inDegree[neighbor]==0)queue.offer(neighbor);}}if(result.size()!=numCourses)returnnewint[0];//無環(huán)圖returnresult.stream().mapToInt(i->i).toArray();}}解析:Kahn算法基于BFS,每次選入度為0的節(jié)點(diǎn)并減去鄰接節(jié)點(diǎn)入度。5.題目:用Python實(shí)現(xiàn)最小生成樹(MST)的Kruskal算法,輸入邊列表(權(quán)重、起點(diǎn)、終點(diǎn)),返回MST的邊集合。例如,輸入`[(1,0,1),(3,1,2),(3,0,2),(6,2,3),(4,1,3)]`,輸出`[(1,0,1),(3,1,2),(4,1,3)]`。答案:pythonclassUnionFind:def__init__(self,n):self.parent=list(range(n))self.rank=[0]ndeffind(self,u):ifself.parent[u]!=u:self.parent[u]=self.find(self.parent[u])returnself.parent[u]defunion(self,u,v):root_u=self.find(u)root_v=self.find(v)ifroot_u!=root_v:ifself.rank[root_u]>self.rank[root_v]:self.parent[root_v]=root_uelifself.rank[root_u]<self.rank[root_v]:self.parent[root_u]=root_velse:self.parent[root_v]=root_uself.rank[root_u]+=1returnTruereturnFalsedefkruskal(n,edges):edges.sort()uf=UnionFind(n)mst=[]forweight,u,vinedges:ifuf.union(u,v):mst.append((weight,u,v))returnmst解析:按權(quán)重排序邊,使用并查集判斷是否形成環(huán),選擇無環(huán)邊構(gòu)建MST。三、數(shù)據(jù)庫與SQL(共3題,每題10分,總分30分)1.題目:用SQL查詢出`employees`表中工資高于平均工資的員工姓名和工資。假設(shè)表結(jié)構(gòu)為`name(varchar),salary(int)`。答案:sqlSELECTname,salaryFROMemployeesWHEREsalary>(SELECTAVG(salary)FROMemployees);解析:子查詢計(jì)算平均工資,外層查詢篩選高于平均值的記錄。2.題目:用SQL查詢出`orders`表中每個(gè)客戶的訂單總數(shù),按訂單數(shù)降序排列。假設(shè)表結(jié)構(gòu)為`customer_id(int),order_id(int)`。答案:sqlSELECTcustomer_id,COUNT(order_id)AStotal_ordersFROMordersGROUPBYcustomer_idORDERBYtotal_ordersDESC;解析:GROUPBY分組統(tǒng)計(jì)每個(gè)客戶的訂單數(shù),ORDERBY降序排列。3.題目:用SQL查詢出`students`表中所有性別為`'male'`且年齡大于18歲的學(xué)生姓名和班級,結(jié)果按班級升序排列。假設(shè)表結(jié)構(gòu)為`name(varchar),gender(varchar),age(int),class(varchar)`。答案:sqlSELECTname,classFROMstudentsWHEREgender='male'ANDage>18ORDERBYclassASC;解析:直接篩選條件,按班級升序排列。四、系統(tǒng)設(shè)計(jì)(共2題,每題15分,總分30分)1.題目:設(shè)計(jì)一個(gè)簡單的在線游戲排行榜系統(tǒng),要求支持以下功能:-實(shí)時(shí)更新玩家分?jǐn)?shù)。-查詢前N名玩家。-分?jǐn)?shù)相同不重復(fù)計(jì)入排名。要求:-寫出核心表結(jié)構(gòu)設(shè)計(jì)。-說明使用的數(shù)據(jù)結(jié)構(gòu)和算法。答案:表結(jié)構(gòu):sqlCREATETABLErankings(player_idINTPRIMARYKEY,scoreINT,last_updatedTIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP);數(shù)據(jù)結(jié)構(gòu)和算法:-使用`player_id`和`score`主鍵索引,`last_updated`保證實(shí)時(shí)性。-查詢前N名時(shí),按`score`降序排序,相同分?jǐn)?shù)去重(如`scoreDESC,player_idASC`)。-使用堆(如RedisZSET)優(yōu)化實(shí)時(shí)更新和查詢性能。解析:分布式場景下,RedisZSET存儲玩家分?jǐn)?shù)和ID,`SCORE`命令快速排序和查詢。2.題目:設(shè)計(jì)一個(gè)簡單的聊天系統(tǒng),支持以下功能:-多用戶實(shí)時(shí)聊天。-消息歷史存儲。-消息已讀未讀標(biāo)記。要求:-寫出核心表結(jié)構(gòu)設(shè)計(jì)。-說明如何實(shí)現(xiàn)實(shí)時(shí)消息推送。答案:表結(jié)構(gòu):sqlCREATETABLEmessages(msg_idBIGINTAUTO_INCREMENTPRIMARYKEY,sender_idINT,receiver_idINT,contentTEXT,timestampTIMESTAMPDEFAULTCURRENT_TIMESTAMP,is_readBOOLEANDEF
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年志愿者服務(wù)年度工作總結(jié)報(bào)告
- 檔案掃描合同范本
- 餐飲外派合同范本
- 拉土運(yùn)輸合同范本
- 包土方合同協(xié)議
- 拉煤運(yùn)費(fèi)合同范本
- 果園管護(hù)合同范本
- 政府造林合同范本
- 林地補(bǔ)償合同范本
- 毛茶購銷合同范本
- 煤礦采掘技術(shù)
- 游艇俱樂部圈層策劃方案
- 煤礦用履帶式液壓鉆機(jī)ZDY2300LX說明書-圖文
- 2023年南通啟東市郵政局招考筆試參考題庫(共500題)答案詳解版
- 多媒體系統(tǒng)維保服務(wù)投標(biāo)方案
- JCT890-2017 蒸壓加氣混凝土墻體專用砂漿
- 深圳亞馬遜超級大賣副總制定的亞馬遜運(yùn)營SOP計(jì)劃表
- 海洋與海洋測繪課件
- 康復(fù)治療學(xué)Bobath技術(shù)
- 上海市九年義務(wù)教育階段寫字等級考試(一級)硬筆方格收寫紙
- 南部三期污水處理廠擴(kuò)建工程項(xiàng)目環(huán)評報(bào)告
評論
0/150
提交評論