吐血整理,2020年最新【阿里、頭條、美團】【軟件測試】面試題(持續更新!)

大家好,我是臻叔。這裏是我的【測試開發Guide】專欄。

根據我工作這幾年來的面試經驗,加上之前收集的資料,整理出來350+道軟件測試工程師常考的面試題。字節跳動、阿里、騰訊、百度、快手、美團等大廠常考的面試題,在文章裏面都有提到。

雖然這篇文章很長,但是絕對值得你點擊一下收藏。

想要找工作的同學,假如你每次面試之前,把此文拿出來過一過,好好複習一下,相信你一定能找到一個滿意的工作。

 

Tip:我整理的面試題都按照這個腦圖寫,不定期更新,往下翻有目錄,後期會不斷把參考答案補充上去,點擊標題閱讀即可,此文章長期有效,找測試相關工作的同學一定要好好收藏。

一、開場白

Q:簡單自我介紹一下吧
Q:項目和實習經歷?(注意使用STAR法則表述)

二、軟件測試基礎

工作內容

Q:按測試內容劃分,測試有哪些種類?
Q:軟件開發(測試)的流程是怎麼樣的?
Q:你印象最深刻的 bug 是?
Q:談談你對 CI/CD 的理解
Q:談談你對 DevOps 的理解
Q:什麼是 BDD ? 什麼是 TDD ?
Q:APP的一個頁面,你怎麼區分是原生Native頁面,還是H5?

 

測試方法

Q:黑盒測試的方法有哪些?
Q:白盒測試的方法有哪些?
Q:什麼是單元測試?
Q:什麼是集成測試?
Q:測試用例怎麼編寫與設計?
Q:什麼是灰盒測試?

 

測試文檔

Q:測試用例都包含哪些要素?
Q:測試報告需要展示哪些要素?
Q:測試排期應該怎麼估算?
Q:談談你構造數據的經歷?

 

自動化測試

Q:舉例說明,都有哪些功能可以用自動化來進行?
Q:如何判斷一個功能能否進行自動化測試?
Q:定位xpath路徑都有哪些方法?
Q:如何定位一個動態的元素?
Q:如何定位類似於懸浮在web頁面上的元素(類似於web上飛來飛去的廣告)
Q:列舉你知道的自動化測試工具

 

測試工具

Q:聊聊 fiddler 的抓包原理
Q:fiddler 怎麼抓取 https 請求?
Q:wireshark 抓包的頭部有什麼?

 

性能測試

Q:性能測試如何做的?
Q:性能測試需要關注哪些方面?

 

遊戲測試

Q:印象最深的遊戲是哪個?哪些方面最吸引你?
Q:印象最深的遊戲裏有過哪些bug,分析下原因
Q:如何對一個大地圖遊戲進行測試?該有哪些測試點?
Q:測試程序設計的不合理 與 測試程序完善但是測試人員出現失誤,哪一項更嚴重?
Q:遊戲測試的定位和職責你覺得是什麼?
Q:遊戲採用客戶端和服務器架構的必要性是什麼?
Q:LOL腳本的原理是什麼?
Q:爲什麼RPG遊戲腳本沒有LOL這種競技類腳本開發的多?
Q:有一個觸發概率極低但是非常致命的BUG,明天項目一定要上線,你怎麼處理,不用非得解決,就是問我怎麼處理這種事。
Q:爲什麼想做遊戲測試?
Q:讓你做一個遊戲,你更想做哪個類型的(MMORPG?MOBA?FPS?RTS?)
Q:說說遊戲史,除了遊戲還有什麼愛好?
Q:列舉你知道的遊戲測試的測試工具

三、軟件測試實戰

排查問題的思路

Q:網頁崩潰的原因是什麼?
Q:有個用戶反饋上傳頭像失敗,分析原因?
Q:app閃退的原因?
Q:偶然閃退的排查?
Q:網頁卡頓的原因是什麼?
Q:10%的用戶反饋用不了功能,你講如何排查?
Q:登錄的按鈕不能點擊,如何排查問題?
Q:壓測的時候,QPS一直上不去,你會怎麼排查?
Q:APP提示無法連接網絡,你會如何排查?
Q:怎麼判斷一個BUG到底是前端的BUG還是後端的BUG?

 

實戰案例

