秋採用面接に向けたテスト開発3

何年も努力して振り返ってみると、ほとんどすべてが長い挫折と苦しみでした。ほとんどの人の人生において、順風満帆な時期はたまにしかなく、挫折、耐えられない、不安、混乱が主なテーマです。私たちは選ばなかった舞台に立ち、選ばなかった脚本を演じる。立ち止まるな!

目次

1. Redis と mySQL の違いについて教えてください。

2. put/get/post の違いについて教えてください。

3. Redis キャッシュの故障、キャッシュの侵入、キャッシュ雪崩?

4. HTTP 共通ステータス コード?

5. メッセージキューの使用シナリオは何ですか?

6. 友達のサークルでのいいね機能のテストケースは何ですか?

7. シングルトン モードはどのように実装されますか?

8. DNS 解決のプロセスは何ですか?

9. リンクされたリストの交差を判断するにはどうすればよいですか?

10. テストプロセスは何ですか?

11. テスト方法は?

12. テストケースの設計にお金を払いますか?

13. 設計テストケースをログに記録しますか?

14. バグがフロントエンドかバックエンドかを判断するにはどうすればよいですか?

15. Python の基本的なデータ型は何ですか?

16. インターフェーステストとは何ですか?

17. 郵便配達員のリクエスト方法にはどのようなものがありますか?

18. get と post の違いは何ですか?

19. 自動テストフレームワーク?

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

21. json データについて理解していますか?また、それを表示するためにどのようなツールを使用しましたか?


1. Redis と mySQL の違いについて教えてください。

mysql はリレーショナル データベースであり、主に永続データを保存するために使用され、データはハードディスクに保存され、読み取り速度は比較的遅いです。
Redis は NOSQL (つまり、非リレーショナル データベース)であり、データをキャッシュに保存します。キャッシュの読み取りは高速であり、操作効率が大幅に向上しますが、保存時間は限られています。

Mysql はデータをハードディスクに永続的に保存するために使用されます。強力ですが遅いです。ディスクに基づいた読み取りおよび書き込み速度は Redis ほど速くありませんが、スペース容量による制限がなく、コスト効率が高くなります。

Redis は頻繁に使用するデータをキャッシュに保存するために使用されます 読み取り速度が速い メモリベースなので、読み取りおよび書き込み速度が高速です 永続化も可能ですが、メモリ容量は限られています データ量が上限を超えると、メモリ空間、メモリを拡張する必要があるが、RAM が高価

Mysql と redis は、要件が異なるため、通常は一緒に使用されます。
高いパフォーマンスが必要な場合は Redis が使用され、高いパフォーマンスが必要でない場合は MySQL が使用されます。保存されたデータは MySQL と Redis の間で同期されます。


2. put/get/post の違いについて教えてください。

最も直感的な違いは、Getリクエストにはパラメータが含まれていますurlが、パラメータPostrequest body渡すリクエストは冪等
Getリクエストであるということです。一般に、Getリクエストはサーバー リソースに影響を与えないシナリオ (Web ページ リソースのリクエストなど) で使用されます。Post冪等リクエスト: このリクエストは通常​​、サーバー リソース (登録ユーザーなど) に影響を与えるシナリオで使用されます。

最も直感的な違いは、Getリクエストには のパラメータが含まれていますurlが、パラメータを渡すPostことによってrequest body

  • Putサーバーにデータを送信してデータの内容を変更するというリクエストですが、データの種類などは増えません、つまりどれだけ操作しても結果は変わりません。データの更新とみなすことができます

  • Postリクエスト中にサーバーにデータを送信した後、リクエストはデータのタイプとその他のリソースを変更し、新しいコンテンツを作成します

3. Redis キャッシュの故障、キャッシュの侵入、キャッシュ雪崩?

① キャッシュの侵入:全く存在しないキーに対するリクエスト、全く存在しないリソースに対するリクエスト(DB自体が存在しない、Redisが存在しない)が大量に発生する

解決:

ブルームフィルターを使用してnull値をキャッシュします 
(ブルームフィルターとしてBitMapを使用し、リクエストが来たときに現在アクセス可能なすべてのリソースを単純なマッピング関係(ハッシュ計算)を通じてブルームフィルターに入れますブルームフィルターを使用する場合、最初にブルームを判断します)
② キャッシュ雪崩: Redis 内の多数のキーがまとめて期限切れになる

③ キャッシュの内訳:redis のホットスポット キーの有効期限が切れる(多数のユーザーがホットスポット キーにアクセスするが、ホットスポット キーの有効期限が切れる)

キャッシュアバランシェおよびキャッシュペネトレーションソリューション:

ホットワードの事前設定、キーの有効期間の調整、
リアルタイムの調整、人気のあるデータの監視、キーの有効期限のリアルタイムの調整 ロック
機構の使用(ホットキーの有効期限が切れたら、ロック機構を使用して多数のリクエストが DB で直接開かれないようにします)

4. HTTP 共通ステータス コード?

一般的な HTTP ステータス コードは次のとおりです。

  • 200 - リクエストは成功しました
  • 301 - リソース (Web ページなど) は別の URL に完全に移動されました
  • 404 - 要求されたリソース (ページなど) が存在しません
  • 500内部サーバーエラー

5. メッセージキューの使用シナリオは何ですか?

非同期処理、アプリケーションの切り離し、トラフィックの切断、メッセージ通信の 4 つのシナリオ。

アプリケーションの分離: 分散システムでは、異なるアプリケーションが相互に通信する必要がありますが、直接の依存関係により過剰なコード結合が発生します。MQ をミドルウェアとして使用すると、分離が可能になります。各アプリケーションは、他のアプリケーションの具体的な実装の詳細を知らなくても、MQ にメッセージを送信するだけで済みます。

トラフィック販売のピーク: MQ をミドルウェアとして使用して、ピーク期間中のリクエストをキューにキャッシュし、システム負荷が減少した後にリクエストを 1 つずつ処理します。これにより、システムのクラッシュや応答の遅さが回避されます。

非同期呼び出し: アプリケーションはメッセージの処理結果を待たずにメッセージを MQ に送信することで、非同期呼び出しを実現します。処理結果はコールバック関数などを通じてアプリケーションに返すことができます。

ピークシェービングとバレーフィリング: MQ をキャッシュとして使用し、リクエストをキューに書き込み、一定のレートで消費することで、突然のリクエストによって引き起こされるシステムへの過度の圧力を回避します。システム負荷が低い場合、メッセージの消費を加速して「谷を埋める」ことができ、ピーク期間の前にすべてのメッセージが確実に消費されるようにすることができます。
 

6. 友達のサークルでのいいね機能のテストケースは何ですか?

機能テスト:
正常: 1. いいねとキャンセルが正常に使用されるか 2. WeChat の名前がいいねの後の下部に正常に表示されるかどうか 3. いいねのキャンセル後に表示された名前が
消えるかどうか 4. いいねの後の名前の表示順序が正常かどうかいいねは時系列で表示されます
5. 複数のいいねをサポートするかどうか 6. 友達のサークルによってサポートされるいいねの数
7. いいねをした後にいいねをしたユーザーにリマインドするかどうか 8. 友達のサークルが追加されたときにユーザーに通知されますかユーザーが「いいね!」したものは
、WeChat の友達からも「いいね!」されます9。「いいね」をした後、そのグループの友達が表示されているか、他の友達が非表示になっているかがわかります。 11.
同じ友達サークルの表示順序
が異常です: 1. 切断中 2. 携帯電話/コンピューターのバッテリー残量低下
3. サーバーの異常 4. オフライン 5. 電話の着信、テキスト メッセージ6.
友達サークルにいいね!削除されたばかりですいいね!3. 多数のユーザーが同時に「いいね!」を与える場合、インターフェイスの応答時間、許容可能な最大 qps 4. 多数のユーザーが同時に「いいね!」を与える場合、インターフェイスは、その時点で「いいね!」を付与します。いいね機能は正常です5. いいね後、友達メッセージ 更新速度セキュリティテスト1. いいね後、グループ友達が表示されているか確認できます2. ログインしていない状態でいいね情報を確認できます3. 内容4.ウイルス付きメッセージへのいいね! 使いやすさテスト1.タイプセット、ボタンは正常、タイプミスなし2. インターフェイスは美しい3. いいねしたユーザーのアバターは正常に表示される4. 操作方法お気に入りのユーザーのアバターが最大で多数表示されます




















