2025大廠高頻軟件測試面試真題(附答案)_第1頁
2025大廠高頻軟件測試面試真題(附答案)_第2頁
2025大廠高頻軟件測試面試真題(附答案)_第3頁
2025大廠高頻軟件測試面試真題(附答案)_第4頁
2025大廠高頻軟件測試面試真題(附答案)_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2025大廠高頻軟件測試面試真題(附答案)1.單選題(每題2分,共20分)1.1某電商App在灰度環(huán)境發(fā)現(xiàn)訂單金額偶爾出現(xiàn)1分錢誤差,最可能觸發(fā)該缺陷的根因是A.前端JavaScript浮點精度丟失B.服務端BigDecimal未指定舍入模式C.數(shù)據(jù)庫字段類型用doubleD.消息隊列重復消費答案:B。BigDecimal在divide時若未顯式指定scale與舍入規(guī)則,會拋出ArithmeticException,被捕獲后可能默認截斷導致1分錢誤差。1.2以下哪一項最能直接證明“并發(fā)更新庫存”存在臨界區(qū)問題A.日志里出現(xiàn)兩條SQL同時select到庫存=5B.壓測CPU利用率飆高C.接口99線從100ms漲到500msD.數(shù)據(jù)庫死鎖告警答案:A。讀到相同中間值說明未加行鎖,后續(xù)扣減必然超賣。1.3在Flutter集成測試中,driver.waitFor()的超時默認單位是A.毫秒B.秒C.幀數(shù)D.微秒答案:A。源碼_timeoutInMilliseconds=5000。1.4使用Selenium4BiDi協(xié)議監(jiān)聽console.log,需要注冊的監(jiān)聽域是A.Runtime.enableB.Log.entryAddedC.Console.messageAddedD.Target.attachToTarget答案:C。Console域在BiDi里獨立。1.5對微服務做混沌工程,優(yōu)先注入的故障應為A.網(wǎng)絡延遲+隨機丟包B.直接殺容器C.打滿磁盤I/OD.修改系統(tǒng)時間答案:A。網(wǎng)絡類故障出現(xiàn)概率最高,可觀測性強。1.6某接口返回加密字段{"data":"c2FtcGxl"},已知其為Base64,解密后應為A.sampleB.示例C.cipherD.亂碼答案:A。Base64.decode("c2FtcGxl")="sample"。1.7在Postman中,要一次性跑100條數(shù)據(jù)驅(qū)動用例,應使用A.CollectionRunner+CSVB.MonitorC.NewmandockerD.Pre-requestScript答案:A。CollectionRunner原生支持CSV/JSON數(shù)據(jù)文件。1.8關(guān)于Allure報告,哪項描述正確A.@Step注解必須放在public方法上B.@Attachment只能返回StringC.@Flaky標記不會統(tǒng)計到總用例數(shù)D.歷史趨勢圖由categories.json驅(qū)動答案:A。非public方法@Step會被忽略。1.9在iOS17真機調(diào)試XCUITest時,若出現(xiàn)“Failedtoinstallapp:0xe8008015”,最快捷的修復是A.重啟xcodebuildB.重新信任開發(fā)者證書C.升級手機到beta版D.清空DerivedData答案:B。證書未信任導致codesign校驗失敗。1.10以下哪條Linux命令可以持續(xù)打印線程數(shù)>300的Java進程A.top-H-p`pgrepjava`|awk'$9>300'B.ps-eLf|awk'$6>300&&/java/{print}'C.whiletrue;dops-p`pgrepjava`-T|wc-l;sleep1;doneD.jstack-l`pgrepjava`|grep-ctid答案:C。while循環(huán)+ps-T統(tǒng)計線程數(shù)最直觀。2.多選題(每題3分,共30分)2.1針對支付回調(diào)接口做冪等測試,應覆蓋A.相同out_trade_no并發(fā)重入B.回調(diào)URL被重放20次C.訂單狀態(tài)已終態(tài)后再次回調(diào)D.修改amount字段重放答案:A、B、C、D。金額篡改需觸發(fā)簽名驗簽失敗,同時驗證冪等表不重復入賬。2.2以下哪些做法可以降低UI自動化用例的flaky率A.顯式等待替換固定sleepB.用AccessibilityId而非XPathC.在CI中禁用動畫并開啟retryD.截圖對比改為布局結(jié)構(gòu)對比答案:A、B、C、D。四管齊下可將flaky率從8%降至0.5%。2.3關(guān)于JMeterBeanShell斷言,正確的是A.可直接調(diào)用SampleResult.setStopTest(true)B.支持import自定義jarC.性能高于JSR223+groovyD.5.6已標記為deprecated答案:A、B、D。官方明確廢棄BeanShell,推薦Groovy。2.4在DockerCompose里對服務做健康檢查,可使用的指令包括A.healthcheck:testB.depends_onconditionC.restart_policyD.interval/timeout/start_period答案:A、B、D。restart_policy屬于Swarm模式。2.5以下哪些屬于“可觀測性”三大支柱A.MetricsB.LoggingC.TracingD.Profiling答案:A、B、C。Profiling為可選項。2.6使用Pytest+Requests造數(shù),哪些固件可以確?!皽y試后刪除數(shù)據(jù)”A.yieldfixtureB.addfinalizerC.finalizerclassD.with上下文答案:A、B。yield與addfinalizer都能注冊清理回調(diào)。2.7關(guān)于Android深度鏈接測試,需要覆蓋A.adbshellamstart-W-aent.action.VIEW-dB.應用未安裝時回落H5C.冷啟動與熱啟動差異D.不同瀏覽器拉起差異答案:A、B、C、D。四場景全覆蓋才能上線。2.8針對AI推薦算法A/B實驗,需要監(jiān)控的指標有A.曝光點擊率B.次留C.收入D.算法CPU耗時答案:A、B、C、D。離線+實時指標缺一不可。2.9在Kubernetes中,對Job做自動化測試,需要校驗A.completions與backoffLimitB.Pod狀態(tài)為CompletedC.日志中出現(xiàn)“BUILDSUCCESS”D.資源limit不超限答案:A、B、C、D。資源超限會導致OOMKilled。2.10以下哪些命令可以查看MySQL行鎖等待A.selectfrominformation_schema.innodb_locksB.showengineinnodbstatusC.sys.innodb_lock_waitsD.performance_schema.data_locks答案:A、B、C、D。8.0用data_locks替代innodb_locks。3.判斷題(每題1分,共10分)3.1在Linux下,命令“kill-9`pgrepjava`”會生成heapdump。答案:錯。-9強制退出不會觸發(fā)鉤子。3.2Appium默認使用JSONWP協(xié)議。答案:錯。1.15起默認W3C。3.3使用Charles抓HTTPS,需將證書安裝到系統(tǒng)級信任區(qū)才可抓FlutterRelease包。答案:對。FlutterRelease不走用戶證書。3.4對同一URI的PUT與PATCH請求,冪等性要求相同。答案:錯。PATCH部分更新不一定冪等。3.5在Postman中,pm.sendRequest可以在Pre-requestScript里同步阻塞。答案:對。5.0+支持同步sendRequest。3.6SonarQube的QualityGate一旦失敗,CI流水線必須中止。答案:錯。可配置警告級別。3.7使用Selenium4的RelativeLocator,above()只判斷DOM上下關(guān)系,與頁面視覺無關(guān)。答案:對。above()基于元素邊界框垂直坐標。3.8對MQ消息做壓力測試時,只要消費者TPS>生產(chǎn)者TPS,就不會出現(xiàn)消息堆積。答案:錯。若消費端突發(fā)FullGC,仍可能堆積。3.9在iOS安全測試中,使用Objection可繞過越獄檢測。答案:對。objection-gxxxexplore->iosjailbreakdisable。3.10對微服務做契約測試,Pact文件由消費者端生成并上傳到PactBroker。答案:對。消費者驅(qū)動。4.填空題(每空2分,共20分)4.1使用Pythonrequests發(fā)送帶簽名的HTTP請求,若簽名算法為HMAC-SHA256,需引入的庫是________。答案:hmac。4.2在Linux中,查看Java進程GC次數(shù)的命令是________。答案:jstat-gc`pgrepjava`。4.3使用JMeter進行WebSocket測試,需安裝的取樣器插件名為________。答案:JMeterWebSocketSamplers。4.4在MySQL8.0,查看當前連接線程的SQL語句是________。答案:selectfromperformance_schema.threadswheretype='foreground'。4.5使用Appium同時驅(qū)動兩臺iOS真機,需保證兩臺設(shè)備的________不同。答案:wdaLocalPort。4.6在Dockerfile中,設(shè)置容器健康檢查命令的關(guān)鍵字是________。答案:HEALTHCHECK。4.7使用cURL測試HTTP/2,需添加的參數(shù)是________。答案:--http2。4.8在Flutter集成測試里,等待Widget出現(xiàn)的關(guān)鍵字是________。答案:findsOneWidget。4.9使用Postman進行數(shù)據(jù)驅(qū)動,文件類型若為CSV,首行必須填寫________。答案:變量名。4.10在Kubernetes中,Job的最大重試次數(shù)字段為________。答案:backoffLimit。5.簡答題(每題10分,共30分)5.1描述一次“訂單超時未支付自動關(guān)閉”功能的完整測試思路,要求覆蓋功能、性能、安全、兼容、可觀測性五維度。答案:功能:1)創(chuàng)建訂單后30min未支付,狀態(tài)由WAIT_PAY→CLOSED;2)支付回調(diào)在29min59s到達,應能正常支付成功;3)已關(guān)閉訂單再次回調(diào),冪等返回“訂單已關(guān)閉”。性能:1)用JMeter構(gòu)造1000并發(fā)下單,不支付,30min后觀察定時任務關(guān)閉耗時<5s;2)訂單表5000萬數(shù)據(jù),關(guān)單SQL走索引,rowsexamined<100。安全:1)關(guān)閉接口不能由前端直接調(diào)用,需內(nèi)網(wǎng)定時任務;2)偽造回調(diào)修改訂單號與金額,驗簽應失??;3)使用JWT做內(nèi)網(wǎng)鑒權(quán),過期時間<5min。兼容:1)訂單狀態(tài)機兼容舊版App緩存,關(guān)閉后客戶端刷新詳情頁應展示“已關(guān)閉”;2)灰度切換新狀態(tài)機時,老訂單兼容。可觀測性:1)定時任務每次運行上報metrics(關(guān)閉單量、耗時);2)異常訂單打error日志并攜帶traceId;3)接入Prometheus+Grafana,若30min內(nèi)關(guān)單成功率<99.9%則告警。5.2請寫出使用Python+Pytest實現(xiàn)“接口級別并發(fā)扣減庫存”的自動化腳本,要求:1)并發(fā)100線程;2)斷言最終庫存正確;3)用MySQL行鎖;4)報告展示并發(fā)耗時折線圖。答案:```pythonconftest.pyimportpytest,pymysql,threading,time,requests,matplotlib.pyplotaspltfromconcurrent.futuresimportThreadPoolExecutorDB=pymysql.connect(host='',user='root',password='123456',db='shop')@pytest.fixture(scope='session')defstock():withDB.cursor()ascur:cur.execute("updateskusetstock=100wheresku_id=1")DB.commit()yield100cur.execute("updateskusetstock=100wheresku_id=1")DB.commit()defdeduct():resp=requests.post('http://localhost:8080/deduct',json={'skuId':1,'num':1})returnresp.elapsed.total_seconds()deftest_concurrent_deduct(stock):times=[]withThreadPoolExecutor(max_workers=100)aspool:start=time.time()futures=[pool.submit(deduct)for_inrange(100)]times=[f.result()forfinfutures]withDB.cursor()ascur:cur.execute("selectstockfromskuwheresku_id=1lockinsharemode")final,=cur.fetchone()assertfinal==0,f'庫存剩余{final}'plt.plot(times)plt.savefig('report/line.png')```5.3說明如何使用Selenium4的NetworkInterceptor修改接口響應,并給出完整Java代碼,實現(xiàn):1)將商品原價100元改為0.01元;2)斷言前端展示“0.01”且可下單。答案:```java@TestpublicvoidmockPrice(){ChromeDriverdriver=newChromeDriver();NetworkInterceptorinterceptor=newNetworkInterceptor(driver,Route.matching(req->req.getUri().contains("/api/price")).to(()->req->newHttpResponse().setStatus(200).addHeader("Content-Type","application/json").setContent(utf8String("{\"price\":0.01}"))));driver.get("/detail/123");Stringtext=driver.findElement(By.cssSelector(".price")).getText();Assert.assertEquals(text,"0.01");driver.findElement(By.id("buyBtn")).click();Assert.assertTrue(driver.findElement(By.cssSelector(".success")).isDisplayed());driver.quit();}```6.編程題(每題15分,共30分)6.1實現(xiàn)一個“日志掃描+告警”命令行工具,要求:1)掃描目錄下所有.log;2)發(fā)現(xiàn)“OutOfMemoryError”關(guān)鍵字即發(fā)送企業(yè)微信機器人;3)支持白名單過濾某些文件;4)使用Go語言,并發(fā)掃描,內(nèi)存占用<50MB;5)輸出JSON格式報告。答案:```gopackagemainimport("bufio""encoding/json""fmt""io/ioutil""os""path/filepath""sync""time")typeReportstruct{ScanFilesint`json:"scan_files"`Hits[]string`json:"hits"`}var(webhook="/cgi-bin/webhook/send?key=xxx"white=map[string]bool{"catalina.out":true}musync.Mutexhits[]string)funcscanFile(pathstring,wgsync.WaitGroup){deferwg.Done()ifwhite[filepath.Base(path)]{return}f,_:=os.Open(path)deferf.Close()scanner:=bufio.NewScanner(f)forscanner.Scan(){ifbytes.Contains(scanner.Bytes(),[]byte("OutOfMemoryError")){mu.Lock()hits=append(hits,path)mu.Unlock()break}}}funcmain(){varwgsync.WaitGrouproot:="./logs"_=filepath.Walk(root,func(pathstring,infoos.FileInfo,errerror)error{iffilepath.Ext(path)==".log"{wg.Add(1)goscanFile(path,&wg)}returnnil})wg.Wait()report:=Report{ScanFiles:len(hits),Hits:hits}out,_:=json.Marshal(report)fmt.Println(string(out))iflen(hits)>0{msg,_:=json.Marshal(map[string]interface{}{"msgtype":"text","text":map[string]string{"content":fmt.Sprintf("OOMdetectedin%v",hits)},})http.Post(webhook,"application/json",bytes.NewReader(msg))}}```6.2使用Java+TestNG+RestAssured,完成“GraphQL分頁查詢”性能基準,要求:1)查詢商品列表,每頁20條,共翻50頁;2)統(tǒng)計第1、25、50頁響應時間;3)斷言第50頁響應時間<1s;4)輸出自定義HTML報告,含折線圖。答案:```javapublicclassGraphQLPerf{@TestpublicvoidpagePerformance(){int[]pages={1,25,50};long[]times=newlong[3];for(inti=0;i<pages.length;i++){longstart=System.currentTimeMillis();given().baseUri("").contentType("application/json").body("{\"query\":\"{products(page:"+pages[i]+",size:20){idname}}\"}").when().post("/graphql").then().statusCode(200);times[i]=System.currentTimeMillis()-start;}Assert.assertTrue(times[2]<1000,"第50頁>1s");//生成HTMLStringhtml="<html><body><h1>GraphQL分頁性能</h1><canvasid='c'></canvas>"+"<scriptsrc='/npm/chart.js'></script>"+"<script>newChart(document.getElementById('c'),{type:'line',data:{"+"labels:"+Arrays.toString(pages)+","+"

溫馨提示

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

評論

0/150

提交評論