2025年測(cè)試開發(fā)工程師崗位招聘面試考試試題及參考答案_第1頁(yè)
2025年測(cè)試開發(fā)工程師崗位招聘面試考試試題及參考答案_第2頁(yè)
2025年測(cè)試開發(fā)工程師崗位招聘面試考試試題及參考答案_第3頁(yè)
2025年測(cè)試開發(fā)工程師崗位招聘面試考試試題及參考答案_第4頁(yè)
2025年測(cè)試開發(fā)工程師崗位招聘面試考試試題及參考答案_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

2025年測(cè)試開發(fā)工程師崗位招聘面試考試試題及參考答案一、單項(xiàng)選擇題(每題2分,共20分。每題只有一個(gè)正確答案,請(qǐng)將正確選項(xiàng)字母填入括號(hào)內(nèi))1.在Linux系統(tǒng)中,查看當(dāng)前目錄下所有文件(含隱藏文件)詳細(xì)信息的命令是()A.lsaB.lslC.lsalD.lsd答案:C2.某Web接口返回JSON結(jié)構(gòu){"code":0,"data":{"uid":10086,"nick":"tom"}},使用Python提取nick字段值,最安全的寫法是()A.json.loads(resp)["data"]["nick"]B.json.loads(resp).get("data",{}).get("nick")C.json.loads(resp)["data"].get("nick")D.json.loads(resp).get("data")["nick"]答案:B3.在MySQL8.0中,建立唯一索引的語(yǔ)句是()A.CREATEINDEXuniq_idxONuser(name)B.CREATEUNIQUEINDEXuniq_idxONuser(name)C.ALTERTABLEuserADDINDEXuniq_idx(name)D.ALTERTABLEuserADDUNIQUEKEYuniq_idx(name)答案:B4.使用Postman批量運(yùn)行集合時(shí),實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)測(cè)試需上傳的文件格式為()A.XMLB.YAMLC.JSON/CSVD.INI答案:C5.在JMeter中,用于提取響應(yīng)頭SetCookie中sessionId的正則提取器配置,模板應(yīng)填()A.$0$B.$1$C.$2$D.${sessionId}答案:B6.某算法時(shí)間復(fù)雜度為O(nlogn),當(dāng)輸入規(guī)模擴(kuò)大4倍時(shí),理論耗時(shí)約為原來(lái)的()A.4倍B.8倍C.16倍D.4log4倍答案:D7.在Git中,將當(dāng)前分支dev強(qiáng)制推送到遠(yuǎn)程同名分支的正確命令是()A.gitpushorigindevB.gitpushforigindevC.gitpushsetupstreamorigindevD.gitpushallorigin答案:B8.使用SeleniumWebDriver定位class包含btn且文本為“提交”的按鈕,最佳CSS選擇器是()A..btnB.button[class='btn']C.button.btnD.button.btn:contains('提交')答案:B9.在Dockerfile中,指定容器啟動(dòng)默認(rèn)執(zhí)行的指令是()A.RUNB.CMDC.ENTRYPOINTD.ENV答案:B10.對(duì)一段Python代碼做靜態(tài)類型檢查,官方推薦的工具是()A.pylintB.flake8C.mypyD.bandit答案:C二、多項(xiàng)選擇題(每題3分,共15分。每題有兩個(gè)或兩個(gè)以上正確答案,多選、少選、錯(cuò)選均不得分)11.以下屬于HTTP/2新特性的有()A.頭部壓縮B.服務(wù)器推送C.多路復(fù)用D.基于文本的協(xié)議答案:A、B、C12.關(guān)于Python裝飾器,下列說(shuō)法正確的有()A.裝飾器本身必須是可調(diào)用對(duì)象B.裝飾器一定會(huì)改變?cè)瘮?shù)的__name__屬性C.functools.wraps可保留原函數(shù)元數(shù)據(jù)D.一個(gè)函數(shù)可同時(shí)被多個(gè)裝飾器疊加答案:A、C、D13.在持續(xù)集成流水線中,以下哪些環(huán)節(jié)通常包含質(zhì)量門禁()A.單元測(cè)試通過(guò)率B.代碼覆蓋率C.靜態(tài)代碼掃描等級(jí)D.需求評(píng)審結(jié)論答案:A、B、C14.以下SQL語(yǔ)句可觸發(fā)索引失效的有()A.SELECTFROMuserWHEREYEAR(birth)=1990B.SELECTFROMuserWHEREnameLIKE'%tom'C.SELECTFROMuserWHEREid+1=100D.SELECTFROMuserWHEREname='tom'ANDage=20答案:A、B、C15.使用Appium進(jìn)行Android自動(dòng)化時(shí),必需的環(huán)境有()A.AndroidSDKB.JDKC.AppiumServerD.Xcode答案:A、B、C三、填空題(每空2分,共20分)16.在TCP三次握手過(guò)程中,客戶端發(fā)送的第二個(gè)報(bào)文段標(biāo)志位是________。答案:SYN+ACK17.Python3中,使用________關(guān)鍵字可以捕獲所有異?;悺4鸢福篍xception18.在Linux中,將前臺(tái)進(jìn)程放入后臺(tái)并暫停的快捷鍵是________。答案:Ctrl+Z19.使用JMeter進(jìn)行參數(shù)化時(shí),函數(shù)________可生成1到100之間的隨機(jī)整數(shù)。答案:${__Random(1,100,)}20.在MySQL中,查看慢查詢是否開啟的命令是SHOWVARIABLESLIKE'________'。答案:slow_query_log21.對(duì)列表lst=[1,2,3,4,5]進(jìn)行切片得到逆序的寫法是lst[________]。答案:::122.HTTP狀態(tài)碼________表示“請(qǐng)求實(shí)體過(guò)大”。答案:41323.在Git中,撤銷已提交但未推送的最近一次commit,使用命令gitreset________HEAD~1。答案:soft24.使用pytest運(yùn)行測(cè)試時(shí),生成Allure原始數(shù)據(jù)需添加參數(shù)________。答案:alluredir25.在Docker中,查看容器資源占用的命令是docker________。答案:stats四、判斷題(每題1分,共10分。正確打“√”,錯(cuò)誤打“×”)26.Python字典的鍵必須是不可變類型。答案:√27.HTTP/1.1默認(rèn)開啟長(zhǎng)連接。答案:√28.在Linux中,硬鏈接可以跨文件系統(tǒng)。答案:×29.使用Selenium時(shí),隱式等待與顯式等待可同時(shí)生效,且取最短時(shí)間。答案:×30.在MySQL中,InnoDB支持表級(jí)鎖,不支持行級(jí)鎖。答案:×31.代碼覆蓋率100%意味著程序無(wú)缺陷。答案:×32.Docker鏡像分層存儲(chǔ),修改容器層不會(huì)影響到鏡像層。答案:√33.使用Postman的PrerequestScript可以動(dòng)態(tài)修改請(qǐng)求體。答案:√34.Python的GIL限制了多線程利用多核CPU,但多進(jìn)程不受此限制。答案:√35.在TCP四次揮手過(guò)程中,主動(dòng)關(guān)閉方最后進(jìn)入TIME_WAIT狀態(tài)。答案:√五、簡(jiǎn)答題(封閉型,每題6分,共18分)36.描述在Linux服務(wù)器中,如何定位并殺死占用8080端口的進(jìn)程,給出完整命令序列。答案:1.lsofi:8080列出占用8080的進(jìn)程PID2.kill9PID強(qiáng)制終止該進(jìn)程若lsof未安裝,可改用:netstattunlp|grep8080獲取PID,再執(zhí)行kill9PID37.說(shuō)明數(shù)據(jù)庫(kù)事務(wù)的四大特性,并給出MySQL中開啟事務(wù)的兩種寫法。答案:四大特性:原子性、一致性、隔離性、持久性(ACID)。開啟寫法:1.STARTTRANSACTION;2.BEGIN;38.簡(jiǎn)述接口冪等性的含義,并給出HTTP協(xié)議中天然冪等的兩個(gè)方法。答案:冪等性指一次或多次調(diào)用同一接口產(chǎn)生副作用相同。天然冪等方法:GET、PUT、DELETE、HEAD、OPTIONS。六、開放型簡(jiǎn)答題(每題8分,共16分)39.某微服務(wù)A通過(guò)RESTful接口調(diào)用服務(wù)B,近期出現(xiàn)間歇性超時(shí)。請(qǐng)列出至少四條排查思路并說(shuō)明所需工具或命令。答案:1.網(wǎng)絡(luò)延遲:ping、traceroute查看RTT與路由跳數(shù)2.服務(wù)B負(fù)載:top、vmstat、dockerstats查看CPU、內(nèi)存、IO3.連接池耗盡:netstatan|grep:port統(tǒng)計(jì)ESTABLISHED連接數(shù)4.GC停頓:jstatgcpid1s10查看FullGC次數(shù)與耗時(shí)5.日志異常:grepERRORserviceB.log定位業(yè)務(wù)異常6.數(shù)據(jù)庫(kù)慢查詢:開啟MySQL慢查詢?nèi)罩?,ptquerydigest分析40.測(cè)試發(fā)現(xiàn)某訂單接口在高并發(fā)下出現(xiàn)“重復(fù)下單”問(wèn)題,請(qǐng)從測(cè)試角度提出三種可落地的驗(yàn)證方案。答案:1.冪等Token:在預(yù)下單階段返回唯一token,下單時(shí)攜帶,并發(fā)壓測(cè)JMeter腳本中設(shè)置CSV讀取token,驗(yàn)證同一token僅成功一次2.分布式鎖:查看代碼是否使用Redissetnxex,通過(guò)arthastrace命令觀察鎖競(jìng)爭(zhēng)3.數(shù)據(jù)庫(kù)唯一索引:對(duì)user_id+product_id+status建立聯(lián)合唯一索引,并發(fā)腳本故意重復(fù)提交,驗(yàn)證數(shù)據(jù)庫(kù)報(bào)錯(cuò)及業(yè)務(wù)回滾七、應(yīng)用題(綜合類,共41分)41.代碼走讀與缺陷定位(10分)閱讀以下Python代碼,指出至少三處潛在缺陷并給出修復(fù)建議。```pythonimportsqlite3deftransfer(from_id,to_id,amount):conn=sqlite3.connect("bank.db")cur=conn.cursor()cur.execute("UPDATEaccountSETbalance=balance?WHEREid=?",(amount,from_id))cur.execute("UPDATEaccountSETbalance=balance+?WHEREid=?",(amount,to_id))mit()conn.close()```答案:1.未檢查余額是否充足,導(dǎo)致透支2.無(wú)異常處理,中間失敗無(wú)法回滾3.無(wú)并發(fā)控制,高并發(fā)可能產(chǎn)生臟讀4.未關(guān)閉游標(biāo),建議with語(yǔ)句或try/finally修復(fù):使用事務(wù)、加鎖、異常捕獲、余額檢查42.算法設(shè)計(jì)(11分)給定一個(gè)長(zhǎng)度為n的整數(shù)數(shù)組arr,返回出現(xiàn)次數(shù)超過(guò)n/2的元素(多數(shù)元素)。要求時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(1)。請(qǐng)寫出完整Python實(shí)現(xiàn)并附帶關(guān)鍵注釋。答案:```pythondefmajority_element(arr):BoyerMoore投票算法count,candidate=0,Nonefornuminarr:ifcount==0:candidate=numcount+=(1ifnum==candidateelse1)驗(yàn)證階段,題目保證存在可省略returncandidate測(cè)試print(majority_element([2,2,1,1,1,2,2]))輸出2```43.性能分析(10分)某接口壓測(cè)結(jié)果:并發(fā)100,平均響應(yīng)時(shí)間200ms,吞吐量400TPS。請(qǐng)計(jì)算:1.服務(wù)器平均并發(fā)連接數(shù)(Little定律)2.若預(yù)期平均響應(yīng)時(shí)間降至100ms,在并發(fā)連接數(shù)不變的情況下,吞吐量可提升到多少?答案:1.N=TPS×RT=400×0.2=802.TPS=N/RT=80/0.1=80044.測(cè)試方案設(shè)計(jì)(10分)某電商App新增“秒殺”活動(dòng),商品庫(kù)存100件,時(shí)間10:0010:05,參與用戶10萬(wàn)。請(qǐng)給出一份包含測(cè)試目標(biāo)、測(cè)試類型、工具選型、核心場(chǎng)景、通過(guò)準(zhǔn)則的完整測(cè)試方案。答案:測(cè)試目標(biāo):驗(yàn)證系統(tǒng)在10萬(wàn)并發(fā)下庫(kù)存扣減正確、不超賣、響應(yīng)時(shí)間<1s、成功率>99%測(cè)試類型:負(fù)載、壓力、穩(wěn)定性、異常、安全工具選型:JMeter+Redis監(jiān)控+MySQLbinlog校驗(yàn)+Prometheus+Grafana核心場(chǎng)景:1.10:00瞬時(shí)10萬(wàn)請(qǐng)求,100庫(kù)存扣完即止2.同一用戶多賬號(hào)并發(fā),驗(yàn)證防刷策略3.網(wǎng)絡(luò)異常重試,驗(yàn)證冪等通過(guò)準(zhǔn)則:庫(kù)存最終為0且無(wú)負(fù)值,訂單表記錄100,無(wú)重復(fù)user_id,P99響應(yīng)<1s,GC停頓<200ms,日志無(wú)ERROR八、編程題(20分)45.實(shí)現(xiàn)一個(gè)基于Python+Flask的極簡(jiǎn)接口測(cè)試樁服務(wù),要求:1.監(jiān)聽5000端口2.提供POST/login,接收J(rèn)SON{"user":"admin","pwd":"123456"},返回{"code":0,"token":"abc"},其他情況返回{"code":1}3.提供GET/info,需在Header中帶XToken=abc,返回{"name":"admin"},否則返回4014.代碼需包含異常處理與日志打印答案:```pythonfromflaskimportFlask,request,jsonifyimportloggingapp=Flask(__name__)logging.basicConfig(level=logging.INFO)@app.route('/login',methods=['POST'])deflogin():try:data=request.get_json(force=True)ifdata.get('user')=='admin'anddata.get('pwd')=='123456':returnjsonify(code=0,token='abc')returnjsonify(code=1)exceptExceptionase:logging.error(e)returnjsonify(code=1),400@app.route('/info',methods=['GET'])definfo():ifrequest.headers.get('XToken')=='abc':returnjsonify(name='admin')returnjsonify(error='Unauthorized'),401if__name__=='__main__':app.run(host='',port=5000)```九、數(shù)據(jù)庫(kù)綜合題(15分)46.現(xiàn)有訂單表order(id,user_id,sku_id,price,num,status,create_time),請(qǐng)完成以下需求:1.寫出建表語(yǔ)句,要求id為主鍵自增,status枚舉('INIT','PAID','CANCEL'),create_time默認(rèn)當(dāng)前時(shí)間2.查詢昨日支付成功訂單的GMV(總價(jià)=pricenum)3.給user_id+sku_id+status建立聯(lián)合索引,寫出語(yǔ)句答案:1.```sqlCREATETABLE`order`(idBIGINTAUTO_INCREMENTPRIMARYKEY,user_idBIGINTNOTNULL,sku_idBIGINTNOTNULL,DECIMAL(10,2)NOTNULL,INTNOTNULL,ENUM('INIT','PAID','CANCEL')NOTNULL,create_timeDATETIMEDEFAULTCURRENT_TIMESTAMP);```2.```sqlSELECTSUM(pricenum)ASgmvFROM`order`WHEREstatus='PAID'ANDDATE(create_time)=CURDATE()1;```3.```sqlCREATEINDEXidx_user_sku_statusON`order`(user_id,sku_id,status);```十、LinuxShell編程(10分)47.編寫一個(gè)腳本monitor.sh,每5秒檢測(cè)一次Web服務(wù)(:8080)是否返回200,若連續(xù)3次失敗則重啟服務(wù)并寫入/var/log/web_restart.log,要求后臺(tái)運(yùn)行、可開機(jī)自啟。答案:```bash!/bin/bashmonitor.shURL=":8080/health"count=0whiletrue;doifcurlso/dev/nullw"%{http_code}""$URL"|grepq'200';thencount=0else((count++))if[$countge3];thensystemctlrestartmywebecho"$(date'+%F%T')restarteddueto3failures">>/var/log/web_restart.logcount=0fifisleep5done加入crontabe@reboot/opt/monitor.sh&或?qū)憇ystemdservice```十一、安全測(cè)試題(10分)48.某登錄接口POST/login僅做前端MD5加密,后端直接比對(duì)密文。請(qǐng)指出風(fēng)險(xiǎn)并給出測(cè)試驗(yàn)證步驟。答案:風(fēng)險(xiǎn):密文即密碼,重放攻擊、數(shù)據(jù)庫(kù)泄露即泄露密碼、無(wú)法防暴力破解測(cè)試步驟:1.用BurpSuite抓包,重放密文,觀察是否仍能登錄→驗(yàn)證重放2.修改密碼后,用舊密文嘗試登錄→驗(yàn)證密文不變3.SQL注入測(cè)試:在user字段輸入admin'or'1'='1,觀察是否繞過(guò)→驗(yàn)證注入4.弱口令爆破:加載top1000密碼本,前端JS計(jì)算MD5,用Intruder批量發(fā)送,統(tǒng)計(jì)200響應(yīng)→驗(yàn)證爆破十二、自動(dòng)化框架設(shè)計(jì)(15分)49.公司決定基于pytest+Requests+Allure搭建接口自動(dòng)化框架,請(qǐng)給出項(xiàng)目目錄結(jié)構(gòu)、核心模塊職責(zé)、用例標(biāo)記策略、CI集成命令。答案:目錄結(jié)構(gòu):```api_automation/├──config/│├──env.yml├──data/│├──login.yml├──api/│├──base_api.py│├──user_api.py├──case/│├──test_user.py├──utils/│├──read_yaml.py│├──logger.py├──report/│├──html├──conftest.py├──pytest.ini├──requirements.txt```職責(zé):base_api封裝requests、統(tǒng)一打印日志;user_api繼承實(shí)現(xiàn)業(yè)務(wù);case層用pytest+yaml數(shù)據(jù)驅(qū)動(dòng);標(biāo)記策略:@pytest.mark.smoke@pytest.mark.regress;CI命令:```bashpipinstallrrequirements.txtpytestmsmokealluredir=report/xmlalluregeneratereport/xmloreport/htmlclean```十三、算法性能調(diào)優(yōu)(10分)50.某接口返回列表數(shù)據(jù),原代碼使用雙重for循環(huán)去重,數(shù)據(jù)量10萬(wàn)時(shí)耗時(shí)8s。請(qǐng)給出優(yōu)化方案并給出Python代碼,目標(biāo)耗時(shí)<1s。答案:利用集合哈希去重,單循環(huán)即可:```pythondefdedup(lst):seen=set()res=[]foriteminlst:ifitemnotinseen:seen.add(item)res.append(item)returnres測(cè)試10萬(wàn)隨機(jī)整數(shù),耗時(shí)約0.15s```十

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論