Q:微博發動態,設計一下測試點
Q:對一臺自動售貨機進行測試用例設計
Q:設計微信發紅包測試用例
Q:設計抖音直播功能測試用例
Q:設計微信掃碼支付的測試用例
Q:設計百度首頁的測試用例
Q:微信的點贊功能怎麼測試?
Q:微信紅包是先計算每個人能獲得的錢還是當這個人點了再計算。
Q:微信朋友圈評論功能怎麼測試?
Q:微信上線一個新的好友推薦功能功能如何測試?
Q:測試微信換頭像功能,設計測試用例
Q:抖音視頻的安全性測試,測試點有哪些?
Q:如果手機瀏覽器輸入http://baidu.com打不開頁面,你會怎麼排查?
Q:設計輸入框測試用例?
Q:編寫一個登錄界面的測試用例?
Q:對一個接口編寫測試用例
Q:搜索功能怎麼測試?

 

四、語言基礎

Java

Q:什麼是多態?
Q:什麼是GC?
Q:set 與 hashset 的區別
Q:map 與 hashmap 的區別
Q:hashmap 的查找,刪除,添加的時間複雜度
Q:查找所有java進程
Q:殺死java進程
Q:介紹一下 java 的拷貝、四種引用
Q:java容器有哪些?簡要介紹一下 java 的數組和鏈表
Q:談談你對 java 集合瞭解多少?
Q:Java 三大特性是什麼?
Q:List 和 Map 有什麼區別?
Q:談談 List、Set、Map的區別?
Q:重寫與重載的區別是什麼?
Q:HashMap 和 HashTable 的區別是什麼?
Q:ArrayList 和 LinkedList 的區別是什麼?
Q:Map 的 put 方法
Q:java的封裝,java 的訪問權限關鍵字的作用域?
Q:爲什麼 java 要面向接口編程?
Q:什麼是反射?
Q:interface 和 abstract 的區別是什麼?
Q:熟悉 maven 麼?談談你對 maven 的瞭解

 

Python

Q:全局變量和局部變量變量名能否一樣?
Q:Python 裏 is 和 == 的區別?
Q:Python 變量的創建與消亡過程
Q:Python的垃圾回收的機制
Q:dict的底層結構,tuple和list的底層結構的區別
Q:深拷貝淺拷貝的區別是什麼?
Q:什麼是協程?
Q:什麼是裝飾器?舉一個你用過裝飾器的例子
Q:@classmethod 和 @staticmethod 的區別,以及分別運用在哪些使用場景?
Q:什麼是鴨子類型?
Q:python 的可變類型有哪些?
Q:python 常見的數據類型有哪些?
Q:列舉 python2 和 python3 的區別
Q:什麼是lambda函數?怎麼用?
Q:別的編程語言都有三目運算符,三目運算符在python中怎麼表達?
Q:try...except...else 和 try...except...finally 的區別是什麼?
Q:什麼是可迭代對象?可迭代對象的原理是什麼?
Q:with...as 的原理是什麼?
Q:解釋一下python的GIL鎖
Q:python 是單繼承還是多繼承?
Q:python 繼承的順序是什麼?
Q:什麼是元類?
Q:爲什麼都說 python 慢?

 

Shell

Q:什麼場景下,適合編寫 Shell 腳本來處理?

 

C++

Q:指針和引用的區別是什麼?

 

五、數據結構與算法

鏈表

Q:一個有序鏈表,怎麼求第K大個節點?
Q:怎麼找出這兩個鏈表是否有相交的點
Q:數組與鏈表的區別
Q:鏈表逆序

 

數組

Q:怎麼對倆有序數組合並?
Q:求數組中和爲 n 的兩個數,時間複雜度是多少?
Q:int 型數組,怎麼排序?
Q:int 型數組,怎麼去重?

 

複雜度

Q:時間複雜度是什麼?
Q:怎麼計算時間複雜度?

 

排序

Q:八大排序都有哪些?
Q:快排的原理
Q:歸併排序的原理
Q:冒泡排序的原理
Q:插入排序的原理
Q:選擇排序的原理

 

Q:數的定義,代碼實現
Q:什麼是樹的高度?怎麼求?
Q:計算二叉樹節點的個數
Q:什麼是根結點?什麼是葉子節點?
Q:打印二叉樹

 

遞歸

Q:什麼是遞歸?
Q:遞歸的時間複雜度是什麼?

 

字符串

Q:字符串長度可以改變麼?

 

堆與棧

Q:堆和棧都有什麼區別
Q:代碼實現棧

 

動態規劃

Q:什麼是動態規劃?

 

高級算法

Q:什麼是深度遍歷?什麼是廣度遍歷?

 

查找

Q:能夠實現二分查找的必要條件是什麼?

 

哈希

 

六、框架

開發框架

Django

