数え切れないほどの企業がまとめたソフトウェア テストの面接の質問 [回答付き]

1. 自動化コードではどのような設計パターンが使用されていますか?

  • シングルトンデザインパターン

  • 工場パターン
  • POデザインパターン
  • データ駆動型モデル
  • インターフェイス指向プログラミング設計パターン

2. アサーション(Assert)とは何ですか?

  • アサーション Assert は、実際の結果が期待される結果を満たしているかどうかをコード内で検証するために使用されます。
  • テスト ケースの実行に失敗した場合は、例外がスローされ、アサーション ログが提供されます。

3. Web自動テストとは何ですか

  • Web自動テストはUI(ユーザーインターフェース)レベルからの自動テストであり、
  • テスターはブラウザを開いて、自動化プログラム (テスト ケース スクリプト) をプログラミングして Web サイトのビジネス ロジックをテストします。

4. セレンとは何ですか?

  • Selenium は、複数のプログラミング言語をサポートして自動テスト スクリプトを開発し、クロスブラウザ プラットフォーム テストをサポートするオープンソースの Web 自動テスト フレームワークです。

5. Selenium で最もよく知っているインターフェイスまたはクラスを書き留めます。

  • WebDriver、InternetExplorerDriver、 FirefoxDriver、 ChromeDriver、 WebElement、WebDriverWait、

6. 要素の配置にはどのような種類がありますか?

  By クラスには合計 8 つの要素配置メソッドがあり、それらはすべて静的メソッドです。

  • By.id():
  • 名前で():
  • By.tagName():
  • By.className():
  • By.cssSelector():
  • linkText() により:
  • PartialLinkText() により:
  • .xpath() により:

7. XPathとは何ですか?

  • これは、Web ページの要素を検索する方法です。これは、DOM の中央にあるパスに相当し、絶対パスと相対パスによって見つけることができます。
  • これは動的なページ要素を定義するのに非常に役立ちますが、ページ構造が変更されると位置情報も変更する必要がある可能性があるため、使用には注意が必要です。

8. findElement() と findElements (メソッド) の違いは何ですか

  • どちらもページ要素を見つける方法です
  • findElement(): ページ要素を検索し、WebElement オブジェクトのみを返します。
  • findElements() : ページ上の一致する要素をすべて検索し、要素のコレクションを返します。

9. ログインボタンをクリックする方法はクリック以外にありますか?

  • 入力要素のタイプが submit である場合は、submit() メソッドを使用することもできます。

10. Selenium スクリプトの実行速度を向上させる方法

  • 待機時間の最適化: スリープ待機中のスレッドや implicitWait の暗黙的待機の代わりに、WebDriverWait インテリジェント待機を使用します。
  • 一連の自動操作で特定のページに入るのではなく、直接特定のページに入るなど、無駄な操作を削減し、サーバーが許可する場合はマルチスレッドを使用してテストケースの同時実行を実装します。

11. 検証コードを含む関数のテストを自動化する方法

  • 1) : 画像認識、技術的に難しい、効果が低い、推奨されない
  • 2) : 検証コードをシールドし、開発をプロセスに招待しますが、実稼働前環境または実稼働環境では推奨されません
  • 3) : ユニバーサル認証コード、他人が推測できない複雑な認証コードを使用

12. チェックボタンが選択されているかどうかの確認方法

  • 要素の isSelected() メソッドを使用できます。 true を返す場合は選択されていることを意味し、それ以外の場合は選択されていないことを意味します

13. 警告ポップアップ ウィンドウに対処するにはどうすればよいですか?

  • アラートのポップアップ ウィンドウを処理するには、まずアラートにジャンプし、次に [OK] または [キャンセル] ボタンをクリックする必要があります。
  • アラートalert = driver.switchTo().alert(); //アラートに切り替える
  • alert.accept0; //OK
  • alert.dismiss0; // キャンセル

