• 關閉

    2024軟件測試春招,面試官都會問些什么?

    發表于:2024-2-21 09:08

    字體: | 上一篇 | 下一篇 | 我要投稿

     作者:測試雜貨鋪    來源:CSDN

      1、request 模塊發送請求的時候,怎么傳遞參數?
      首先要確認一下接口的請求參數是什么類型的,如果接口需要的是查詢字符串參數的話,那么就是 params 查;如果接口需要的是 json 型的參數的話,那么就直接使用 json 去查;
      如果是上傳文件的情況的話,那么可以通過 files 的參數來傳遞;
      如果是表單類型的情況的話,那么可以使用 data 來傳遞,data 默認就是用來傳遞表單類型的參數;
      那么當使用 data 傳參的時候,也可以在那個請求頭中,通過 content type 來指定這個請求參數的類型。
      2、selenium 自動化如何進行文件上傳?
      如果是 input 元素的文件上傳,可以通過 selenium 當中的 send_keys 方式進行傳遞,但是這種方式局限性比較大,如果遇到像通過 js 調用的組件呢,會有一些問題;
      這個時候就需要通過一些和系統交互的方式去完成上傳操作,比如通過 autoit,pywinauto 或者是 pyautogui 這些第三方庫進行操作。
      3、列表反轉的幾種方式?
      第一種,是可以通過倒序切片反轉,然后步長是 -1;
      第二種,是可以通過 列表的方式,列表有一個方法叫做 reverse (譯:瑞外兒四),可以實現反轉。
      4、Python 中的類方法、實例方法、靜態方法 有何區別?
      類方法就是 類的方法,在定義的時候需要在上方加上一個 @classmethod 進行修飾,形參是 cls;類 和 實例 都是可以去調用;
      實例方法是 實例對象方法,只有實例對象可以調用,類是不能調用的,形參是 self 指的是對象本身;
      靜態方法是一個任意的函數,只是剛好放在這個類里面,他需要在上方加上一個 @staticmethod 進行修飾,可以使用對象直接調用;,靜態方法跟這個類沒有太大的關系。
      5、Python 當中的裝飾器是什么?
      裝飾器 又叫 修飾器,是Python 中的高階語法,裝飾器可以通過 類 或者 函數 來實現,通常使用 @ 符號來表示一個裝飾器;
      作用:是用來擴展投個 函數 或者 類 的功能。
      6、Python 中的深復制 和 淺復制有什么區別?
      深淺復制 通常是在數據嵌套的情況下討論,當被嵌套的數據是 可變類型 的數據的情況下,對這個數據進行復制的時候,我們就要考慮到這個深淺復制;
      淺復制,比如說,列表嵌套列表,列表中自帶的 copy 方法進行復制就是 淺復制;
      調用 copy 方法復制列表的時候,只會復制這個列表,列表中引用的其他數據(比如嵌套的列表)不會進行復制,是直接引用;
      淺復制由于復制的不徹底,原列表引用的數據發送變化的時候,那么復制之后的數據也會受到影響;
      深復制,就要用到 copy 模塊里面的 deepcopy 方法,調用 deepcopy 方法復制列表的時候,不僅會復制這個列表,而列表中引用的其他數據(比如嵌套列表)也會進行復制。
      7、什么是 PEP8 規范?
      PEP8規范 又叫 Python8號增強提案,他主要針對于 Python 代碼編寫風格,而制定的一個指南;
      比如:首先在一個模塊中,模塊中的函數 或者 類,他們的間隔是兩行;然后類里面的方法,他們間隔是一行;代碼行的縮進通常用一個 tab 鍵 及四個空格來表示;
      然后一行代碼 PEP8的規范里面指出來,最大應該是79個字符;
      關于這個規范還有很多要求,也就不一一舉例了。
      8、Python 函數的重載機制是什么?
      函數重載主要是為了解決兩個問題:第一個,是可變參數類型,第二個,是可變參數個數;
      在 Python 當中參數不需要申明類型,函數是可以接受任何類型的參數的;如果函數的功能相同,一個函數就可以處理了;
      在 Python 當中通過 一個 * 號 和 兩個 ** 號 來處理可變參數個數;所以在 Python 里面他不需要處理函數重載。
      9、Python 中常見的 可變參數類型 和 不可變參數類型 都有哪些?
      不可變的數據類型包括:整數、浮點數、負數、布爾值、字符串。
      可變參數類型包括:字典、列表、集合、元祖。
      10、你的項目是什么階段介入接口自動化測試的?
      首先,我這個項目是一個全新的項目,我負責接口測試,另外五個人負責功能測試;因為是新項目,所以我在項目開發階段,我就開始介入接口自動化;
      編寫了自動化用例,我們使用 yapi 平臺管理接口的,相當于是提供了接口文檔,由于介入的時間比較早,在這個過程當中,自動化發現了 幾百個 bug;
      為了后面的功能測試人員節約了很多時間,同時也能夠保證,跟的上頻繁上線的步伐。
      11、關于 Python 中的 intern 機制,你有了解過嗎?
      在運行 Python 程序的時候,會專門分配一塊空白的內存空間,用來保存由數字、字母、下劃線組成的字符串,也就是純單詞、字符組成的字符串,這塊空白的內存就被稱為 字符串駐留池,也稱作 大整數池;
      所謂的 intern 機制,就是在程序運行過程中創建新的字符串的時候,首先根據這個字符串,駐留池里面查找是否這個字符串,在這個駐留池里面是否已經創建了;
      如果有的話就已經直接拿過來用,如果沒有的話就在重新創建;創建之后如果是一個純單詞字符的話,會加入到這個駐留池當中,這樣的一個機制,能夠避免頻繁的創建和銷毀;
      這個對象能夠提升我們程序的一個運行效率。
      12、Python 中 *args 和 **kwargs 的作用?
      都是不定長,可以解決函數中參數不固定的問題,*args 可以把位置參數轉化成元祖;**kwargs 可以把 關鍵字參數轉化成字典。
      13、進程,線程,協成,你是怎么理解的?
      進程是操作系統資源分配的基本單位;線程是操作系統調度的基本單位;協成 也叫 微線程,協成 存在于線程 之中,是比線程更小的可執行單元;
      進程和線程可根據操作系統的調度,有可能是并發執行,有可能是并行;協成在一個線程之中,只能并發不能實現并行。
      14、Python 的多線程有什么缺點?
      根據 Python 官方文檔知道,由于 Cpython 解釋器的全局解釋器鎖的存在,那么多線程在同一時刻只能有一個線程執行,意思就是說 Python 中的多線程只能并發執行,沒有辦法實現真正的并行;也就是無法利用多核 CPU 的資源。
      15、Python 如何去操作 MySQL 數據庫?
      可以使用的庫有幾個:pymysql、或者是 mysql_clinet 都可以進行連接;建立游標對象以后就可以直接執行 SQL 語句了。
      16、Python 總什么是 命名元祖?
      命名元祖 是 Python 提供的一個叫做 namedtuple 的類,可以從 collection 包中導入,命名元組繼承自 元祖類,所以具備元組的特性,同時他可以訪問屬性的方式去獲取,元組的元素可讀性大大的提高,也可以非常方便的轉換成像字典這樣類型。
      17、函數的參數定義有幾種方式?
      必傳參數、默認參數、可變長參數。
      18、類里面去定義方法有幾種形式?
      分別是 實例方法、靜態方法、類方法。
      類方法 和 實例方法 它都是跟類 或者 實例 有關系,它們的參數總是一個 實例 或者 類。
      但是 靜態方法 就是一個普通函數,只不過我們剛好把他扔到了這個類的里面而已,它的參數沒有說一定要是 類 或是誰。
      19、unittest 框架的幾個概念,幾個組件?
      一共有五個概念:
      TestCase :是用來編寫測試用例的,我們所編寫的所有測試用例都需要繼承 testcase 這個類;
      TestSuite :是用來加載測試用例的容器,也就是一個測試套件;
      TesttLoader :是用來收集測試用例的,并加載到這個測試套件里面的;
      TestTestRunner :是用來運行測試用例,并生成文本形式的報告的;我們可以換成 HtmlTestRunner 來生成 HTML 格式的報告;
      fixture :是就是夾具,用例或者 用例的前置和后置工作可以在這個里面做。
      20、Python 中的魔術方法了解過嗎?
      有了解過,Python 類當中內置的那個雙下劃 開頭 和 結尾 的方法,都叫做 魔法函數,它是在特定的情況下除法的;
      比如說:類的初始化 init,它就是在創建對象的時候會自動調用,用于初始化對象;
      Python 當中有很多的特性,都是通過魔術方法來實現的。
      21、Python 中如何定義匿名函數?
      Python 中定義匿名函數非常簡單,通過 lambda 表達式來定義就可以了;
      lambda 表達式的基本句法是:lambda 空格 然后加上函數的參數,接下來在冒號后面跟上函數的返回值。
      22、Python 中 queue 模塊隊列 和 進程 queue 隊列,有什么區別?
      queue 模塊中的 Queue 只能在同一個進程中進行通信,只能實現多線程的數據交互,不能實現多進程的數據交互;
      那么 進程 模塊當中的 Queue 可以跨進程使用,能夠實現多進程進行數據交互。
      23、同步請求 和 異步請求 的區別?
      同步請求,是指在一個線程當中,如果你發起一次請求以后,在收到返回結果之前,你是不能發起下一次請求的;
      異步請求,是指在 同一個線程當中,如果你發起一次請求以后,在等待返回結果的這段時間之內,你可以繼續去發起其他的請求。
      24、Python 中 with 操作文件為什么不用手動關閉,原理是什么?
      Python 中的 with 關鍵字,它是用來啟動一個對象的上下文管理器的;
      他的原理是:當我們使用 with 去通過 open 打開文件的時候,它會觸發文件對象的上下文管理器,然后當 with 當中的代碼運行結束后,會自動去調用上下文管理器的退出方法;
      在這個方法中他會去調用 close 來關閉文件,所以不需要我們手動去關閉文件。
      25、Python 中的垃圾回收機制是什么?
      我們常用的Python 解釋器 CPython 主要使用了三種垃圾回收機制來完成對這個無效數據的回收以及內存的釋放,分別是:引用計數、標記清除 還有 分代回收。
      垃圾回收的策略 是以這個引用計數為主,然后 標記清除 和 分代回收 只是做一個輔助性的手段。
      本文內容不用于商業目的,如涉及知識產權問題,請權利人聯系51Testing小編(021-64471599-8017),我們將立即處理
    《2023軟件測試行業現狀調查報告》獨家發布~

    關注51Testing

    聯系我們

    快捷面板 站點地圖 聯系我們 廣告服務 關于我們 站長統計 發展歷程

    法律顧問:上海蘭迪律師事務所 項棋律師
    版權所有 上海博為峰軟件技術股份有限公司 Copyright©51testing.com 2003-2024
    投訴及意見反饋:webmaster@51testing.com; 業務聯系:service@51testing.com 021-64471599-8017

    滬ICP備05003035號

    滬公網安備 31010102002173號

    久久97久久97精品免视_欧洲国产伦久久久久久_91麻豆精品国产自产在线观_伊人久久大香线蕉综合av