はじめに
この記事では、エンジニアが面接で聞かれる技術的な質問と、それらに対する回答を紹介します。
1. 継承とは何か?継承の欠点は?
継承はオブジェクト指向プログラミングにおいて、あるクラスが別のクラスの属性やメソッドを引き継ぐことを可能にする概念です。コードの再利用を促進し、プログラムの構造をクリアにすることができます。
欠点:
- 密結合: 基底クラスの変更が派生クラスに影響を与え、プログラムの保守が困難になる。
- 理解の難しさ: 多重継承はプログラムの流れを追いづらくする。
- 過剰な一般化: 不必要な機能を持つクラスが生成されることがある。
2. プログラムはクラスだけで書いた方が良い?意見を述べてください。
クラスのみでプログラムを書くことは、オブジェクト指向言語では一般的ですが、すべての場合に最適とは限りません。関数型プログラミングなど他のパラダイムが特定の問題に対してより適切な解決策を提供する場合もあります。
3. DRYやSOLIDの原則について説明してください。
- DRY ("Don't Repeat Yourself"): コードの重複を避けることで、バグの発生を減らし、メンテナンスを容易にします。
-
SOLID: オブジェクト指向設計の五つの基本原則です。
- Single Responsibility Principle: クラスは一つの責任のみ持つべき。
- Open/Closed Principle: クラスは拡張には開かれ、変更には閉じるべき。
- Liskov Substitution Principle: 派生クラスはその基底クラスと置換可能でなければならない。
- Interface Segregation Principle: 大きなインターフェイスよりも小さな専用のインターフェイスが望ましい。
- Dependency Inversion Principle: 依存関係は具象ではなく抽象に対して持つべき。
4. HTTPステータスコードってどのような時に何を返す?200番台は?400番台は?500番台は?
HTTPステータスコードは、サーバーがクライアントのリクエストに対して応答する際の状態を示します。
- 200番台(成功): クライアントのリクエストが正常に処理されたことを示します。最も一般的なのは200 OKです。
- 400番台(クライアントエラー): クライアントのリクエストに問題があることを示します。404 Not Foundや400 Bad Requestなどがあります。
- 500番台(サーバーエラー): サーバー側で問題が発生したことを示します。500 Internal Server Errorが代表的です。
5. HTTPリクエストが送られる時に中で起きてる事を教えて
HTTPリクエストが送られるとき、以下のステップが実行されます:
- DNS解決: クライアントはサーバーのドメイン名をIPアドレスに解決する必要があります。
- TCP接続: サーバーのIPアドレスとポート番号を用いてTCP接続が確立されます。
- HTTPリクエスト送信: クライアントはHTTPプロトコルに従ってリクエスト(例えばGET、POST)をサーバーに送信します。
- サーバー処理: サーバーはリクエストを解析し、適切なレスポンスを生成します。
- HTTPレスポンス送信: サーバーはHTTPステータスコードとともにレスポンスをクライアントに送り返します。
- TCP接続終了: レスポンス後、TCP接続は通常終了されます。