[骨折した肝臓の皇帝、3か月かけて整理] 2023年のバイトダンスが所有するゴールデンナインとシルバーテンの面接シーズンでは、ソフトウェアテストの面接の質問が何の感謝もなく取り上げられます。(詳細な解答分析付き)

 序文

最近、ByteDance、NetEase、Meituan などのさまざまな企業から面接の質問を受け取りました。時間があるときに整理してみます。おそらく面接中に役立つでしょう。おそらくいくつか提供します。以下の側面から回答します。

  • 個人情報:(仕事/インターンシップの経験、取り組んだプロジェクト、態度と品質)
  • テスト思考
  • 状況的な質問
  • コンピュータネットワーク
  • オペレーティング·システム
  • コード/アルゴリズムに関する質問
  • 言語(Python/Java)
  • Linux
  • データベース

個人情報

1. 会社のテストプロセスは何ですか? /テスト作業はどのように行われますか? /テストを開始するにはどうすればよいですか?

テストプロセスのあらゆる側面に精通しているかどうかを確認してください。ソフトウェア ライフ サイクル、バグ ライフ サイクル、テスト プロセスに関する知識がある。

一般的なプロセスは、要件レビュー会議 -> テスト計画 (テスト範囲、時間ノード、タスク割り当て、テスト戦略、環境、リスク評価) -> テストケース作成 (テスト思考)、内部/プロジェクト チームのレビュー -> テスト実行 (開発)完了、テスト): バグの発見、バグの特定、バグの送信と追跡、複数ラウンドの回帰テスト、テストの終了 -> テスト レポートの編集 -> オンラインで公開、オンラインの問題追跡。

自社に合わせて適切な調整が可能です。

2. どのようなプロジェクトを行ってきましたか?また、何を担当していますか?

3. プロジェクトの各事業の内容は何ですか?

4. 個人的な計画とテストの位置を理解する方法

5. 人生や仕事で最近遭遇した最も困難なことは何ですか?

テスト思考

1. 紙コップのテスト方法は?

インタビュアーに質問してください: このウォーターボトルの容量、材質、サイズ、形状、機能に制限はありますか?

インタビュアー: 制限はありません

私:このウォーターカップがオフィス用の100mlの使い捨ての紙製ウォーターカップだとしましょう。

機能テスト、インターフェイス テスト、ユーザビリティ テスト、互換性テスト、セキュリティ テスト、パフォーマンスのプレッシャーについて考える

機能テスト: 水カップは漏れることなく水を正常に保持できますか? 100mlの境界値?冷水、熱湯、温水を設置しますか? 劣化することはあるのでしょうか?

インターフェイステスト: 外観の色、デザイン、ロゴ、インターフェイスのテキストは正しいか?

使用感テスト:絶縁性、持ちやすさは?カップの縁にバリはありませんか?デザインは人間工学に基づいていますか?

適合性試験:気体/固体/液体? 異なる環境では正常ですか?

安全性テスト: 材料の品質、腐食を防ぐ能力? 衝突を防ぎ、手を切ることはありませんか?細菌を抑制する?

パフォーマンスのプレッシャー: 落ちすぎていませんか? 落下に強いですか?(高さが違う)押し出し(角度が違う)、変形しているでしょうか?

2. 赤い封筒のテスト ケースを送信しますか?

3.WeChatの「いいね!」をテストするにはどうすればよいですか?

4. モーメントに投稿するためのテスト ケースを設計する

5. クーポンを受け取るためのページをどのようにデザインするか?

6. Douyin ビデオ再生ページのテスト ケースを設計しますか?

7。Douyin 検索インターフェイスのテスト ケースを設計しますか?

8. ミネラルウォーターのボトルをテストするにはどうすればよいですか?

9. プロジェクトには、追加、削除、変更などのためのインターフェースがあります。インターフェースのテストはどのように行うのでしょうか?

状況的な質問

1. ビデオのフリーズをトラブルシューティングする方法

