萍鄉(xiāng)市煙草公司2025秋招軟件開發(fā)崗位面試模擬題及答案_第1頁
萍鄉(xiāng)市煙草公司2025秋招軟件開發(fā)崗位面試模擬題及答案_第2頁
萍鄉(xiāng)市煙草公司2025秋招軟件開發(fā)崗位面試模擬題及答案_第3頁
萍鄉(xiāng)市煙草公司2025秋招軟件開發(fā)崗位面試模擬題及答案_第4頁
萍鄉(xiāng)市煙草公司2025秋招軟件開發(fā)崗位面試模擬題及答案_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

萍鄉(xiāng)市煙草公司2025秋招軟件開發(fā)崗位面試模擬題及答案一、編程語言與基礎(chǔ)算法(共5題,每題10分,總分50分)1.題目:請用Python編寫一個函數(shù),實現(xiàn)將任意輸入的十六進(jìn)制字符串轉(zhuǎn)換為十進(jìn)制整數(shù)。若輸入非法(非十六進(jìn)制字符串),則返回`None`。答案:pythondefhex_to_decimal(hex_str):try:returnint(hex_str,16)exceptValueError:returnNone解析:-`int()`函數(shù)可直接將十六進(jìn)制字符串轉(zhuǎn)換為十進(jìn)制,第二個參數(shù)`16`指定進(jìn)制。-若輸入非法(如包含字母`g`),`int()`會拋出`ValueError`,此時返回`None`。2.題目:給定一個數(shù)組`arr`,請實現(xiàn)一個函數(shù),返回數(shù)組中所有“連續(xù)遞增”子數(shù)組的和的最大值。例如:`arr=[1,2,3,2,4,1]`,最大和為`[1,2,3]`的`6`。答案:pythondefmax_consecutive_sum(arr):ifnotarr:return0max_sum=current_sum=arr[0]foriinrange(1,len(arr)):ifarr[i]>arr[i-1]:current_sum+=arr[i]else:current_sum=arr[i]max_sum=max(max_sum,current_sum)returnmax_sum解析:-使用雙指針遍歷數(shù)組,`current_sum`記錄當(dāng)前遞增子數(shù)組的和,`max_sum`記錄最大和。-若當(dāng)前元素不大于前一個,則重置`current_sum`為當(dāng)前元素。3.題目:請用Java實現(xiàn)一個方法,統(tǒng)計一個字符串中所有單詞的出現(xiàn)頻率(忽略大小寫和標(biāo)點符號),并按頻率降序返回結(jié)果。例如:`input="Hello,world!Hello"`,輸出`{"Hello":2,"world":1}`。答案:javaimportjava.util.;publicclassWordFrequency{publicstaticMap<String,Integer>countFrequency(Stringinput){Map<String,Integer>freqMap=newHashMap<>();String[]words=input.replaceAll("[^a-zA-Z]","").toLowerCase().split("\\s+");for(Stringword:words){freqMap.put(word,freqMap.getOrDefault(word,0)+1);}List<Map.Entry<String,Integer>>entries=newArrayList<>(freqMap.entrySet());entries.sort((a,b)->b.getValue().compareTo(a.getValue()));Map<String,Integer>sortedMap=newLinkedHashMap<>();for(Map.Entry<String,Integer>entry:entries){sortedMap.put(entry.getKey(),entry.getValue());}returnsortedMap;}}解析:-先用正則表達(dá)式去除標(biāo)點符號并轉(zhuǎn)為小寫,再按空格分割單詞。-使用`HashMap`統(tǒng)計頻率,最后按頻率降序排序(Java8以上可使用`TreeMap`或自定義排序)。4.題目:請用C++實現(xiàn)快速排序算法,并要求原地排序(不使用額外數(shù)組)。答案:cppinclude<vector>usingnamespacestd;voidquickSort(vector<int>&arr,intleft,intright){if(left>=right)return;intpivot=arr[(left+right)/2];inti=left,j=right;while(i<=j){while(arr[i]<pivot)i++;while(arr[j]>pivot)j--;if(i<=j){swap(arr[i],arr[j]);i++,j--;}}quickSort(arr,left,j);quickSort(arr,i,right);}解析:-選擇中位數(shù)作為`pivot`,將數(shù)組分為`<pivot`和`>pivot`兩部分。-遞歸對左右子區(qū)間進(jìn)行排序,直到所有元素有序。5.題目:請用JavaScript實現(xiàn)一個函數(shù),檢查一個字符串是否為“回文”(正序和倒序相同),忽略空格和大小寫。答案:javascriptfunctionisPalindrome(str){str=str.toLowerCase().replace(/\s/g,'');letleft=0,right=str.length-1;while(left<right){if(str[left]!==str[right])returnfalse;left++,right--;}returntrue;}解析:-先去除空格并轉(zhuǎn)為小寫,然后雙指針從首尾向中間遍歷。-若字符不匹配,則不是回文。二、數(shù)據(jù)庫與SQL(共4題,每題12分,總分48分)1.題目:假設(shè)有以下數(shù)據(jù)庫表結(jié)構(gòu):sqlCREATETABLESales(idINTPRIMARYKEY,product_nameVARCHAR(50),regionVARCHAR(50),amountDECIMAL(10,2),dateDATE);請寫SQL查詢,統(tǒng)計萍鄉(xiāng)市(假設(shè)`region`包含“萍鄉(xiāng)”)2024年每個產(chǎn)品的銷售額(`amount`)總和,結(jié)果按銷售額降序排列。答案:sqlSELECTproduct_name,SUM(amount)AStotal_salesFROMSalesWHEREregion='萍鄉(xiāng)'ANDYEAR(date)=2024GROUPBYproduct_nameORDERBYtotal_salesDESC;解析:-`WHERE`過濾萍鄉(xiāng)地區(qū)和2024年數(shù)據(jù)。-`SUM(amount)`計算每個產(chǎn)品的銷售額,`GROUPBY`按產(chǎn)品分組。-`ORDERBYDESC`降序排列。2.題目:請用SQL實現(xiàn)一個查詢,返回每個產(chǎn)品在2024年的平均銷售額,但若某個產(chǎn)品在萍鄉(xiāng)地區(qū)的銷售額為0,則該產(chǎn)品的平均銷售額也為0(即使其他地區(qū)有銷售額)。答案:sqlSELECTproduct_name,CASEWHENSUM(CASEWHENregion='萍鄉(xiāng)'THENamountELSE0END)=0THEN0ELSEAVG(amount)ENDASavg_salesFROMSalesWHEREYEAR(date)=2024GROUPBYproduct_name;解析:-使用`CASE`判斷:若萍鄉(xiāng)地區(qū)銷售額為0,則平均值為0;否則使用`AVG(amount)`。-內(nèi)層`CASE`用于過濾萍鄉(xiāng)地區(qū)的`amount`。3.題目:請寫SQL查詢,返回2024年銷售額最低的產(chǎn)品名稱及其銷售額,若有多個產(chǎn)品并列最低,則全部返回。答案:sqlSELECTproduct_name,MIN(amount)ASmin_salesFROMSalesWHEREYEAR(date)=2024GROUPBYproduct_nameHAVINGMIN(amount)=(SELECTMIN(amount)FROMSalesWHEREYEAR(date)=2024);解析:-外層查詢每個產(chǎn)品的最小銷售額。-`HAVING`過濾出最低銷售額的記錄(子查詢確保只比較2024年數(shù)據(jù))。4.題目:假設(shè)有另一個表`Product`:sqlCREATETABLEProduct(idINTPRIMARYKEY,nameVARCHAR(50));請寫SQL查詢,返回每個產(chǎn)品的總銷售額,但僅包含在`Product`表中存在的產(chǎn)品。答案:sqlSELECT,SUM(s.amount)AStotal_salesFROMSalessJOINProductpONduct_name=WHEREYEAR(s.date)=2024GROUPBY;解析:-使用`JOIN`連接`Sales`和`Product`表(通過`product_name`關(guān)聯(lián))。-`WHERE`過濾2024年數(shù)據(jù),`GROUPBY`按產(chǎn)品名稱分組。三、系統(tǒng)設(shè)計與數(shù)據(jù)庫(共3題,每題16分,總分48分)1.題目:假設(shè)萍鄉(xiāng)煙草公司需要開發(fā)一個銷售數(shù)據(jù)報表系統(tǒng),用戶可以按區(qū)域、日期范圍查詢銷售額。請簡述系統(tǒng)設(shè)計思路,包括:1.數(shù)據(jù)庫表設(shè)計(至少3張表)。2.API設(shè)計(至少1個查詢接口)。答案:1.數(shù)據(jù)庫表設(shè)計:-Sales(銷售明細(xì)表):sqlCREATETABLESales(idINTPRIMARYKEY,order_idINT,product_idINT,regionVARCHAR(50),amountDECIMAL(10,2),dateDATE,FOREIGNKEY(product_id)REFERENCESProduct(id));-Product(產(chǎn)品表):sqlCREATETABLEProduct(idINTPRIMARYKEY,nameVARCHAR(50));-Region(區(qū)域表):sqlCREATETABLERegion(idINTPRIMARYKEY,nameVARCHAR(50));2.API設(shè)計:jsonGET/api/sales-report?region=萍鄉(xiāng)&start_date=2024-01-01&end_date=2024-12-31響應(yīng)示例:json{"product_sales":[{"name":"香煙","total":10000},{"name":"打火機(jī)","total":5000}],"region_sales":15000}解析:-表設(shè)計考慮銷售、產(chǎn)品和區(qū)域的多表關(guān)聯(lián)。-API支持分頁和日期范圍查詢,返回按產(chǎn)品匯總的銷售額。2.題目:請設(shè)計一個簡單的用戶登錄系統(tǒng),要求:1.支持用戶名密碼注冊登錄。2.密碼需加鹽(salt)并哈希存儲。3.提供接口驗證登錄。答案:1.數(shù)據(jù)庫表設(shè)計:sqlCREATETABLEUser(idINTPRIMARYKEYAUTO_INCREMENT,usernameVARCHAR(50)UNIQUE,password_hashVARCHAR(255),saltVARCHAR(255));2.接口設(shè)計(偽代碼):pythondefregister(username,password):salt=generate_salt()password_hash=hash_password(password+salt)INSERTINTOUser(username,password_hash,salt)VALUES(username,password_hash,salt)deflogin(username,password):user=SELECTFROMUserWHEREusername=usernameifnotuser:returnFalsesalt=user.saltpassword_hash=hash_password(password+salt)returnpassword_hash==user.password_hash解析:-使用`salt`增加密碼安全性,`hash_password`可以是SHA-256。-登錄時重新計算哈希值并與數(shù)據(jù)庫對比。3.題目:假設(shè)萍鄉(xiāng)煙草公司需要緩存常用數(shù)據(jù)(如產(chǎn)品列表),請說明如何設(shè)計緩存策略(如Redis),并考慮緩存失效和更新機(jī)制。答案:1.緩存設(shè)計:-使用Redis存儲產(chǎn)品列表,鍵如`"products"`,值存儲JSON字符串。-緩存有效期設(shè)為1小時(可按業(yè)務(wù)調(diào)整)。2.緩存更新機(jī)制:-寫操作:-更新產(chǎn)品時,先刪除緩存(`DEL"products"`),數(shù)據(jù)庫更新

溫馨提示

  • 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

提交評論