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