バイトジャンプ-バックエンド開発面接

3329 ワード

  • 面接総括:1.投球が遅れたため、10月8日午後に1面、2面、3面連続で行われた.全体の面接の体験はきわめて良くて、プロジェクトの経験の意外を討論する以外に、問題は関連します:プロセス/スレッド、CPUのスケジューリング、C/C++文字列の違い、ネットは3回握手して、4回手を振って;プロジェクトの経歴;プロジェクト需要分析;MySQLデータベースの2つのエンジン、および比較.プログラミングのテーマは含みます:ルート番号2は10桁の小数を保留します;何十万ものIPアドレスセグメントから、あるIPがその中に属しているかどうかを迅速に決定する方法.ツリーの和が値のパスです.1から10までの4つの数を繰り返しないで選択し、24ポイントのゲームルールを満たすすべての数式シーケンスを印刷します.
  • プロセスとスレッドの違い
  • linuxオペレーティングシステムの起動中、起動した最初のプロセスはinitプロセスであり、他のすべてのプロセスはそのサブプロセスである.
  • プロセスおよびスレッドは、いずれも1つの期間の記述であり、CPU動作期間の記述である.プロセスとスレッドの主な違いは、オペレーティングシステムのリソース管理方法が異なることです.
  • CPUから見れば、すべてのタスクは1つ1つの交代で実行され、具体的な交代方法は、まずプログラムAのコンテキストをロードし、それから実行Aを開始し、プログラムAのコンテキストを保存し、次の実行するプログラムBのプログラムコンテキストに呼び出し、それから実行Bを開始し、プログラムBのコンテキストを保存することである.
  • プロセスは、コンテキスト切替を切り替えるプログラム実行時間の総和=CPUロードコンテキスト+CPU実行+CPU保存コンテキストである.
  • スレッドは、プロセスのコンテキスト環境を共有するより細かいCPU期間である.プロセスは実行中に独立したメモリユニットを持ち、複数のスレッドがメモリを共有する.
  • オペレーティングシステムには複数のプロセスがあり、各プロセスには1〜複数のスレッド
  • がある.
  • システムリソーススケジューリングの最小単位は
  • である.
  • スレッドは、CPUスケジューリングの基本単位である.CPUスケジューリングは、タイムスライススケジューリングとも呼ばれる.スケジュール単位はタイムスライスです.
  • Cにおけるchar文字列とC++のstringの違いと関連
  • charは、1バイトを占める1文字を定義し、1文字を格納します.C++のstrignはカプセル化された文字列クラスである.
  • char文字列の末尾に隠れた'0';
  • stringはC++Standard Library(C++標準ライブラリ)の一部であり、
  • が必要です.
    #include 
    
  • Cのstring.hには、strcat、strncat、strcmp、strcpy、strstrstrなど、char文字列を操作する一連の関数が提供される.
  • C++のstringクラスにchar stringを返すインタフェースがあります:c_str()
  • ネットワーク3回握手、4回手を振るフロー
  • TCPは、データを送信する前に、通信双方が互いに接続を確立しなければならない接続向けのユニキャストプロトコルである.「接続」とは、ipアドレスやポート番号など、クライアントやサーバのメモリに保存されている相手に関する情報です.
  • TCPは、IP層以下の層のパケット損失、重複、およびエラーの問題を処理するバイトストリームと見なすことができる.接続の確立過程で、双方はいくつかの接続のパラメータを交換する必要があります.これらのパラメータはTCPヘッダに置くことができる.
  • TCPは、信頼性が高く、接続、バイトストリーム、伝送層向けのサービスを提供し、3回の握手を用いて接続を確立する.4回手を振って接続を閉じます.
  • 最初の握手:クライアントはネットワークパケットを送信し、サービス側は受信した.これにより,クライアントの送信能力,サービス側の受信能力が正常であると結論できる.
  • 第2回握手:サービス側発注、クライアント受信.これにより、クライアントは、サービス側の受信、送信能力、クライアントの受信、送信能力が正常であると結論することができる.クライアントの視点から見ると、サービス側から送信された応答パケットが受信され、サービス側が初めて握手したときに送信したネットワークパケットを受信し、応答パケットを送信することに成功したことを示しています.これは、サービス側の受信、送信能力が正常であることを示しています.一方、私はサービス側の応答パケットを受け取り、私が初めて送信したネットワークパケットがサービス側に到着したことを説明しました.そうすれば、私自身の送信と受信能力も正常です.
  • 第3回握手:クライアント発注、サービス側受信.これにより,クライアントの受信,送信能力,サービス側の送信,受信能力は正常であると結論できる.1回目、2回目の握手後、サービス側はクライアントの受信能力と自分の送信能力が正常かどうか分からない.3回目の握手では、サービス側はクライアントから2回目の握手に対する応答を受け取った.サービス側の観点から、2回目の握手時の応答データが送信され、クライアントが受信しました.だから、私の送信能力は正常です.クライアントの受信能力も正常です.
  • 4回手を振る:TCP接続は双方向伝送の対等なモードであり、つまり双方が同時に相手にデータを送信または受信することができる.一方が接続を閉じると、接続を閉じるように指示します.このとき相手はACKを返し,一方の方向の接続が閉じられる.しかし、別の方向では、すべてのデータが送信されるまで、FINセグメントが送信され、この方向の接続が閉じられます.受信者はACKを送信して接続を閉じることを確認する.
  • MySQLデータベースのエンジンはどれらがあって、それぞれ
  • を紹介して比較します
  • MySQLデータベースには、MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLEなど、多くのストレージエンジンがあります.最も一般的なのはMyISAMとInnoDBです.
  • MyISAMはトランザクションをサポートせず、クラッシュ後の迅速なリカバリをサポートせず、テーブルロックを使用すると高同時性に適しておらず、パフォーマンスを追求し、オペレーティングシステムに依存して読み取りと書き込みのキャッシュを管理し、インデックスのみをキャッシュし、実際のデータをキャッシュせず、
  • の圧縮をサポートする.
  • InnoDBは事務をサポートし、外部キーをサポートし、自動災害復旧をサポートし、行ロックを使用して高同時の読み取りをサポートし、ホットバックアップと潰瘍後の高速復旧をサポートし、全文検索をサポートする(5.6.4バージョンでサポートされるため、一部の面接問題は時間の原因でここが厳格ではない可能性がある)、自分の読み書きキャッシュ管理メカニズムがあり、つまりキャッシュインデックスもデータをキャッシュする.圧縮
  • はサポートされていません