1. 程式人生 > >一個測試工程師面試結束後想說的

一個測試工程師面試結束後想說的

轉自:http://www.cnblogs.com/matt123/archive/2012/12/23/2830290.html#2586912 

昨晚正式收到支付寶的Offer,提交完離職申請,我的求職過程也就告於段落了。寫下這篇文章,希望我的這些經歷可以對正在求職的你能有點啟發。

首先,交代下我的背景,這樣大家看的時候,就可以有個對比參照。我2010年7月份畢業於南京曉莊學院計算機專業,一所二本學校,經常用大學班主任的氣話來調侃“我是一所三流學校裡面的二流學生”。在大學期間,成績一般,沒拿過一等,唯一一次有機會拿二等,還因為一門公共課掛科而取消資格,但也紮紮實實學過一些專業課程,比如資料庫、網路、C++程式設計。考研,掛了。大學畢業那會,因為一直在實習,就沒正兒八經投過幾份簡歷(現在再看我大學畢業時的簡歷,真是一塌糊塗),那時候面試過金蝶,失敗,富士通的筆試都沒過。所以可以講,我畢業那會基本沒有面試經驗。後來,沒辦法就厚臉皮,外包進入實習的那家很牛逼的防毒軟體公司,入行軟體測試。這一待就是二十九個月。

在這兩年五個月的時間裡,開始我對軟體測試知之甚少(大學課程中,也就軟體工程課中提到過軟體測試),利用工作間隙一點點學習:測試理論、Java、Python、設計模式,甚至學習過servlet、JSP,Spring框架……,現在看學的好混亂啊。同時,專案中接觸到了自動化測試,就給自己定位要學好自動化測試。學習過程就不細述了,最後經過不斷學習,我敢貼在自己簡歷中的技術背景是這樣的:

2012-12-22_165425

從八月底開始,到十二月初我差不多投遞了80多封求職簡歷(還不算在51Job中申請的職位),80+的求職郵件,收到了差不多40封郵件反饋。九月中旬,陸陸續續進入面試高峰期,有時,一週面三家單位,投的都是外地公司,所以接到都是四十分鐘以上的電話面試。在這三個半月的時間裡,我經歷著“希望-失望-又有希望-再一次失望”這樣的煎熬,一次次失敗,逼得我不斷反思,我問自己問題出在哪?一遍遍修改求職簡歷,從措辭到排版,到最後甚至計較該用什麼字型,字型大小設定多大看起來比較美觀。一遍遍獨白麵試第一部分的“自我介紹”,該如何有條理的把自己這兩年所學,所做的事情闡述出來。更為重要的事,我開始整理這兩年所學,梳理那些測試理論,程式語言,專案經驗。

在決定換工作的時候自己首先需要弄明白為什麼要換工作?真的到了非換不可的地步了嗎?我不贊成輕率地、頻繁地換工作,在我看來換一份工作成本還是蠻大的。但當我在這一個專案兩年以上,當日常工作遊刃有餘,沒有壓力時,當我不是很清楚地知道我該學些什麼的時候,我知道該make change了。上週週會,看到專案未來半年的WBS,看到那些攤派到我頭上的任務,我知道我做了正確的決定。促成我換工作的另一個原因是,這兩年多來,我一直待在同一個專案組,測試的是IBM的Domino郵件伺服器相關,單一的專案經驗,對我自身的發展有很大侷限。況且在Domino日趨衰敗大背景下,我想出去呼吸點網際網路公司的氣息。

在這裡,順便談下我對外包的看法

