測試開發面試題匯總


sql語句應該考慮哪些安全性?

答案:

(1)防止sql注入,對特殊字符進行轉義,過濾或者使用預編譯的sql語句綁定變量。
(2)最小權限原則,特別是不要用root賬戶,為不同的類型的動作或者組建使用不同的賬戶。
(3)當sql運行出錯時,不要把數據庫返回的錯誤信息全部顯示給用戶,以防止泄漏服務器和數據庫相關信息。

 

1、項目經驗

 

2、介紹下什么是索引

  

定義:關系型數據庫中,索引是一種單獨的物理的對數據庫中的一列或者多列的值進行排序的存儲結構,他是某個表中一列或者若干列值的集合和相應的指向表中物理標識這些值的數據頁的邏輯指針清單。

 

拓展:

(關系型數據庫與菲關系型數據庫的區別?你用到的非關系型數據庫有哪些?)

索引是一種分散的存儲結構。

索引的作用:提高MySQL的檢索速度

  • 快速抓取數據
  • 保證數據記錄的唯一性
  •  實現表與表之間的參照完整性(表與表之間怎么參照呢?)
  • 使用部分語句進行數據檢索時,減少排序和分組的時間

3、京東登錄頁面怎么測?

  • 分析需求
    • 確定測試范圍:(1)二維碼登錄(2)賬戶登錄(3)三方登錄
    • 輸入框的規則:(1)手機號/郵箱/其他方式 (2)登錄賬號的限制,如輸入格式、字符長短限制、大小寫限制等
  • 界面UI
    • UI顯示什么?
    • 文案顯示什么?
  • 功能思路分析-功能驗證
    • 正向驗證,輸入正確的賬號、密碼登錄賬號,登錄成功
    • 反向驗證
      • 賬號輸入框
        • 手機號
          • 正常情況下為11位的數字(需考慮未注冊、注銷的手機號),登錄失敗並提示;(手機號后面+空格 ),可成功登錄
          • 非正常輸入(需考慮10、12位的數字,非數字的英文、中文、特殊符號的輸入),登錄失敗並提示
          • 無輸入(賬號為空的輸入),登錄失敗並提示
        • 密碼框 
          • 正確的賬號,錯誤的密碼(不符合格式、錯誤的數字等),登錄失敗並提示
          • 無輸入(賬號為空的輸入),登錄失敗並提示
          • 特殊字符(密碼包含空格等),登錄失敗並提示
      • 按鈕操作
        • 清空按鈕
          • 點擊清空按鈕,清空數據  
          • 輸入框內為空,無展示
          • 輸入框內至少1字符,展示
          • 特殊字符輸入(空格),展示
        • 忘記密碼
          • 點擊后,跳轉找回密碼頁面
        • 登錄按鈕
          • 有網絡的情況下,登錄跳轉成功
          • 無網絡的情況下,跳轉失敗  
      • 場景法補充不同場景的用例
      • 接口測試   
        • 接口請求時機
        • 接口請求參數是否正確
        • 接口相應展示是否正確:mock方法(??????)
  • 性能分析
    • tps
    • 響應時間
    • CPU的占用率
    • 內存
    • 吞吐量
    • IO的占用等
  • 兼容性
    • 不同瀏覽器的不同版本或分辨率(常用的分辨率有1920*1080、1280*720)
    • 不同移動設備的不同瀏覽器
  • 安全性
    • 信息加密
      • 傳輸過程中關鍵信息(如 token、cookie等)有沒有加密
      • 登錄后緩存信息有沒有加密  
    • 密碼操作
      • 是不是支持復制粘貼
      • 密碼框是否加密顯示
      • 密碼在源代碼下是否可見
      • 密碼有效期 
    • 注入攻擊
      • SQL注入(如何保證SQL安全性?)
      • xss攻擊(xss如何操作?)
    • 信息清除
      • 退出后有沒有清除用戶信息  
    • 是否可繞過登錄機制,如直接網頁訪問
    • 登錄限制
      • 登錄失敗次數
      • 登錄失敗后的驗證碼機制
      • 登錄互斥
      • 登錄超時后是否返回登錄頁
      • 瀏覽器前進后退是否需要重新登錄 
  • 易用性
    • 焦點定位
      復制粘貼
      頁面布局
      提示語容易理解  
  • web自有特性  
    • 鏈接測試
    • 頁面的所有鏈接是不是都能切換正常
      頁面中提供的可鏈接功能是不是都能正常鏈接
      多個瀏覽器同時訪問
      用戶同時打開多個瀏覽器,用相同的賬戶操作,數據一致性,數據同步的問題
      多個瀏覽器,用不同的賬戶去操作,cookie中會不會有用戶信息顯示錯亂  

 登錄跳轉至主頁面很慢,分析原因

