2026年軟件開發(fā)實(shí)習(xí)生技術(shù)面試問題集_第1頁(yè)
2026年軟件開發(fā)實(shí)習(xí)生技術(shù)面試問題集_第2頁(yè)
2026年軟件開發(fā)實(shí)習(xí)生技術(shù)面試問題集_第3頁(yè)
2026年軟件開發(fā)實(shí)習(xí)生技術(shù)面試問題集_第4頁(yè)
2026年軟件開發(fā)實(shí)習(xí)生技術(shù)面試問題集_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2026年軟件開發(fā)實(shí)習(xí)生技術(shù)面試問題集一、編程語(yǔ)言基礎(chǔ)(共5題,每題6分)1.題目:請(qǐng)用Python編寫一個(gè)函數(shù),實(shí)現(xiàn)將輸入的十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),并返回二進(jìn)制字符串。如果輸入不是正整數(shù),則返回"輸入錯(cuò)誤"。pythondefdecimal_to_binary(n):pass答案:pythondefdecimal_to_binary(n):ifnotisinstance(n,int)orn<0:return"輸入錯(cuò)誤"returnbin(n)[2:]解析:`isinstance(n,int)`檢查輸入是否為整數(shù),`n<0`排除負(fù)數(shù),`bin(n)[2:]`將十進(jìn)制轉(zhuǎn)為二進(jìn)制并去掉前綴`0b`。2.題目:請(qǐng)用Java實(shí)現(xiàn)一個(gè)方法,判斷一個(gè)字符串是否為回文(正讀反讀相同),例如"madam"是回文。javapublicstaticbooleanisPalindrome(Strings){//方法實(shí)現(xiàn)}答案:javapublicstaticbooleanisPalindrome(Strings){intleft=0,right=s.length()-1;while(left<right){if(s.charAt(left)!=s.charAt(right)){returnfalse;}left++;right--;}returntrue;}解析:雙指針法,從兩頭向中間遍歷,若字符不匹配則不是回文。3.題目:請(qǐng)用C++實(shí)現(xiàn)一個(gè)函數(shù),計(jì)算兩個(gè)正整數(shù)的最大公約數(shù)(GCD),要求使用輾轉(zhuǎn)相除法。cppintgcd(inta,intb){//方法實(shí)現(xiàn)}答案:cppintgcd(inta,intb){while(b!=0){inttemp=b;b=a%b;a=temp;}returna;}解析:輾轉(zhuǎn)相除法(歐幾里得算法),不斷用較小數(shù)替換較大數(shù),直到余數(shù)為0,最后的大數(shù)即為GCD。4.題目:請(qǐng)用JavaScript編寫一個(gè)箭頭函數(shù),實(shí)現(xiàn)數(shù)組去重,返回新的數(shù)組。例如`[1,2,2,3]`去重后為`[1,2,3]`。javascriptconstunique=arr=>{//方法實(shí)現(xiàn)};答案:javascriptconstunique=arr=>[...newSet(arr)];解析:`Set`自動(dòng)去重,展開運(yùn)算符轉(zhuǎn)換為數(shù)組。5.題目:請(qǐng)用Go語(yǔ)言實(shí)現(xiàn)一個(gè)函數(shù),接收一個(gè)字符串,返回其所有子串(不重復(fù))。例如輸入"abc",返回`["a","ab","abc","b","bc","c"]`。gofuncsubstrings(sstring)[]string{//方法實(shí)現(xiàn)}答案:gofuncsubstrings(sstring)[]string{n:=len(s)varres[]stringfori:=0;i<n;i++{forj:=i+1;j<=n;j++{res=append(res,s[i:j])}}returnres}解析:雙層循環(huán),外層固定起始位置,內(nèi)層擴(kuò)展子串,避免重復(fù)。二、數(shù)據(jù)結(jié)構(gòu)與算法(共5題,每題8分)1.題目:請(qǐng)用Python實(shí)現(xiàn)一個(gè)函數(shù),檢查括號(hào)字符串是否有效,例如`"()"`和`"()[]{}"`有效,`"(]"`無(wú)效。pythondefisValid(s):pass答案:pythondefisValid(s):stack=[]mapping={')':'(',']':'[','}':'{'}forcharins:ifcharinmapping:top=stack.pop()ifstackelse'#'ifmapping[char]!=top:returnFalseelse:stack.append(char)returnnotstack解析:用棧匹配括號(hào),左括號(hào)入棧,右括號(hào)與棧頂匹配,??涨覠o(wú)剩余字符則有效。2.題目:請(qǐng)用Java實(shí)現(xiàn)快速排序(QuickSort)算法,對(duì)整數(shù)數(shù)組進(jìn)行升序排序。javapublicstaticvoidquickSort(int[]arr,intleft,intright){//方法實(shí)現(xiàn)}答案:javapublicstaticvoidquickSort(int[]arr,intleft,intright){if(left<right){intpivotIndex=partition(arr,left,right);quickSort(arr,left,pivotIndex-1);quickSort(arr,pivotIndex+1,right);}}privatestaticintpartition(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;}privatestaticvoidswap(int[]arr,inti,intj){inttemp=arr[i];arr[i]=arr[j];arr[j]=temp;}解析:選擇右端點(diǎn)為基準(zhǔn),將小于基準(zhǔn)的移到左邊,大于的移到右邊,遞歸排序左右子區(qū)間。3.題目:請(qǐng)用C++實(shí)現(xiàn)二叉樹的層序遍歷(BFS),返回節(jié)點(diǎn)值的列表。例如:cppstructTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(intx):val(x),left(NULL),right(NULL){}};cppvector<int>levelOrder(TreeNoderoot){//方法實(shí)現(xiàn)}答案:cppvector<int>levelOrder(TreeNoderoot){vector<int>res;if(!root)returnres;queue<TreeNode>q;q.push(root);while(!q.empty()){TreeNodenode=q.front();q.pop();res.push_back(node->val);if(node->left)q.push(node->left);if(node->right)q.push(node->right);}returnres;}解析:隊(duì)列實(shí)現(xiàn)BFS,逐層遍歷節(jié)點(diǎn),將子節(jié)點(diǎn)入隊(duì)。4.題目:請(qǐng)用JavaScript實(shí)現(xiàn)一個(gè)函數(shù),找出數(shù)組中和為特定值的三元組,例如輸入`[1,2,-2,-1]`和目標(biāo)`0`,返回`[[-2,-1,3],[-1,2,-1]]`。javascriptconstthreeSum=(nums,target)=>{//方法實(shí)現(xiàn)};答案:javascriptconstthreeSum=(nums,target)=>{nums.sort((a,b)=>a-b);constres=[];for(leti=0;i<nums.length-2;i++){if(i>0&&nums[i]===nums[i-1])continue;letleft=i+1,right=nums.length-1;while(left<right){consttotal=nums[i]+nums[left]+nums[right];if(total===target){res.push([nums[i],nums[left],nums[right]]);while(left<right&&nums[left]===nums[left+1])left++;while(left<right&&nums[right]===nums[right-1])right--;left++;right--;}elseif(total<target){left++;}else{right--;}}}returnres;};解析:排序后雙指針,外層固定一個(gè)數(shù),內(nèi)層雙指針找另外兩個(gè)數(shù),跳過重復(fù)值。5.題目:請(qǐng)用Python實(shí)現(xiàn)一個(gè)函數(shù),找出鏈表的中間節(jié)點(diǎn),假設(shè)鏈表長(zhǎng)度為奇數(shù)或偶數(shù)。例如:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextpythondefmiddleNode(head):pass答案:pythondefmiddleNode(head):slow=fast=headwhilefastandfast.next:slow=slow.nextfast=fast.next.nextreturnslow解析:快慢指針,快指針每次走兩步,慢指針走一步,快指針到末尾時(shí)慢指針在中間。三、數(shù)據(jù)庫(kù)與SQL(共4題,每題7分)1.題目:請(qǐng)寫SQL查詢,找出員工工資高于其所在部門平均工資的所有員工信息(假設(shè)表名`employees`和`departments`,包含字段`id`,`name`,`salary`,`dept_id`)。sqlSELECTe.FROMemployeeseINNERJOINdepartmentsdONe.dept_id=d.idWHEREe.salary>(SELECTAVG(salary)FROMemployeesWHEREdept_id=e.dept_id);解析:子查詢計(jì)算每個(gè)部門平均工資,外層查詢篩選高于平均工資的員工。2.題目:請(qǐng)寫SQL查詢,找出在2023年入職且工作滿1年的員工名單(假設(shè)表名`employees`,包含字段`id`,`name`,`hire_date`)。sqlSELECTnameFROMemployeesWHEREhire_dateBETWEEN'2023-01-01'AND'2023-12-31'ANDhire_date<=DATE_SUB(CURDATE(),INTERVAL1YEAR);解析:篩選2023年入職且當(dāng)前日期距離入職日期大于等于1年的員工。3.題目:請(qǐng)寫SQL查詢,將所有訂單金額按降序排列,并顯示訂單號(hào)和金額,如果金額相同,則按訂單號(hào)升序排列(假設(shè)表名`orders`,包含字段`order_id`,`amount`)。sqlSELECTorder_id,amountFROMordersORDERBYamountDESC,order_idASC;解析:`ORDERBY`多字段排序,先按金額降序,金額相同則按訂單號(hào)升序。4.題目:請(qǐng)寫SQL查詢,統(tǒng)計(jì)每個(gè)部門的員工數(shù)量和平均工資,只顯示員工數(shù)量大于2的部門(假設(shè)表名`employees`和`departments`,包含字段`id`,`name`,`salary`,`dept_id`)。sqlSELECTASdepartment,COUNT(e.id)ASemployee_count,AVG(e.salary)ASavg_salaryFROMemployeeseJOINdepartmentsdONe.dept_id=d.idGROUPBYHAVINGCOUNT(e.id)>2;解析:連接表統(tǒng)計(jì)部門員工數(shù)和平均工資,`HAVING`篩選員工數(shù)大于2的部門。四、系統(tǒng)設(shè)計(jì)基礎(chǔ)(共3題,每題10分)1.題目:設(shè)計(jì)一個(gè)簡(jiǎn)單的短鏈接服務(wù),用戶輸入長(zhǎng)鏈接,系統(tǒng)返回短鏈接,點(diǎn)擊短鏈接后自動(dòng)跳轉(zhuǎn)回長(zhǎng)鏈接。請(qǐng)說(shuō)明主要組件和數(shù)據(jù)結(jié)構(gòu)。答案:-主要組件:1.URL縮短服務(wù):接收長(zhǎng)鏈接,生成短ID,存儲(chǔ)映射關(guān)系。2.數(shù)據(jù)庫(kù):存儲(chǔ)長(zhǎng)鏈接與短ID的映射(主鍵為短ID,索引為長(zhǎng)鏈接)。3.路由器:將短鏈接請(qǐng)求轉(zhuǎn)發(fā)到URL解析服務(wù)。4.URL解析服務(wù):根據(jù)短ID查找長(zhǎng)鏈接,返回跳轉(zhuǎn)指令。-數(shù)據(jù)結(jié)構(gòu):sqlCREATETABLEurl_mapping(short_idCHAR(6)PRIMARYKEY,long_urlVARCHAR(2048),created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP);-生成短ID:使用隨機(jī)算法或Base62編碼(a-z,A-Z,0-9)。2.題目:設(shè)計(jì)一個(gè)簡(jiǎn)單的微博關(guān)注系統(tǒng),用戶可以關(guān)注/取消關(guān)注其他用戶,請(qǐng)說(shuō)明數(shù)據(jù)表設(shè)計(jì)、核心邏輯和可能的優(yōu)化。答案:-數(shù)據(jù)表設(shè)計(jì):sqlCREATETABLEfollows(follower_idINT,followee_idINT,created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP,PRIMARYKEY(follower_id,followee_id),FOREIGNKEY(follower_id)REFERENCESusers(id),FOREIGNKEY(followee_id)REFERENCESusers(id));-核心邏輯:-關(guān)注:插入一條`(follower_id,followee_id)`記錄。-取消關(guān)注:刪除一條`(follower_id,followee_id)`記錄。-查詢關(guān)注列表:`SELECTfollowee_idFROMfollowsWHEREfollower_id=?`。-優(yōu)化:-使用索引加速查詢。-使用緩存(如Redis)存儲(chǔ)關(guān)注列表,減少數(shù)據(jù)庫(kù)壓力。3.題目:設(shè)計(jì)一個(gè)簡(jiǎn)單的秒殺系統(tǒng),用戶在指定時(shí)間點(diǎn)點(diǎn)擊購(gòu)買按鈕,系統(tǒng)需要保證秒殺成功。請(qǐng)說(shuō)明主要組件和防作弊策略。答案:-主要組件:1.前端:展示商品和秒殺按鈕,發(fā)送請(qǐng)求。2.網(wǎng)關(guān)/限流:防止惡意請(qǐng)求,如令牌桶算法。3.秒殺服務(wù):處理請(qǐng)求,驗(yàn)證庫(kù)存,記錄訂單。4.庫(kù)存服務(wù):實(shí)時(shí)扣減庫(kù)存,使用Redis鎖避免超賣。5.數(shù)據(jù)庫(kù):存儲(chǔ)商品信息、庫(kù)存數(shù)據(jù)和訂單記錄。-防作弊策略:-分布式鎖:使用Redis鎖或ZooKeeper保證并發(fā)時(shí)庫(kù)存正確。-驗(yàn)證碼:防止機(jī)器人刷單。-冪等性:確保同一請(qǐng)求只處理一次(如使用請(qǐng)求ID記錄已處理請(qǐng)求)。-庫(kù)存預(yù)扣:在高并發(fā)時(shí)先預(yù)扣庫(kù)存,成功后才扣減。五、項(xiàng)目與系統(tǒng)問題(共3題,每題8分)1.題目:你在實(shí)習(xí)項(xiàng)目中負(fù)責(zé)開發(fā)一個(gè)用戶登錄模塊,使用了JWT(JSONWebToken)進(jìn)行身份驗(yàn)證。請(qǐng)說(shuō)明JWT的工作原理、優(yōu)缺點(diǎn),以及如何處理JWT過期問題。答案:-工作原理:1.用戶登錄成功后,服務(wù)器生成JWT(包含用戶ID、權(quán)限等信息,并簽名)。2.將JWT返回給客戶端,客戶端存儲(chǔ)在`localStorage`或`cookie`中。3.客戶端每次請(qǐng)求時(shí)攜帶JWT。4.服務(wù)器驗(yàn)證簽名和過期時(shí)間,通過則放行。-優(yōu)缺點(diǎn):-優(yōu)點(diǎn):無(wú)狀態(tài)、可擴(kuò)展、跨域。-缺點(diǎn):不能存儲(chǔ)敏感信息(簽名后無(wú)法修改)、過期時(shí)間有限。-處理過期問題:-設(shè)置合理的過期時(shí)間(如5-10分鐘)。-使用刷新令牌(RefreshToken)機(jī)制,過期后用RefreshToken獲取新的JWT。2.題目:你在項(xiàng)目中使用了MySQL數(shù)據(jù)庫(kù),遇到一個(gè)性能問題:查詢某個(gè)表的特定列時(shí)非常慢。請(qǐng)說(shuō)明可能的原因和優(yōu)化方法。答案:-可能原因:1.缺少索引:查詢列未建立索引。2.全表掃描:查詢條件無(wú)效導(dǎo)致全表掃描。3.鎖競(jìng)爭(zhēng):高并發(fā)寫入導(dǎo)致鎖等待。4.慢查詢:SQL語(yǔ)句復(fù)雜或參數(shù)不合適。-優(yōu)化方法:1.添加索引:為查詢列創(chuàng)建索引。2.優(yōu)化SQL:避免`SELECT`,使用`EXPLAIN`分析查詢計(jì)劃。3.分表分庫(kù):數(shù)據(jù)量過大時(shí)進(jìn)行水平/垂直拆分。4.緩存:使用Redis緩存熱點(diǎn)數(shù)據(jù)。3.題目:你在項(xiàng)目中使用了Git進(jìn)行代碼管理,你和另一個(gè)同事同時(shí)修改了同一個(gè)文件,提交后導(dǎo)致沖突。請(qǐng)說(shuō)明如何解決沖突。答案:-解決步驟:1.合并沖突:-使用`gitdiff`查看沖突區(qū)域。-手動(dòng)編輯文件,刪除`<<<<<<<`、`=======`、`>>>>>>>`標(biāo)記

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論