。這兩年多來,我一直是外包到一家跨國的防毒軟體公司,從事測試。在這裡我遇到了我工作中的兩位Mentor(Rongting & Paul,當然他們是Regular),從他們那我學到了做事的方法,帶著我學習提高,解答了我的很多問題,對我幫助很大。遇到了現在的Leader,他對我的信任、認可,讓我能有機會做更多的事,像設計測試用例、自動化測試開發、效能測試等。整個Team氛圍都很open, 能有機會參加基本所有的專案會議,參與討論。一畢業就能有機會,在這樣的大公司,在各種規範的流程指導下學習工作,我真的受益匪淺。我知道這是我的幸運,不同的專案對外包的工作,管理都是不太一樣,和Leader有很大關係。另一個專案外包的同事,進組一年多了,都沒機會設計測試用例。這裡我想講的是,雖然外包總給不了人一種歸屬感,但同時也讓你有機會和一群比你厲害的人一起工作,要利用這樣的工作機會向同事請教、學習,迅速提高自己。還有一點很重要,一定要自信,如果你覺得你能勝任,就可以爭取點不同的任務。

當決定好要換工作後,下面就要開始準備你的簡歷了。簡歷是你的敲門磚,用人單位看完你簡歷後,覺得合適,通過簡歷篩選,才能夠獲得面試機會。簡歷首先要真實,真實反映你所幹過的活,所承擔的角色,你的貢獻,真實反映你的技術背景。面試官一般會圍繞你提供的簡歷,展開提問,你簡歷上所描述的,你一定要很有把握。第二點,簡歷拿出來要有亮點。一位測試前輩老師,看完我的簡歷給我建議是“如果你覺得自己是實力派的人,在簡歷中要突出你的能力,過去的業績亮點。”最後一點,如果應聘的是外企,或則職位描述是用英文來寫的,一定要附上中英文簡歷,要準備一份拿得出手的英文簡歷哦!錦上添花的是,如果你的簡歷排版簡潔(中文簡歷一般不超過兩頁),美觀,也會為你加分不少。

如何獲取職位資訊?當我發現我在大型招聘網站(如51job,智聯招聘)申請那些我向往的職位都沒訊息後,我就放棄在這類網站上申請職位了,還發現在這些招聘網站上釋出資訊的就是那麼幾家公司,後來都懶得登入這些網站看了。那我的職位資訊是從哪來的呢?答案是專業技術論壇,就測試而言,很多公司會在51testing中釋出職位資訊,我的簡歷很大一部分都是投給了這些職位。一般還都能收到反饋,即使簡歷不合要求。十月份的時候,我發現很多人會在weibo上釋出職位資訊,就開始關注weibo中釋出的測試崗位了。後來,要我的那兩家公司也都是我在weibo上看到的資訊,投的簡歷。現在想想,在大型招聘網站釋出資訊的都是HR,他們要在海量候選人中選擇,被刷的概率更高。而利用論壇,weibo這些媒介釋出資訊的都是專案組的leader,他們將身邊的一些崗位需求釋出出來,有合適的候選人就內推,將來如果你面試成功,他們也可以獲得一筆獎金。還有一個好處是,面試結果後,你可以發郵件請幫你推薦的人,查詢面試結果。

附上技術部落格連結、Github賬號,如果平日裡你有寫技術部落格的習慣,或者參加過開源專案,有Github賬號,都可以把連結帖在簡歷上。在面試的過程中,不只一次聽面試官跟我講,“我看過你寫的文章,覺得寫得挺不錯”。這些都會為你的面試加分。

利用好面試提問環節,一般面試結束前,面試官都會問你,有沒有神馬問題問他的?可以好好利用這個環節,一個漂亮的提問會為你加分哦!

下面談談,我面試過一些的公司,以及這些公司對測試工程師的要求,可能具體的面試題記得不是很清了,就寫個大概印象吧。

  • 目前所在的防毒軟體公司 —— 對我幫助很大的一場面試