4、如果一個普通用戶,他的百度首頁打不開,問題怎么定位?寫出定位流程。

  • 檢查機器網絡是否正常,通過ping或者打開其他網頁檢查
  • 檢查瀏覽器network設置是否正常,瀏覽器可以設置模擬3G,4G,offline等,同時切換其他瀏覽器嘗試
  • 檢查DNS(domain name system)解析是否正常(如不正常可用刷新DNS的方法,命令為ipconfig/flushdns)
  • 檢查ARP協議是否正常
  • 如果網絡正常,開始排查服務端問題,檢查服務器流量是否正常,是否能夠接收到請求日志
  • 接收不到請求日志,查看后端注冊中心端口是否正常
  • 如果一切正常,檢查是否且服務端日志也接收到且已經返回了,檢查客戶端接收到response后解析是否出現問題,瀏覽器控制台是否出現腳本報錯

5、問簡歷上的第一個項目的詳細情況,包括測試用例怎么寫?怎么判斷測試通過?項目的原理?

 

6、如果是做功能測試,能接受嗎?

 

7、說一下你們工作中的測試流程

 

8、用她的手機給我看了下百度貼吧的發帖功能的界面,給我張紙,讓我寫出測試點(只需要考慮內容,表情,添加圖片,@功能),寫完講一遍邏輯。

 

9、針對發朋友圈這個功能設計你的測試用例,請給出用例分類與典型用例場景

 

 

 

 

 

原文出處:https://www.cnblogs.com/tudou-22/p/9378805.html

 

10、Java 中的容器有哪些?它們的區別和特性?

 

11、Git 的常見操作,如 git stash

 git stash   用於保存和恢復工作區進度

Git push、Git pull、Git  clon、Git commit、Git init、Git diff

 

12、Java 的接口與抽象類的區別

 

13、TCP 和 UDP 的區別?如何保證 TCP 的可靠性?

 

14、打開一個網頁都發生了哪些事?

 

15、對工作上的壓力怎么看待?

 

16、繼續問項目經驗和技術難點

 

17、了解現在的工作環境,背景等

 

18、戶口,家庭情況,伴侶工作等

 

19、問上一份工作的公司是做什么的?離職原因?自己的職業發展規划?

 

20、遇到的某個難點是什么?如何解決的?

 

21、自己解決的最亮點的技術難點是什么?

 

22、你用jmeter做什么測試?

 

23、如果有一個登錄接口需要服務端返回參數,再帶着這個參數去請求才能完成登錄,用jmeter 怎么做?

 

24、請問你們公司是如何做接口測試的?

 

25、接口測試質量評估標准是什么?

 

26、對接口測試這塊熟不熟?是怎么測的?用的什么工具?為什么用 HTTPClient 類庫,覺得它有什么缺點?用 Fiddler 主要做什么?

 

27、請問你們公司是如何做性能測試的?請講訴性能測試的相關指標?

 

28、壓力測試和負載測試的區別

 

29、服務器中一般要監控哪些數據,如何監控的,怎么從監控數據中發現問題?

 

30、性能測試用過嗎?什么情況下用的?主要測哪些方面?

 

31、性能測試關注哪些指標?

 

32、對於多環境(聯調環境、測試環境、預發布環境)如何讓接口用例支持多套環境,說出你的做法

 

33、如果接口返回數十個字段,如何批量校驗這些字段的正確性,請說出你的方法?

 

34、假設系統A調用系統B,我把B的接口都mock了,進行性能測試,這樣有什么好處和壞處?

 

35、有一天早上打車高峰,滴滴服務端掛了大概30分鍾,工程師搶修之后,馬上上線,之后又掛了,請問有哪些原因會造成這個情況?

 

36、請問Monkey測試的優缺點?

 

