最近面試了一些測試方面相關的崗位,通過牛客等途徑也看了不少的面經,發現大部分人面試題目都有很多相似點,結合自己的一些面試經歷,現在分享一些我面試中碰到過的問題以及我回答的部分答案,可能存在錯誤,歡迎大家交流指正
一、計算機網絡方面(大廠面試必考點,一定要去記住)
1、OSI七層網絡模型(TCP/IP五層模型)常見考察的是七層模型,要明白每層模型的作用以及對應的協議,例如應用層對應了:HTTP FTP DNS SMTP等協議
2、TCP的三次握手、四次揮手過程要心里有數,以及為什么要三次握手,四次揮手
3、輸入一個網址到其響應的過程(例如美團頁面內點擊搜索后發生了什么歷程之類的問題),一般可以從域名解析-三次握手-發送http請求-服務器響應-瀏覽器渲染響應信息來考慮,可以在網上查看相關資料,多背背
4、DNS域名解析的過程也要心里有數
5、TCP與UDP的區別,常考點,偶爾還會考察什么時候時候用TCP什么時候適合用UDP,一般的話對網絡質量要求較高,例如語音、傳輸文件等可以考慮TCP,對網絡質量要求較低的情況下,例如視頻會議、游戲等都可以考慮UDP
6、Cookie與Session的區別,這個樓主面試 字節跳動(頭鐵)的適合遇到過,還是要去看看留個印象的
7、get與post的區別,這個也是常考的,網絡上有很多相關資料,需要注意的是還有的面試官可能會問你除了這兩個還有什么,樓主當時回答了put與delete, put:向指定資源位置上傳其最新內容。delete:請求服務器刪除Request-URI所標識的資源。
8、http的組成,這個網上也有資料,大家可以去看看
9、http常見的狀態碼,可以從2記到5的順序 200:響應成功,301:永久重定向,302:臨時重定向 400:客戶端請求錯誤 403:服務器拒絕服務 404:資源找不到 500:服務器內部錯誤
10、http與https的區別
HTTP協議傳輸的數據都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私信息非常不安全,為了保證這些隱私數據能加密傳輸,於是網景公司設計了SSL(Secure Sockets Layer)協議用於對 HTTP協議傳輸的數據進行加密,從而就誕生了HTTPS。簡單來說,HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全。
HTTPS和HTTP的區別主要如下:
1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
2、http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
3、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
4、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。
問到HTTPS時候,如果問到了HTTPS的加密過程,樓主用個圖簡單描述一下過程
二、數據庫
1.比較菜,沒碰到什么問題,就一個(字節跳動面試官):根據分數,查詢排名前10的學生,當時太天真,就是排個序,取前10的數據,但是沒有考慮到分數相同的同學。
2.能力比較強的去了解下數據庫索引,這個有些面試官蠻喜歡問,雖然我沒被問到~
3.數據庫的四大特性:原子性、一致性、隔離性、持久性
4.增刪查改基本的要會,delete與drop的區別?
三、測試技術
1.測試的過程,要記住測試的流程,從需求分析開始到結束
2.測試用例的編寫,面試官會給你具體某個場景,叫你設計測試用例,具體我會額外寫一篇文章
3.由於樓主提到了自動化,要明白自動化的原理,通過瀏覽器驅動去操控瀏覽器。
4.自動化的優點和缺點,什么時候適合用自動化,你的測試用例如何維護的?
5.自動化的8大元素定位方式
6.性能測試中,如何進行壓測?
7.壓測過程中關注哪些數據?響應時間、TPS、CPU、內存等數據,還可以講講你壓測后對系統的調優建議,可以從數據庫,服務器硬件等角度考慮
8.企業如何設置正確的TPS?考慮到成本的原因,不能太高也不能太低,高了浪費成本,低了系統的業務能力就下降了。可以采取先采取一個預估值上線,根據用戶的實際使用情況,多次的增加或降低一點TPS,每次增加或降低的值不宜太大,這樣可以確保我們資源的節約
10.斷言如何添加,參數化數據如何進行傳遞?這里講到了jmeter里面的斷言,參數傳遞可以用CSV以及正則表達式提取器提取相應參數,通過引用來進行參數傳遞
11.有沒有使用過fiddler(抓包工具,很簡單的,可以去自學)?(簡歷寫了,所以面試官問了)簡單的回答了一下用來抓包的,還可以修改請求與相應的數據,面試官接着問fiddler還可以用來干嘛?回答:弱網測試,通過fiddler可以設置參數進行弱網測試,具體可以網上查找資料
12.面試官給你某個場景,叫你定位排查錯誤,例如發朋友圈,發出去的圖片順序不對,什么原因造成的?一般我們可以從客戶端到服務器考慮,線考慮客戶端是不是出現問題了,例如渲染錯誤,url地址解析錯誤等等,如果客戶端沒有錯誤,可以考慮服務端錯誤,我們可以繞過前端,通過它的接口發送相對性的數據,根據它返回的數據來判斷是否服務器后端出現錯誤。還有的話排查錯誤,我們還可以通過它的log來查看哪里出現錯誤。
13.需求評審的過程以及為什么不能每輪都評審?項目進度比較緊,沒有時間給到我們每輪都來評審
14.做過接口測試嗎?
15.項目:基本自我介紹的適合可以簡單講講自己的項目,要學會引導面試官,讓他問你會的,不會的不要多提,會的盡量多說點。
四、測試場景題
1.測試發現一個bug,開發認為沒有必要修改,你怎么辦?
2.當一個產品急着上線,測試工作卻沒完成,你怎么辦?
3.你對測試的理解?
4.項目中碰到的困難?
5.測試醒目的流程?
五、其他類型
1.排序算法經常被問到:冒泡、選擇、插入這三個基本的要會,要明白其穩定性,還有一個很重要的就是快速排序,一定要明白他的原理,同時要會他的代碼,樓主就曾經手撕代碼。同樣的快速排序的時間復雜度,平均情況下是nlogn,最壞的情況下是n2,空間復雜度O(logn),一般情況下面試官問時間復雜度適合你只需要回答nlogn就可以了,如果提及到最壞的情況,你一定要明白為什么是n2,還有可以看下空間復雜度為什么是logn。還有一點大家要記住的是它是不穩定的算法,為什么(這個面試碰到了)?假設待排序數組:int a[] ={1, 3, 3, 2, 1, 5, 6};若選擇a[2](即數組中的第二個3)為參考數字,而把大於等於參考數的數均放置在大數數組中,則a[1](即數組中的第一個3)會到參考數的右邊, 那么數組中的兩個3的相對順序就發生了 改變,這就說明快排是“不穩定”。
有些面試官還可能會問還有什么排序算法時間復雜度是nlogn,下面的圖大家可以記一下常用的希爾、歸並、堆,心里知道它們的排序原理就行,最好的話可以着重記一下堆排序
2.線程與進程的區別?知乎上這篇文章,個人覺得他寫的挺好的,有興趣的可以看看:https://www.zhihu.com/question/25532384
3.死鎖是什么?
4.死鎖的四個條件?如何避免死鎖?
5.線程的生命周期?
6.java部分也是可能會考察的:java的三大特性:封裝、繼承、多態
7.抽象類與接口的區別
8.String、StringBuffer、StringBuilder的區別:https://blog.csdn.net/itchuxuezhe_yang/article/details/89966303
9."=="與"equals"的區別
10.深拷貝與淺拷貝(這個是面測開碰到的,樓主太菜了,當時不會.)https://www.cnblogs.com/williamjie/p/11192895.html
11.鏈表與數組的區別,兩次都問到了
12.最好要會點Linux
13.智力題:好多大廠面試都會問智力題,這個多看看,明白套路就十分的簡單了,推薦幾篇博客:https://blog.csdn.net/qq_41112238/article/details/105611213?utm_source=app
還有一個https://blog.csdn.net/qq_43518645/article/details/104118528?utm_source=app 樓主面試網易的時候就碰到了同類型的智力題,很輕松就回答出來了,推薦大家看看~
六、算法題
面試大廠,無論是筆試還是面試,幾乎都逃不過算法題,這個沒有捷徑,只能多練習
推薦幾個訓練方法:刷劍指offer、LeetCode就行
再推薦幾個我比較喜歡的up主:https://www.bilibili.com/video/BV1wA411b7qZ 手把手帶你一起刷LeetCode,還做了合集簡直不要太良心,想要短時間快速提高真的還是很不錯的,強烈推薦!
還有一個就是帶你刷《劍指offer》的up:https://space.bilibili.com/59546029?spm_id_from=333.788.b_765f7570696e666f.1在他的個人主頁,把他《劍指offer》的視頻過一遍,相信你會有很大的提高
總之算法還是要多練,雖然測試工程師算法要求不高,但是我們還是不能放下他,要想進大廠以及做測開,它是一定要堅持的!
感悟:以上這些內容都是我面試實際碰到過的或者是一些高頻的面試題,一定要多看看面經,牛客是個好地方。還有就是算法真的蠻重要的,一定要多看多練。有些hr面可能會掛人比如我四輪技術面都過了,貌似死在了hr面。。。 要多嘗試,要相信自己,多投幾個,相信總有一個能成功。最后祝大家面試成功,早日拿到offer!