天天看點

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

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

  1. 測試常見問題與流程篇
  2. 測試工具篇
  3. 計算機網絡知識與資料庫篇
  4. Linux 篇
  5. Python 程式設計篇
  6. 自動化測試篇:包含 Selenium、Appium 和接口測試
  7. 性能測試篇
  8. 軟素質篇:10 大靈魂拷問
  9. 反問面試官篇
  10. 計算機網絡篇(基礎知識)
1.擅長哪些開發語言?
  • 學習過 Java,C 等
  • 半精通 Python
2.輸入 URL 到網頁顯示出來的全過程
  1. 輸入網址
  2. DNS解析
  3. 建立tcp連接配接
  4. 用戶端發送HTTP請求
  5. 伺服器處理請求
  6. 伺服器響應請求
  7. 浏覽器展示HTML
  8. 浏覽器發送請求擷取其他在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 的知識,了解的不是很多
  • 抛磚引玉,請大家指正和補充。

更多内容,我們在後續文章分享。

免費領取:接口測試+性能測試+自動化測試+測試開發+測試用例+履歷模闆+測試文檔