最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python自動化測試筆試面試題精選

 更新時間:2020年03月12日 14:15:48   作者:臨淵  
在本篇文章里小編給大家整理的是一篇關于Python自動化測試筆試面試時常見的編程題,需要的朋友們可以學習參考下。

前言

隨著行業(yè)的發(fā)展,編程能力逐漸成為軟件測試從業(yè)人員的一項基本能力。因此在筆試和面試中常常會有一定量的編碼題,主要考察以下幾點。

  • 基本編碼能力及思維邏輯
  • 基本數(shù)據(jù)結構(順序表、鏈表、隊列、棧、二叉樹)
  • 基本算法(排序、查找、遞歸)及時間復雜度

除基本算法之外,筆試面試中經(jīng)常會考察以下三種思想:

  • 哈希
  • 遞歸
  • 分治

哈希

哈希即Python中的映射類型,字典和集合,鍵值唯一,查找效率高,序列(列表、元祖、字符串)的元素查找時間復雜度是O(n),而字典和集合的查找只需要O(1)。
因此哈希在列表問題中主要有兩種作用:

去重

優(yōu)化查找效率

例題1:列表去重#

列表去重在不考慮順序的情況下可以直接使用set()轉換(轉換后會自動排序),需要保持順序可以使用字典構建的fromkeys()方法,利用字典鍵值的唯一性去重。

不考慮順序:

l = [2,1,2,3,4,5,6,6,5,4,3,2,1]
result = list(set(l))
print(result)

運行結果:

[1, 2, 3, 4, 5, 6]

考慮順序:

l = [2,1,2,3,4,5,6,6,5,4,3,2,1]
result = list({}.fromkeys(l).keys())
print(result)

運行結果:

[2, 1, 3, 4, 5, 6]

例題2:分組

一串字母數(shù)字組合的字符串,找出相同的字母或數(shù)字,并按照個數(shù)排序。

l = [1,2,3,'a','b','c',1,2,'a','b',3,'c','d','a','b',1]
set1 = set(l)
result = [(item, l.count(item)) for item in set1]
result.sort(key=lambda x:x[1], reverse=True)
print(result)

這里使用哈希的鍵值不重復性。當然也可以使用python自帶的groupby函數(shù),代碼如下:

from itertools import groupby

l = [1,2,3,'a','b','c',1,2,'a','b',3,'c','d','a','b',1]
l.sort(key=lambda x: str(x)) # 分組前需要先排序
result = []
for item, group in groupby(l, key=lambda x: str(x)):
  result.append((item, len(list(group))))
result.sort(key=lambda x:x[1], reverse=True)
print(result)

例題3:海量數(shù)據(jù)找出top K的數(shù)據(jù)#

對于小數(shù)據(jù)量可以使用排序+切片,而對于海量數(shù)據(jù),需要考慮服務器硬件條件。即要考慮時間效率,也要考慮內存占用,同時還要考慮數(shù)據(jù)特征。如果大量的重復數(shù)據(jù),可以先用哈希進行去重來降低數(shù)據(jù)量。

這里我們使用生成器生成1000萬個隨機整數(shù),求最大的1000個數(shù),生成隨機數(shù)的代碼如下:

import random
import time
n = 10000 * 1000
k = 1000
print(n)
def gen_num(n):
  for i in range(n):
    yield random.randint(0, n)
l = gen_num(n)

不限內存可以直接使用set()去重+排序

start = time.time()
l = list(set(l))
result = l[-k:]
result.reverse()
print(time.time()-start)

1000w個數(shù)據(jù)會全部讀入內存,set后列表自動為遞增順序,使用切片取-1000到最后的即為top 1000的數(shù)

使用堆排可以節(jié)省一些內存

start = time.time()
result = heapq.nlargest(k, l)
print(time.time()-start)

這里是用來Python自帶的堆排庫heapq。使用nlargest(k,l)可以取到l序列,最大的k個數(shù)。

較小內存可以分治策略,使用多線程對數(shù)據(jù)進行分組處理(略)

例題4:兩數(shù)之和#

l=[1,2,3,4,5,6,7,8] 數(shù)據(jù)不重復,target=6,快速找出數(shù)組中兩個元素之和等于target 的數(shù)組下標。

注意,不要使用雙重循環(huán),暴力加和來和target對比,正確的做法是單層循環(huán),然后查找target與當前值的差,是否存在于列表中。

但是由于列表的in查詢時間復雜度是O(n),即隱含了一層循環(huán),這樣效率其實和雙重循環(huán)是一樣的,都是O(n^2)。

這里就可以使用哈希來優(yōu)化查詢差值是否在列表中操作,將O(n)降為O(1),因此總體的效率就會變成O(n^2)->O(n)。