這是上半年的一場面試,之所以放在這講,因為這場面試讓我認識到自身的一些不足。三月份的時候,在51job上看到南京焦點科技的專場招聘資訊,週六下午沒事就過去了,後來順利通過筆試面試,拿到Offer。在我和Leader談準備離開的時候,Leader又幫我爭取到了面試我所外派的這家公司的機會。這算不上一次正式的面試,是週會結束後和QA Manager的一個小時左右的交流。一開始,是我講進入專案組以來,我學到的知識,乾的活,還有就是介紹自動化測試相關的。後來就是老闆的提問,到現在我還記得這些問題:

  1. 作為一名QA,你是怎麼理解“質量”這個概念的?
  2. Java的垃圾回收機制、內類的幾種方式、堆和棧區別
  3. 在寫自動化程式碼中,用到了哪些設計模式?
  4. 最近讀過的關於軟體測試的書,文章?有哪些給你留下了比較深的印象?
  5. 職業發展規劃

回答這些提問時,我發現自己對測試的理解還是不深,對Java中的很多概念還是比較模糊。我突然意識到自己是有多浮躁。面試結束後,老闆給了我些建議,弄清基本概念,多讀一些優秀的開原始碼,不要貪多,一定要深入學習下去。那次面試後,我放棄了焦點科技的Offer,繼續留在專案組,又系統學習了Java程式設計思想,學習Junit那些框架的原始碼,並開了這個技術部落格,逼自己要定期寫文章。

  • 四戰IBM  —— 英語口語要求較高

從八月底到十二月初,這短短几個月裡,我先後面試過IBM三個不同專案組,前後經歷四波面試。七月初的時候,在Lotus中國社群看到Domino組在招測試工程師,就試著投了簡歷,後來也一直沒訊息。八月底的一個週二,剛下班接到了北京IBM的電話,約週四上午電話面試。因為現在測試的產品是Hook在Domino郵件伺服器上的,在介紹所做的專案是,面試官問得很細緻。接著細訴了,關鍵字實現、框架流程等。下面就是面試官提問:

  1. 一些STAF/STAX的服務命令。
  2. 自動化測試如何和CI系統整合。
  3. Domino中郵件路由過程
  4. 演算法題:一個字串,如"This is a test !" ,輸出"test a is This",要考慮空間。
  5. 設計模式:對單例模式的理解,有幾種實現方式。
  6. Python: 字串查詢
  7. 口語題:你安排了一次團隊活動,現在去給老闆彙報,講清楚:時間、地點、交通、具體活動安排。第二輪的時候,面試官會問,如果有一名RD手頭有活,不願意參加,你怎麼說服他參加。

這次面試,答得最差的題是口語題,基本是結巴著講完的。準備面試的時候,沒在網上搜過面經,根本沒想過會有口語考核。血的教訓啊,我後來面試外企的時候,都會提前問下有沒有口語。這裡順便講下有意思的事,面試完後,我在一個Lotus技術QQ群裡問,有沒有IBMer,問面試IBM多長時間有結果,沒想到的是,居然有人小窗找我,是NW,NW是IBM Lotus Notes組的工程師,NW講,看到群裡的QQ名,猜出了我就是前兩天面試的人。原來,我的簡歷就是他挑選出來的。這個世界真小。後來他幫我查了面試結果,"HELD – wait for manager interview if no better candidate",評價是"Java基礎紮實,有自動化開發經驗,但口語有待提高"。後來也沒有接到進一步的訊息,哎,感嘆當了次備胎,失敗了。

九月份的時候,在人人網IBM公共主頁看到寧波研發中心招聘測試工程師,投簡歷,電話面試,也沒訊息了。十月份在weibo中看到釋出招聘測試工程師,要求懂Java,有自動化開發經驗。投簡歷,一輪電話面試,居然是IBM System i 專案組,二輪電話面試,後來又沒訊息了。需要說的是,這兩個組的面試也都有英文對話。

