最近,在Q群或者微信群里經常看到有測試朋友在問有沒有性能測試面試的資料?如何面試性能測試崗位?
因為自己也一直在做性能測試,大大小小的項目加起來也好幾十個了,而且,公司招聘性能測試,也面試過很多應聘者(極少令人滿意,有些連linux命令都不會),這里就做個性能面試概要總結分享給大家吧,可能你看了會懵逼,因為需要一定的基礎,你可以點擊左側加群來聊聊。
性能招聘要求
投遞簡歷前,我們需要先了解對方的招聘要求,雖然招聘要求都是互相copy的,我們還是從某招聘網找一個20k+的性能測試招聘要求看看:
是不是覺得要求很多?所以,不會的,就查漏補缺吧。推薦書籍,參考:https://www.cnblogs.com/UncleYong/p/10836607.html
再補充一個廣州某公司的招聘
可以看到,性能的薪資已經和后端開發的相當了,也超過了前端開發
招聘崗位:性能測試工程師 薪資范圍:12-18K 任職要求: 1、有3年以上中大型網站或者后台服務器的性能測試經驗,大專及以上學歷; 2、能獨立承擔項目性能測試、具備性能測試需求分析能力,有定位系統瓶頸和性能調優的經驗; 3、精通1~2個主流性能測試工具,如loadrunner、jmeter,能熟練使用性能數據監控工具; 4、熟悉WEB服務器(如Apache,Nginx)的配置,能對調優有見解; 5、熟悉主流數據庫,如postgregre、mysql、Redis、MongoDB等; 6、熟悉Java/Shell/PHP/Perl/Python/Ruby等至少一種腳本語言、熟悉linux以及持續集成更佳; 7、有強烈的責任心,工作態度嚴謹,能承擔較大工作壓力,具備良好的溝通能力和團隊合作精神和溝通 招聘崗位: java開發工程師 薪資范圍:12K-18K 任職要求: 1.計算機相關專業,本科以上學歷, 具有3年以上Java以項目開發經驗; 2.精通Java開發,熟悉Java的核心語法,了解J2EE設計模式,熟悉面向對象的分析設計和工具; 3.熟悉掌握SQL語言,能夠熟練進行數據庫設計,有Oracle、Postgresql等相關數據庫項目開發經驗; 4.熟悉分布式系統的設計和應用,熟悉分布式、緩存、消息等機制,能對分布式常用技術進行合理應用; 5.掌握多線程及高性能的設計與編碼及性能調優,熟悉微服務、熟悉Spring Cloud; 6.具備良好的代碼編程習慣及較強的文檔編寫能力. 招聘崗位;前端開發工程師 薪資范圍:10K-16K 任職要求: 1.全日制本科學歷,計算機相關專業,2年以上前端開發經驗; 2.有扎實的html5、css3、js等前端基礎,能熟練運用vue、angular、jquery等框架者優先; 3.對PC及移動端瀏覽器兼容性有豐富的實戰經驗。熟悉前端性能優化,熟練使用前端自動化構建工具,比如webpack、gulp、fis等; 4.了解至少一門后端開發語言,並有一定的實戰經驗。熟悉前后端分離的開發模式,熟練使用git等協作工具; 5.良好的編碼習慣,包括代碼注釋,文件及函數命名,模塊解耦等;
性能面試准備
做性能測試需要掌握的知識面很寬泛,包括linux、數據庫、各種中間件服務等等,而且還需要一定的深度,這樣才能去做性能分析、定位、調優。總之就是架構師的知識面了,架構師精通的,你都要熟悉或者至少了解,像nginx,tomcat,mysql,redis,linux,jvm這幾個常用的,基本上是面試必問的。
同時,最好再掌握1-2門編程語言及常用算法,最佳組合是python + java,我是用python造測試數據及數據庫存量數據,用java開發jemter沒有的取樣器(比如jmeter沒有自帶dubbo協議接口的取樣器,雖然現在已經有dubbo的第三方插件了,但是如果你面試的時候說是自己開發的,那逼格提升好幾個檔次),說明一下,jmeter是現在主流的客戶端並發工具,市場使用率已經50%+了。
性能等級
有人說,我會做性能腳本,會跑並發了,我會做性能測試了,下面來看下到底自己幾斤幾兩,能面個什么等級,或者你壓根兒就還是個性能外行
網上有些資料是這么定義的:
性能外行:會做簡單的腳本跑並發(復雜的,比如dubbo接口這些需要寫代碼的,就搞不定了);
性能初級:會性能監控;
性能中級:會常見性能問題的定位調優;
性能高級:會調優,性能自動化預警監控、容量規划。
如何面試性能
一般來說,面試性能,圍繞以下幾個方面去說就可以了:
介紹性能測試流程
參考:https://www.cnblogs.com/UncleYong/p/10860321.html
列舉性能測試常見問題
性能測試結果中,我們關注的指標是tps和art(當然,也會關注各個服務器的各種資源情況),如果tps低,或者響應時間長,或者服務器資源緊張,那就需要我們去定位性能問題了,
常見的性能問題(有些只是表象,需要深層次定位): a.服務器 cpu:us & sy 內存:使用率及交換率 磁盤io:讀寫慢 磁盤容量 b.網絡帶寬:看當前收、發速度及有沒有丟包、端口使用情況 c.cpu高:看線程信息;是否fgc等 d.隊列問題(負載高):磁盤io隊列(物理讀高);線程隊列(線程阻塞、鎖競爭) e.各種連接池問題:不足、未釋放(以及半釋放) f.死鎖問題:線程死鎖、數據庫死鎖 g.sql問題:索引(未加、使用不當)、慢sql(多次查詢、全表掃描、循環插入 or 更新、查詢結果未分頁展示、sql邏輯)、長事務 h.應用log級別:設置不正確 i.緩存設置問題、沒有利用好緩存 j.缺乏消息中間件 k.代碼:業務邏輯代碼冗余、遍歷Map
上述問題詳細分析、定位,請關注后續總結分享。
詳細舉例遇到的1-2個性能測試問題
參考:https://www.cnblogs.com/UncleYong/category/1437390.html
小小建議
機會是留給有准備的人的,不要在機會來臨時,才發現自己各種不足,建議大家充分利用上下班路上的時間,人的差距是下班后的幾個小時產生的。
你可以任性的裸辭,但是切忌毫無准備的裸面,裸面就是浪費時間、浪費機會。
今天早上微信群一個群友發筆試題讓大家助力,里面至少85%在我的博客中都能找到答案,^_^,所以,知識需要積累,全棧測試干貨匯總目錄:https://www.cnblogs.com/uncleyong/p/10530261.html