天天看點

軟體測試經典面試題(小題彙總)

整理收集一些自己遇到的面試題及部分大家的題,自己來作答,回答不妥或者不全的還請大家指正

網絡

(一)簡單描述下TCP協定

TCP:傳輸控制協定,是傳輸層通信協定。它有面向連接配接、可靠、位元組流傳輸等特點

TCP建立連接配接時,需要三次握手協定

TCP三向交握的過程如下:

用戶端發送SYN封包給服務端,進入SYN_SEND(SEQ=X)狀态

服務端收到SYN封包,回應一個SYN(SEQ=Y) ACK(ACK=X+1)封包,進入SYN_RECV狀态

用戶端收到服務端的SYN封包,回應一個ACK(ACK=Y+1)封包,開始建立連接配接

TCP/IP作用是什麼?

TCP/IP協定是一套網絡通信标準,讓全世界的各種不同的裝置之間可以進行通信

TCP與UDP的差別?

TCP傳輸控制協定 。UDP使用者資料報協定

TCP對資源要求比較多,UDP對資源要求比較少

TCP可以保證資料的正确性,UDP有可能會丢包

TCP可以保證資料的順序,UDP不會保證

(二)網絡7層模型是那7層?列舉一些具體的應用執行個體

從下到上,實體層、資料鍊路層、網絡層、傳輸層、會話層、表示層、應用層

實體層:同軸電纜、接收器、發送器等

資料鍊路層:網卡、交換機、網橋

網絡層:路由器、網關

傳輸層:TCP協定、UDP協定

會話層:SQL、ASP、 PHP等

表示層:ASCII、JPEG、PNG、MP3等

應用層:telnet、ssh、http、smtp等

怎麼測試網絡是否連通

使用ping指令

什麼方式可以是外網連接配接到家裡主機

telnet

如何讓外網通路家裡的終端?它的原理是什麼?

  1. 電腦上開啟遠端桌面
  2. 使用teamview

    他們的原理是:

  3. 你和對方機器建立一個Socket連接配接
  4. 在本地虛拟一個對方的系統
  5. 對方系統會在這個Socket連接配接上實時發送它系統狀态的資料
  6. 收到的資料,是本虛拟系統通過這個資料還原對方系統操作
  7. 本地操作這個虛拟作業系統,會發送資料指令到對方機器
  8. 對方繼器接收指令,通過Hook(底層鈎子)傳給作業系統
  9. 然後循環

通路一個網址會經曆哪些流程?

以下幾個簡單的流程

  1. 首先需要通過域名找到IP,如果本地緩存沒有需要請求DNS伺服器
  2. 得到IP後開始與目的主機進行三次握手來建立TCP連接配接
  3. 連接配接建立後進行HTTP通路,傳輸病擷取網頁内容
  4. 傳輸完成後與目的主機四次揮手斷開TCP連接配接

Linux

Linux常用指令有哪些,并簡述他們的作用

ls

檢視目前目錄

df-h

檢視磁盤使用情況

kill

殺掉程序

top

檢視目前主機狀态

mv

移動檔案

cp

複制檔案

netstat-a

檢視端口使用狀态

rm

删除

cat

檢視檔案

vim怎麼退出

q

不儲存直接退出

wq

儲存後退出

q!

強制退出

vim怎麼快速查找

按下

ESC

輸入

再輸入

空格

+查找内容

如何查找日志關鍵詞上下文

# 檢視檔案關鍵詞前後10行
grep 關鍵詞 -C 10 檔案名 catalina.out
# 檢視檔案關鍵詞後10行 a=after
grep 關鍵詞 -A 10 檔案名 catalina.out
# 檢視檔案關鍵詞前10行 b=before
grep 關鍵詞 -B 10 檔案名 catalina.out

           

怎樣一頁一頁地檢視一個大檔案的内容呢?

cat filename.txt | more

通過管道指令和more實作

如何檢視linux端口号被占用

netstat -a

檢視端口狀态

如何檢視程序狀态?

ps -ef | grep 程序名

chown是什麼?grep是什麼?

chown

改變檔案的擁有者群組

gerp

查找檔案裡符合條件的字元串

如何檢視日志?

tail -f

日志檔案名

5個用戶端通過TCP連接配接到主機,如何檢視這5個連接配接

netstat -nat|grep ESTABLISHED
           

資料庫

哪些方法可以提高資料庫查詢效率?

  1. 建立索引,利用索引
  2. 隻查詢必要的字段
  3. 合理的處理NULL字段
  4. 慎用like等通配符

索引設計的時候要注意什麼?

  1. 索引字段長度不能太長
  2. 索引的個數不能太多

資料庫更新語句?GROUP BY 如何使用?