十一月底的時候,在weibo中看到老高發的招聘資訊,要求"Java程式設計有所涉獵。軟體測試流程和工具熟練掌握。對自動化測試,尤其是GUI程式的自動化測試有紮實經驗"。後來知道老高是IBM Lotus Notes組的老闆。老高將我的簡歷給了Domino組的老闆沙。週一的時候,沙約我視訊面試,當時在Office,沒法進行,下午沙和另一位同事,電話面試了40分鐘,視訊面試推遲到晚上。視訊最後,沙問了我期望薪水、到崗時間,最後沙講,年底了headcount很緊,明年應該會有名額。第二天問NW,NW幫我查了面試結果,從面試記錄上看,通過了。週三的時候,收到電話讓我填寫內部推薦的一個表格,就在我以為沒問題的時候,接下來的週一,沙打電話給我,肯定了技術,但是因為年底沒有名額了,來年再看。讓keep in touch ,坑爹啊!

  • 百度 —— 技術要求很高

六月份的時候,Paul讓我給他一份簡歷,專案組缺人,結果那次簡歷沒通過篩選。十一月份中旬的時候,百度又在招人,Paul問我要了最新的簡歷,又幫我推薦了次。Paul還給我講了可能會問到哪一類的題目,比如演算法。當時專案比較忙,考慮到時間有限,我就沒花心思去準備演算法。這個決定讓我很後悔。面試也是,首先自我介紹,介紹所做的專案,在專案中的角色,做了哪些事情。來看看Baidu一面的問題:

  1. 在自動化實施過程中成本最大的一部分是什麼
  2. 在實現自動化過程遇到的最大困難,是如何解決的?
  3. Java: HashMap與HashTable的區別
  4. Java: 對抽象類與介面的理解
  5. 設計模式:如何實現執行緒安全的單例模式
  6. 設計模式:監聽者模式
  7. 演算法題:判斷一個連結串列是否有環
  8. 演算法題:字串左旋
  9. 演算法題:二叉樹中,兩個節點間的最大路徑。

面試到最後,想死的心都有,演算法題懵了。後來在網上搜面經,發現這些都是常見的演算法面試題,如果事先稍微準備下,就不會這麼被動了。面試結束後,Paul幫我查了下面試結果,Pending。Paul讓我準備第二輪面試,接下來的一週,我都在複習演算法知識。一週後的週四,二面百度:

  1. 自動化框架的實現,為什麼這麼做?
  2. 自動化過程中遇到的難點,困難?
  3. 面向物件的特性,簡單闡述這些特性帶來的優勢
  4. 介面與抽象類的區別
  5. 異常類處理機制
  6. 反射機制,在實際寫程式碼中應用
  7. final,finally,finalize的區別
  8. 有沒有用過spring框架
  9. 測試用例設計題:就linux下的CP命令設計測試用例。
  10. 如果讓你設計一些log監控系統,你會從哪些方面考慮?

二面表現一般,但因為一面演算法部分答得太差,最後沒能進入三面。我的感覺,百度對技術要求真的很高,測試人員面試考演算法的很少。如果大家將來面試百度,可以在網上找找相關的面經,做做類似的演算法題,會有很大幫助。

  • 紅帽軟體(Redhat) —— 各種假設

我是幾乎同時接到百度、支付寶、Redhat的面試邀請的。相比其他公司,紅帽好像更注重員工的工作習慣的考核。紅帽的一面順利通過,二面結束一週後,檢視面試狀態"no longer in consideration"。在技術上面的問題,我有印象的好像有這麼幾道,"自動化框架,關鍵字實現的Java程式碼總共有多少行",“Python程式共有多少個module”,"兩個Linux系統之間如何傳檔案" 。來看看其他問題:

  1. 如果讓你帶實習生,實習生每天有很多問題,這可能會打亂你的工作,你會怎麼處理?
  2. 如果到了預訂日期,你的工作還沒完成,你會怎麼辦?
  3. 當你和其他同事,在技術方案的選擇上發生爭執,怎麼辦?你會如何說服他
  4. 用十個以內的詞來形容你自己
  5. 用英文描述下你的興趣愛好
  • 其他一些公司

