測試開發(fā)崗3+1輪面試全復(fù)盤:從備戰(zhàn)到27K Offer的實(shí)戰(zhàn)經(jīng)驗(yàn))
拿到offer那天晚上我盯著郵件里的薪酬數(shù)字看了好一會兒。從準(zhǔn)備簡歷到三輪技術(shù)面加一輪HR面整個過程差不多一個月最后入職月薪定在27K。字節(jié)的測試開發(fā)崗網(wǎng)上討論很多但真正把每一輪面試的細(xì)節(jié)、被問到的問題、當(dāng)時的回答思路和事后復(fù)盤寫下來的不多。這篇就把我的31輪面試完整拆開來講從準(zhǔn)備階段的路線規(guī)劃到每一輪被問到的具體題目再到為什么會拿到這個價位的offer希望能給正在準(zhǔn)備測試開發(fā)崗面試的人一些參考。市面上關(guān)于測試開發(fā)的面試題不少但大多數(shù)是零散的知識點(diǎn)羅列沒有告訴你面試官為什么要問這些、回答的側(cè)重點(diǎn)在哪。我這次面試下來最大的感受是字節(jié)的面試官很少按套路出牌他們不太關(guān)心你會不會背八股文更在意你面對一個真實(shí)問題時怎么拆解、怎么判斷和選擇。這套評估邏輯貫穿了所有輪次。文章里我會把有價值的問題和解題思路原樣還原出來順序就按我自己實(shí)際的面試流程來。1. 崗位定位再思考測試開發(fā)到底在招什么人先說明一下我的背景普通本科計算機(jī)專業(yè)畢業(yè)三年之前在一家中小型互聯(lián)網(wǎng)公司做功能測試準(zhǔn)確說是“半個測試開發(fā)”——平時主要寫接口自動化腳本也會用Python處理一些日常的數(shù)據(jù)比對工作但沒做過真正意義上的測試平臺開發(fā)。這是我敢投字節(jié)測試開發(fā)崗的底氣來源也是我為什么在準(zhǔn)備階段花了大量時間補(bǔ)技術(shù)深度。1.1 我應(yīng)該往哪個方向準(zhǔn)備測試開發(fā)這個崗位每個公司定義不太一樣。字節(jié)的測試開發(fā)從招聘JD來看核心是“開發(fā)”而不是“測試”但又不能完全脫離測試。我理解下來有三個層次第一層具備扎實(shí)的測試?yán)碚摶A(chǔ)能設(shè)計全面的測試用例知道怎么測、測什么。第二層具備工程開發(fā)能力能寫工具、寫框架把重復(fù)的測試工作自動化甚至能建設(shè)測試平臺。第三層具備質(zhì)量體系思維能通過代碼審查、CI流水線、線上監(jiān)控等手段從流程上保障產(chǎn)品質(zhì)量。我之前的工作大部分停留在第一層和第二層之間第三層是比較欠缺的。所以準(zhǔn)備階段我的重心放在補(bǔ)全第二層的工程能力和建立第三層的體系認(rèn)知上。學(xué)習(xí)路線不必追求大而全但要有一條清晰的進(jìn)階主線Linux基礎(chǔ) → SQL和數(shù)據(jù)庫原理 → Python編程 → 接口測試與自動化框架 → UI自動化 → 性能測試基礎(chǔ) → 測試平臺與CI/CD概念。這條路線我在之前的分享里詳細(xì)寫過這里不展開只強(qiáng)調(diào)一點(diǎn)一定要有一個完整的自動化項(xiàng)目經(jīng)歷不一定是公司項(xiàng)目自己寫的開源小工具也行但必須是你從頭到尾獨(dú)立搞定的面試才聊得深。1.2 簡歷上只留能打的東西字節(jié)的簡歷篩選比想象中快投遞后大概兩天就有人聯(lián)系。我的簡歷寫得不復(fù)雜但每個項(xiàng)目都按“背景-動作-結(jié)果”的結(jié)構(gòu)描述數(shù)字能量化的盡量量化。比如我寫“搭建接口自動化框架覆蓋核心業(yè)務(wù)接口200回歸時間從2小時縮短到20分鐘”這種表述至少能讓面試官一眼看出你有工程實(shí)踐。有個明顯的經(jīng)驗(yàn)簡歷上寫的技術(shù)棧不要超過你能流暢講清的范圍。面委會順著簡歷往深挖你寫“精通性能測試”那大概率會被問到JMeter源碼層面的問題。我簡歷上只寫了“熟悉”和“了解”給自己留了余地。2. 一面算法題決定生死項(xiàng)目追問見真章一面安排在電話溝通后的第三天視頻面試時長大概70分鐘。面試官是測試開發(fā)團(tuán)隊的技術(shù)骨干開場沒有太多寒暄直接進(jìn)入自我介紹。這部分我完全沒有背稿按“基本信息-教育背景-當(dāng)前工作內(nèi)容-為什么想加入字節(jié)”的順序講了大概三分鐘。面試官沒有打斷聽完之后問的第一個問題是你覺得測試開發(fā)和開發(fā)崗的核心區(qū)別是什么這個問題我準(zhǔn)備過但真正被問到時還是緊張了一下。我的回答思路是開發(fā)崗的核心是“如何快速構(gòu)建功能”測試開發(fā)的核心是“如何保障功能在復(fù)雜環(huán)境下穩(wěn)定可靠”兩者的交叉點(diǎn)在于測試開發(fā)需要比開發(fā)更了解系統(tǒng)的全鏈路運(yùn)行狀態(tài)從需求評審就要介入到上線后監(jiān)控也要跟進(jìn)。面試官對這個回答沒有點(diǎn)評但感覺沒跑偏因?yàn)榻酉聛淼膯栴}馬上切入了算法。2.1 一道中等難度的編程題背后算法題是用牛客網(wǎng)在線評測的題目是“給定一個字符串找出最長無重復(fù)字符的子串長度”?;瑒哟翱诘慕?jīng)典題。我沒敢秒寫先和面試官確認(rèn)了一下邊界條件字符串是否包含空格、是否區(qū)分大小寫、空串返回什么。這其實(shí)是面試官想考察的點(diǎn)之一——你面對一個模糊的題目有沒有先理清輸入輸出的習(xí)慣。解題思路我寫在紙上視頻面試用共享白板先講清楚要用滑動窗口為什么用哈希表維護(hù)窗口內(nèi)字符的索引時間復(fù)雜度是O(n)空間復(fù)雜度是O(min(m, n))m是字符集大小。面試官點(diǎn)頭之后我才開始寫代碼。代碼不復(fù)雜Python二十來行寫完自己跑了一遍測試用例再口頭解釋每一步的作用。整個過程大概花了15分鐘沒有Bug。復(fù)盤一下這個環(huán)節(jié)我覺得先把思路講清楚再動筆是非常加分的做法。面試官要求的是能溝通的工程師而不是一個人悶頭寫完給答案的人。2.2 項(xiàng)目經(jīng)歷被挖到了源碼層面算法題結(jié)束后面試官開始深挖我的自動化框架項(xiàng)目。他問的問題層層遞進(jìn)從“框架有哪些模塊”到“數(shù)據(jù)驅(qū)動是怎么實(shí)現(xiàn)的”再到“如果接口返回的數(shù)據(jù)結(jié)構(gòu)變了你的框架怎么處理”最后直接問“你用了pytest的fixture它的作用域和自動使用機(jī)制底層是怎么實(shí)現(xiàn)的”。這里我必須承認(rèn)pytest底層源碼我沒有完整讀過被問到時候稍微卡了一下。我老老實(shí)實(shí)說沒用源碼層面研究過然后按自己的理解解釋了fixture機(jī)制的原理——它是通過裝飾器注冊到pytest的鉤子系統(tǒng)中按作用域緩存調(diào)用結(jié)果。面試官沒有揪著不放轉(zhuǎn)而問了一個管理層面的問題如果讓你帶一個實(shí)習(xí)生你會怎么安排他的工作這個問題的陷阱在于它考察你是否具備把測試任務(wù)拆解和分配的能力。我的回答是先讓實(shí)習(xí)生從手工測試核心用例入手理解業(yè)務(wù)同時讓他每天寫一個小腳本處理重復(fù)性工作一周之后讓交接一個接口模塊的自動化腳本我負(fù)責(zé)Review并指出問題。面試官點(diǎn)了點(diǎn)頭這個環(huán)節(jié)就過掉了。2.3 一面結(jié)束后的自我復(fù)盤一面結(jié)束后我大概花了一個小時梳理被問到的所有問題發(fā)現(xiàn)雖然大部分答上來了但有兩處明顯不夠扎實(shí)第一是pytest源碼層面第二是計算機(jī)網(wǎng)絡(luò)基礎(chǔ)——面試官中間穿插問了一個“如果TCP連接中斷服務(wù)端怎么感知”我回答得很淺。當(dāng)時就覺得一面懸了但第二天就收到了二面的通知。這也說明一面其實(shí)沒有嚴(yán)格的通過線只要核心能力達(dá)標(biāo)細(xì)節(jié)不完美是可以接受的。不過我還是把pytest的源碼研究提上了日程因?yàn)榘凑兆止?jié)的面試風(fēng)格二面只會問得更深。3. 二面從“會測”到“會設(shè)計”的思路轉(zhuǎn)變二面比一面更硬核面試官是測試開發(fā)團(tuán)隊的Leader開場就告訴我“今天我們不聊八股文聊實(shí)際怎么做事”。這句話讓我心里一緊因?yàn)檫@意味著他接下來不會問“什么是黑盒測試”這種基礎(chǔ)問題而是直接拋場景。3.1 廣告投放系統(tǒng)的用例設(shè)計面試官出的題是給你一個廣告投放系統(tǒng)商家可以創(chuàng)建廣告計劃、設(shè)置投放預(yù)算和時間段用戶可以在App內(nèi)看到廣告現(xiàn)在請你設(shè)計測試用例覆蓋你認(rèn)為最重要的功能模塊。這道題考察的是測試設(shè)計能力但更重要的是思維廣度。我遇到的很多測試用例設(shè)計只盯著功能流程本身比如“創(chuàng)建廣告計劃成功/失敗/參數(shù)校驗(yàn)”但實(shí)際系統(tǒng)里數(shù)據(jù)一致性、并發(fā)、資源扣減、對賬這些才是最容易被線上問題擊穿的環(huán)節(jié)。我的回答分為四層功能層廣告計劃CRUD、預(yù)算設(shè)置、定向條件、審核流正常和異常路徑都要覆蓋。數(shù)據(jù)層預(yù)算扣減的冪等性、用戶點(diǎn)擊記錄和扣費(fèi)的對應(yīng)關(guān)系、投放數(shù)據(jù)報表的準(zhǔn)確性。并發(fā)與性能層多個廣告計劃同時修改預(yù)算、同一用戶短時間內(nèi)高頻點(diǎn)擊、廣告投放高峰期的QPS壓力。兼容與體驗(yàn)層不同機(jī)型、弱網(wǎng)環(huán)境下廣告展示是否正常關(guān)閉廣告按鈕的可用性。面試官追問預(yù)算扣減的冪等性怎么測我愣了一下意識到這個問題如果沒做過支付或計費(fèi)系統(tǒng)很難答到位。我按自己的理解答通過Mock一個重復(fù)扣費(fèi)的請求驗(yàn)證系統(tǒng)是否返回相同結(jié)果且不會重復(fù)扣減余額以及通過數(shù)據(jù)庫事務(wù)和唯一索引設(shè)計來保證同一筆請求不會產(chǎn)生兩條扣費(fèi)流水。面試官沒有否定但也沒有說對這個問題成了二面中我比較沒底的一題。3.2 怎么給自動化框架做分期規(guī)劃接著面試官問了一個工程規(guī)劃類問題假設(shè)團(tuán)隊現(xiàn)在完全沒有自動化測試體系讓你從零搭建你會怎么規(guī)劃這個問題我在之前的公司實(shí)際上也做過所以回答起來有底。我的思路分三步先立標(biāo)桿選擇業(yè)務(wù)價值最高、回歸成本最大的核心接口作為切入口用輕量級方案比如Python requests pytest快速跑通一條自動化用例讓團(tuán)隊和領(lǐng)導(dǎo)看到效果。再補(bǔ)基礎(chǔ)搭好測試數(shù)據(jù)管理、報告輸出、CI集成讓自動化在每次代碼提交后自動觸發(fā)并推送結(jié)果。最后做平臺當(dāng)腳本量到一定程度后把用例管理、環(huán)境管理、報告展示沉淀到Web平臺上讓非技術(shù)同學(xué)也能查看和觸發(fā)。面試官接著問如果你做了一套自動化開發(fā)根本不看你的報告怎么辦這個題很妙因?yàn)樗疾斓氖强鐖F(tuán)隊協(xié)作意識。我的回答是不看報告的核心原因是報告沒有給出足夠的行動信息所以我要在報告里直接標(biāo)注是哪個服務(wù)、哪個接口、哪次代碼提交導(dǎo)致的失敗并且在釘釘群里對應(yīng)開發(fā)讓失敗信息觸達(dá)責(zé)任人。這個回答面試官比較認(rèn)可點(diǎn)頭說“這才是做質(zhì)量的人該想的”。3.3 自動化穩(wěn)定性的靈魂拷問這一趴問了很多最后落到了一個實(shí)際痛點(diǎn)上你的自動化用例跑掛了怎么判斷是代碼問題還是腳本問題這個問題問到了自動化測試的核心痛點(diǎn)。很多自動化框架跑得不穩(wěn)定腳本本身比被測代碼還容易掛最后整個體系被棄用。我結(jié)合自己的實(shí)踐回答第一在腳本里對網(wǎng)絡(luò)超時進(jìn)行重試和容錯區(qū)分“接口真的報錯”和“腳本等待超時”第二對前置數(shù)據(jù)進(jìn)行自動造數(shù)和清理避免臟數(shù)據(jù)導(dǎo)致用例失敗第三一旦用例失敗自動拉取接口請求和返回的日志、截圖便于快速定位是環(huán)境問題、數(shù)據(jù)問題還是代碼問題。面試官聽完沒有追問我感覺這塊應(yīng)該過關(guān)了。二面整體氛圍比一面更有挑戰(zhàn)性但也更有收獲。事后我意識到字節(jié)的二面并不是要考你一個標(biāo)準(zhǔn)答案而是想看你面對真實(shí)工程問題時有沒有一套自己的方法框架。這個框架可以從實(shí)踐中積累也可以從別人的經(jīng)驗(yàn)中學(xué)習(xí)——關(guān)鍵是面試時要有邏輯地表達(dá)出來。4. 三面技術(shù)總監(jiān)的“靈魂三連”與場景壓力三面距離二面大概五天面試官是測試開發(fā)團(tuán)隊的負(fù)責(zé)人級別比較高。開場問題就很直接你過去三年最大的成就是什么這個問題我在很多面經(jīng)里看到過每次準(zhǔn)備都覺得很簡單但真正被問到時才意識到陷阱它看起來在問成就實(shí)際在問你的價值判斷標(biāo)準(zhǔn)。我講了自己從零搭建接口自動化體系的過程重點(diǎn)突出“從0到1”和“影響范圍”。面試官聽完之后沒有評價直接拋出了第一個場景題。4.1 線上緊急故障的靈魂三連面試官描述了一個場景你們負(fù)責(zé)的業(yè)務(wù)凌晨兩點(diǎn)線上出故障了大量用戶反饋下單失敗需要你的測試團(tuán)隊定位問題但你的團(tuán)隊成員都在休息研發(fā)也在睡覺你作為測試負(fù)責(zé)人會怎么做我第一次被問到這種問題當(dāng)時沉默了幾秒才回答。思路大致是先看監(jiān)控大屏和告警確認(rèn)影響范圍和故障模塊再拉取最近發(fā)布記錄和變更單優(yōu)先排查是否是新版本發(fā)布引起的問題如果確認(rèn)不是則繼續(xù)看依賴服務(wù)和數(shù)據(jù)庫慢查詢?nèi)罩尽6ㄎ坏椒较蚝箅娫捊行褜?yīng)的研發(fā)和測試同學(xué)啟動應(yīng)急預(yù)案。面試官沒有停接著拋出第二連如果故障定位到是數(shù)據(jù)問題線上出現(xiàn)了一批臟數(shù)據(jù)導(dǎo)致下單鏈路卡住如何處理臟數(shù)據(jù)這是最典型的問題沒有任何標(biāo)準(zhǔn)答案。我回答的是優(yōu)先做數(shù)據(jù)訂正但要評估訂正操作的冪等性對于無法直接訂正的數(shù)據(jù)需要寫一個補(bǔ)償腳本在低峰期批量處理并且保留原始數(shù)據(jù)以便回滾。面試官繼續(xù)追問如果懷疑是臟數(shù)據(jù)但不確認(rèn)范圍怎么快速確認(rèn)我說可以先寫一個只讀的統(tǒng)計SQL把異常數(shù)據(jù)的數(shù)量、分布時間、涉及的訂單量拉出來判斷影響面后再決定是否需要停機(jī)訂正。第三連來了如果是你判斷錯誤用了一個錯誤的方式訂正數(shù)據(jù)導(dǎo)致更大面積的故障你會怎么辦說實(shí)話這個問題我當(dāng)時有點(diǎn)慌因?yàn)槊嬖嚬僬Z氣很平靜但問題本身很有壓迫感。我的回答圍繞“止損”和“復(fù)盤”兩個詞第一時間回滾訂正操作恢復(fù)線上可用性然后基于錯誤操作的記錄做二次修復(fù)等系統(tǒng)穩(wěn)定后再組織復(fù)盤問題根因、響應(yīng)流程漏洞、決策盲區(qū)一層層拆開寫進(jìn)復(fù)盤文檔避免同類問題再次發(fā)生。4.2 JVM內(nèi)存與OOM問題的實(shí)戰(zhàn)考察三面進(jìn)行到中段面試官問了一個讓我很意外的技術(shù)問題——他說你在開發(fā)測試平臺的時候如果JVM頻繁出現(xiàn)OutOfMemoryError并且堆內(nèi)存設(shè)置了8G還是一直GC你怎么排查這個問題結(jié)合了我在簡歷里寫的測試平臺開發(fā)經(jīng)歷。我在之前的實(shí)踐里確實(shí)遇到過類似問題當(dāng)時排查了很久所以印象很深刻。我順著實(shí)際排查鏈路回答先通過jmap dump出堆內(nèi)存快照用MATEclipse Memory Analyzer分析大對象和重復(fù)對象定位到某個List集合里存了上百萬個無用對象。再用jstat觀察GC頻率和耗時確認(rèn)是OutOfMemory還是GC停頓過長導(dǎo)致的假死。最后定位到代碼里有一個循環(huán)查詢每查一次就把結(jié)果存到一個全局集合中沒有做清理。面試官點(diǎn)點(diǎn)頭追問了一句如果Dump下來的文件太大導(dǎo)致本地分析卡死怎么辦我當(dāng)時愣了一下說可以用命令行的jhat或者分批次分析但第一反應(yīng)其實(shí)是先調(diào)整IDEA或者運(yùn)行環(huán)境的JVM內(nèi)存參數(shù)因?yàn)楸镜胤治龉ぞ叽虿婚_大文件很可能就是JDK默認(rèn)的-Xmx設(shè)小了。軟件IDEA這類開發(fā)工具因?yàn)橐虞d大量項(xiàng)目和插件內(nèi)存本來就緊張如果jvm運(yùn)行內(nèi)存設(shè)得不夠排查過程中容易把開發(fā)環(huán)境也弄崩。我之前處理過一次類似問題用jmap導(dǎo)出了接近3G的dump文件本機(jī)IDEA的JVM沒調(diào)大直接打不開。后來把IDEA的Help - Change Memory Settings調(diào)大再把運(yùn)行參數(shù)里的-Xmx從2G調(diào)到4G才順利用MAT加載了快照。面試官對這個細(xì)節(jié)沒有繼續(xù)追問但我覺得這一題是加分項(xiàng)因?yàn)樗C明我不是只懂“頁面點(diǎn)點(diǎn)點(diǎn)”的測試而是真的會從JVM底層去分析線上穩(wěn)定性的問題。4.3 職業(yè)規(guī)劃不要背模板技術(shù)問題的最后面試官問未來三年你的職業(yè)規(guī)劃是什么這個題型很常見但我不喜歡背模板式的回答所以就說了一個具體的方向我希望能在質(zhì)量工程這個方向上做得更深不只是寫用例和腳本而是能推動研發(fā)、測試、運(yùn)維三方協(xié)作從代碼提交那一刻就把質(zhì)量檢查嵌入流程最終能帶一個小的質(zhì)量團(tuán)隊。面試官沒有追問直接把話筒交給HR三面就結(jié)束了。三面整體的感受是它沒有標(biāo)準(zhǔn)答案也不考察背誦能力它更想確認(rèn)你是不是一個能在高壓、模糊、不確定性環(huán)境中找到出路的人。這種能力很難通過臨時準(zhǔn)備獲得更多來自平時在真實(shí)項(xiàng)目里的積累和思考。5. HR面與談薪從期望薪資到offer的臨門一腳HR面放在三面結(jié)束后的第二天形式是電話溝通時長大約30分鐘。HR面的風(fēng)格和技術(shù)面完全不同它更像是在做信息確認(rèn)和期望管理但這部分對最終薪資的影響比你想象中大。5.1 那些看似閑聊的問題其實(shí)都有目的HR問的第一個問題是你現(xiàn)在的薪資結(jié)構(gòu)是什么樣的包括基本工資、績效獎金、年終獎、公積金繳納比例。我如實(shí)說了當(dāng)前的薪資構(gòu)成。第二個問題是你期望的薪資是多少這個問題我提前準(zhǔn)備過沒有報一個模糊的區(qū)間而是給了具體數(shù)字和依據(jù)——我說我希望月薪在25K到28K之間理由是基于我三年經(jīng)驗(yàn)和對標(biāo)市場行情同時我強(qiáng)調(diào)了自己在自動化測試體系上的實(shí)際產(chǎn)出。HR沒有討價還價記錄完繼續(xù)問你現(xiàn)在的Offer還有哪些這里我如實(shí)說了還有一家中型互聯(lián)網(wǎng)公司在談但還沒給書面Offer。HR聽完后說會和面試官溝通然后問了一個技術(shù)面沒涉及的問題如果你入職后發(fā)現(xiàn)自己做的事情和預(yù)期有差距你會怎么辦我當(dāng)時意識到這可能是一個壓力測試。我回答說測試開發(fā)本身就是個邊界很寬的崗位前期肯定有大量的執(zhí)行性工作我會先把手上的事情做到超出預(yù)期再爭取承擔(dān)更大的責(zé)任。大部分人倒在不耐煩上而耐心做事的人反而更容易獲得機(jī)會。5.2 關(guān)于戶口、公積金這類現(xiàn)實(shí)問題的處理臨近HR面尾聲HR主動問了我對戶口有沒有需求以及還有什么問題想問。我抓住機(jī)會問了績效考核周期、團(tuán)隊當(dāng)前的人員配比和技術(shù)棧深度。HR的回答比較官方但這些信息其實(shí)對判斷崗位是否適合很有價值。幾個工作日的等待后我收到了正式的offer郵件。薪資部分和HR面溝通的一致月薪27K一年16薪其中3個月作為績效獎金按年度發(fā)放。比我期望區(qū)間的上限還高了一些這個結(jié)果和HR面環(huán)節(jié)的坦誠溝通有很大關(guān)系。整個談薪過程我沒有特別強(qiáng)勢地去爭因?yàn)槲抑酪坏┟嬖u結(jié)果不錯HR給的薪資通常會落在合理范圍內(nèi)過度拉扯反而會影響入職體驗(yàn)。6. 關(guān)于“不能去的崗位”和入職后的真實(shí)感受在準(zhǔn)備面試那段時間我搜過很多關(guān)于字節(jié)的消息包括網(wǎng)上吵得沸沸揚(yáng)揚(yáng)的“字節(jié)跳動最不能去的6個崗位”這類帖子。當(dāng)時心里確實(shí)有些打鼓因?yàn)檫@種標(biāo)題很容易讓人對某個崗位產(chǎn)生先入為主的恐懼。但我后來發(fā)現(xiàn)這類帖子的結(jié)論往往是基于個人經(jīng)歷參考價值有限。6.1 測試開發(fā)真的是“邊緣崗位”嗎網(wǎng)上有一種說法認(rèn)為測試開發(fā)在字節(jié)屬于“二等崗位”開發(fā)不重視、晉升通道窄。從我這段時間的真實(shí)體驗(yàn)來說這個說法不太準(zhǔn)確。測試開發(fā)在字節(jié)的定位是質(zhì)量保障和效能提升它不是一個純執(zhí)行的角色。團(tuán)隊里不少測試開發(fā)同事會直接參與代碼審查、技術(shù)方案評審甚至要承擔(dān)一部分測試平臺的核心開發(fā)工作。簡單說這個崗位在字節(jié)是把“質(zhì)量”當(dāng)成一條獨(dú)立的技術(shù)線來建設(shè)的而不是單純的“找Bug的人”。當(dāng)然崗位體驗(yàn)也跟團(tuán)隊和業(yè)務(wù)有關(guān)有些團(tuán)隊業(yè)務(wù)壓力大測試開發(fā)確實(shí)會更偏執(zhí)行。但這不是崗位本身的屬性問題而是業(yè)務(wù)階段所決定的。我的建議是如果你拿到Offer后盡量在面試環(huán)節(jié)問清楚團(tuán)隊當(dāng)前的核心任務(wù)是業(yè)務(wù)保障還是質(zhì)量平臺建設(shè)這會直接影響你的成長路線。還有一個具體的體會網(wǎng)上說的加班強(qiáng)度不假但加班并不等于內(nèi)耗。我入職后的常態(tài)是六點(diǎn)左右吃完晚飯繼續(xù)干活和開發(fā)對齊版本節(jié)奏、Review自動化用例、推進(jìn)CI流水線建設(shè)事情是具體且有產(chǎn)出的。真正讓人疲憊的從來不是時間長度而是沒有成就感地做重復(fù)勞動。6.2 說好的“做測試開發(fā)”每天都干些什么很多人對測試開發(fā)的想象是“寫自動化腳本”。實(shí)際做下來我的工作大致分成四塊業(yè)務(wù)測試支撐新功能上線前主導(dǎo)測試設(shè)計和核心用例評審重點(diǎn)是識別高風(fēng)險模塊。自動化與效能工具建設(shè)維護(hù)和迭代接口自動化框架同時開發(fā)一些測試數(shù)據(jù)構(gòu)造的小工具這部分最接近“開發(fā)”工作。CI流水線與質(zhì)量門禁參與設(shè)計和維護(hù)流水線讓每次代碼提交都自動觸發(fā)單測、接口測試、靜態(tài)掃描不通過不能合并。線上穩(wěn)定性保障關(guān)注監(jiān)控告警、異常日志并參與故障排查和復(fù)盤。這四塊工作的占比不是固定的業(yè)務(wù)緊張時第一塊占比很高業(yè)務(wù)穩(wěn)定期會把更多精力放在第二和第三塊。整體下來技術(shù)深度不亞于開發(fā)崗但同時需要具備更強(qiáng)的溝通和協(xié)調(diào)能力。7. 最后分享幾個真實(shí)有效的準(zhǔn)備心得面完整套流程并入職之后我回過頭來看能拿到27K的offer運(yùn)氣占了一部分但更多是準(zhǔn)備方法對路了。最后再分享幾個實(shí)操細(xì)節(jié)照做基本不會虧。第一準(zhǔn)備一份“高頻問題清單”和逐字稿但不要背。清單圍繞自我介紹、項(xiàng)目深挖、測試設(shè)計、為什么離職、為什么選字節(jié)這幾個方向展開。每個問題寫清自己的回答思路、支撐的案例和關(guān)鍵數(shù)字反復(fù)練習(xí)到能自然脫口而出。第二刷題的同時要練習(xí)“講題”。單純在LeetCode上刷題和面試中寫題是兩回事。面試時要把思路、復(fù)雜度、邊界條件都說清楚所以平時可以對著空氣講題或者找朋友模擬面試。我這次算法題能順利通過很大程度上就是因?yàn)轲B(yǎng)成了“先講后寫”的習(xí)慣。第三項(xiàng)目要對得上面試官的好奇心。簡歷上的項(xiàng)目一定要有幾個能讓面試官追問的亮點(diǎn)比如你解決了什么難題、怎么解決、數(shù)據(jù)上有什么改善。不要寫一堆技術(shù)名詞但要準(zhǔn)備幾個技術(shù)點(diǎn)一旦被問到就能講得很深。第四談薪資前一定要先做好市場調(diào)研。不要在面試過程中突然改價格最好的做法是提前設(shè)定區(qū)間到HR面時坦誠、清晰地把依據(jù)擺出來。我最后拿到27K和我當(dāng)時的期望區(qū)間上限是一致的沒有出現(xiàn)誰讓誰尷尬的局面。面經(jīng)寫到這兒算是一個完整的交代了。如果你正在準(zhǔn)備測試開發(fā)的面試希望這篇文章能讓你少走一些彎路。技術(shù)棧可以慢慢補(bǔ)但思維方式的轉(zhuǎn)變越早越好——從今天起試著用“質(zhì)量負(fù)責(zé)人”的視角去看每一次測試執(zhí)行而不是把自己定位成一個點(diǎn)工這一點(diǎn)想通了面試會順很多。