分享:一線網際網路公司的面試經驗

測試學習分享發表於2018-04-18

又到了跳槽季,最近經歷了很多家公司的面試,職位有測試開發,也有普通的測試工程師,有成功有失敗,最後我發現一些面試問題基本大同小異,因此覺得有必要跟大家分享一下,說一點自己的心得體會,歡迎大家指正和探討~

 1.自我介紹

  這是一上來就會問的第一問題,也是一個展現自己優勢,最能包裝自己的部分,無論經過了幾面,面對每一個面試官都得介紹一遍,每一次都要認真對噠,千萬不要有倦怠的態度,因為你不知道你面前坐的是哪個高階大領導,直接決定你的薪資和去留。

對於如何回答這個問題,我的經驗是,簡單介紹下專案,重點在負責的工作是什麼,在工作中運用了什麼技術,學習到了什麼,總結了什麼經驗。除此以外,還要把你自己學習的一些技術也說進去,哪怕你工作中沒有用到,但只要你會的,都展現出來,當然前提是這個東西你確實自己研究過,禁得起拷問的才行。
複製程式碼

  此外,我的心得是從第一份工作開始說起,這樣可以有一個能力從低到高的過程,表明自己是一個學習能力強,有上進心的人;而且在說到切換到下個公司的過程中,可以簡單說下理由,表明你對未來的職業發展還是有自己的想法和追求的。

2.網路相關問題

  網路相關的問題是每一家公司必問的,具體包含以下:

  1.訪問一個完整http請求會經歷哪些問題

  2.https和http請求的區別

  3.五層協議有什麼,每層的作用

  4.http有哪些請求方式,get和post請求有什麼區別

  5.http請求和http響應包含哪些內容

  6.TCP的三次握手過程、四次揮手過程

  7.Socket程式設計瞭解麼,應用在哪些地方

  8.http請求的狀態碼一般有哪些?3開頭的一般是指什麼

  9.如果一個網址無法訪問,怎麼排查什麼原因

  10.如果有正在看直播的使用者,反饋太卡,有可能因為什麼原因,怎麼定位問題

  11.WSGI和FastCGI的區別

  12.fiddler和Charles等抓包工具,現在對於移動端應用的測試,基本所有公司都要求會使用抓包工具,需要掌握原理,一些常用的基本操作,對於設定斷點、重定向、模擬弱網、更改請求和返回等操作都要非常熟練

 3.實際專案相關

1)你們的測試流程是什麼

  這個問題必問,必問,必問,如果所在公司比較小,基本沒什麼嚴格流程的話千萬不要實話實說,要回答完整的流程,下面我來拋磚引玉一下,希望大家多多指正~

“需求評審->確定專案排期-,確定測試方案(功能測試、介面測試、效能測試、相容測試等)>設計測試用例->用例評審->準備測試環境(準備測試機,配置好測試資料等)->開發自測通過(或簡單功能冒煙,保證流程跑通)->正式提測,新功能測試,提出bug->開發改完bug後迴歸驗證->遺留問題待產品評估方案->新功能封板後開始全面測試->開發改完bug後再次迴歸驗證->重點功能的冒煙->封板上線->線上監控”
複製程式碼

 2)目前你們專案運用的架構是什麼

  一般這個問題指的都是服務端的架構,這個時候就要跟服務端開發搞好關係了,讓他給你係統講解一下,一般比較正式的公司針對架構都會有詳細的原型圖。

3)工作效率如何提高,有哪些工作成果

  我感覺這個問題其實可以多展現自己能夠在工作中懂得思考的一面,而不是隻知道機械的幹活,我列出我的回答,給大家提供一點思路。

“平時自己經常會進行總結,如編寫測試用例時,有些其實測試點都是通用的,可以總結出功能測試的框架

還有例如,很多問題都是可以在軟體開發之前規避的,自己根據經驗總結了bug預防體系,在專案中進行了分享

  還能夠藉助各種工具來提高效率,把一些重複性的工作來用自動化工具來完成,比如編寫一些CPU監控、流量監控等小工具”

4)如何進行團隊合作

  “在整個測試過程中要多問,多學習:

  在需求評審階段,就要多聽開發人員討論的各種邏輯實現,只有瞭解這個內部的實現邏輯才能更好的去設計測試點;

  在用例評審階段,也要叫上開發人員一起,爭取把一些之前需求評審沒有想到的問題,在開發時儘量規避掉;

  在開發解決bug後,對於一些沒有太多規律,比較複雜的bug,要主動去找開發人員詢問,問題原因是什麼呢,怎麼解決的,以便更好的迴歸驗證。”

 5)如何做好測試計劃(這裡借用慕課網上一個講師的回答)

  “when(明確專案開始、結束時間)

  how(明確測試方案:功能、自動化、穩定性、效能等)

  where(需求文件在哪,被測物件在哪、去哪裡拿包、測試用例在哪等”

4.用例設計

  每個公司必問的一道題,現在一些大公司已經不會問你測試方法有哪些這種理論問題了,都是直接讓你設計一個具體功能的用例,從實際來看你對這些理論的運用。

  我覺得首先要確定好面試官跟你描述的功能是什麼,主要包括哪些方面,確定好範圍,然後再開始設計;其次一定要自己多總結一些通用的功能測試框架,背下來,回答時套用在不同的功能上;而且不要只關注功能方面,介面、效能、相容、安全等都要考慮全面,下面是具體我被問到的一些問題

  1.測試朋友圈傳送功能

  2.測試微信的傳送功能

  3.測試輸入框功能

  4.測試資料載入過程

  5.測試註冊登入和驗證碼功能

  6.測試視訊播放

  7.測試直播中的送禮物

5.演算法

  這也是一些公司非常愛問的一個問題,並且現在已經不止要求能寫出演算法,還要求時間複雜度最小,找出最優方式,這就需要我們針對各種演算法思考多種解決辦法;同時需要注意演算法中對異常情況的處理

  1.排序(冒泡、堆排序、快速排序等)

  2.二分查詢

  3.判斷素數

  4.單連結串列反轉

  5.判斷是否為迴文數(aabb格式)

  6.十進位制轉換成二進位制

  7.判斷IP的有效性

  8.合併兩個有序陣列,生成一個有序的大陣列,要求時間複雜度最低

  當然除了上面這些基礎的演算法,有的面試官還會臨時給個有規律的資料,讓你寫出一個演算法或給出思路,考驗下邏輯思維能力,當然如果不會也不要氣餒,有的面試官會給你提供思路,引導你

6.Linux、mysql相關問題

  (難易程度跟公司具體要求有關)

  1)常用命令有哪些

  2)ps作用是什麼

  3)檢視記憶體的命令有哪些

  4)簡歷中寫到的一些命令