5. いいねの列には何人のユーザーのアバターが表示され、最大何行まで表示されるか
6. 操作がシンプルで分かりやすい

互換性
1. 異なるプラットフォーム: Windows、Mac
2. 異なるシステム: Windows7、Windows10
3. 異なるモバイルデバイス: Iphone.Andriod
4. 異なる地域
5. 異なるバージョン
 


7. シングルトン モードはどのように実装されますか?

シングルトンモードはハングリーマンモードとレイジーマンモードに分かれており、各クラスにインスタンスは1つだけ作成され、このインスタンスにアクセスするためのグローバルアクセスポイントが提供されます。ハングリーマン モデルはスレッド セーフですが、レイジー マン モデルはスレッド セーフではありません。スレッド セーフを確保するには二重検出ロックを使用する必要があります。具体的な Java コードの実装は次のとおりです。

/**
 * 单例模式:确保每个类只有一个实例,并提供全局访问点来访问这个实例
 */
//饿汉模式:线程安全
class Singleton1 {
    private static Singleton1 instance = new Singleton1() ;
    public Singleton1 getInstance(){
        return instance ;
    }
}
 
//懒汉模式:线程不安全,需要通过双重检查锁定机制控制
class Singleton2{
    private static Singleton2 instance2 = null ;
    public Singleton2 getInstance2(){
        if(instance2 == null){
            instance2 = new Singleton2() ;
        }
        return instance2 ;
    }
}
//使用双重检查锁的方式保重线程安全
class Singleton3{
    //使用双重检查进行初始化的实例必须使volatile关键字修饰
    private volatile static Singleton3 instance3 = null ;
    public Singleton3 getInstance3(){
        if(instance3 == null){
            synchronized (Singleton3.class){
                if(instance3 == null){
                    instance3 = new Singleton3();
                }
            }
        }
        return instance3 ;
    }
}
public class Main {
    public static void main(String[] args) {
        Singleton1 singleton1 = new Singleton1() ;
        Singleton1 singleton2 = new Singleton1() ;
        Singleton2 singleton21 = new Singleton2() ;
        Singleton2 singleton22 = new Singleton2() ;
        Singleton1 instance1 = singleton1.getInstance();
        Singleton1 instance2 = singleton2.getInstance();
        Singleton2 instance21 = singleton21.getInstance2();
        Singleton2 instance22 = singleton22.getInstance2();
        System.out.println(instance1 == instance2);
        System.out.println(instance21 == instance22);
    }
}


8. DNS 解決のプロセスは何ですか?

