測試面試題集錦(三)| 計算機網絡和數據庫篇(附答案)


本文為霍格沃茲測試學院學員學習筆記,進階學習文末加群。

本系列文章總結歸納了一些軟件測試工程師常見的面試題,主要來源於個人面試遇到的、網絡搜集(完善)、工作日常討論等,分為以下十個部分,供大家參考。如有錯誤的地方,歡迎指正。有更多的面試題或面試中遇到的坑,也歡迎補充分享。希望大家都能找到滿意的工作,共勉之!

軟件測試工程師面試題系列篇 | 目錄

  1. 測試常見問題與流程篇
  2. 測試工具篇
  3. 計算機網絡知識與數據庫篇
  4. Linux 篇
  5. Python 編程篇
  6. 自動化測試篇:包含 Selenium、Appium 和接口測試
  7. 性能測試篇
  8. 軟素質篇:10 大靈魂拷問
  9. 反問面試官篇
  10. 計算機網絡篇(基礎知識)
1.擅長哪些開發語言?
  • 學習過 Java,C 等
  • 半精通 Python
2.輸入 URL 到網頁顯示出來的全過程

a. 輸入網址
b. DNS解析
c. 建立tcp連接
d. 客戶端發送HTTP請求
e. 服務器處理請求
f. 服務器響應請求
g. 瀏覽器展示HTML
h. 瀏覽器發送請求獲取其他在HTML中的資源。

3.HTTP 和 HTTPS 的區別
  • HTTPS 里面是要有證書的,HTTP 並沒有證書。證書的作用是證明你是這個網站的擁有者。誰去證明?最頂級的 CA 去幫你證明,這些頂級的 CA 都是瀏覽器、操作系統本身就自動幫你集成,而且自動添加到設置信任里面去;
  • HTTPS 要兼顧安全+性能的方面,由於對稱式加密雖然速度很快,但是安全性特別的低,因為雙方要規定對稱式加密的秘鑰,別人都無法知道,但你怎么能確保別人不知道你的秘鑰呢,因此需要有非對稱式加密去保證安全,但非對稱式加密速度又很慢,如果客戶端和服務器端都用非對稱式加密,網絡得卡死了。所以當雙方建立好了非對稱加密后,再約定一個隨機數,等大家都非對稱解密了之后呢,就拿到只有對方知道的唯一隨機數(秘鑰),就可以用秘鑰來進行對稱式加密和解密了;
4.HTTP 的報文結構
  • HTTP請求報文:一個HTTP請求報文由請求行、請求頭部、空行和請求數據4個部分組成
  • HTTP響應報文:HTTP響應也由三個部分組成,分別是:狀態行、消息報頭、響應正文
5.HTTP 常見的響應狀態碼
  • 200 請求已成功,請求所希望的響應頭或數據體將隨此響應返回。
  • 201 請求已經被實現,而且有一個新的資源已經依據請求的需要而建立,且其 - - URI 已經隨 Location 頭信息返回
  • 202 服務器已接受請求,但尚未處理
  • 301 (永久移動) 請求的網頁已永久移動到新位置。服務器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。
  • 302 (臨時移動) 服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以后的請求。
  • 303 (查看其他位置) 請求者應當對不同的位置使用單獨的 GET 請求來檢索響應時,服務器返回此代碼。
  • 304 (未修改) 自從上次請求后,請求的網頁未修改過。服務器返回此響應時,不會返回網頁內容。
  • 305 (使用代理) 請求者只能使用代理訪問請求的網頁。如果服務器返回此響應,還表示請求者應使用代理。
  • 307 (臨時重定向) 服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以后的請求。
  • 401 當前請求需要用戶驗證。如果當前請求已經包含了 Authorization 證書,那么
  • 401 響應代表着服務器驗證已經拒絕了那些證書
  • 403 服務器已經理解請求,但是拒絕執行它。與 401 響應不同的是,身份驗證並不能提供任何幫助,而且這個請求也不應該被重復提交
  • 404 請求失敗,請求所希望得到的資源未被在服務器上發現
  • 500 服務器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理。一般來說,這個問題都會在服務器的程序碼出錯時出現。
  • 501 服務器不支持當前請求所需要的某個功能。當服務器無法識別請求的方法,並且無法支持其對任何資源的請求。
  • 502 作為網關或者代理工作的服務器嘗試執行請求時,從上游服務器接收到無效的響應。
  • 503 由於臨時的服務器維護或者過載,服務器當前無法處理請求。這個狀況是臨時的,並且將在一段時間以后恢復。
6.cookie 和 session 機制的區別
  • cookies 數據保存在客戶端,session 數據保存在服務器端;
  • cookies 可以減輕服務器壓力,但是不安全,容易進行 cookies 欺騙;
  • session 較安全,但占用服務器資源
