版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2026年程序員編程競賽面試題含答案一、編程語言基礎(chǔ)(共3題,每題10分)1.題目(10分):請用Python編寫一個函數(shù),實(shí)現(xiàn)將輸入的十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制字符串。如果輸入不是正整數(shù),則返回錯誤信息“輸入必須為正整數(shù)”。答案:pythondefdecimal_to_binary(n):ifnotisinstance(n,int)orn<0:return"輸入必須為正整數(shù)"returnbin(n)[2:]測試用例print(decimal_to_binary(10))#輸出:1010print(decimal_to_binary(-5))#輸出:輸入必須為正整數(shù)print(decimal_to_binary(0))#輸出:0解析:-`isinstance(n,int)`檢查輸入是否為整數(shù)。-`n<0`確保輸入為正數(shù)。-`bin(n)[2:]`將十進(jìn)制轉(zhuǎn)為二進(jìn)制字符串,并去掉前綴`0b`。2.題目(10分):請用Java實(shí)現(xiàn)一個方法,接收一個字符串,返回該字符串中所有字符的頻率統(tǒng)計(jì)(字符為鍵,頻率為值)。例如,輸入`"hello"`,輸出`{'h':1,'e':1,'l':2,'o':1}`。答案:javaimportjava.util.HashMap;importjava.util.Map;publicclassFrequencyCounter{publicstaticMap<Character,Integer>countFrequency(Strings){Map<Character,Integer>freq=newHashMap<>();for(charc:s.toCharArray()){freq.put(c,freq.getOrDefault(c,0)+1);}returnfreq;}publicstaticvoidmain(String[]args){System.out.println(countFrequency("hello"));//輸出:{h=1,e=1,l=2,o=1}}}解析:-使用`HashMap`存儲字符和頻率。-`getOrDefault(c,0)`避免鍵不存在時的異常。3.題目(10分):請用C++編寫一個函數(shù),實(shí)現(xiàn)刪除字符串中的所有重復(fù)字符,并返回新字符串。例如,輸入`"abracadabra"`,輸出`"acdr"`。答案:cppinclude<iostream>include<string>include<unordered_set>std::stringremoveDuplicates(conststd::string&s){std::unordered_set<char>seen;std::stringresult;for(charc:s){if(seen.insert(c).second){//如果插入成功(即未重復(fù)),則添加到結(jié)果result+=c;}}returnresult;}intmain(){std::cout<<removeDuplicates("abracadabra")<<std::endl;//輸出:acdrreturn0;}解析:-`unordered_set`用于記錄已見字符,`insert().second`返回是否插入成功。-只有首次出現(xiàn)的字符被添加到結(jié)果中。二、數(shù)據(jù)結(jié)構(gòu)與算法(共4題,每題15分)1.題目(15分):請用Java實(shí)現(xiàn)快速排序算法,并對數(shù)組`{8,3,1,7,0,10,5}`進(jìn)行排序。答案:javapublicclassQuickSort{publicstaticvoidquickSort(int[]arr,intlow,inthigh){if(low<high){intpivotIndex=partition(arr,low,high);quickSort(arr,low,pivotIndex-1);quickSort(arr,pivotIndex+1,high);}}privatestaticintpartition(int[]arr,intlow,inthigh){intpivot=arr[high];inti=low-1;for(intj=low;j<high;j++){if(arr[j]<pivot){i++;swap(arr,i,j);}}swap(arr,i+1,high);returni+1;}privatestaticvoidswap(int[]arr,inti,intj){inttemp=arr[i];arr[i]=arr[j];arr[j]=temp;}publicstaticvoidmain(String[]args){int[]arr={8,3,1,7,0,10,5};quickSort(arr,0,arr.length-1);for(intnum:arr){System.out.print(num+"");//輸出:01357810}}}解析:-快速排序通過分治思想實(shí)現(xiàn),核心是`partition`函數(shù)。-每次選擇一個基準(zhǔn)值(這里取末尾),將小于它的放左邊,大于它的放右邊。2.題目(15分):請用Python實(shí)現(xiàn)二叉樹的層序遍歷(廣度優(yōu)先遍歷),并輸出節(jié)點(diǎn)值列表。例如,輸入如下樹:1/\23/\\456輸出:`[1,2,3,4,5,6]`。答案:pythonfromcollectionsimportdequeclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdeflevelOrder(root):ifnotroot:return[]result=[]queue=deque([root])whilequeue:level_size=len(queue)for_inrange(level_size):node=queue.popleft()result.append(node.val)ifnode.left:queue.append(node.left)ifnode.right:queue.append(node.right)returnresult構(gòu)建示例樹root=TreeNode(1)root.left=TreeNode(2)root.right=TreeNode(3)root.left.left=TreeNode(4)root.left.right=TreeNode(5)root.right.right=TreeNode(6)print(levelOrder(root))#輸出:[1,2,3,4,5,6]解析:-使用隊(duì)列實(shí)現(xiàn)BFS,按層級遍歷節(jié)點(diǎn)。-每次處理當(dāng)前層級的所有節(jié)點(diǎn),并將其子節(jié)點(diǎn)加入隊(duì)列。3.題目(15分):請用C++實(shí)現(xiàn)一個函數(shù),檢測鏈表中是否存在環(huán)(可以使用快慢指針法)。答案:cppinclude<iostream>structListNode{intval;ListNodenext;ListNode(intx):val(x),next(nullptr){}};boolhasCycle(ListNodehead){if(!head||!head->next)returnfalse;ListNodeslow=head;ListNodefast=head->next;while(slow!=fast){if(!fast||!fast->next)returnfalse;slow=slow->next;fast=fast->next->next;}returntrue;}intmain(){ListNodehead=newListNode(1);head->next=newListNode(2);head->next->next=newListNode(3);head->next->next->next=head->next;//形成環(huán)std::cout<<(hasCycle(head)?"存在環(huán)":"無環(huán)")<<std::endl;//輸出:存在環(huán)return0;}解析:-快慢指針分別以不同速度移動,若相遇則存在環(huán)。-若快指針到達(dá)`nullptr`,則無環(huán)。4.題目(15分):請用Java實(shí)現(xiàn)一個算法,找出數(shù)組中第K大的元素。例如,輸入`{3,2,1,5,6,4}`,`k=2`,輸出`5`。答案:javaimportjava.util.PriorityQueue;publicclassKthLargestElement{publicstaticintfindKthLargest(int[]nums,intk){PriorityQueue<Integer>minHeap=newPriorityQueue<>();for(intnum:nums){minHeap.offer(num);if(minHeap.size()>k){minHeap.poll();//保持堆大小為k}}returnminHeap.peek();}publicstaticvoidmain(String[]args){int[]nums={3,2,1,5,6,4};System.out.println(findKthLargest(nums,2));//輸出:5}}解析:-使用最小堆維護(hù)前`k`個最大元素。-堆大小超過`k`時彈出最小值,最終堆頂即為第`k`大元素。三、系統(tǒng)設(shè)計(jì)(共2題,每題20分)1.題目(20分):設(shè)計(jì)一個短鏈接(TinyURL)生成系統(tǒng)。要求:-輸入任意URL,返回固定長度的短鏈接。-支持反向解析,輸入短鏈接可還原原URL。-系統(tǒng)需支持高并發(fā)訪問。答案:javaimportjava.util.Random;publicclassTinyURL{privatestaticfinalStringCHAR_SET="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";privatestaticfinalintSHORT_URL_LENGTH=6;privateMap<String,String>urlMap=newHashMap<>();privateRandomrandom=newRandom();//生成短鏈接publicStringgenerateShortURL(StringlongURL){StringshortCode=generateRandomCode();while(urlMap.containsKey(shortCode)){//避免重復(fù)shortCode=generateRandomCode();}urlMap.put(shortCode,longURL);return"/"+shortCode;}//反向解析publicStringgetLongURL(StringshortURL){StringshortCode=shortURL.substring("/".length());returnurlMap.getOrDefault(shortCode,"URLnotfound");}privateStringgenerateRandomCode(){StringBuildersb=newStringBuilder();for(inti=0;i<SHORT_URL_LENGTH;i++){sb.append(CHAR_SET.charAt(random.nextInt(CHAR_SET.length())));}returnsb.toString();}//示例publicstaticvoidmain(String[]args){TinyURLtinyURL=newTinyURL();StringlongURL="/blog/post";StringshortURL=tinyURL.generateShortURL(longURL);System.out.println("ShortURL:"+shortURL);System.out.println("LongURL:"+tinyURL.getLongURL(shortURL));}}解析:-使用隨機(jī)字符串作為短碼,避免沖突。-`HashMap`存儲短碼與長URL的映射。-高并發(fā)可通過分布式緩存(如Redis)優(yōu)化。2.題目(20分):設(shè)計(jì)一個簡單的微博系統(tǒng),支持以下功能:-用戶發(fā)布微博(包含文本和發(fā)布時間)。-用戶關(guān)注/取消關(guān)注其他用戶。-用戶查看自己關(guān)注的人的微博(按時間倒序)。答案:javaimportjava.time.LocalDateTime;importjava.util.;classUser{Stringusername;Set<User>followers=newHashSet<>();Set<User>following=newHashSet<>();List<Tweet>tweets=newArrayList<>();publicUser(Stringusername){this.username=username;}publicvoidfollow(Useruser){following.add(user);user.followers.add(this);}publicvoidunfollow(Useruser){following.remove(user);user.followers.remove(this);}publicvoidpostTweet(Stringtext){tweets.add(newTweet(text,LocalDateTime.now()));}publicList<Tweet>getTimeline(){returnnewArrayList<>(tweets);//按時間倒序已存儲}}classTweet{Stringtext;LocalDateTimetimestamp;publicTweet(Stringtext,LocalDateTimetimestamp){this.text=text;this.timestamp=timestamp;}}//示例publicclassWeiboSystem{publicstaticvoidmain(String[]args){Useralice=newUser("Alice");Userbob=newUser("Bob");Usercarol=newUser("Carol");alice.follow(bob);alice.follow(carol);bob.postTweet("Helloworld!");carol.postTweet("Hi@Alice");System.out.println("Alice的微博時間線:");for(Tweettweet:alice.getTimeline()){System.out.println(tweet.text+"("+tweet.timestamp+")");}}}解析:-`User`類存儲用戶信息、關(guān)注關(guān)系和微博列表。-`follow/unfollow`維護(hù)關(guān)注關(guān)系。-`getTimeline`按時間倒序返回微博。-實(shí)際系統(tǒng)需支持?jǐn)?shù)據(jù)庫和分布式緩存。四、數(shù)據(jù)庫與存儲(共2題,每題15分)1.題目(15分):請用SQL編寫一個查詢,統(tǒng)計(jì)每個用戶的粉絲數(shù)量,并按粉絲數(shù)量降序排列。假設(shè)表名為`users`,字段包括`user_id`(用戶ID)和`follower_id`(關(guān)注者ID)。答案:sqlSELECTuser_id,COUNT(follower_id)ASfollower_countFROM(SELECTDISTINCTuser_idASuser_id,follower_idFROMuse
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年湖南省衡陽市單招職業(yè)適應(yīng)性考試題庫附答案解析
- 2026內(nèi)蒙古自治區(qū)公務(wù)員考試言語理解與表達(dá)專項(xiàng)練習(xí)題及答案參考
- 2023年湖北三峽職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試題庫附答案解析
- 2025年內(nèi)蒙古能源職業(yè)學(xué)院單招職業(yè)技能測試題庫附答案解析
- 2025年安徽礦業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性考試模擬測試卷附答案解析
- 2025年廈門興才職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性考試模擬測試卷附答案解析
- 2025年湖北城市建設(shè)職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性考試題庫附答案解析
- 2024年廈門演藝職業(yè)學(xué)院單招綜合素質(zhì)考試題庫附答案解析
- 2024年陜西青年職業(yè)學(xué)院單招職業(yè)傾向性考試題庫附答案解析
- 2024年河北省承德市單招職業(yè)適應(yīng)性考試模擬測試卷附答案解析
- 《電子工業(yè)全光網(wǎng)絡(luò)工程技術(shù)規(guī)范》
- 3 面粉碼垛機(jī)器人的結(jié)構(gòu)設(shè)計(jì)
- 腦梗塞所致精神障礙病人護(hù)理
- 護(hù)理組長競聘演講
- 露天煤礦安全用電培訓(xùn)
- 股骨粗隆間骨折分型培訓(xùn)課件
- 24年一年級上冊語文期末復(fù)習(xí)21天沖刺計(jì)劃(每日5道題)
- 靜療工作總結(jié)
- 2024-2025學(xué)年吉安市泰和縣六上數(shù)學(xué)期末綜合測試模擬試題含解析
- 五年級下學(xué)期數(shù)學(xué)自然數(shù)(課件)
- JJF 1064-2024坐標(biāo)測量機(jī)校準(zhǔn)規(guī)范
評論
0/150
提交評論