クライアントはまず、www.server.com の IP を尋ねる DNS リクエストを送信し、それをローカル DNS サーバー (つまり、クライアントの TCP/IP 設定に入力された DNS サーバー アドレス) に送信します。
ローカル ドメイン ネーム サーバーは、クライアントからの要求を受信した後、キャッシュ内のテーブルで www.server.com を見つけることができた場合、IP アドレスを直接返します。そうでない場合、ローカル DNS はルート ドメイン ネーム サーバーに「社長、www.server.com の IP アドレスを教えていただけますか?」と尋ねます。ルート ドメイン ネーム サーバーは最高レベルであり、ドメイン名には直接使用されません。解像度は異なりますが、道路を指定することもできます。
ルート DNS がローカル DNS からリクエストを受信すると、サフィックスが .com であることがわかり、「ドメイン名 www.server.com は .com エリアによって管理されています」と表示され、アドレスを提供します。 .com のトップレベル ドメイン ネーム サーバーにアクセスして、問い合わせることができます。ローカル
DNS はトップレベル ドメイン ネーム サーバーのアドレスを受信すると、要求を開始して「2 番目の子、www.server.com の IP アドレスを教えてもらえますか?」と尋ねます。"
トップレベルのドメイン ネーム サーバーはこう言いました。「www.server.com エリアを担当する権威ある DNS サーバーのアドレスを教えます。あなたはそれを尋ねることができるはずです。」 その後、ローカル DNS は
、権威DNSサーバー:「3番目の子、www.server.comに対応するIPは何ですか?」「server.com の権威 DNS サーバー。ドメイン名解決結果の元のソースです。なぜ権威と呼ばれるのですか? 私がドメイン名のマスターです。権威 DNS サーバーのクエリの後、対応する IP アドレス XXXX
をローカル DNS は、
IP アドレスをクライアントに返し、クライアントはターゲットとの接続を確立します。
 


9. リンクされたリストの交差を判断するにはどうすればよいですか?

まず、2 つのリンク リストの長さ lenListA と lenListB をそれぞれ取得し、次に高速および低速ポインタ メソッドを使用して、長いリンク リストを最初に N ステップ実行します (N=(lenListA-lenListB) 絶対値)。次に、2 つのリンク リストのノードが同じになるまで、2 つのリンク リストが同時に進み、このノードが 2 つのリンク リストが交差する開始ノードになります。


10. テストプロセスは何ですか?

プロジェクト承認(プロジェクトの決定) ——> 製品仕様書(PRD) ——> 要件文書(要求担当者) ——> 要件レビュー(開発、テスター、マネージャー) ——> 開発担当者(詳細設計概要設計 ——> コーディング ——> 自己テスト—>テスト)—>テスターの実施(テスト計画—>テストケースの作成—>テストケースのレビュー)—>スモークテスト(メインプロセスが成功するかどうかのテスト)—>機能テスト—>ZenTaoがバグを記録—>回帰テスト(以前のバージョンの問題が解決されたかどうか、また新たな問題が発生していないかを確認します)——> 受け入れテスト(顧客、マネージャー、要件、開発、テスター)——> オンライン


11. テスト方法は?

1. 内部構造を気にするかどうかという観点から

(1) ホワイトボックステスト:構造テストやロジック駆動テストとも呼ばれ、プログラムの内部論理構造やコーディング構造に従ってテストデータを設計し、テストを完了するテスト手法です。

(2) ブラックボックステスト:データ駆動型テストとも呼ばれ、テスト対象を目に見えないブラックボックスとみなし、プログラムの内部構造や処理プロセスを考慮せず、プログラムの機能の要求仕様のみを考慮します。テストケースと推定されたテスト結果の正しさを判断するためのテストは、ソフトウェアやプログラムを使用する観点から、入力データと出力データの対応関係から開始して行われるテストです。

(3) グレーボックステスト:「ブラックボックス」テストと「ホワイトボックス」テストを組み合わせた総合的なテスト手法で、プログラム実行時の外部性能をもとに、内部の論理構造と組み合わせて設計します。ユースケースとプログラムの実行 パスの実行情報と外部ユーザー インターフェイスの結果を収集するテスト手法。

2. コードが実行されたかどうかで判断する

(1) 静的テスト:プログラム自体を実行せずに、ソースプログラムの構文、構造、処理、インターフェースなどを解析またはチェックすることにより、プログラムの正当性を確認することを指します。

(2) 動的テスト:テスト対象のプログラムを実行して、実行結果と期待される結果との差異を確認し、実行効率、正確性、堅牢性などの性能指標を分析することを指します。

3. 開発プロセスレベルの視点から

(1) 単体テスト: モジュール テストとも呼ばれ、ソフトウェア設計の最小単位であるプログラム モジュールまたは機能モジュールが正しいかどうかをテストするテストです。その目的は、プログラムの各モジュールにさまざまなエラーがないか、機能が正しく実現できるか、性能やインターフェイスの要件が満たされているかを確認することです。