14. ドロップダウン メニューでメニュー項目を選択するにはどうすればよいですか?

  • ドロップダウン メニューが選択タグの場合は、selectByValue() または selectByIndex() または selectByVisibleText() を使用します。
  • ドロップダウン メニューが select タグを使用して作成されていない場合は、xpath を使用して要素を直接見つけ、クリックして選択します。

15. ブラウザの進む、戻る、更新の操作をシミュレートする方法

  • driver.navigate().back()://back
  • driver.navigate().forward()://forward
  • driver.navigate0.efresh()://refresh

16. 現在のページの URL を取得するにはどうすればよいですか?

  • 文字列 URL = driver.getCurrentUrl();

17. WebDriver の close() メソッドと quit( メソッドの違いは何ですか?

  • close() メソッドは、現在動作しているウィンドウを閉じるだけです。
  • quit() は開いているウィンドウをすべて閉じます

18. 自動テストではどのような欠陥が使用されると思いますか?

  • 費用は比較的高いが、効果はそれほど高くない可能性がある
  • 自動テストに適した限定された機能
  • 検証コードなど、一部の機能操作は比較的複雑です。
  • メンテナンスコストが高く、プロジェクト要件が変更されると、自動化されたテストスクリプトとユースケースを改善する必要がある

19. Web側機能自動化、ファイルアップロード方法(無入力アップロード)

  • Windows ウィンドウとの対話は、pywin32 ライブラリを使用して実現できます。

20. クラスの中央にスペースを含むコントロールである <d1 class="inf-bar clearfix"> が見つかった場合、クラスごとにそれを見つけるにはどうすればよいですか?

  • xpath の配置: direct //d1 [@class="inf_bar clearfx"]
  • CSS の配置: d1.inf_bar.clearfix

21. Selenium の自動化、iframe をどう扱うか?

  • switch_to.frame を使用して iframe に切り替え、その中の要素を見つけて操作します。

22. Web側の機能自動化でハンドルを切り替える方法。

  • まずすべてのウィンドウ ハンドルを取得し、次に switch_to.window() を使用して指定されたウィンドウに切り替えます。

23. テストで読み取り専用属性を持つコントロールに遭遇した場合、どうすればよいですか? アイデアを簡単に説明します

  • close readonly属性を変更してから要素を操作してください。

要件: 空ではない正の整数のみを含む配列を指定すると、配列内で最も多くの繰り返しが行われた上位 N 個の数値を返します (返される結果は繰り返し回数の降順です)。これを実装するには使い慣れた言語を使用してください。要件。10分以内に書きましょう

a = [1, 6, 7, 4, 4, 5, 4, 5, 4, 5, 5, 6, 7, 8, 5, 6, 7, 3, 4, 2, 2, 1, 4, 8, 9, 4, 5, 6]


def get_datas(a):
    result = []
    data_dict = {}
    # 键值对:键:数字,值:在列表中的次数
    for item in set(a):
        data_dict[str(item)] = a.count(item)
    print(data_dict)
    # 将键值对按值(数字出现的次数)排序 ---从高到低排序
    res = sorted(data_dict.values(),reverse=True)
    for num in res:
        for key,value in data_dict.items():
            # 如果值在列表中不存在,则添加到结果列表中
            if num == value and key not in result:
                result.append(key)

    return result


a1 = get_datas(a)

結果:

25. 例: passwd={"admin'":"123321","user1":"123456"} 次の条件を満たしますか?

  • 1. ログインプログラムを設計し、異なるユーザー名とそれに対応するパスワードを辞書に保存し、正しいユーザー名とパスワードを入力してログインします。
  • 2. まずユーザー名を入力します。ユーザー名が存在しないか空の場合は、常に正しいユーザー名の入力を求めるプロンプトが表示されます。
  • 3. ユーザー名が正しい場合は、パスワードの入力を求められますが、パスワードがユーザー名と一致しない場合は、パスワードが間違っているというメッセージが表示されますので、再入力してください。
  • 4. 間違ったパスワードを 3 回以上入力すると、プログラムは中断されます。
  • 5. 間違ったパスワードを入力した場合でも、プロンプトが表示される可能性が数回あります。
  • 6. ユーザー名とパスワードの両方が正常に入力されると、ログインが成功したことを示すメッセージが表示されます。

users = {"admin": "123456", "user1": " 123456"} 
count = 0 


def login(): 
    global count 
    username = input("ユーザー名を入力してください:") 
    if username == None または username == " ": 
    username が users.keys( 
        ) にない場合は、login() : 
        print("ユーザー名の入力が間違っています。ユーザー名を再入力してください:") 
        login() 
    while (count < 3): 
        passwd = input("入力してくださいパスワード: ") 
        if passwd == users[ユーザー名]: 
            print("ログイン成功!!") 
            count = 3 
        else: 
            count += 1 
            print("間違ったパスワードが入力されました。可能性は {0} です。".format (3 - カウント))
ログイン()



26. プログラムを書いてください:---わかりません

1. 現在のディレクトリおよび現在のディレクトリのすべてのサブディレクトリで、ファイル名に指定した文字列が含まれるファイルを検索できます。

2、相対パスを出力します。

import os 

paths = [] 


def get_paths(dir、relate_dir=None、search_str=None):
    グローバルパス
    if search_str == None: os.listdir(dir 
    ) 内の項目の os.listdir(dir 
        ) を返します: 
        if replace_dir == None : 
            relate_dir == os.curdir 
        if os.path.isfile(os.path.join(dir, item)): 
            if item.find(search_str) != -1: 
                paths.append(os.path.join(relate_dir, item)) 
        elif os.path.isdir(os.path.join(dir, item)): 
            paths = get_paths(os.path.join(dir, item), os.path.join(relate_dir, item), search_str)
    戻りパス
dir = os.getcwd() 
search_str = "楽しい"





print(get_paths(dir, search_str=search_str))

27. 以下のコードの実行結果を書いてください

def f(str1, *args, **kwargs): 
    print(str1, args, kwargs) 


l = [1, 2, 3] 
t = [4, 5, 6] 
d = {"a": 7, "b ": 8, "c": 9} 

f(1, 2) 
f(1, 2, 3, "Python") 
f("Python", l, d) 
f("Python", *t) 
f(" python", *l, **d) 
f("python", q="勝利", **d)

結果:

1 (2,) {} 
1 (2, 3, 'python') {} 
python ([1, 2, 3], {'a': 7, 'b': 8, 'c': 9}) { } 
python (4, 5, 6) {} 
python (1, 2, 3) {'a': 7, 'b': 8, 'c': 9} 
python () {'q': '勝利', 'a': 7、'b': 8、'c': 9}

28. 以下のコードの実行結果を書いてください

import copy 

a = [1, 2, 3, 4, ["a", "b"]] b 
= a 
c = copy.copy(a) 
d = copy.copy(a) 
a.append(5) 
a[ 4].append("c") 

# 上記のルールに従って出力内容を記入してください
print('a=', b) 
print('b=', b) 
print('c=', c) 
print( 'd= '、d)

結果:

a= [1, 2, 3, 4, ['a', 'b', 'c'], 5] b= [1, 2, 3, 4, ['a', 'b', 'c 
' ], 5] 
c= [1, 2, 3, 4, ['a', 'b', 'c']] 
d= [1, 2, 3, 4, ['a', 'b', ' c']]

29. 同じ長さの 2 つのリストを 1 つの辞書にマージします。リクエスト: merge into {'A': 1, 'B': 2, 'C': 3}。達成するには 1 行のコードを使用してください。

キー = ["A", "B", "C"]
値 = ["1", "2", "3"] 
print(dict(zip(keys, [値の x には int(x)])) )

30. 2 つのリストを結合し、重複する値を削除する

list_1 = ["a", "b", "c", "1", "A", "勝利"] list_2 = [ 
"a", "python", "string"] 
print(set(list_1 + list_2) ) 
# 执行结果:{'c', 'wining', '1', 'string', 'b', 'a', 'python', 'A'}

31. 与えられたリストを、辞書の x に従って大きい順から小さい順に並べ替えます。

a = [{"x": 1, "y": 2}, {"x": 2, "y": 3}, {"x": 3, "y": 4}] aa1 = sort( 
a , key=lambda item: item["x"], reverse=True) 
print(aa1) 
# 执行结果:[{'x': 3, 'y': 4}, {'x': 2, 'y' : 3}、{'x': 1、'y': 2}]

32. Htmlの基本構造、2X2の表の描き方とは

<html> 
<head> 
<title>2行量列の表格</title> 
-<head> 
<body> 
<tatle width="200" border="1"> 
<tr><td> </td> 
< td> </td> 
-</tr> 
<td> </td> 
<td> </td> 
-</tr> 
-</table> 
-</body> 

</html>

33. 「行きましょう」と印刷するステートメントを書いて、と彼女は言いました

print("\"行きましょう\"、彼女は言いました")

34. 10 個の数値をランダムに生成し、ファイルに書き込むコードを作成してください。

インポートランダム

fs = open("num.txt", "a") 
list1 = [] 
range(10) のインデックス: 
    num =random.randint(0, 10) 
    list1.append(str(num)) 

print(list1 ) 
fs.write(",".join(list1)) 
fs.close()

結果:

35. コードの実行結果は別途書いてください

a = 1


def fun(a):
    a = 2


fun(a)
print(a)
# 执行结果:1

===============

b = [] 


def fun(b): 
    b.append(1) 


fun(b) 
print(b)

実行結果: [1]

36. 自動テストのカテゴリは何ですか: AB

  • A、UIの自動化
  • B、インターフェースの自動化
  • C. Web オートメーション
  • D、ターミナルオートメーション

37. 会話とは何ですか?

  • いわゆるセッションはセッションであり、セッションはサーバー側によって作成されるサーバーキャッシュテクノロジーです。
  • ユーザーがシステムにログインすると、通常、ログインしたユーザーの情報がセッション オブジェクトに保存され、セッションに対応する ID ( JSESSIONID ) が返されます。
  • したがって、ほとんどのシステムはセッション メカニズムを使用して認証を実現します。セッションはデータをキーと値の形式で保存します。

38. トークンとは何ですか?

  • いわゆるトークンは、実際にはサーバーから返される文字列です (xys73494954sdhcdr83435 のような文字列)。このデータが基づいているアルゴリズムは、開発者が確認する必要があります。通常、このデータは一意であり、トークンはサーバーから返されます。サーバーは毎回異なりますが、同じです。

Token を認証に使用できる理由は次のとおりです。

  • ユーザー a がログイン インターフェイスを呼び出します ---「システム b にログインしました ---」サーバーは一意のトークン情報 (c とする) を生成します。
  • 次に、ユーザーの番号 ID (d と仮定します) を使用してマッピングが作成されます: c - d,
  • 次に、そのようなマッピング関係をデータベースや Redis などのキャッシュに保存します。
  • 次に、このトークンをクライアントに返します ---「クライアントが認証を必要とする他のインターフェイスを呼び出すとき、
  • キャッシュされたトークンを検証に持ち込むだけで済みます。「サーバーは、トークンに基づいてログイン ユーザー情報があるかどうかをチェックし、リクエストがログイン許可されたユーザーであるかどうかを判断します。(ここでは、クライアントがトークンを取得する方法、それを保存する方法、および再要求時にトークンを戻す方法について説明します。インターフェース認証の部分は上で説明しました)。

39. インターフェイスの自動化、プロジェクトに使用されるデータベース、およびこのデータベースの操作に使用されるものを実行します。

  • Mysql では、jdbc を使用して、データベースの追加、削除、確認、変更などの操作を実装できます。

40. 単体テストフレームワークを使用したことがありますか?それはどのようなフレームワークですか?また、どのような一般的なアノテーションがありますか?

  • 使用される、junit (慣れていない場合)、testng、これらのテスト フレームワークは、テスト ケース コードを管理するためのテスト スイートの定義をサポートします。また、これらのテスト フレームワークによって提供されるいくつかの豊富な注釈は、非常に便利であるだけでなく、実行シーケンスを制御します。テスト ケースを使用してテスト プロセス全体を制御し、さまざまなテスト シナリオの実現をサポートします。

一般的な注釈:

  • @Test 、テストメソッドをマークするために使用されます
  • @BeforeSuite、スイートのグローバル初期化に適しており、スイート全体が実行される前に実行されます。
  • @BeforeTest、Test テスト セットの初期化に適しており、テスト セットが実行される前に実行されます。
  • @BeforeClass、Class テスト クラスの初期化に適しており、テスト クラスが呼び出されたときに実行されます。
  • @BeforeMethod、テスト メソッドの実行前の初期化に適しており、テスト メソッドの前に実行されます。
  • @After... 、上記の回答と比べると、実行順序が逆になっており、資源のリサイクルに適した関数となっています。
  • @Parameters : パラメータ化を容易にするためのパラメータ化されたアノテーション
  • @DataProvider : データプロバイダー。テスト用のバッチテストデータを提供するために使用できます。

41. インターフェースについての理解について話す

  • インターフェイスは、サービス、ファンクション ポイント実装、データ送信用のチャネル、特定のプロトコル (http プロトコルなど) とマッピング メカニズム (urlI にアクセスすると解析されます) のサーバー側実装です。サーバー側のマッピング処理メカニズムを介して、対応する処理関数に分類されます)、インターフェイス パラメーターは関数のパラメーターであり、インターフェイスの応答データは関数の戻り値です。

41. インターフェイス テストを行ったことがありますか?また、どのようなツールに精通していますか?

  • それを実行したことがある (これまでインターフェイス テストを行うためにビジュアル ツールを使用したことがなくても、経験を積んだのでインターフェイスの自動化テストを学習したことになります)。

使い慣れたツール:

  • jmeter、postman、soapui などの視覚化ツール (何を使用したかを述べてください)
  • コード: Httpclient はパケットを送信してインターフェイスのテストを実装します。

42. ツールはすでに自動テストを完了できますが、それを完了するためにコードを使用する理由は何ですか? 

  • 自動テスト用のツールには依存しており、制限があります。一部のツールではアサーション メソッドと式が提供されていますが、開始コストが高く、提供されている既存のアサーション式は一部の特別なルールのデータ検証を満たさない可能性があります。これは非常に柔軟であり、アサーション メソッドを独自のアイデアに従って設計できます。

43. get と post の 2 つのリクエスト メソッドの違いについて簡単に説明してください。

得る :

  • a. 通常、サーバーからデータを取得するリクエストは get メソッドに設定できます。
  • b. Get メソッドでパラメータを渡す場合、パラメータは通常、URL に直接結合されます (例: http://xxx?id=1&type=2 )。
  • c. Get リクエスト メソッドで渡すことができるパラメータ データの量は制限されています (一般的なパラメータは URL に結合されており、ブラウザには URL の長さに制限があるため)
  • d. Get リクエストは、データが URL に直接結合されるため、post ほど安全ではありませんが、get の実行効率は post よりも高速です

役職 :

  • a. 通常、サーバーへのデータ送信リクエストはポスト モードに設定されます。
  • b.パラメータを渡すPostメソッドは通常、パラメータをURLに連結するのではなく、リクエスト本文に配置します。
  • c. Post リクエストメソッドで送信できるデータ量に制限はありません
  • d. Post リクエストのパラメータ受け渡しは get より安全ですが (絶対的ではありません)、post の実行効率は get ほど良くありません。

44. あなたが知っている遅延待機方法を簡単に説明してください

強制待機:

  • スレッド待機とも呼ばれ、待機はスレッド スリープによって完了します。たとえば、5 秒間待機します: Thread sleep(5000)、

暗黙的な待機:

  • 遅延待機は暗黙的に Wait によって完了します。これはタイムアウトを 10 秒に設定するなどのグローバル設定の待機であることに注意してください。implicitlyWait を使用した後、要素が初めて見つからない場合は、要素が見つからないまで 10 秒以内に循環し続けます。 find 要素、10 秒以上見つからない場合、例外がスローされます

明示的に待機する:

  • インテリジェント待機とも呼ばれ、指定された要素の位置に指定された待ち時間が指定され、指定された時間範囲内で要素が検索されます。要素が見つかった場合は、直接戻ります。タイムアウト内に要素が見つからなかった場合は、例外がスローされます。

45. 出力は何ですか?

def f(x, l=[]): 
    for i in range(x): 
        l.append(i * i) 
        print(l) 
f(2) 
f(3, [3, 2, 1]) 
f(3) )

結果:
[0] 
[0, 1] 
[3, 2, 1, 0] 
[3, 2, 1, 0, 1] 
[3, 2, 1, 0, 1, 4] 
[0, 1, 0] ] 
[0、1、0、1] 
[0、1、0、1、4]

46. インターフェイスはどのように自動化しますか?

  • 参考回答:インターフェースドキュメントに従ってインターフェースのユースケースを設計し、Pythonのリクエストライブラリを利用してインターフェースのリクエストを実現し、テストデータをExcelで管理します。そして、コード内でunittestテストフレームワークを使用して、インターフェイスユースケースのアサーション処理を実現します。

47. Webドライバーを使用してマウスの右クリック操作を実行するにはどうすればよいですか?

ActionChains クラスの使用

ac= アクションチェーン(ドライバー);

ac.context_click(要素オブジェクト).perform()

48. 自動化フレームワークを作成するとき、テスト ケースをどこに保存しますか? テスト ケースを読み取るために何を使用しますか?

  • テスト ケースを Excel に保存し、サードパーティ ライブラリ openpyxI を使用して Excel 上で操作を完了します。

49. Python でコードを書き、1 ~ 1000 の範囲で 7 で割り切れる整数を計算し、5 で割って 3 を残し、行ごとに出力します。

for i in range(1, 1000): 
    if i % 7 == 0 and i % 5 ==3: 
        print(i)


実行結果: 
28 
63 
98 
133 
168 
....

50. 小明は 100 元を持っています。本を 100 冊買いたいです。英語の本は 5 元、数学の本は 3 元、中国語の本は 0.5 元です。彼は何通りの方法で買うことができますか? この問題はプログラムで解決してください。疑似言語を含む任意のプログラミング言語を使用できます。

質問の意味によると、100元で100冊の本を購入したいと考えています。どのように購入できるかを確認してください(100冊を購入できる限り、お金をすべて使う必要はありません)。

3 冊の価格は 5、3、0.5 なので、最大で数学 20 冊、英語 33 冊、中国語 200 冊が購入できます。ただし、組み合わせて購入する方法もあるので、トリプル for ループで実現できます。ijk はそれぞれ数学、英語、中国語の購入冊数を表します。ループ条件は i<=20, j<=33, k <=200 の場合、 i+j+k == 100 である限り、5*i+3*j+0.5*k<= 100 で十分です。すべての組み合わせの最終的な数が購入方法の数になります。


range(21) の i の場合、n = 0 : 
    range(34) の j の場合: 
        range(201) の k の場合: 
            5 * i + 3 * j + k * 0.5 <= 100 および i + j + k == の場合100: 
                n += 1 
print(n)

51. モンキーテストを使用した後にバグを送信するにはどうすればよいですか?

  • Monkey が APP をテストするとき、 adb Shell Monkey-p package name -f script -VV -v >D:log.txt を使用してログをローカルに出力し、エラーが発生したときにログのスクリーンショットを撮ります。ログのスクリーンショットを撮り、バグの説明が ZenTao に送信され、対応する開発に割り当てられます。ただし、バグを送信する前に、バグは手動で再現されます。

52. HTML ページにハイパーリンクを作成したい場合、どのような方法がありますか?

  • ハイパーリンク: <a href="url" target=".blank">コンテンツ</a>
  • target="_blank" は新しいウィンドウで開きます。
  • JS ジャンプ リンク: <a href="#" οnclick="javascript:location.href='URL";">コンテンツ</a>
  • メタタグのジャンプリンク: <meta http-equiv="refresh" content="3;URL = URL">
    • (数字 3 は秒です)  

53. 自動テストに関する次の記述のうち、間違っているものはどれですか: (ABCD)

A. 自動テストは手動テストを完全に置き換えることができます

B. 自動テストにより、テスト チームの作業負荷が大幅に軽減されます。

C. パフォーマンステストは自動化できない

D. 自動テストにより、多数の新たな欠陥が発見される可能性がある

Python のカスタム関数はどのようにして動的パラメーターを渡しますか?

  • パラメータは *argsまたは *kwargsを使用します

55. ラムダ関数とは何ですか?その利点は何ですか?

  • ラムダ関数: 関数名はなく、匿名関数です。
  • 利点: 複雑な関数本体を必要とせず、単純な計算のみを実行し、複数のパラメーターを受け取り、値を返します。これはコールバック関数として使用でき、メッセージ処理などの一部のアプリケーションに渡すことができます。

56. Python 言語では、サブクラスは親クラスのコンストラクターをどのように呼び出しますか?

  • サブクラスでコンストラクターが定義されていない場合、サブクラスはデフォルトで親クラスのコンストラクターを呼び出します。
  • サブクラスがコンストラクターを定義している場合は、サブクラスのコンストラクターで親クラスのコンストラクターを呼び出します。 Python3 では、 super()._ _init_ _() を使用します。

57. L = ["a", "b", "c", "d", "e", "f", "g"] であることがわかっている場合、L[3] の値は _ L[ ::5 ] は __L[::2] は _

L = ["a", "b", "c", "d", "e", "F", "g"] print(L[3]) print(L[::5]) 

print 
( 
L [::2])

执行結果:
d 
['a', 'F'] 
['a', 'c', 'e', 'g']

58. リスト x=[1, 2] の場合、式 list(enumerate(x)) の値

x = [1, 2] 
a1 = list(enumerate(x)) 
print(a1) 
# 実行結果:[(0, 1), (1, 2)]

59. 変数の型をチェックするPython組み込み関数はtypeです

60. 変数メモリアドレスを表示するPython関数はidです

61. 式 sum(range(1, 10, 2)) は 25 と評価されます

print(sum(range(1, 10, 2))) # 2 ビットずつの合計を取る: 1,3,5,7,9 
# 実行結果: 25

62. Python の順序付けられたシーケンス: リスト、タプル、文字

シャオ・フェイフェイはたくさんのボトルを購入し、各ペアのボトルには同じ番号が付いています。シャオ・フェイフェイは自分のボトルを数えたところ、ボトルの数が奇数 N であることがわかりました。つまり、ペアになっていないボトルがあるということです。シャオ・フェイフェイさんは新しいボトルを手に入れようとしています。すべてのボトルが一致するように、新しいボトルに何番をマークする必要があるか聞いてもいいですか。たとえば、彼は 7 本のボトル ​​( N=7 ) を持っている場合、ラベルは次のようになります: 1、6、13、1、6、13、13

次に、新しいボトルには 13 というマークが付けられ、追加すると、(1, 1)、(6, 6)、(13, 13)、(13, 13) の 4 つのペアが存在します。

入力: テスト データの最初の行の正の整数 N (1<=N<=1000) は、数値が N 個あり、N が奇数であることが保証されていることを示し、2 行目にはそれぞれ N 個の自然数があります。そのうち 10^9 未満

出力: 行に整数、新しいボトルの番号を出力します。

例:

  • 入力:
  • 9
  • 121233441
  • 出力: 1

def func(n, data): 
    if 0 <= n <= 1000 and n % 2 == 1 and len(data) == n: 
        for i in data: 
            if 0 < i < (10 ** 9): 
                if data.count(i) % 2 != 0: 
                    return i 
                else: 
                    print("ボトルの番号は 10^9 未満の自然数です") 
    else: 
        print("渡されたパラメータが間違っています") 


res = func( 7, [1, 6, 1, 6, 13, 13, 13]) 
print(res)

63. Python で関数を作成して、文字列内の指定された部分文字列の文字を小さい文字から大きい文字まで出力します。最初の文字の位置は 0 です。

  • 例: myOrder(abejykhsesm',2,5)
  • 出力: ehjky

def my_order(s, start, len): 
    # 最初のスライス
    s = s[start:start + len] 
    # リストへの必須変換
    li = list(s) 
    # ソート
    li.sort() 
    # 文字列への結合
    res = " ".join(li) 
    print("出力結果は次のとおりです: ", res) 


my_order("abcedfgh", 2, 4)

結果は次のとおりです: cdef

64. 入力された整数配列に対して、配列要素の最大値、最大値の個数、最小値、最小値の個数を出力

関数名: max_ and_ min(リスト)

入力パラメータ: リスト整数配列

出力: それぞれ最大値、最大値の数、最小値、最小値の数を表す 4 つの値を持つリスト整数配列

  • 例: max and.min([1,4,21,5,6,1,1]) => [21,1,1,3]
  • マックス_と。min(1]) => [1,1,1,1]

def max_and_min(a): 
    b =sorted(a, reverse=True) 
    max = b[0] 
    max_num = b.count(max) 
    min = b[-1] 
    min_num = b.count(min) 
    return [max, max_num , min, min_num] 


a = [5, 5, 5, 4, 3, 2, 2] 
print(max_and_min(a)) 
# 执行結果:[5, 3, 2, 2]

65. 文字列を右埋めし、len の長さに応じて str から src まで埋めます。

関数名:rpad(src,len,str)

入力パラメータ:: src 元の文字列、len ターゲット文字列の長さ、文字列を埋めるために使用される str

出力: パディングされた文字列

例:

  • rpad ("abcd",10,"12") =>"abcd121212"
  • rpad ("abcd",11,"12") =>"abcd1212121"
  • rpad ("abcd",10,"12") =>"abcd121212"
  • rpad ("abd",12,"0") =>*"bd0000000"
  • rpad ("abcd",12,") =>"abcd

66. ウェブ上で提示される製品の自動テストはどのように実行できますか? あなたの考えと方向性について話してください。

参考:

  • Web 側の自動テストは基本的に手動テスターをシミュレートして機能テストを実行します。
  • 人間の操作を機械の自動実行に置き換えます。
  • Web上で公開されている製品の自動テストにはインターフェース層とインターフェース操作層の2つの方向性があり、インターフェース層の自動化率はインターフェース操作層よりも高いです。
  • また、主に製品の安定した機能に関する自動テストを実施し、主に製品のコア機能のスモークテストと回帰テストに使用されます。
  • システムの最もコアな機能から始めて、状況に応じて徐々に拡張していきます。

67. ユーザーログインシミュレーションの自動テスト実現のアイデアを教えてください

参考:

ユーザーログインに基づく自動テストのアイデア:

  • Python+Selenium フレームワークを使用して、ログイン用のすべてのテスト ケースを作成します。
  • 単体テスト フレームワークを使用してテスト ケースを整理します。
  • Htmltestrunner を使用して HTML バージョンのテスト レポートを作成し、メール モジュールを使用してテスト レポートをプロジェクト チームの関連担当者に送信します。

最後に:【以前の自習教材がお役に立てば幸いです】

必要に応じて、履歴書の修正を手伝ってもらうことができます。また、私が知っている友人が社内への紹介を手伝ってくれることもあります。私の記事を注意深く読んでくれた皆さん、ファンの上昇やフォローの様子、編集者の問題点の発見方法やより良い提案をずっと見守ってくれた皆さんに感謝します。皆さんがコメント エリアに積極的にメッセージを残していただければ幸いです。[兄弟たち、インタビューの質問を投稿するのは簡単ではありません。投稿したい場合は、下の小さなカードをクリックしてください]

おすすめ

転載: blog.csdn.net/xiao1542/article/details/131945920