5)資料庫的增刪改查

  6)資料庫的關聯查詢

  7)資料庫建立索引的優點,如何搜尋資料的

7.Java/Python/shell開發語言

  這個問題也是被問到的概率很高,主要是看你簡歷中寫了哪些語言,以下問題都是關於Java/shell/python的

1)./和sh執行shell指令碼的區別

  2)shell指令碼中的第一行的作用是什麼

  3)怎麼用shell指令碼取出日誌中倒數第二列的內容

  4)lamda函式是什麼

5)Python中的記憶體管理

  6)字典、列表、元祖的區別,在記憶體中都是如何儲存的,想要搜尋資料時,各自的時間複雜度是多少

  7)python怎麼安裝包

  8)re模組中的match和search的區別

  9)Java中的collection

  10)Java中常用的一些類庫

  11)Java中怎麼開啟執行緒

8.安卓應用相關

  1)虛存、實存、共享記憶體的概念,PSS是什麼意思

  2)activity的生命週期

  3)安卓常見的五種佈局

  4)adb常用命令

  5)安卓系統架構

  6)安卓四大元件

  7)monkey相關命令

  8)如何獲取monkey日誌,最後如何篩選

  9)安卓應用常見的崩潰等異常資訊

  10)程式和執行緒的區別

  11)記憶體洩漏和記憶體溢位的區別

9.自動化

  自動化也是面試中非常重要的一塊問題,具體的問題還要看你簡歷中涉及到哪些方面問題。我記得以前領導曾經說過,做測試開發的難點不在技術,工具這些,難點在你是否能想到這個點可以提取成自動化,或是可以開發一個東西來做簡化,形成這種思考問題的方式很重要。

  下面是列出整體巨集觀的一些問題:

1)如何分層進行自動化測試

  2)如何保證指令碼的有效性

  3)如何降低自動化維護成本

下面是列出了一些現在大多數公司會用到的自動化方式和工具:

  1、介面自動化

  1)做介面自動化的前提是要了解網路相關的知識,在上面已經提到,就不在這裡做贅述。

  2)常用的工具,如jmeter/postman等,找你熟悉的工具來描述就可以

  3)如何進行介面自動化測試

  4)怎麼確定介面自動化的用例

  5)如何壓測介面,設定併發數,關注的指標

  6)是否瞭解自動化的分層框架

2、UI自動化

  (偏向UIautomator和APPium)

  1)appium的原理是什麼,為什麼選擇用這個工具

  2)如何定位元素的

  3)寫過哪些自動化用例,用自動化工具做過什麼

  4)UIautomator有哪些類庫

  5)Appium如何進行初始化配置

3、持續化整合

  1)持續化整合的概念,有什麼意義

  2)怎麼把自動化整合到Jenkins上

  3)怎麼配置一個工程

  以上這些就是我在面試中經歷過的各種問題,有人可能會說這不是測試開發才會問的問題麼,但現在時代不同了,很多應屆畢業生和開發們發現了測試開發這個職位的潛力,紛紛轉崗,大幅提高了測試的招聘門檻,其實實際工作中仍然大部分是功能測試的任務。網上不是流傳著一句話麼“面試感覺是要去造火箭,實際進去後發現是去擰螺絲”。

當然,我的簡歷偏向安卓應用端測試,這些問題可能對於web測試和效能測試相關的比較少,但我覺得大體的回答思路都是這樣的,現在面試官除了關注你會不會用這些技術,更關注的是你是否瞭解你所用的這些技術的原理,有沒有主動思考的過程。總結起來就要求我們,在學習一些知識點時,要多問為什麼,多深入思考,才能不懼怕面試時被刨根問題,被壓工資。其實面試失敗也不要氣餒,因為得到一個工作機會由很多因素決定,如眼緣,運氣,技術是否對口,應聘公司是否缺人等很多原因。所以哪怕一次失敗了,只要總結經驗,重整旗鼓,一定可以找到一個滿意的工作的!
複製程式碼

  最後的最後,一定要特別感謝吳老師的測試開發課程,雖然我只是剛學習了一半,但如果沒有這半年來新學習的python,有了一點程式碼基礎,自己做了些勉強拿的出手的成果,我估計很多公司的一面都過不去…我相信等到我把全部課程學完以後,技術一定會有一個更大的飛躍,更硬氣的向高階測試工程師努力~

  現在的時代不一樣了,連開發都來和我們搶飯碗,一些做測試開發的應屆畢業生,他們的起薪就比我們工作兩三年的都要高,競爭壓力這麼大,有什麼理由不努力學習。

作者:娜小妞

分享:一線網際網路公司的面試經驗

相關文章