UPDATE TABLENAME SET 字段名稱 = 新值 WHERE 列名稱 = 舊值
           

GROUP BY 一般常用于對查詢結果進行分組

# 如果想要對結果進行分組統計,加上SUM函數即可
SELECT SUM(列名1) 列命2 FROM TABLENAME
WHERE 列名1 列名2 
GROUP BY 列命1
           

如果一個資料表有成千上萬條記錄,通路時很慢,有哪些方法可以優化?

Redis的優勢是什麼

  1. 讀寫快,Redis是将資料放在記憶體裡,而記憶體的讀取速度比硬碟要快,是以Redis性能優勢比其他資料庫要好
  2. 并發性能好

程式設計

HTTP協定中GET和POST的差別

在http協定中

get方法一般用來從伺服器擷取資料

post方法一般用來向伺服器上傳資料

HTTP狀态碼的含義

狀态碼 描述
1XX 伺服器收到請求,需要請求者繼續執行操作
2XX 成功,操作被成功接收并處理
3XX 重定向,需要進一步的操作以完成請求
4XX 用戶端錯誤,請求包含文法錯誤或無法完成請求
5XX 伺服器錯誤,伺服器在處理請求的過程中發生了錯誤

常用的如下

狀态碼 傳回 描述
200 OK 請求成功。一般用于GET與POST請求
400 Bad Request 用戶端請求的文法錯誤,伺服器無法了解
401 Unauthorized 未注冊或需要使用者的身份認證
403 Forbidden 伺服器了解請求用戶端的請求,但是拒絕執行此請求
404 Not Found 伺服器無法根據用戶端的請求找到資源
500 Internal Server Error 伺服器内部錯誤,無法完成請求
502 Bad Gateway 作為網關或者代理工作的伺服器嘗試執行請求時,從遠端伺服器接收到了一個無效的響應
503 Service Unavailable 由于超載或系統維護,伺服器暫時的無法處理用戶端的請求
505 HTTP Version not supported 伺服器不支援請求的HTTP協定的版本,無法完成處理

HTTP請求Header裡包含哪些内容

浏覽器F12随意截取了一段,可以看看

# 主機名
Host: cn.bing.com
# 你目前通路的方式,一般為浏覽器版本,或者APP
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
# 語言資訊
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
# 編碼資訊
Accept-Encoding: gzip, deflate, br
# HTTP請求應答模式,KeepAlive模式,也有非KeepAlive模式
Connection: keep-alive
# 本地緩存
Cookie: SNRHOP=I=&TS=; _EDGE_S=mkt=zh-cn&F=1&SID=0227DE6146F26D360001D09247DC6CAA; _EDGE_V=1; MUID=0791871266626F2726E289E1674C6E73; _SS=PC=MOZI&SID=0227DE6146F26D360001D09247DC6CAA; SRCHS=PC=MOZI; SRCHD=AF=MOZLBR; SRCHUID=V=2&GUID=552BA37B5F5640E0BFCB0985B1F1AF85&dmnchg=1; SRCHUSR=DOB=20200624&T=1592977196000; MUIDB=0791871266626F2726E289E1674C6E73; SRCHHPGUSR=HV=1592977466&WTS=63728573996&CW=1920&CH=432&DPR=1&UTC=480&DM=0; ipv6=hit=1592980798172&t=6
# 是對應伺服器的響應頭部資訊,Content-Security-Policy: upgrade-insecure-requests
Content-Security-Policy: upgrade-insecure-requests
# 1,表示隻是用戶端支援
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
           

白盒測試方法有哪些

語句覆寫

使程式中的每個可執行語句都能執行一次的測試用例

判定覆寫

對于判斷語句,在設計用例的時候,要設計判斷語句結果為True和False的兩種情況

條件覆寫

設計足夠多的測試用例,使得程式中每個判定包含的每個條件的可能取值(真/假)都至少滿足一次

判定條件覆寫

設計足夠的測試用例,使得判斷條件中的所有條件可能取值至少執行一次,同時,所有判斷的可能結果至少執行一次

條件組合覆寫

設計足夠的測試用例,使得程式中每個判斷的所有可能的條件取值組合都至少出現一次

路徑覆寫

設計所有的測試用例,來覆寫程式中的所有可能的執行路徑

白盒測試覆寫率如何保證

使用條件組合覆寫達到100%

讓程式中每個判斷的所有可能條件取值組合都至少出現一次

這就就可以保證語句覆寫率、判定覆寫率、條件覆寫率和判定-條件覆寫率必為100%

關系如下:

參考知乎作者-吃完飯後不刷牙(https://zhuanlan.zhihu.com/p/43007988)

軟體測試經典面試題(小題彙總)

繼續閱讀