l = [1,2,3,4,5,6,7,8]
set1 = set(list1)  # 使用集合已方便查找
target = 6

result = []
for a in list1:
  b = target - a
  if a < b < target and b in set1:  # 在集合中查找,為避免重復,判斷a為較小的那個值
    result.append((list1.index(a), list1.index(b)))  # 列表index取下標的操作為O(1) 
print(result)

遞歸問題

遞歸是一種循環(huán)調用自身的函數(shù)??梢杂糜诮鉀Q以下高頻問題:

  • 階乘
  • 斐波那切數(shù)列
  • 跳臺階、變態(tài)跳臺階
  • 快速排序
  • 二分查找
  • 二叉樹深度遍歷(前序、中序、后序)
  • 求二叉樹深度
  • 平衡二叉樹判斷
  • 判斷兩顆樹是否相同

遞歸是一種分層推導解決問題的方法,是一種非常重要的解決問題的思想。遞歸可快速將問題層級化,簡單化,只需要考慮出口和每層的推導即可。

如階乘,要想求n!,只需要知道前一個數(shù)的階乘(n-1)!,然后乘以n即可,因此問題可以轉為求上一個數(shù)的階乘,依次向前,直到第一個數(shù)。

舉個通俗的例子:

A欠你10萬,但是他沒那么多錢,B欠A 8萬,C欠B 7萬 C現(xiàn)在有錢。因此你要逐層找到C,一層一層還錢,最后你才能拿到屬于你的10萬。

到此這篇關于Python自動化測試筆試面試題精選的文章就介紹到這了,更多相關Python自動化測試筆試面試時常見的編程題內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python實現(xiàn)括號匹配的思路詳解

    python實現(xiàn)括號匹配的思路詳解

    這篇文章主要介紹了python實現(xiàn)括號匹配及匹配格式的相關知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08
  • python?replace?空格數(shù)據(jù)處理的實現(xiàn)

    python?replace?空格數(shù)據(jù)處理的實現(xiàn)

    本文主要介紹了python?replace?空格數(shù)據(jù)處理的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • TensorFlow Autodiff自動微分詳解

    TensorFlow Autodiff自動微分詳解

    這篇文章主要介紹了TensorFlow Autodiff自動微分詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python中DJANGO簡單測試實例

    Python中DJANGO簡單測試實例

    這篇文章主要介紹了Python中DJANGO簡單測試,實例分析了DJANGO的用法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • 使用Requests庫來進行爬蟲的方式

    使用Requests庫來進行爬蟲的方式

    這篇文章主要介紹了使用Requests庫來進行爬蟲的方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python猜解網(wǎng)站數(shù)據(jù)庫管理員密碼的腳本

    Python猜解網(wǎng)站數(shù)據(jù)庫管理員密碼的腳本

    這篇文章主要和大家分享一個Python腳本,可以實現(xiàn)猜解網(wǎng)站數(shù)據(jù)庫管理員的密碼。文中的示例代碼講解詳細,需要的小伙伴可以參考一下
    2022-02-02
  • python中@property的作用和getter setter的解釋

    python中@property的作用和getter setter的解釋

    這篇文章主要介紹了python中@property的作用和getter setter的解釋,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • python+selenium實現(xiàn)登錄賬戶后自動點擊的示例

    python+selenium實現(xiàn)登錄賬戶后自動點擊的示例

    本篇文章主要介紹了python+selenium實現(xiàn)登錄賬戶后自動點擊的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • 使用DataFrame刪除行和列的實例講解

    使用DataFrame刪除行和列的實例講解

    下面小編就為大家分享一篇使用DataFrame刪除行和列的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 編寫Python腳本抓取網(wǎng)絡小說來制作自己的閱讀器

    編寫Python腳本抓取網(wǎng)絡小說來制作自己的閱讀器

    這篇文章主要介紹了編寫Python腳本抓取網(wǎng)絡小說來制作自己的閱讀器的方法,包括對小說的章節(jié)排列等方面的優(yōu)化,對于Python學習者來說非常具有實踐意義!需要的朋友可以參考下
    2015-08-08

最新評論

陕西省| 营山县| 屏南县| 玉林市| 深水埗区| 隆昌县| 西贡区| 日照市| 额尔古纳市| 济阳县| 兴国县| 罗平县| 商水县| 阿拉善盟| 高邑县| 祥云县| 六安市| 屏东县| 桃源县| 庄河市| 万山特区| 稷山县| 高安市| 娱乐| 剑川县| 金阳县| 邵阳县| 南华县| 桐庐县| 台州市| 秦皇岛市| 安吉县| 明水县| 靖安县| 罗田县| 班戈县| 澎湖县| 阳城县| 定兴县| 黎平县| 肇庆市|