2. アプリを開いた後、ページが空白になります。問題のトラブルシューティング方法は?

答え:

  1. まず、ネットワークが正常で、入力された URL アドレスが正しいことを確認してください。
  2. ブラウザーのデバッグ ツールまたは fiddler などのパケット キャプチャ ツールを使用して、コンソールの要求と応答を表示します。
  3. リクエストアドレスやパラメータが正常か、バックグラウンドで返されるステータスコードやレスポンスデータなどが正常か確認する
  4. 一般に、上記の手順の後、問題は基本的に特定できます。たとえば、コンソールが js 例外を報告する場合、それはフロントエンドの問題であり、ステータス 500 が返された場合、それはバックエンドの問題です。サーバーログを同時にチェックして、それを見つけます。

3. WeChat の「いいね!」機能のテスト ケースを設計します。「いいね!」が与えられたのに「いいね!」の数が 1 つ増えなかった場合、どこにエラーが報告されるでしょうか?

回答: URL ポジショニング エラー、コード エラー、切断操作、不良ネットワーク、更新なし、時間制限

4. ネットワークが良好な場合、データ送信中に 404 エラーが発生しますが、何が問題だと思いますか?

一般的に、次のような理由が考えられます。

  1. 要求されたポートでは Web サイトにアクセスできません。
  2. このリクエストは、Web サービス拡張機能のロック ポリシーによってブロックされます。
  3. MIME マッピング ポリシーがこのリクエストをブロックします
  4. Web サイトは更新および改訂されましたが、一部のローカル セクションでは依然として元のモジュールが使用されており、元のモジュールによって呼び出されるファイルは削除または移動されています。
  5. アクセスの追跡に使用されるさまざまなスクリプトまたは CSS ファイルは無効ですが、呼び出しコードはまだ存在します。
  6. ディレクトリを直接削除する
  7. Web ページの URL 生成ルールが変更されました
  8. Web ページファイルの名前変更または移動
  9. インポートリンクのスペルミスなど。
     

5. A が B にメッセージを送信した後、A はメッセージが送信されたことを確認しますが、B はメッセージを受信しません。

6. Web ページの読み込みが遅い原因は何ですか?

7. 開発者との衝突に対処する方法と発生した問題の解決策

8. 開発者がバグであることに同意しない場合はどうすればよいですか?

まず、開発環境と自分のテスト環境が一致しているか確認します(開発者はコードを更新した環境でバグを検証するため、バグが現れないこともありますが、テスト環境ではバグが現れます)。テスト環境で再現できるため、不具合であることが確認された場合には、開発部門とのコミュニケーションを有効に保ちます。

それが低レベルの勧告バグである場合、最初にバグ プラットフォームに記録することができ、最初に通信が予約されます。

より高いバグレベルの問題の場合、対応する要件文書の期待される結果と開発手順の方が説得力があります。バグの害を辛抱強く説明し、そうでない場合は、製品を訪問して確認し、バグであることを確認します。バグがある場合は状況を示し、開発者に再度割り当てます

9. あなたがテストをしていると、製品チームが緊急テストを持ってきてテストしてもらいます。

10. 同僚の進捗が期待を満たしておらず、全体の進捗に影響を与えている場合はどうすればよいですか?

11. リーダーから馴染みのない緊急のイベントを指示された場合はどうすればよいですか?

コンピュータネットワーク

1. OSIモデルの紹介

第 1 層: 物理層、機能: 伝送媒体を使用して通信ホスト間の物理接続を確立、管理、解放し、ビット ストリームの透過的な伝送を実現し、データ アソシエーション層にデータ伝送サービスを提供します。

第 2 層: データリンク層、機能: ビットストリームを提供する物理層に基づいてデータリンク接続を確立し、エラー制御およびフロー制御方法を使用してエラーのない物理回線をエラーのないデータリンクに変える

第3層:ネットワーク層、機能:ルーティングアルゴリズムにより通信サブネットを通るパケットの適切な伝送経路を選択し、フロー制御、輻輳制御、ネットワーク相互接続機能を実現