7.TCP 和 UDP 的區別
  • TCP:面向連接,可靠的,速度慢,效率低
  • UDP:無連接、不可靠、速度快、效率高
8.TCP 為什么是三次握手和四次揮手
  • 三次握手能保證數據可靠傳輸又能提高傳輸效率。若握手是兩次:如果只是兩次握手, 至多只有連接發起方的起始序列號能被確認,另一方選擇的序列號則得不到確認;
  • 要保證雙方都關閉了連接。因為 TCP 是全雙工的,就是要等到兩邊都發送 fin 包確認雙方都沒有數據傳輸后才關閉;
9.TCP為什么最后揮手后會有time_wait
  • 為了保證可靠的斷開TCP的雙向連接,確保足夠的時間讓對方收到 ACK 包。若客戶端回復的 ACK 丟失,server 會在超時時間到來時,重傳最后一個 fin 包,處於 TIME_WAIT 狀態的 client 可以繼續回復 Fin 包,發送 ACK。
  • 保證讓遲來的 TCP 報文段有足夠的時間被識別和丟棄,避免新舊連接混淆。有些路由器會緩存沒有收到的數據包,如果新的連接開啟,這些數據包可能就會和新的連接中的數據包混在一起。連接結束了,網絡中的延遲報文也應該被丟棄掉,以免影響立刻建立的新連接。
10.簡要說明 HTTP 請求中的 Post 和 Get 有哪些區別的地方
  • 請求頭多了 content-length 和 content-type 字段
  • Post 可以附加 body,可以支持 form、json、xml、binary 等各種數據格式
  • 行業通用規范
  • 無狀態變化的建議使用 Get
  • 數據的寫入與狀態的修改建議使用 Post
  • 基於 HTTP 協議:都是請求返回數據,Get 將請求體放在頭上,只發一次請求,Post 將請求體放在內部,需要發送兩次請求
  • GET 在瀏覽器回退時是無害的,而 POST 會再次提交請求。
  • GET 請求會被瀏覽器主動 cache,而 POST 不會,除非手動設置。
  • GET 請求只能進行 URL 編碼,而 POST 支持多種編碼方式。
  • GET 請求在 URL 中傳送的參數是有長度限制的,而 POST 么有。
  • 對參數的數據類型,GET 只接受 ASCII 字符,而 POST 沒有限制。
  • GET 比 POST 更不安全,因為參數直接暴露在 URL 上,所以不能用來傳遞敏感信息。
11.如果一個請求,返回的狀態碼是 200,但是沒有內容,可能發生了什么?
  • 請求頭缺失或錯誤
  • 參數 length 不符
  • 以上為個人理解,有誤請指正。

數據庫篇

1. 工作中常使用的 SQL 語法有哪些?
  • create table、create view、 select from where、insert into、update set values、delete、alter、order by、having
2.數據庫存儲過程
  • 一組數據庫操作命令,當作是自己寫的一個方法,一系列步驟自己去封裝(個人理解)
3.SQL 常見查詢語句編寫(此處僅舉例常見的查詢語句,如有更多坑,希望補充)
a.查詢所有學生的數學成績,顯示學生姓名 name, 分數, 由高到低。
SELECT a.name, b.score FROM student a, grade b WHERE a.id = b.id AND kemu = '數學' ORDER BY score DESC; 
b.統計每個學生的總成績(由於學生可能有重復名字),顯示字段:學生 id,姓名,總成績。
SELECT a.id, a.name, c.sum_score from student a, (SELECT b.id, sum(b.score) as sum_score FROM grade b GROUP BY id) c WHERE a.id = c.id ORDER BY sum_score DESC; 
c.列出各門課程成績最好的學生, 要求顯示字段: 學號,姓名,科目,成績
SELECT c.id , a.name, c.kemu, c.score FROM grade c, student a,(SELECT b.kemu, MAX(b.score) as max_score FROM grade b GROUP BY kemu) t WHERE c.kemu = t.kemu AND c.score = t.max_score AND a.id = c.id 
4.慢查詢是什么意思?
  • 開啟慢查詢日志,可以讓 MySQL 記錄下查詢超過指定時間的語句,通過定位分析性能的瓶頸,才能更好的優化數據庫系統的性能。
5.導致數據庫性能差的可能原因有哪些?
  • 硬件環境問題,如磁盤IO
  • 查詢語句問題,如join、子查詢、沒建索引
  • 索引失效,建了索引,查詢的時候沒用上
  • 查詢關聯了太多的join
  • 服務器關聯緩存,線程數等
  • 表中存在冗余字段,在生成笛卡爾積時耗費多余的時間
6.Redis 緩存應用場景
  • 需要將數據緩存在內存中,提升查詢效率
  • 這里希望大家補充
7.怎么定位 Redis 緩存失效問題(緩存壞了)
  • Redis 的知識,了解的不是很多
  • 拋磚引玉,請大家指正和補充。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM