版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
2026年程序員面試題及編程能力評估一、編程基礎(chǔ)(5題,每題10分,共50分)1.題目:請編寫一個函數(shù),實現(xiàn)將一個字符串中的所有大寫字母轉(zhuǎn)換為小寫字母,所有小寫字母轉(zhuǎn)換為大寫字母。示例:輸入"HelloWorld",輸出"hELLOwORLD"。2.題目:請實現(xiàn)一個函數(shù),計算一個鏈表的中間節(jié)點。假設(shè)鏈表長度為奇數(shù),返回中間節(jié)點;如果長度為偶數(shù),返回中間偏左的節(jié)點。示例:鏈表1->2->3->4->5,返回節(jié)點3;鏈表1->2->3->4,返回節(jié)點2。3.題目:請編寫一個函數(shù),實現(xiàn)快速排序算法。輸入一個整數(shù)數(shù)組,返回排序后的數(shù)組。示例:輸入[3,1,4,1,5,9,2,6],輸出[1,1,2,3,4,5,6,9]。4.題目:請實現(xiàn)一個函數(shù),檢查一個字符串是否是有效的括號組合。括號類型包括()、[]、{}。示例:輸入"()",返回true;輸入"([)]",返回false。5.題目:請編寫一個函數(shù),實現(xiàn)二分查找算法。輸入一個有序數(shù)組和一個目標(biāo)值,返回目標(biāo)值的索引。如果目標(biāo)值不存在,返回-1。示例:輸入[1,2,3,4,5],目標(biāo)值3,輸出2。二、算法與數(shù)據(jù)結(jié)構(gòu)(5題,每題15分,共75分)6.題目:請實現(xiàn)一個函數(shù),找到無重復(fù)字符的最長子串的長度。示例:輸入"abcabcbb",輸出3("abc")。7.題目:請編寫一個函數(shù),實現(xiàn)將一個非負(fù)整數(shù)轉(zhuǎn)換為羅馬數(shù)字。示例:輸入3,輸出"III"。8.題目:請實現(xiàn)一個函數(shù),檢查一個字符串是否是回文串。示例:輸入"121",返回true;輸入"1331",返回true;輸入"abcba",返回true;輸入"abba",返回false。9.題目:請編寫一個函數(shù),實現(xiàn)合并兩個有序鏈表,返回合并后的有序鏈表。示例:鏈表1:1->2->4,鏈表2:1->3->4,合并后1->1->2->3->4->4。10.題目:請實現(xiàn)一個函數(shù),給定一個二叉樹,返回其最大深度。示例:二叉樹[3,9,20,null,null,15,7],最大深度為3。三、系統(tǒng)設(shè)計(3題,每題25分,共75分)11.題目:設(shè)計一個簡單的微博系統(tǒng),需要支持以下功能:-用戶注冊和登錄-發(fā)布微博(限制長度為200字)-列出用戶關(guān)注的人的微博-點贊微博請說明系統(tǒng)的主要數(shù)據(jù)結(jié)構(gòu)和模塊設(shè)計。12.題目:設(shè)計一個短URL生成系統(tǒng),要求:-輸入一個長URL,生成一個短URL-輸入一個短URL,能解析回原長URL請說明系統(tǒng)的實現(xiàn)思路和數(shù)據(jù)存儲方式。13.題目:設(shè)計一個高并發(fā)計數(shù)器,要求:-支持高并發(fā)訪問和更新-精度要求在毫秒級別請說明系統(tǒng)的實現(xiàn)方案和可能遇到的挑戰(zhàn)。四、數(shù)據(jù)庫(2題,每題25分,共50分)14.題目:請編寫SQL查詢語句,查詢出2023年每個月的總銷售額,并按月份降序排列。示例:表結(jié)構(gòu)包含字段`sale_date`(日期)、`amount`(銷售額)。15.題目:請設(shè)計一個數(shù)據(jù)庫表,存儲學(xué)生信息和課程成績,要求:-學(xué)生表包含`student_id`(主鍵)、`name`(姓名)、`age`(年齡)-課程表包含`course_id`(主鍵)、`course_name`(課程名)-成績表包含`student_id`、`course_id`(外鍵)、`score`(分?jǐn)?shù)),要求查詢某個學(xué)生的所有課程成績。五、編程實踐(4題,每題25分,共100分)16.題目:請編寫一個Python函數(shù),實現(xiàn)將一個列表中的所有奇數(shù)移動到列表的前面,偶數(shù)移動到后面,并保持奇數(shù)和偶數(shù)各自的相對順序。示例:輸入[1,2,3,4,5],輸出[1,3,5,2,4]。17.題目:請編寫一個Java方法,實現(xiàn)將一個字符串中的所有空格替換為"%20"。示例:輸入"HelloWorld",輸出"Hello%20World"。18.題目:請編寫一個C++函數(shù),實現(xiàn)判斷一個整數(shù)是否為完全平方數(shù)。示例:輸入16,返回true;輸入14,返回false。19.題目:請編寫一個JavaScript函數(shù),實現(xiàn)深度克隆一個對象。示例:輸入{a:1,b:{c:2}},輸出{a:1,b:{c:2}}(獨立于原對象)。答案與解析一、編程基礎(chǔ)1.答案(Python):pythondefswap_case(s):returns.swapcase()解析:`swapcase()`方法會將字符串中的大寫字母轉(zhuǎn)換為小寫,小寫字母轉(zhuǎn)換為大寫。2.答案(Java):javaclassListNode{intval;ListNodenext;ListNode(intx){val=x;}}publicListNodemiddleNode(ListNodehead){ListNodeslow=head,fast=head;while(fast!=null&&fast.next!=null){slow=slow.next;fast=fast.next.next;}returnslow;}解析:快慢指針法,快指針每次移動兩步,慢指針每次移動一步,當(dāng)快指針到達末尾時,慢指針位于中間。3.答案(C++):cppinclude<vector>usingnamespacestd;voidquickSort(vector<int>&arr,intleft,intright){if(left<right){intpivot=arr[right];inti=left-1;for(intj=left;j<right;j++){if(arr[j]<pivot){i++;swap(arr[i],arr[j]);}}swap(arr[i+1],arr[right]);quickSort(arr,left,i);quickSort(arr,i+2,right);}}解析:快速排序的核心是選擇一個基準(zhǔn)值,將數(shù)組分為兩部分,一部分小于基準(zhǔn)值,一部分大于基準(zhǔn)值,然后遞歸排序。4.答案(JavaScript):javascriptfunctionisValid(s){conststack=[];constmap={')':'(','}':'{',']':'['};for(letcharofs){if(map[char]){if(stack.length===0||stack.pop()!==map[char]){returnfalse;}}else{stack.push(char);}}returnstack.length===0;}解析:使用棧來匹配括號,遇到右括號時檢查棧頂是否為對應(yīng)的左括號。5.答案(C#):csharppublicintBinarySearch(int[]nums,inttarget){intleft=0,right=nums.Length-1;while(left<=right){intmid=left+(right-left)/2;if(nums[mid]==target)returnmid;elseif(nums[mid]<target)left=mid+1;elseright=mid-1;}return-1;}解析:二分查找的核心是不斷縮小查找范圍,直到找到目標(biāo)值或范圍為空。二、算法與數(shù)據(jù)結(jié)構(gòu)6.答案(Java):javapublicintlengthOfLongestSubstring(Strings){int[]last=newint[128];Arrays.fill(last,-1);intstart=0,maxLen=0;for(inti=0;i<s.length();i++){charc=s.charAt(i);start=Math.max(start,last[c]+1);maxLen=Math.max(maxLen,i-start+1);last[c]=i;}returnmaxLen;}解析:使用數(shù)組記錄每個字符上一次出現(xiàn)的位置,滑動窗口法。7.答案(Python):pythondefintToRoman(num):val=[1000,900,500,400,100,90,50,40,10,9,5,4,1]syms=["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]roman=""i=0whilenum>0:for_inrange(num//val[i]):roman+=syms[i]num-=val[i]i+=1returnroman解析:將數(shù)字與羅馬數(shù)字的對應(yīng)關(guān)系存儲在兩個數(shù)組中,按從大到小遍歷。8.答案(JavaScript):javascriptfunctionisPalindrome(s){letleft=0,right=s.length-1;while(left<right){if(s[left]!==s[right])returnfalse;left++;right--;}returntrue;}解析:雙指針法,從兩端向中間遍歷,比較字符是否相同。9.答案(C++):cppstructListNode{intval;ListNodenext;ListNode(intx):val(x),next(NULL){}};ListNodemergeTwoLists(ListNodel1,ListNodel2){ListNodedummy(0);ListNodetail=&dummy;while(l1&&l2){if(l1->val<l2->val){tail->next=l1;l1=l1->next;}else{tail->next=l2;l2=l2->next;}tail=tail->next;}tail->next=l1?l1:l2;returndummy.next;}解析:合并兩個有序鏈表,使用虛擬頭節(jié)點簡化邊界處理。10.答案(Python):pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefmaxDepth(root):ifnotroot:return0return1+max(maxDepth(root.left),maxDepth(root.right))解析:遞歸計算左右子樹的最大深度,加1為當(dāng)前節(jié)點深度。三、系統(tǒng)設(shè)計11.答案:-數(shù)據(jù)結(jié)構(gòu):-用戶表:`user_id`(主鍵)、`username`、`password`、`follow_list`(存儲關(guān)注的用戶ID)-微博表:`tweet_id`(主鍵)、`user_id`(外鍵)、`content`、`timestamp`、`likes`(點贊數(shù))-點贊表:`like_id`(主鍵)、`user_id`(外鍵)、`tweet_id`(外鍵)-模塊設(shè)計:-用戶模塊:注冊、登錄、關(guān)注/取消關(guān)注-微博模塊:發(fā)布微博、獲取關(guān)注人微博-點贊模塊:點贊/取消點贊解析:采用關(guān)系型數(shù)據(jù)庫存儲數(shù)據(jù),用戶模塊負(fù)責(zé)用戶管理,微博模塊負(fù)責(zé)微博發(fā)布和展示,點贊模塊負(fù)責(zé)點贊功能。12.答案:-實現(xiàn)思路:-使用哈希表將長URL映射到短URL-短URL使用隨機或有序編碼生成-使用Base62編碼將長URL壓縮為短URL-數(shù)據(jù)存儲:-使用Redis存儲URL映射關(guān)系,支持高并發(fā)讀寫解析:哈希表提供O(1)的查詢效率,Redis保證高并發(fā)性能,Base62編碼減少短URL長度。13.答案:-實現(xiàn)方案:-使用Redis的`INCR`命令實現(xiàn)原子計數(shù)-使用分布式鎖保證并發(fā)安全-挑戰(zhàn):-高并發(fā)下精度問題(使用毫秒級時間戳)-數(shù)據(jù)一致性(使用分布式緩存)解析:Redis原子操作保證計數(shù)準(zhǔn)確性,分布式鎖解決并發(fā)沖突。四、數(shù)據(jù)庫14.答案(SQL):sqlSELECTEXTRACT(MONTHFROMsale_date)ASmonth,SUM(amount)AStotal_salesFROMsalesWHEREsale_date>='2023-01-01'ANDsale_date<'2024-01-01'GROUPBYEXTRACT(MONTHFROMsale_date)ORDERBYmonthDESC;解析:使用`EXTRACT`函數(shù)提取月份,`SUM`計算銷售額,`GROUPBY`按月份分組,`ORDERBY`降序排列。15.答案(SQL):sqlCREATETABLEstudents(student_idINTPRIMARYKEY,nameVARCHAR(50),ageINT);CREATETABLEcourses(course_idINTPRIMARYKEY,course_nameVARCHAR(50));CREATETABLEscores(student_idINT,course_idINT,scoreINT,FOREIGNKEY(student_id)REFERENCESstudents(student_id),FOREIGNKEY(course_id)REFERENCEScourses(course_id));SELECT,c.course_name,sc.scoreFROMscoresscJOINstudentssONsc.student_id=s.student_idJOINcoursescONsc.course_id=c.course_idWHEREsc.student_id=1;解析:創(chuàng)建三個表分別存儲學(xué)生、課程和成績,使用外鍵關(guān)聯(lián),查詢某個學(xué)生的成績。五、編程實踐16.答案(Python):pythondefreorderList(nums):odd=[]even=[]fornuminnums:ifnum%2==0:even.append(num)else:odd.append(num)returnodd+even解析:分別收集奇數(shù)和偶數(shù),然后合并。17.答案(Java):javapublicStringreplaceSpace(Strings){returns.replace("","%20");}解析:使用String類的`replace`方法替換空格。
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年上半年昭通學(xué)院招聘碩士研究生工作人員(26人)筆試備考試題及答案解析
- 外派人員及培訓(xùn)制度
- 2026年西北民族大學(xué)中華民族共同體學(xué)院招聘筆試模擬試題及答案解析
- 2026年度濟南市南部山區(qū)管理委員會所屬事業(yè)單位公開招聘初級綜合類崗位人員(13人)筆試備考題庫及答案解析
- 2026云南昆明市盤龍區(qū)新迎第二小學(xué)招聘3人筆試模擬試題及答案解析
- 2026中國礦業(yè)大學(xué)范鋼偉教授團隊博士后招聘(江蘇)筆試模擬試題及答案解析
- 2025年業(yè)余安全測試題及答案解析
- 培訓(xùn)講師積分激勵制度
- 建筑業(yè)崗位培訓(xùn)制度
- 火工品安全教育培訓(xùn)制度
- 2026年甘肅省蘭州市皋蘭縣蘭泉污水處理有限責(zé)任公司招聘筆試參考題庫及答案解析
- 陶瓷工藝品彩繪師崗前工作標(biāo)準(zhǔn)化考核試卷含答案
- 2025年全國高壓電工操作證理論考試題庫(含答案)
- 網(wǎng)絡(luò)銷售的專業(yè)知識培訓(xùn)課件
- 2024屆高考語文復(fù)習(xí):二元思辨類作文
- 《數(shù)字貿(mào)易學(xué)》教學(xué)大綱、二維碼試題及答案
- 大鎖孫天宇小品《時間都去哪了》臺詞劇本完整版-一年一度喜劇大賽
- 種子室內(nèi)檢驗技術(shù)基礎(chǔ)知識(種子質(zhì)量檢測技術(shù)課件)
- 智慧金庫項目需求書
- DB41T 2397-2023 機關(guān)食堂反食品浪費管理規(guī)范
- TOC戰(zhàn)略思想《關(guān)鍵鏈》
評論
0/150
提交評論