4 番目の層: トランスポート層、機能: 地理的に異なる場所に分散されたコンピューター上のプロセスに、信頼性の高いエンドツーエンドのリンクとデータ送信サービスを提供します。トランスポート層は、基礎となるデータ通信の詳細を上位層から保護します。

レイヤ 5: セッション層、機能: 2 つのセッション ホスト間の接続の確立、管理、終了の維持、およびデータ交換を担当します。

第 6 層: プレゼンテーション層、機能: 通信システム間のデータ形式の変換、データの暗号化と復号化、データの圧縮と復元を担当します。

レイヤ7:アプリケーション層、機能:連携して動作するアプリケーション間の通信処理制御を実現

2. TCP が大量のシステム リソースを消費するのはなぜですか?

3.TCPとUDPの違い

接続またはコネクションレスに基づく、
システム リソースの要件 (TCP が多く、UDP が少ない)、
UDP プログラム構造がより単純、
ストリーム モードとデータグラム モード、
TCP はデータの正確性を保証、UDP はパケットを失う可能性がある、TCP はデータの順序を保証、UDP は保証しない。
4.TCP はどのようにして信頼性の高い接続を保証しますか?

5. httpセッション永続化機能を実装するにはどうすればよいですか?

6. httpステータスコード?

1XX: 通知。1XX シリーズの応答コードは、HTTP サーバーと通信する場合にのみ使用されます。

2XX: 成功。2XX 一連の応答コードは、操作が成功したことを示します。

3XX リダイレクト。3XX 一連の応答コードは、クライアントが必要なリソースを取得するために追加の作業を行う必要があることを示します。

4XX: クライアントエラー。これらの応答コードは、クライアント側のエラーを示します。認証情報に問題があるか、プレゼンテーション形式または HTTP ライブラリ自体に問題があります。クライアントは自分自身を修正する必要があります。

5XXサーバーエラーです。これらの応答コードはサーバー側のエラーを示します。

7。http の長い接続と短い接続、およびそれぞれが適用されるシナリオは何ですか?

8. 取得と投稿の違いは何ですか?

得る:

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リクエストメソッドで送信できるデータ量には制限がありません。

post リクエストのパラメータは get より安全です (絶対的ではありませんが相対的には) が、post の実行効率は get ほど良くありません。

9. 投稿本文の形式は何ですか?

10. httpプロトコルヘッダー

11. Cookie とセッションとは何ですか? Cookie とセッションを使用する理由は何ですか?

12. DNS プロトコルと役割は?

13. CA 証明書は HTTPS でクライアント側にありますか、それともサーバー側にありますか?

オペレーティング·システム

1. プロセスとスレッドの違いは何ですか?

プロセスはリソース割り当ての最小単位であり、スレッドはプログラム実行の最小単位です。
プロセスには独自の独立したアドレス空間があります。プロセスが開始されるたびに、システムはプロセスにアドレス空間を割り当て、コード セグメント、スタック セグメント、およびデータ セグメントを維持するためのデータ テーブルを確立します。この操作は非常に高価です。スレッドはプロセス内でデータを共有し、同じアドレス空間を使用するため、CPUによるスレッドの切り替えコストはプロセスに比べてはるかに小さく、同時にスレッドを作成するコストもはるかに小さくなります。プロセスの。
スレッド間の通信がより便利に 同一プロセス内のスレッドはグローバル変数や静的変数などのデータを共有しますが、プロセス間の通信は通信(IPC)で行う必要があります。ただし、同期と相互排他をどのように処理するかが、マルチスレッド プログラムを作成する際の難しさです。
しかし、マルチプロセス プログラムはより堅牢です。マルチスレッド プログラムの 1 つのスレッドが停止する限り、プロセス全体が停止します。プロセスには独自の独立したアドレス空間があるため、1 つのプロセスが停止しても、他のプロセスには影響しません。