(2) 結合テスト: アセンブリテストまたは組み合わせテストとも呼ばれ、単体テストを多段階に拡張したもので、単体テストをベースにした順序立てたテストです。ソフトウェアユニット間のインターフェース関係をテストし、テストを通じて各ソフトウェアユニットのインターフェース間に存在する問題を発見し、最終的にテストされたユニットを設計要件を満たすソフトウェアに組み立てることを目的としています。

(3) システムテスト:ソフトウェアとハ​​ードウェアを統合したシステムが要件を満たしているかどうかを判断するためのテスト活動であり、機器、一部のサポートソフトウェア、人材、データ、その他のシステム要素を組み合わせて、一連の組み立てテストと確認を行います。テストは、実際の動作環境のコンピュータ システム上で実行されます。

4. 実行プロセスに人手介入が必要かどうかの観点から

(1) 手動テスト: テスト概要に記載されたテスト手順と方法に従って、テスト対象ソフトウェアの要件をカバーするために、事前に作成されたテストケースに従って、テスト担当者が 1 つずつ手動で入力して実行します。テスト (テスト データの入力、テスト結果の記録など) を実行し、テスト結果を観察して、テスト対象のプログラムに問題があるかどうか、または実行中に問題が発生するかどうかを確認します。これは比較的原始的なものです。しかし必要なステップ。

(2) 自動テスト: 実際には、通常、自動テスト ツールを使用して手動テストの手順をシミュレートし、プログラミング言語で記述されたプロセスを実行することによって、大量の反復テスト作業がコンピューターに引き渡されます (自動テストとは、自動テストのプロセスでは、テストのプロセス全体が手動介入なしでプログラムによって自動的に完了すること、半自動テストとは、自動テストのプロセスでテスト ケースを手動で入力したり、テスト パスを選択したりする必要があることを意味します。その後、自動テスト プログラムは、自動テストを完了するために手動で指定された要件に従います)

5. 試験実施機関の視点から

(1) 開発テスト:開発者が行うテスト

(2) ユーザーテスト:ユーザー側で実施するテスト

(3) 第三者によるテスト:開発者やユーザーによるテストとは異なり、テスト作業の客観性を確保するために専門の第三者によってテストが行​​われます。

6. テスト環境から

(1) アルファテスト:ユーザーが開発環境で実施するテスト、または社内のユーザーが模擬実運用環境で実施するテスト

(2) ベータ テスト: ユーザー企業組織のあらゆる側面の一般的なエンド ユーザーが日常業務で実際にベータ版を使用し、ユーザーに報告を要求します。

7. 他の種類のテスト

(1)回帰テスト(回帰テスト)とは、ソフトウェアの新しいバージョンをテストする際に、前のバージョンのテストを繰り返すユースケースを指します。

(2)スモークテスト(スモークテスト)とは、新しいバージョンの大規模なテストを行う前に、ソフトウェアの基本的な機能が実現されているか、テスト可能であるかを検証することを指します。

(3) ランダム テストとは、テストのすべての入力データがランダムに生成されることを意味し、その目的はユーザーの実際の操作をシミュレートし、いくつかの限界誤差を見つけることです。


12. テストケースの設計にお金を払いますか?

支払いプロセス:
1: 通常通りにデータ リチャージ リクエストを開始します。チェック ポイント:
1) ユーザーが送信した情報にはキー値があります
。2) 加盟店システムのローカル データはユーザーの注文情報のコピーを保持し、それに基づいています。各注文情報に基づいて支払い情報を生成します (そしてローカルに保存します)
3) サードパーティの支払いが成功し、サードパーティは支払い注文情報を保存しました
4) リチャージが成功し、それに応じてユーザーのトラフィック残高が増加しました