37、如果使用monkey發現了一個畢現閃退,請問怎么使用monkey重現它?

 

38、UI 測試的過程

 

39、自動化測試用例怎么來?

 

40、你項目中有多少case,通過率怎么樣?

 

41、報告哪里來,主要統計什么?

 

42、做自動化測試的目的?

 

43、如何看待自動化和手動測試?怎樣的一個比例才是健康的?

 

44、你們公司的自動化投入產出比怎樣?效益怎樣?

 

45、自動化測試用例的覆蓋率多少?

 

46、完整運行一次自動化用例需要多久時間?

 

47、什么是分層自動化?

 

48、你的測試數據是怎么准備的?

 

49、測試腳本的維護成本是怎么樣的?

 

50、問第一個項目的測試框架的搭建、怎么用數據驅動測試?

 

51、Web View 怎么測試?

 

52、請問你的定位策略是什么?

 

53、請問如何實現用例失敗或者異常時候需要截圖?

 

54、請問如何分布式執行webdriver用例?

 

55、如何在腳本中執行 JavaScript 代碼?

 

56、Appium 的定位策略有哪些?

 

57、請簡述Appium的原理

 

58、iOS 和 Android 的 UI 自動化的原理是什么?

 

59、當定位策略都失敗的時候,你該怎么做?

 

60、UI 測試做的是 iOS 還是 Android?講講 iOS 的 UI 怎么測?

 

61、獲取 Appium 中的 content-desc 不為空的控件列表,代碼不限。

 

62、並行運行 Appium 需要修改哪些參數

 

63、你如何用Selenium測試

 

64、Selenium的工作原理?

 

65、常見的定位方式?

 

66、上傳圖片的幾種方式?

 

67、如何處理動態元素?

 

68、你是怎么開發測試框架的?

 

69、PO模型是怎么做的?

 

70、失敗截圖的原理是什么?

 

71、你常用的命令是什么?

 

72、用什么查看log?

 

73、如何查找一個文件大小超過5M的文件

 

74、如何查看進程?

 

75、Linux 中查找某個文件並刪除它

 

76、Linux 查詢 CPU、內存的指令

 

77、使用 Shell 獲取 Nginx log 中接口包含 topic 且狀態碼為 200 的接口平均響應時間(越嚴謹越好)

 

78、每隔 2s 獲取某個進程的 CPU 和 mem 數據並保存到 csv 數據文件

79、快排的實現 (代碼實現)

 

80、算數組中查找出現次數過半的數(代碼實現)

 

81、查找鏈表的倒數第三個數(代碼實現)

 

82、什么是面向對象編程?

 

83、講下Java多線程的使用

 

84、有三個線程T1,T2,T3,怎么確保它們按順序執行?

 

85、Thread 類中的start() 和 run() 方法有什么區別?

 

86、請寫一個線程安全的單例模型

 

87、請寫出冒泡排序

 

88、1~9999數列中數字3出現的次數,請用遞推方法解題。

 

89、從一個數組中找出前4個最大的數,用最優解。

 

90、寫一段程序,刪除字符串a中包含的字符串b,舉例 輸入a = “asdw”,b = “sd” 返回 字符串 “aw”,並且測試這個程序。

 

91、寫一個方法,把字符串轉為數字,比如 str=“1234”,變成 int 1234。並且測試這個程序

 

92 、A、有兩個有序鏈表,將他們組成一個有序鏈表。

 

93、給一個字符串,字符串里有 (){}[]“”這六個符號,設計一個算法,判斷這些符號是否成對匹配,即要檢驗這些括號是否都是成對出現的。

94、有兩個字符串類型的數字,實現一個方法將它們進行相加,並返回相加后的數值。(要考慮數據的長度問題)

 

95、Java 多線程的創建

 

96、算法:二叉樹的深度計算

 

96、算法:一億個無序數找出 Top 100(這個也沒寫好,空間復雜度高了,應該用堆排序)

 

97、說下左連接和右連接

 

98、給你一張表,根據要求寫sql,這個題目比較多,自己百度吧。

 

99、使用sql生產10萬條數據

 

100、數據庫熟嗎?用過哪些數據庫?索引會嗎?事務了解嗎?寫一個SQL 查詢語句:給一個字段,對其進行從大到小排序,取前十行。


免責聲明!

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



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