本章ではバックエンドエンジニアとして聞かれる質問内容について書いていきます。バックエンドのドメイン知識は幅広いので募集要項に合わせて準備するのがおすすめです。ここではソフトウェアエンジニアとして必要なNetworking、 Operating Systems、 Databaseなど基礎知識に加えて、システムデザイン面接にもかなり注目される分散システムやVirtualizationなどのトピックも入ってます。
注意点としては回答例はあくまで面接用に簡略化したものなので、より深い知識を得るためには詳しい解説をしている関連リンクから詳細を辿って理解する事をオススメします。
問題カテゴリ(合計57問)
- Networking
- Operating Systems
- File Systems
- Database
- Distributed system
- Programming Language
- Virtualization
- Scalability/Performance/Reliability
- Misc
Networking
🚦 Important
ブラウザでURLを開くと何が起こるのでしょうか?
🇯🇵
DNSを通じて、クライアント(ブラウザ)はURLのホスト名を宛先サーバーのIPアドレスに解決します。そして、3ウェイハンドシェイクによりTCP接続を確立します。TCP接続の上に、TLSハンドシェイクによってTLS接続を確立し、暗号化されたデータのみがネットワーク上で送信されるようにします。クライアントはHTTPプロトコルを使用して、ヘッダーとリクエストペイロードを含むリクエストを送信先のサーバーに送信します。サーバーは、ステータスコード、ヘッダー、レスポンスペイロードで応答します。
What will happen when you open an URL in a browser?
🇺🇸
Through DNS, client (the browser) will resolve hostname of the URL to an IP address of the destination server. Then it establishes a TCP connection through a three-way handshake. On top of TCP connection, it establishes TLS connection though TLS handshake, so that only encrypted data is sent over the network. The client uses HTTP Protocol to send a request which contains headers and request payload to the destination server. The server responds with a status code, headers and response payload.
🚦 Important
HTTP/2とHTTP/1.1の違いを教えてください
🇯🇵
- HTTP/2は複数のHTTPリクエストとレスポンスが1つのTCP接続上で同時に送受信できるようにします。HTTP/1.1 では、各リクエストと応答は1つのTCP接続で送受信されます。これにより、HTTP/2は帯域幅が限られているネットワークでは、パフォーマンスが大幅に向上する可能性があります。
- HTTP/2がバイナリフレーミングレイヤーを使用しているのに対し、HTTP/1.1はすべてのリクエストとレスポンスをプレーンテキスト形式で保持していることです。HTTP/2は、メッセージをバイナリ形式に変換してカプセル化することで、HTTPの効率を向上させています。
- HTTP/2は、サーバーがPUSHフレームを使用してクライアントにデータをプッシュすることができる点でも異なります
How is HTTP/2 different from HTTP/1.1
🇺🇸
- HTTP/2 allows multiple HTTP requests and responses to be sent and received simultaneously over a single TCP connection; in HTTP/1.1, each request and response is sent and received over a single TCP connection. This allows HTTP/2 to provide potentially significant performance gains in networks with limited bandwidth.
- The difference is that HTTP/2 uses a binary framing layer, whereas HTTP/1.1 keeps all requests and responses in plain text format. HTTP/2 improves the efficiency of HTTP by converting and encapsulating messages into binary format
- HTTP/2 also differs in that it allows servers to push data to clients using PUSH frames.