
Python面接質問と回答:完全ガイド
Pythonは、その強力なライブラリと堅牢なパフォーマンスにより、Intel、IBM、NASA、Pixar、Netflix など、一流企業で最も使用されている言語です。Python開発者としてこれらの企業や組織に入るには、Pythonオンライン評価ラウンドや面接ラウンドを突破するために、いくつかの重要なPython面接問題を習得する必要があります。面接で成功するために、回答と上位50のPython面接問題のリストを用意しました。
初心者向けPython面接の質問
1. Pythonはコンパイル言語ですか、それともインタプリタ言語ですか?
Pythonは、コンパイル型ともインタプリタ型ともみなされます。しかし、それは実行プロセスの異なる段階においての話です。
コンパイルと解釈の両方の側面を持つ言語です。 まず、ソースコードをバイトコードにコンパイルし、次にPython仮想マシン(PVM)で解釈して実行します。
PyPyのような実装は、Just-In-Time(JIT)コンパイルを使用して、実行速度を向上させます。
2. 動的型付け言語とは何ですか?
プログラミング言語は、次の2つのタイプに分類できます。
- 静的型付け言語:変数の方があらかじめ定義されており、コンパイル時にデータ型が分かっている言語(C、C ++、Java、C#など)。
- 動的型付け言語:変数のデータ型を事前に定義する必要がなく、実行時に機械自体によって解釈される言語(Python、JavaScriptなど)。
Pythonは動的型付け言語であり、コードの柔軟性と開発の迅速性を高めます。
3. Pythonではインデントが必要ですか?
はい、Pythonではインデントが必要です。インデントは、コードの可読性を高めるだけでなく、コードの構造を定義するために不可欠です。
Pythonのインデントは、コードのブロック構造を定義するために使用されます。
4. Pythonの組み込みデータ型は何ですか?
Pythonの標準または組み込みのデータ型は次のとおりです。
- 数値型:整数、浮動小数点数、複素数など。
- シーケンス型:文字列、リスト、タプルなど。
- マッピング型:辞書など。
- セット型:セットなど。
これらのデータ型は、Pythonプログラミングの基本的な構成要素です。
5. 可変データ型と不変データ型の違いは何ですか?
- 可変データ型:実行時に編集可能です(リスト、辞書など)。
- 不変データ型:実行時に編集できません(文字列、タプルなど)。
可変データ型と不変データ型の違いは、データの変更可能性に影響を与えます。
6. Pythonの変数スコープとは何ですか?
変数を参照できるコード領域をスコープと呼びます。Pythonには、ローカルスコープ、グローバルスコープ、モジュールレベルスコープ、および最も外側のスコープがあります。
グローバル変数はプログラム全体でアクセスできますが、ローカル変数は定義された関数内でのみアクセスできます。
7. Pythonで数値を切り捨てるにはどうすればよいですか?
Pythonで数値を切り捨てるには、math.floor()関数を使用します。
math.floor()は、指定された数値以下の最大の整数を返します。
8. Pythonの/と//の違いは何ですか?
/は正確な除算(結果は浮動小数点数)を表し、//はfloor除算(結果は整数)を表します。例えば:
5 // 2 = 2
5 / 2 = 2.5
//
演算子は、除算の結果の小数点以下を切り捨てます。
9. Pythonのforループとwhileループの違い
"for"ループは、リスト、タプル、セット、辞書などのさまざまなコレクション型の要素を反復処理するために一般的に使用されます。開発者は、条件の開始と終了の両方がある場合に "for"ループを使用します。一方、"while"ループは、他のプログラミング言語で使用されている実際のループ機能です。プログラマは、終了条件のみがある場合にPythonのwhileループを使用します。
for
ループは既知の反復回数で使用し、 while
ループは条件が満たされるまで繰り返します。
10. Pythonで関数を引数として渡すことはできますか?
はい、Pythonでは関数はオブジェクトであるため、引数として渡すことができます。
関数を引数として渡すことで、コードの柔軟性と再利用性が向上します。
11. Pythonのpassとは何ですか?
passステートメントは、Pythonではnull操作またはプレースホルダーです。構文的にステートメントが必要だが、コードを実行しない場合に便利です。それ自体は何もしませんが、プログラムの構造を維持することができます。
pass
は、後で実装されるコードのプレースホルダーとして使用されます。
12. Pythonのbreak、continue、passとは何ですか?
- breakステートメント:ループまたはステートメントを終了します。
- continueステートメント:ループの次のイテレーションに進みます。
- passステートメント:操作を実行しません。
これらの制御ステートメントは、ループの動作を制御するために使用されます。
13. Pythonでは、引数は値渡しまたは参照渡しのどちらで渡されますか?
Pythonの引数渡しモデルは、値渡しでも参照渡しでもなく、オブジェクト参照渡しです。ミュータブルなオブジェクトとイミュータブルなオブジェクトが関数内でどのように動作するかに影響します。
関数内でリストが変更されるのは、Pythonがオブジェクト参照渡しを使用しているためです。
14. ラムダ関数とは何ですか?
ラムダ関数は名前のない小さな匿名関数です。 1つの式しか持つことができません。
ラムダ関数は、単純な処理を実行するのに便利です。
15. 辞書はリストとどう違いますか?
リストはインデックスでアクセスされる順序付きのアイテムのコレクションですが、辞書はキーでアクセスされる順序付けられていないキーと値のペアのコレクションです。リストはシーケンシャルデータに最適ですが、辞書はアソシエーションデータに適しています。たとえば、リストに[10、20、30]を格納でき、辞書に{"a":10、"b":20、"c":30}を格納できます。
16. リスト内包表記とは何ですか?例を挙げてください。
リスト内包表記は、簡潔な構文を使用してリストを作成する方法です。既存の反復可能オブジェクト(リストや範囲など)内の各アイテムに 式 を適用して新しいリストを生成できます。これにより、従来のリピートテクニックと比較して、よりクリーンで読みやすいコードを作成できます。
たとえば、整数のリストがあり、各要素の二乗を含む新しいリストを作成する場合、リスト内包表記を使用して簡単に実現できます。
リスト内包表記は、コードを簡潔にするための効果的な方法です。
17. *args と **kwargs とは何ですか?
*args:関数定義で特殊な構文 *args を使用して、可変個数の引数を関数に渡します。 **kwargs:関数定義で特殊な構文 **kwargs を使用して、可変長の引数リストを渡します。ダブルスター ** での名前 kwargs を使用します。
*args
は位置引数を、 **kwargs
はキーワード引数を関数に渡します。
18. セットと辞書の違いは何ですか?
Pythonの セット は、反復可能で変更可能で、重複する要素がない順序付けられていないコレクションデータ型です。 Pythonのセットクラスは、セットの数学的概念を表しています。
構文:中括弧 {} または set() 関数を使用して定義します。
Pythonの辞書 は、(Py 3.7以降)順序付けられた[順序付けられていない(Py 3.6 & prior)]データ値のコレクションです。これは、マップのようなデータ値を格納するために使用されます。マップとは異なり、他のデータ型は単一の値を要素として保持するだけで、辞書は キー:値 のペアを保持します。
構文:キーと値のペアを持つ中括弧 {} を使用して定義されます。
セットは一意の要素のコレクションを格納し、辞書はキーと値のペアを格納します。
19. Pythonで2つのリストを連結するにはどうすればよいですか?
Pythonで2つのリストを連結するには、+ 演算子または extend() メソッドを使用できます。
1. + 演算子を使用する: これは、2つのリストを結合して新しいリストを作成します。
2. extend() メソッドを使用する: これは、2番目のリストのすべての要素を最初のリストにその場で追加します。
リストの連結には、 +
演算子または extend()
メソッドを使用できます。
20. Pythonのドキュメンテーション文字列とは何ですか?
Pythonのドキュメンテーション文字列(またはdocstring)は、ドキュメントをPythonモジュール、関数、クラス、およびメソッドに関連付けるための便利な方法を提供します。
- Docstringの宣言: Docstringは、Triple Quotes(トリプル引用符)を使用して宣言され、定義されているオブジェクトの直後に表示されます。
ドキュメンテーション文字列は、コードの説明とドキュメントを提供する方法です。
まとめ
これらの質問は、Python開発者としてのあなたの知識を評価するのに役立ちます。 면접の準備に備えて、これらのトピックをよく理解しておきましょう。