2. マルチスレッド、マルチプロセス、およびアプリケーションのシナリオ?

3. プロセス通信方式は?

4. メモリリーク?

5. 積み重ねて?

スタック領域 (スタック) - コンパイラによって自動的に割り当ておよび解放され、関数のパラメータ値、ローカル変数値などが格納されます。データ構造内のスタックのように動作します。
ヒープ領域(ヒープ) - 通常、プログラマによって確保および解放されますが、プログラマが解放しない場合、プログラム終了時にOSによって再利用される場合があります。

6. ヒープメモリとスタックメモリ?

7. デッドロックとデッドロックの条件とは何ですか?

8. デッドロックの原因は何ですか?

それは次の 2 点に集約されます。

a. 競合するリソース

システム内のリソースは、次の 2 つのカテゴリに分類できます。

剥奪可能なリソースとは、プロセスがそのようなリソースを取得した後、そのリソースが他のプロセスまたはシステムによって剥奪される可能性があることを意味します。CPU とメイン メモリは両方とも剥奪可能なリソースです。

もう 1 つのタイプのリソースは、譲渡不可能なリソースです。システムがこのタイプのリソースをプロセスに割り当てると、強制的に取り戻すことはできません。プロセスが使い果たされた後でのみ解放できます (テープ ドライブ、プリンタなど)。 。