Dell開始提供面試機會的是一個開發崗位,因為我覺得不合適,HR幫我推薦了一個虛擬化的職位,因為這是一個純手工測試的崗位,我個人不是太感冒,面試一輪後就沒訊息了,我想說的是,Dell的HR manager Ripple是我遇到過的最nice的HR了,你有任何疑問郵件諮詢,她會第一時間電話解答,並郵件確認。贊一個。HP的職位是我在51job中看到的,但也是發郵件申請的,面試挺順利的,最後談到了薪資這一塊,但後來居然沒訊息了,接著傳來了HP在裁員的訊息。360的面試,就記得問過我,"閏秒","32位系統,和64位系統下的測試有何不同",說實話,這兩問題我真不知道。賽門鐵克,面過,沒留下任何印象。VMWare很嚮往的一家公司,但自動化測試偏重於UI方面的,問過的技術問題:hashmap與hasptable的區別,講講java collection framework的瞭解,Java反射機制。

  • 支付寶 —— make it

支付寶的職位資訊也來自weibo,看下面的截圖:

2012-12-23_212515

投完簡歷不到一週時間,週四下午的四點多鐘接到電話,有點奇怪的是支付寶並沒有像其他公司一樣,事先約定面試時間,而是直接就開始面試了。面試進行了四十多分鐘,比較順利,最後面試我的女生問,支付寶需要經常加班,你可以接受嗎?

接下來的週一,接到支付寶HR到杭州面試的邀請。面試定在週五中午十一點,我是週四晚上到杭州的,住在支付寶附近的漢庭,晚上快十一點了,支付寶大樓依舊燈火通明。第一輪,是兩位工程師面的,挺順利的。很從容的拿著筆在白板牆上講解自動化框架、流程。面試官問了:

  1. 自動化測試執行時間,容錯處理機制
  2. Robot Framework 框架的優缺點
  3. 自動化測試下一步的有哪些可以提高的地方
  4. Java的多型機制
  5. 平日工作是如何設計測試用例,講解下目前所測產品的一個模組的測試用例設計策略
  6. 在整個專案週期中,測試要做哪些事情

第一輪面試,大概進行了一個小時十分鐘,接著休息了五分鐘後,進入第二輪面試。第二輪面試,面試官是測試總監、HR。第二輪面試,簡單闡述了目前的專案,我所做的事情。後來就是提問了:

  1. C++和Java對記憶體的操作有何區別?Java的垃圾回收機制為什麼不能避免記憶體洩露問題?
  2. 熟悉哪些網路協議?
  3. 不同網段的兩臺機器是如何通訊的?
  4. 考研了嗎
  5. 大學同學都從事哪些方面的工作(hr問)

最後,面試結束後,總監問我有什麼問題?這個環節我準備的問題是,之前專案週四學習小組一起學習ET時,看taobao的探索式測試白皮書時,提出的疑問。聽到這個問題後,總監笑了,說這個問題問得好,但我沒法解答你,我也疑惑呢。

當我走出面試的那個房間時,我心裡有80%的把握。接下來的兩週是漫長的等待,因為支付寶面試不通過是發拒信的,我不時重新整理我的郵箱,期盼著結果。最後實在忍不住,託幫我投遞簡歷的人,查看了面試狀態,答覆"結果還好,但還沒最後結果還在確認中"。第三週的時候,接到HR電話,聊了下薪資期望。第四周,開始有點睡不踏實了,真的很渴望這份Offer,我打電話一再和HR確認,週五晚上六點五十,收到了最終Offer。

結束語:大學畢業的那年春天去國展中心的招聘會,人頭攢動,那時候的我很茫然,不知道自己能找到什麼樣的工作,也不是很清楚自己想要什麼樣的工作。這兩年來我一直在努力,慢慢的我知道了自己想要找什麼樣的工作,漸漸地我也知道了我能找到什麼樣的工作。這條路,談不上曲折,我一步步踏踏實實地走來。