異常な使用例
1. ユーザーが送信したデータを変更します:
1) 製品 ID と値が等しくない ----> チェックポイント: データとキーを改ざんし、マーチャント システムをチェックしてエラーを報告します: キーの値が間違っているか、ユーザーデータが間違っています。 
2) データリチャージをキャンセルする  
3) データリチャージを再度リクエストする

2. 加盟店システムとサードパーティの間:
1) キーが間違っています - サードパーティはエラーを報告し、キーを受け取りません
2) 加盟店システムに存在しない注文/支払い注文を送信します -> サードパーティ当事者はここでリクエストを渡すことはできません
3) 改ざん ユーザーが支払った金額 --> 第三者もチェックする必要があります

3. 第三者 - ユーザー間:
1) 支払いパスワードの間違い/残高不足 
2) 支払いのキャンセル 
3) 重複支払い [調整 ---> 返金処理]


返金手続き

通常の使用例:
1. ユーザーが返金を開始します ---> ユーザーの注文番号と支払い注文番号が存在する必要があります。---チェックポイント: 加盟店システム/第三者検査データに問題はなく、返金は可能です---> 取引ステータスが返金に変更されました

異常な使用例:
1: 理由なく返金を開始します: 存在しない注文番号または支払い注文番号を送信します ---> 注文番号が存在しません/支払い注文番号が存在しません 2: 情報が一致せず
、返金を開始する: 注文番号と支払い注文番号を送信してください データが一致しません ---> 注文番号/支払い注文番号が間違っています
3: 返金が実際の金額よりも大きい: 送信された返金金額が実際の支払い注文の金額よりも大きい--> 販売者システムがエラーを報告します
4: 販売者システムがここに送信しました リクエスト: 返金金額が実際の支払額より大きい --> 第三者はエラーを報告する必要があります


13. 設計テストケースをログに記録しますか?

機能、セキュリティ、パフォーマンス、互換性、中断など。


14. バグがフロントエンドかバックエンドかを判断するにはどうすればよいですか?

判定方法:

1. パケット キャプチャ ツールは、フロントエンドの表示が間違っているか、バックエンドからフロントエンドに返されたデータが間違っているかを確認するためによく使用されます。通常、F12、fiddler、httpwatch などのブラウザー独自のツールが使用されます。大丈夫だ。主にリクエストインターフェース、パラメータの受け渡し、レスポンスの3つの側面から分析します。

リクエストインターフェイスの URL が正しいかどうかを確認してください。間違っている場合は、フロントエンドが間違って渡したことを意味します。同様に、渡されたパラメータが間違っている場合も、フロントエンドが原因です。URL が間違っている場合は、フロントエンドが間違って渡したことを意味します。パラメーターは正しくても、応答が間違っている場合、それはバックエンドです。バックエンドコードでエラーが発生した場合、ログ、データベースに対応するデータ、キャッシュを確認することで、どこでエラーが発生したかを具体的に特定できるほか、一般的なレスポンスステータスコードの意味を覚えておくと判断にも役立ちます。バグ。

2. ログを確認する

バグが発生した場合は、サーバー上のログを確認してください。ログに出力がない場合は、基本的に関数がバックエンドと対話していないと考えられ、バックエンドのバグではありません。出力がある場合は、さらなる分析のために関連するエラー ログ情報があるかどうかを確認してください。

3. データベースを確認する

インターフェイスの相互呼び出しの場合、多くのバグが発生します。どのインターフェイスに問題があるのか​​は、データベース内のデータをクエリして比較することで判断できます(例:モジュールAにデータを追加したが、モジュールBには表示されません)。このとき、モジュールAのデータをクエリすることで確認できます。モジュール A がデータを挿入しないデータベース、またはモジュール B がクエリされないデータベース。また、インターフェイスがフロントエンドで開発されたかバックエンドで開発されたかが分かれば、誰がバグを修正すべきかがわかります。

4. 経験上の判断

普段の経験が豊富なので、フロントエンドとバックエンドのコードの機能実現や相互作用についての理解が深まり、後から考えることができるようになり、自然とレベルアップしていきます。大切なのは姿勢と行動です。
 