デッドロックにおける競合リソースの 1 つは、譲渡できないリソースの競合を指します (たとえば、プロセス P1 が使用できるプリンターはシステム内に 1 台だけです。P1 がプリンターを占有していると仮定すると、P2 がプリンターに要求し続けると、
ロックを競合する別のタイプのリソースは、一時リソースの競合を指します (一時リソースには、ハードウェア割り込み、信号、メッセージ、バッファ内のメッセージなどが含まれます)。通常、メッセージ通信シーケンスが実行されない場合正しく実行するとデッドロックが発生します。

b. プロセス間の進行シーケンスが不正です。

P1 がリソース R1 を保持し、P2 がリソース R2 を保持する場合、これら 2 つのプロセスが先に進むとデッドロックが発生する可能性があるため、システムは危険な状態になります。

たとえば、P1 が P1: 要求 (R2) に実行されると、R2 が P2 によって占有されているためブロックされます。P2 が P2: 要求 (R1) に実行される場合、R1 が P1 によって占有されているため、同様にブロックされます。したがってプロセスが発生します。

9. デッドロックを防ぐ方法!デッドロックを回避するには、デッドロックの発生を確認しますか?

リソースの 1 回限りの割り当て: それ以上リクエストが発生しないように、すべてのリソースを一度に割り当てます: (リクエスト条件を破棄します)

1 つのリソースが割り当てられない限り、他のリソースはこのプロセスに割り当てられません: (破棄の条件を維持してください)

剥奪可能なリソース: つまり、プロセスが一部のリソースを取得したが、他のリソースを取得できない場合、占有されていたリソースは解放されます (剥奪不可能な状態が解除されます)。

リソースの規則的な割り当て方法:システムはリソースの種類ごとに番号を割り当て、各プロセスは番号の小さい順にリソースを要求します。解放の場合はその逆になります(ループ待ち状態を破壊します)。

コードに関する質問、アルゴリズムに関する質問

1. デコレータでデコレータの例を書きますか?

2. 配列内で半分以上出現する数値を検索する

3.ハッシュテーブルスペースの複雑さ

4. アルゴリズムの質問: 文字列を指定して、繰り返されるすべての部分文字列を見つけます。

5. アルゴリズムの質問: ツリーの深さのトラバーサル: while ループ: スタック、最初に右のサブツリー ノードに入り、次に左のサブツリー ノードに入ります。

6. アルゴリズムの質問: 与えられた文字列から回文文字列を見つけて、アルゴリズムのユースケースを設計します。

7。アルゴリズムの質問: バイナリ ツリーの事前順序走査

Python/Java の基本

  1. オブジェクト指向言語にはどのような特徴があるのでしょうか?
  2. 深いコピーと浅いコピー?

データ型は 2 つの基本型と参照型に分類されます

  1. 基本型: Number、String、Boolean などの基本型。
  2. 参照タイプ: オブジェクトと配列

浅いコピーでは、オブジェクトの参照アドレスのみがコピーされます。2 つのオブジェクトは同じメモリ アドレスを指しているため、いずれかの値が変更されると、もう一方の値もそれに応じて変更されます。これは浅いコピーです (例: assign())

ディープ コピーとは、オブジェクトと値をコピーすることです。2 つのオブジェクトのいずれかの値が変更されても、もう一方の値は変更されません。これがディープ コピーです。

  1. Pythonのプリミティブとリストの違い

a=[] これはリストです

b=() これはタプルです

違い: リストは変更できますが、タプルは変更できません。たとえば、append() を使用してリストに要素を追加できます。タプルは変更できないため、要素の追加に問題はありません。

類似点: リストとタプルはどちらも一連のオブジェクトを含むコンテナであり、両方とも任意の型の要素やシーケンスさえも含めることができます。

  1. Python で何を再利用するか?
  2. Pythonでどのようなライブラリ関数を使用しましたか?
  3. セレンはどの程度使用されていますか?
  4. Pythonデコレータ、関数、使い方
  5. Java: ポリモーフィズムと、インターフェイス クラスと抽象クラスの違いについて話しましょう。
  6. Java/Python のガベージ コレクション メカニズム?
  7. Java と Python でマルチスレッドとマルチプロセスを作成するにはどうすればよいですか?

Linux

1. 共通コマンド

2. 現在のフォルダー内のファイルを印刷します ls -al a すべてのファイル l 詳細

3.CPUやその他の状態を問い合わせるコマンド

回答: free コマンドは、メモリ使用量を簡単に表示する方法であり、/proc/meminfo によって収集された情報の概要を示します。

top コマンドは、実行中のプログラムのリソース使用量の統計をリアルタイムで提供します。

atopコマンドは、端末環境監視コマンドです。さまざまなシステム リソース (CPU、メモリ、ネットワーク、I/O、カーネル) の包括的なビューが表示され、高負荷条件下で色分けされます。

htop コマンドは、各プロセスのリアルタイムのメモリ使用量を表示します。すべてのプロセスの常駐メモリ サイズ、プログラム メモリの合計サイズ、共有ライブラリのサイズなどに関するレポートを提供します。リストは水平方向および垂直方向にスクロールできます。

psコマンドは各プロセスのメモリ使用量をリアルタイムに表示できます。

smem コマンドを使用すると、/proc 情報に基づいてさまざまなプロセスおよびユーザーのメモリ使用量をカウントできます。メモリ使用量分析はグラフとしてエクスポートできます (棒グラフや円グラフなど、グラフィカル インターフェイス ウィンドウでのみ利用可能)。

vmstat コマンドは、CPU、メモリ、I/O などをカバーするリアルタイム統計と平均統計を表示します。たとえば、メモリ ステータスには物理メモリが表示されるだけでなく、仮想メモリもカウントされます。

nmon は、ncurses に基づくシステム ベンチマーク ツールで、CPU、メモリ、I/O、ファイル システム、およびネットワーク リソースの対話モードを監視できます。メモリ使用量については、メモリの合計/残量、スワップ領域などの情報をリアルタイムに表示できます。
 

データベース

  1. MySQL ストレージ エンジンはどのように実装されていますか?
  2. 取引の概念とその特徴は?

コンセプト:

1. データベース トランザクション: データベース トランザクションは通常、データベースの読み取りまたは書き込みを行う一連の操作を指します。

その存在には次の 2 つの目的が含まれます。

  1. データベース操作が障害から正常な状態に回復する方法を提供すると同時に、異常な状態でもデータベースの整合性を維持する方法を提供します。
  2. 複数のアプリケーションがデータベースに同時にアクセスする場合、これらのアプリケーション間に分離方法を提供して、互いの操作が相互に干渉するのを防ぐことができます。
  3. マルチテーブルクエリ、通常のSQL、ストアドプロシージャの違いは何ですか?
  4. B ツリーまたは B+ ツリーをインデックスの最下層および最下層として使用する必要があるのはなぜですか?
  5. B ツリーと B+ ツリーの違いは何ですか?
  6. データベースについてはご存知ですか。教師が指導するすべての生徒の名前をクエリするためのテーブルを生徒のコース選択システムに作成する方法。
  7. 学年の各クラスの最年少の生徒の名前を教えてください。
  8. where と have はどう違いますか?
     

答え:

さまざまな場所で使用されています

where は、select、update、delete、値への挿入 (select * from table where ...) ステートメントで使用できます。have は select ステートメントでのみ使用できます

実行順序が違う

where の検索条件は、グループ化するステートメントを実行する前に適用されます。

グループ化条件の後に、have の検索条件が実行されます。

つまり、where と had を一緒に使用すると、where が最初に実行され、have が後で実行されます。

条項が違う

where 句内の条件式 has の後に続けることはできますが、have 句内の一部の式の後に where を続けることはできません。having 句では集計関数 (sum、count、avg、max、min) を使用できますが、where 句では使用できません。 t.

要約する

1. WHERE 句は、FROM 句で指定された操作によって生成された行をフィルタリングするために使用されます。
2. GROUP BY 句は、WHERE 句の出力をグループ化するために使用されます。
3.HAVING 句は、グループ化された結果から行をフィルタリングするために使用されます。

  1. 内部結合と外部結合?

内部結合は条件のみのクロス結合で、条件を満たすレコードは一定の条件に基づいて除外され、条件を満たさないレコードは除外されます。

条件のレコードは結果セットには表示されません。つまり、内部結合は一致する行のみを接続します。

外部結合の結果セットには、結合条件を満たす行だけでなく、左側のテーブル、右側のテーブル、またはその両方も含まれます。

テーブル内のすべてのデータ行は、順に左外部結合、右外部結合、完全外部結合と呼ばれます。

左外部結合 (左結合とも呼ばれます) では、左側のテーブルがメイン テーブルとなり、左側のテーブル内のすべてのレコードが結果セットに表示されます。

右側のテーブルに一致しないレコードについても、表示する必要があります。右の対応するフィールド値は で終わります。

埋めるには NULL。右外部結合 (右結合とも呼ばれます)。右側のテーブルがメイン テーブルであり、右側のテーブル内のすべてのレコードが表示されます。

結果セット内。左結合と右結合は交換可能であり、MySQL は現在完全外部結合をサポートしていません。

  1. データベースフィールドの重複排除?
  2. 各コースのスコアが 80 点を超える学生の名前をクエリする SQL ステートメントは?

MIN(スコア)>= 80を持つ主題ごとに学生グループから名前を選択
 

インタビューメモの完全版をまとめました。記事が長いため、個別には紹介しません。ゴールド ナインとシルバー 10 の準備が必要な方は、公開アカウント「プログラマー タイガー バーム」をフォローしてください。無料で入手して、大手企業の最新の面接質問をブラッシュアップしてください。皆さんのお役に立てば幸いです。ちなみに、面接の質問を丸暗記しないでください。理解して、理解して、最も重要なことを理解してください。もの!

リソースノートの共有

初心者、または転職する必要があり、ソフトウェア テストを開発したい場合は、まず一連の学習教材を受け取り、自分で勉強することができます。共有する無料リソースの完全なセットが必要な場合は、次のことができます。

いいねしたら(もっと多くの人に見てもらって一緒に学んでほしい)、公開アカウント「プログラマー タイガーバーム」をフォローしてゲットしましょう!記事内には学習ドキュメントも充実!

 

おすすめ

転載: blog.csdn.net/crhnb/article/details/131858787