Q:簡單介紹一下Django的目錄結構
Q:瞭解什麼是MVC麼?爲什麼說 Django 是MTV模型?
Q:一個網絡請求在Django中的實現過程
Q:uwsgi是什麼?用uwsgi和用Django的原生啓動方式,有什麼區別?
Q:瞭解 ORM 麼?簡單介紹一下Django的ORM映射
Q:Django的 CBV 和 FBV 的區別?實際項目中你會使用哪種方式?爲什麼?
Q:怎麼把 Django 的 module 同步到數據庫中?同步過程中會遇到什麼坑麼?

Spring

Q:Spring 框架介紹
Q:什麼是 IOC?
Q:什麼是 DI?
Q:什麼是 AOP?

測試框架

selenium

Q:selenium框架的運行原理
Q:selenium定位元素的方法都有哪些

Appium

Q:Appium用過嗎?原理是什麼?

Unittest

Pytest

TestNG

Junit

七、計算機基礎

計算機網絡

TCP/UDP

Q:簡單介紹 TCP 三次握手(爲什麼不是兩次、四次)
Q:四次分手是什麼?
Q:TCP 擁塞是什麼?
Q:TCP怎麼保證安全的,UDP能否也像TCP那樣安全,怎麼做?
Q:你知道 tcp 的控制可靠性的策略和重傳機制麼?
Q:TCP協議屬於哪一層?

HTTP/HTTPS

Q:cookie 和 session 機制、區別
Q:輸入url到網頁顯示出來中間的過程
Q:列舉你知道的網頁狀態碼
Q:3 開頭的網絡狀態碼的含義是什麼?302和304的區別是什麼?
Q:4 開頭的網絡狀態碼含義是什麼?
Q:5 開頭的網絡狀態碼含義是什麼?
Q:什麼是 HTTPS?原理是什麼?
Q:GET 和 POST 的區別是什麼?
Q:網絡請求 method 有哪幾種?
Q:簡單介紹一下什麼是 RESTful API
Q:PUT 和 POST 的區別
Q:列舉常見的請求 Header 頭
Q:一個HTTP請求報文是什麼樣的?(GET舉例)
Q:GET 的長度限制瞭解麼?

其他

Q:最大連接數和QPS區別
Q:網絡一共分爲幾層?
Q:客戶端向服務器請求圖片和動態資源的區別
Q:圖片渲染的過程 前端
Q:網絡七層有哪些?tcp,udp,arp都在哪一層?
Q:QPS 和 TPS 的區別是什麼?
Q:解釋一下DNS
Q:什麼是反向代理?
Q:什麼是 socket?
Q:【手撕】用 socket 實現一個聊天室功能?

操作系統

進程/線程

Q:進程與線程的區別?
Q:何時cpu處理進程最慢?
Q:爲什麼會出現死鎖?
Q:進程間通信的方式?
Q:線程間通信的方式?
Q:如何做到線程同步?

Linux

Q:linux切換目錄
Q:linux命令,統計一個文本中關鍵字出現的次數
Q:linux 查找當前目錄下所有後綴爲 .py文件
Q:知道的linux常用命令:查看指定端口進程
Q:cd - 和 cd ~
Q:linux 查看某個進程命令怎麼寫
Q:如何查看日誌?怎麼查看後500條日誌?
Q:awk有什麼用?如何用(舉個例子)?
Q:如何查看系統性能?
Q:如何查看剩餘磁盤空間大小?
Q:如何查看目錄佔空間大小?
Q:你知道 xarg 的用法嗎?
Q:怎麼從本地計算機與服務器中進行文件傳輸?
Q:測試服務器之間怎麼進行文件拷貝?
Q:sed 有什麼用?如何用(舉個例子)?
Q:怎麼殺死一個進程?
Q:怎麼遞歸刪除一個目錄下的所有文件?
Q:怎麼查看內存大小?
Q:怎麼查看 CPU 使用情況?
Q:怎麼重啓 Linux 服務器?
Q:怎麼打印出一個文件的第500-1000行?

文件存儲

Q:靜態存儲和動態存儲的區別
Q:視頻在服務器的存儲幾種方式
Q:CDN有什麼用?
Q:爲什麼前端靜態資源要上傳到CDN上?

其他

Q:系統資源包括哪些?
Q:什麼是 IO 操作?
Q:什麼是內存?
Q:什麼是硬盤?
Q:什麼是CPU?
Q:什麼操作比較消耗CPU?
Q:什麼是UTF-8?什麼是Unicode?
Q:什麼是 IO 多路複用?以及怎麼實現?
Q:談談什麼是分佈式?爲什麼要用分佈式?

 

數據庫

非關係型數據庫

