亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:2日期:2022-08-02 14:30:53

前言

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

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

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

哈希 遞歸 分治

哈希

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

去重

優化查找效率

例題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:分組

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

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函數,代碼如下:

from itertools import groupbyl = [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:海量數據找出top K的數據#

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

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

import randomimport timen = 10000 * 1000k = 1000print(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個數據會全部讀入內存,set后列表自動為遞增順序,使用切片取-1000到最后的即為top 1000的數

使用堆排可以節省一些內存

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

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

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

例題4:兩數之和#

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

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

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

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

l = [1,2,3,4,5,6,7,8]set1 = set(list1) # 使用集合已方便查找target = 6result = []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)

遞歸問題

遞歸是一種循環調用自身的函數。可以用于解決以下高頻問題:

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

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

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

舉個通俗的例子:

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

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

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 一级欧美激情毛片 | 国产一级做a爰片在线看免费 | 亚洲这里只有精品 | 亚洲黄色性视频 | 久久精品人人做人人爽 | 美国三级在线 | 国产一级大片在线观看 | zljzlj日本妈妈 | 手机在线黄色网址 | 国产精品亚洲片在线观看麻豆 | 国产aaa级一级毛片 国产aaa免费视频国产 | 精品在线99 | 国产露脸国语对白在线 | 国产午夜a理论毛片在线影院 | 国产欧美精品国产国产专区 | 久久精品国产精品亚洲红杏 | 欧美午夜影院 | 国产成人亚洲日本精品 | 1024在线视频国产在线播放 | 国产成人一区二区三区 | 91全国探花精品正在播放 | 婷婷激情亚洲 | 婷婷综合久久 | 国产剧情a | www精品| 黄色短片在线观看 | 国产毛片a精品毛 | 中文字幕日韩欧美一区二区三区 | 一级片一级片一级片 | 日韩另类在线 | 国产真实乱人视频 | 中国一级特黄毛片 | 久久91精品国产91久久户 | 五月婷婷综合基地 | 免费国产片 | 久久国产视频一区 | 国产无遮挡又爽又色又刺激 | 久久国产综合 | 成年男女的免费视频网站 | 免费一级a毛片免费观看欧美大片 | 国产ppp在线视频在线观看 |