程序員技術(shù)面試題含答案_第1頁
程序員技術(shù)面試題含答案_第2頁
程序員技術(shù)面試題含答案_第3頁
程序員技術(shù)面試題含答案_第4頁
程序員技術(shù)面試題含答案_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

2026年程序員技術(shù)面試題含答案一、編程語言基礎(chǔ)(5題,每題6分,共30分)1.Java題目:編寫一個Java方法,接收一個整數(shù)數(shù)組,返回數(shù)組中所有奇數(shù)元素的和。要求使用StreamAPI實現(xiàn),并說明時間復(fù)雜度。javapublicintsumOfOdds(int[]nums){//實現(xiàn)代碼}2.Python題目:編寫一個Python函數(shù),接收一個字符串,返回該字符串中所有重復(fù)字符的集合。例如,輸入"hello",返回{'l','o'}。pythondefduplicate_chars(s):實現(xiàn)代碼3.C++題目:實現(xiàn)一個C++函數(shù),判斷一個字符串是否為回文(忽略大小寫和空格)。例如,輸入"Racecar",返回`true`。cppboolisPalindrome(conststd::string&str){//實現(xiàn)代碼}4.JavaScript題目:編寫一個JavaScript函數(shù),接收一個對象,返回該對象中所有鍵的值排序后的新對象。例如,輸入`{b:2,a:1,c:3}`,返回`{a:1,b:2,c:3}`。javascriptfunctionsortObjectValues(obj){//實現(xiàn)代碼}5.Go題目:編寫一個Go函數(shù),接收兩個整數(shù)切片,返回它們的交集(去重后)。例如,輸入`[1,2,3]`和`[2,3,4]`,返回`[2,3]`。gofuncintersection(a,b[]int)[]int{//實現(xiàn)代碼}二、數(shù)據(jù)結(jié)構(gòu)與算法(8題,每題7分,共56分)1.數(shù)組題目:給定一個未排序的整數(shù)數(shù)組,實現(xiàn)快速排序算法。要求說明時間復(fù)雜度和空間復(fù)雜度。javavoidquickSort(int[]arr,intleft,intright){//實現(xiàn)代碼}2.鏈表題目:實現(xiàn)一個單鏈表,包含頭節(jié)點。添加一個方法`removeDuplicates()`,刪除鏈表中所有重復(fù)的元素,要求保持元素順序。例如,輸入`1->2->2->3->3->4`,返回`1->2->3->4`。pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefremoveDuplicates(self):實現(xiàn)代碼3.棧題目:判斷一個字符串是否為有效的括號組合("()"、"[]"、"{}")。例如,輸入`"(({[]}))"`,返回`true`。javascriptfunctionisValid(s){//實現(xiàn)代碼}4.樹題目:給定一個二叉搜索樹,實現(xiàn)中序遍歷的迭代版本(使用棧)。javapublicList<Integer>inorderTraversal(TreeNoderoot){//實現(xiàn)代碼}5.哈希表題目:實現(xiàn)一個LRU(最近最少使用)緩存,容量為3。使用哈希表和雙向鏈表實現(xiàn),要求添加和刪除操作的時間復(fù)雜度為O(1)。pythonclassLRUCache:def__init__(self,capacity:int):實現(xiàn)代碼defget(self,key:int)->int:實現(xiàn)代碼defput(self,key:int,value:int)->None:實現(xiàn)代碼6.貪心算法題目:有n個活動,每個活動有一個開始時間和結(jié)束時間。設(shè)計一個算法,選擇最多不沖突的活動。例如,輸入`[(1,4),(2,3),(3,5),(0,6),(5,7)]`,返回`(1,4),(3,5),(5,7)`。cppvector<pair<int,int>>selectActivities(vector<pair<int,int>>&activities){//實現(xiàn)代碼}7.動態(tài)規(guī)劃題目:給定一個字符串,計算最長的回文子串的長度。例如,輸入"babad",返回3("bab"或"aba")。javapublicintlongestPalindrome(Strings){//實現(xiàn)代碼}8.圖題目:實現(xiàn)Dijkstra算法,計算從起點到所有點的最短路徑。使用鄰接表表示圖。pythondefdijkstra(graph,start):實現(xiàn)代碼三、系統(tǒng)設(shè)計(3題,每題12分,共36分)1.短鏈接系統(tǒng)設(shè)計:設(shè)計一個短鏈接系統(tǒng)(如TinyURL),要求:-輸入長鏈接,返回短鏈接(如`/abc`)。-輸入短鏈接,返回長鏈接。-需要考慮高并發(fā)、分布式場景下的唯一性和性能。2.實時聊天系統(tǒng)設(shè)計:設(shè)計一個支持萬人同時在線的實時聊天系統(tǒng),要求:-支持一對一和群聊。-消息實時同步,延遲低。-需要考慮可擴展性和容錯性。3.分布式計數(shù)器設(shè)計:設(shè)計一個分布式計數(shù)器,支持高并發(fā)寫入和讀取,要求:-可水平擴展。-保證計數(shù)器值的唯一性和一致性。-使用Redis或類似工具實現(xiàn)(可簡述或代碼實現(xiàn))。四、數(shù)據(jù)庫與中間件(4題,每題9分,共36分)1.SQL題目:給定一個訂單表`orders`(`order_id,customer_id,order_date,total_amount`)和一個客戶表`customers`(`customer_id,name,city`),查詢每個城市的客戶訂單總金額,并按金額降序排列。sqlSELECTcity,SUM(total_amount)AStotalFROMordersJOINcustomersONorders.customer_id=customers.customer_idGROUPBYcityORDERBYtotalDESC;2.Redis題目:解釋Redis的RDB和AOF兩種持久化方式的優(yōu)缺點,并說明在高并發(fā)場景下如何選擇。3.消息隊列題目:設(shè)計一個秒殺系統(tǒng),使用Kafka或RabbitMQ實現(xiàn),要求:-防止超賣。-處理消息丟失和重復(fù)消費問題。4.MySQL索引題目:解釋MySQL中的B-Tree索引和哈希索引的區(qū)別,并說明在什么場景下使用哪種索引。答案與解析一、編程語言基礎(chǔ)1.Java題目:javapublicintsumOfOdds(int[]nums){returnArrays.stream(nums).filter(num->num%2!=0).sum();}解析:使用StreamAPI的`filter`篩選奇數(shù),`sum`求和。時間復(fù)雜度為O(n),空間復(fù)雜度為O(1)。2.Python題目:pythondefduplicate_chars(s):returnset([charforcharinsifs.count(char)>1])解析:遍歷字符串,使用`count`統(tǒng)計每個字符的出現(xiàn)次數(shù),重復(fù)的字符加入集合。時間復(fù)雜度為O(n^2),可優(yōu)化為O(n)使用哈希表。3.C++題目:cppboolisPalindrome(conststd::string&str){intleft=0,right=str.size()-1;while(left<right){while(!isalnum(str[left])&&left<right)left++;while(!isalnum(str[right])&&left<right)right--;if(tolower(str[left])!=tolower(str[right]))returnfalse;left++;right--;}returntrue;}解析:雙指針從兩端向中間遍歷,忽略非字母數(shù)字字符,比較大小寫不敏感的字符。時間復(fù)雜度為O(n)。4.JavaScript題目:javascriptfunctionsortObjectValues(obj){returnObject.keys(obj).sort((a,b)=>obj[a]-obj[b]).reduce((acc,key)=>({...acc,[key]:obj[key]}),{});}解析:排序鍵值對,然后重新構(gòu)建對象。時間復(fù)雜度為O(nlogn)。5.Go題目:gofuncintersection(a,b[]int)[]int{mapA:=make(map[int]bool)for_,num:=rangea{mapA[num]=true}result:=[]int{}for_,num:=rangeb{if_,exists:=mapA[num];exists{result=append(result,num)delete(mapA,num)}}returnresult}解析:使用哈希表去重,然后計算交集。時間復(fù)雜度為O(n)。二、數(shù)據(jù)結(jié)構(gòu)與算法1.數(shù)組題目:javavoidquickSort(int[]arr,intleft,intright){if(left<right){intpivot=partition(arr,left,right);quickSort(arr,left,pivot-1);quickSort(arr,pivot+1,right);}}intpartition(int[]arr,intleft,intright){intpivot=arr[right];inti=left-1;for(intj=left;j<right;j++){if(arr[j]<=pivot){i++;swap(arr,i,j);}}swap(arr,i+1,right);returni+1;}解析:快速排序時間復(fù)雜度平均為O(nlogn),最壞為O(n^2),空間復(fù)雜度為O(logn)。2.鏈表題目:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefremoveDuplicates(self):current=selfwhilecurrent:whilecurrent.nextandcurrent.val==current.next.val:current.next=current.next.nextcurrent=current.next解析:快速跳過重復(fù)節(jié)點。時間復(fù)雜度為O(n)。3.棧題目:javascriptfunctionisValid(s){conststack=[];constmap={')':'(','}':'{',']':'['};for(constcharofs){if(map[char]){consttop=stack.pop();if(top!==map[char])returnfalse;}else{stack.push(char);}}returnstack.length===0;}解析:使用棧匹配括號。時間復(fù)雜度為O(n)。4.樹題目:javapublicList<Integer>inorderTraversal(TreeNoderoot){List<Integer>result=newArrayList<>();Stack<TreeNode>stack=newStack<>();TreeNodecurrent=root;while(current!=null||!stack.isEmpty()){while(current!=null){stack.push(current);current=current.left;}current=stack.pop();result.add(current.val);current=current.right;}returnresult;}解析:迭代中序遍歷。時間復(fù)雜度為O(n)。5.哈希表題目:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.order=[]defget(self,key:int)->int:ifkeynotinself.cache:return-1self.order.remove(key)self.order.append(key)returnself.cache[key]defput(self,key:int,value:int)->None:ifkeyinself.cache:self.order.remove(key)eliflen(self.cache)==self.capacity:self.cache.pop(self.order.pop(0))self.cache[key]=valueself.order.append(key)解析:使用哈希表記錄鍵值,雙向鏈表記錄順序。時間復(fù)雜度為O(1)。6.貪心算法題目:cppvector<pair<int,int>>selectActivities(vector<pair<int,int>>&activities){sort(activities,[&](constpair<int,int>&a,constpair<int,int>&b){returna.second<b.second;});vector<pair<int,int>>result;intlastEnd=-1;for(constauto&act:activities){if(act.first>lastEnd){result.push_back(act);lastEnd=act.second;}}returnresult;}解析:按結(jié)束時間排序,選擇不沖突的活動。時間復(fù)雜度為O(nlogn)。7.動態(tài)規(guī)劃題目:javapublicintlongestPalindrome(Strings){intn=s.length();boolean[][]dp=newboolean[n][n];intmaxLen=1;for(inti=0;i<n;i++){dp[i][i]=true;}for(inti=n-1;i>=0;i--){for(intj=i+1;j<n;j++){if(s.charAt(i)==s.charAt(j)){dp[i][j]=i+1>=j-1||dp[i+1][j-1];if(dp[i][j]&&j-i+1>maxLen){maxLen=j-i+1;}}}}returnmaxLen;}解析:動態(tài)規(guī)劃計算最長回文子串。時間復(fù)雜度為O(n^2)。8.圖題目:pythondefdijkstra(graph,start):dist={node:float('inf')fornodeingraph}dist[start]=0pq=[(0,start)]whilepq:current_dist,u=heapq.heappop(pq)ifcurrent_dist>dist[u]:continueforv,weightingraph[u].items():distance=current_dist+

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論