Q:非關係型數據庫有哪些?
Q:Redis的數據結構有哪些?
Q:Redis 和 Memcached 的區別?
Q:Redis 的用途?
Q:Redis一秒能寫入多少數據?
Q:Redis爲什麼快?
Q:Redis的過期時間怎麼設置?哪些場景適合緩存更長時間?
Q:什麼是緩存雪崩?
Q:什麼是緩存擊穿?緩存擊穿和緩存穿透的區別是什麼?
Q:什麼時候適合用MongoDB?
Q:Redis 適合做消息隊列嗎?爲什麼?
Q:Redis 的數據是存儲在內存當中的,假如斷電之後就會造成數據丟失,那怎麼對 Redis 進行數據固化?

關係型數據庫

數據庫基本理論

Q:有哪些數據庫優化的方式?
Q:關係型數據庫和非關係型數據庫的區別?
Q:數據庫的事務有什麼用?什麼時候應該使用事務,什麼時候不該使用事務?
Q:數據庫索引有什麼用?什麼是聯合索引?
Q:主鍵適合用自定義ID還是自動ID?
Q:外鍵是什麼?爲什麼大公司有時候不建議使用外鍵?
Q:索引設置得越多越好嗎?索引得優缺點是什麼?
Q:InnoDB是基於什麼實現的?
Q:爲什麼會造成數據庫死鎖?怎麼解決?
Q:事務都有哪些特點?
Q:數據庫設計的三大範式是什麼?
Q:一張數據表最多不建議超過多少行?
Q:爲什麼要進行分表分庫?
Q:分表分庫有哪幾種方式?舉例說明

SQL

Q:【手撕】數據庫,查找一個學生兩門功課都大於80分的姓名
Q:【手撕】聯表查詢2個表中工號爲“123”的人的所有信息
Q:【手撕】一個人員表,一個部門表,人員表中存了部門id,查人員表各部門表所有數據
Q:【手撕】查詢一個城市列表裏面重複的城市名,並且統計重複次數
Q:【手撕】查找一個學生成績表中平均分數大於90分的學生名單
Q:【手撕】查找學生成績表中平均成績最高的同學
Q:數據庫怎麼拷貝數據?
Q:刪除數據的方式有哪些?說說 drop table和truncate table的區別?

 

八、智力題

Q:跳臺階問題
Q:4分鐘沙漏和7分鐘沙漏怎麼漏出9分鐘
Q:兩個粗細不同的香,燃盡時間都是1個小時,怎麼用這個2根香計算15分鐘的時間
Q:賽馬
Q:10堆蘋果,每堆10個,9堆每個50g,1堆每個40g,有一個稱,求只稱一次,找出這個輕的一堆
Q:飛機加油問題
Q:邏輯:四個開關四個燈泡
Q:地球弧形

九、編程題

Q:求最大回文個數
Q:一個數組中有正數有負數(沒有0),請將它排成正負相間的數組(多餘的全部放後面),時間複雜度不超過O(n);
Q:一道編程題,輸入一串由ABCD四個字隨機組成的字符串和一個整數k,返回字符串種前k個字的順序重複了幾次。
Q:編程:判斷一個字符串是否符合ipv4格式
Q:代碼題,給一個句子,只把單詞翻轉然後輸入
Q:【手撕代碼】字符串中只出現一次的字符、找出數組中最小的四個數字
Q:代碼:一串字符串中最小的整數
Q:寫代碼,類似高考成績,一個表中有很多數據(無序的),給你一個成績,查出在表中的排名
Q:編程題,雞兔同籠,一半的兔子伸起一半的腳,輸入地上有幾隻腳,列出所有的可能性(兔子是基數則整除2)
Q:判斷一個字符串是否是點分十進制的ipv4格式
Q:100萬個學生 按照成績 及對應排名錄入 分數查找排名(hashmap)
Q:python的編程題,輸入一個字符串然後空格切割在統計每個字母出現的次數

十、HR常問

Q:爲什麼想做測試
Q:對測開的理解
Q:測試過程中有沒有出現問題,是如何解決的
Q:最近看了什麼書?學了什麼?爲什麼學?有看什麼技術書籍嗎?
Q:個人優缺點,舉例
Q:測試看重什麼能力
Q:項目問題細挖
Q:爲什麼選擇xx公司?
Q:你對我們公司有什麼瞭解嗎?
Q:之前實習收穫了什麼
Q:介紹下自己的優缺點
Q:抗壓能力如何,描述一件自己如何抗壓的經歷
Q:反問環節:你有什麼問題想問我麼?
Q:項目中收穫了什麼?
Q:平時怎麼學習的
Q:爲什麼要離職?
Q:你的期望薪資是多少?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章