15. Python の基本的なデータ型は何ですか?

Python には 8 つの主要なデータ型があります: 数値 (数値)、文字列 (文字列)、リスト (リスト)、タプル (タプル)、辞書 (辞書)、セット (セット)、ブール値 (ブール値)、なし (空) 値) 。


16. インターフェーステストとは何ですか?

インターフェーステスト:システムコンポーネント間のインターフェースをテストするテスト方法です
インターフェーステストの焦点:データの交換、データ伝送の正確性、インターフェース間の論理的な依存関係のチェック
インターフェーステストの意義:早期に実施、ソフトウェア開発において、並列テストを同時に実現し、ページ層テストの詳細な問題を軽減し、開発コストを削減し、プロジェクト全体のテストサイクルを短縮します。ページの制限を取り除き、より包括的なテストを実施し、より低いレベルのテストを発見します。レベルの問題。


17. 郵便配達員のリクエスト方法にはどのようなものがありますか?

HTTP リクエスト メソッド: HTTP 1.0 では、GET / POST / HEAD の 3 つのリクエスト メソッドが定義されています。 HTTP 1.1 では、OPTIONS / PUT / DELETE / TRACE / CONNECT の 5 つのリクエスト メソッドが追加されています。一般的に使用される GET および POST の 2 つのリクエスト メソッド。


18. get と post の違いは何ですか?

POST と GET はどちらも HTTP リクエストの基本メソッドです。最も直感的な違いは、GET では URL にパラメータが含まれるのに対し、POST ではリクエスト本文を通じてパラメータが渡されることです。

1) ブラウザが更新またはロールバックする場合、GET リクエストは無害です。POST の場合、データは再送信されます。

2) GET はキャッシュ内に存在できます。POSTが機能しません。

3) GET のエンコード形式は ASCII コードのみ使用でき、POST には制限はありません。

4) 可視性パラメータは URL でユーザーに表示されますが、POST パラメータは REQUEST BODY でユーザーに表示されません。GET は比較的安全でなく、POST は比較的安全です。

5) GET リクエストの URL で送信されるパラメータには長さの制限がありますが、POST には制限がありません。

6) GET と POST がリクエストしている場合:
6-1 GET は、ヒアーダーとデータ内のデータを一緒にサーバーに送信し、200code を返します。 6-2
POST は、最初にヒアーダーをサーバーに送信し、100Continue を返し、その後に 100code を返します。サーバーにデータを送信、200 を返す
6-3 GET は TCP パケットをサーバーに送信し、POST は 2 つの TCP パケットをサーバーに送信
 


19. 自動テストフレームワーク?


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

本質的な違い: プロセスはオペレーティング システムのリソース割り当ての基本単位であるのに対し、スレッドはプロセッサ タスクのスケジューリングと実行の基本単位です。

包含関係: プロセスには少なくとも 1 つのスレッドがあり、スレッドはプロセスの一部であるため、スレッドは軽量プロセスまたは軽量プロセスとも呼ばれます。

リソースのオーバーヘッド: 各プロセスには独立したアドレス空間があり、プロセス間の切り替えには大きなオーバーヘッドが発生します。スレッドは軽量プロセスとみなすことができ、同じプロセス内のスレッドはプロセスのアドレス空間を共有し、各スレッドは独自の独立した実行スタックを持ちます。とプログラムカウンタを備えており、スレッド間の切り替えのオーバーヘッドは小さいです。

影響関係: プロセスがクラッシュした後、保護モードでは他のプロセスは影響を受けませんが、スレッドのクラッシュによりプロセス全体がオペレーティング システムによって強制終了される可能性があるため、マルチプロセスはマルチスレッドよりも堅牢です。


21. json データについて理解していますか?また、それを表示するためにどのようなツールを使用しましたか?

jsonView。他のインターフェイス テスト ツールでも表示できます。

おすすめ

転載: blog.csdn.net/nuist_NJUPT/article/details/130094663