
Python面接対策ガイド:高評価を得るための50選と回答例
Python開発者としての就職活動を成功させるための詳細なガイドです。本記事では、経験豊富な開発者でも、新卒者でも、面接で問われる可能性の高い50のPythonに関する質問と回答を網羅的に解説します。
1. 新卒者向け Python面接質問集:基礎を固める
新卒者向けによく問われる基本的なPythonの質問とその回答例を紹介します。
1.1 Pythonはコンパイル型言語?インタープリタ型言語?
Pythonは、コンパイルとインタープリタの両方の特性を持つ言語です。
- コンパイル: Pythonコードを実行する際、インタプリタはソースコード(.pyファイル)をまずバイトコード(.pycファイル)という中間形式にコンパイルします。
- インタープリタ: バイトコードはPython仮想マシン(PVM)によって解釈され、実行されます。PyPyのようにJITコンパイルを使用し、実行時にマシンコードへコンパイルする実装も存在します。
1.2 動的型付け言語とは?
動的型付け言語では、変数のデータ型は宣言時に指定する必要がなく、実行時に自動的に決定されます。PythonやJavaScriptがその代表例です。 静的型付け言語よりもコードが書きやすい傾向があります。
1.3 Pythonでインデントは必須?
はい、Pythonではインデントは必須です。インデントによってコードのブロック構造を定義します。可読性を高めるだけでなく、Pythonの構文の一部として重要な役割を果たします。
1.4 Pythonの組み込みデータ型は?
Pythonには、以下のような組み込みデータ型があります。
- 数値型: 整数(int)、浮動小数点数(float)、複素数(complex)、ブール型(bool)などがあります。
- シーケンス型: 文字列(str)、リスト(list)、タプル(tuple)、rangeオブジェクトなど、順序を持つデータの集まりです。
- マッピング型: 辞書(dict)のように、キーと値のペアを格納するデータ型です。
- 集合型: セット(set)のように、重複しない要素の集まりを格納するデータ型です。
1.5 ミュータブル(mutable)とイミュータブル(immutable)の違いは何ですか?
- ミュータブル: 変更可能なデータ型です。リストや辞書が該当します。 要素の追加、削除、変更が可能です。
- イミュータブル: 変更不可能なデータ型です。 文字列、タプル、数値などが該当します。 一度作成すると、その値を変更できません。
1.6 Pythonにおける変数のスコープとは?
変数のスコープとは、変数が参照可能な範囲のことです。
- ローカル変数: 関数内で定義された変数は、その関数内でのみ参照可能です。
- グローバル変数: 関数外で定義された変数は、プログラム全体から参照可能です。
- モジュールレベルのスコープ: モジュール内で定義されたグローバルオブジェクトが該当します。
- 最も外側のスコープ: 組み込みの名前空間を指します。
1.7 Pythonで数値を切り捨てる方法は?
math.floor()
関数を使用します。 この関数は、引数として与えられた数値以下の最大の整数を返します。
1.8 Pythonの「/」と「//」の違いは?
/
は通常の除算を行い、結果は浮動小数点数になります。
//
はfloor除算を行い、結果は整数になります(小数点以下は切り捨てられます)。 例えば、5 // 2 = 2
、5 / 2 = 2.5
。
1.9 forループとwhileループの違いは?
forループは、リスト、タプル、辞書などのコレクションの要素を反復処理するのに適しています。 開始条件と終了条件が明確な場合に便利です。
whileループは、特定の条件が満たされている間、コードブロックを繰り返し実行します。終了条件のみが明確な場合に適しています。
1.10 Pythonで関数を引数として渡せる?
はい、Pythonでは関数もオブジェクトの一種なので、引数として他の関数に渡すことができます。
1.11 Pythonにおけるpassとは?
pass文は何もしない操作です。構文上、文が必要だが、コードを実行する必要がない場合にプレースホルダーとして使用されます。
1.12 Pythonのbreak、continue、passの違いは?
- break: ループを中断し、ループ外の次の文へ制御を移します。
- continue: 現在のイテレーションをスキップし、次のイテレーションへ進みます。
- pass: 何もしません。プレースホルダーとして使用されます。
1.13 Pythonでは、引数は値渡し?参照渡し?
Pythonの引数渡しは「オブジェクト参照渡し」です。 ミュータブルなオブジェクト(リストなど)を渡すと、参照渡しのように動作します。イミュータブルなオブジェクト(数値、文字列、タプルなど)を渡すと、値渡しのように動作します。
1.14 ラムダ関数とは?
ラムダ関数は、名前のない(匿名)関数です。1行で記述できる簡単な関数を作成するのに便利です。
1.15 辞書とリストの違いは何ですか?
リストは、順番に要素が並んだコレクションで、インデックスでアクセスします。一方、辞書はキーと値のペアで構成されたコレクションで、キーでアクセスします。
1.16 リスト内包表記とは? 例を挙げてください。
リスト内包表記は、簡潔な構文でリストを作成する方法です。
1.17 *args と **kwargs とは?
- *args: 関数に可変個の引数を渡すために使用します。
- **kwargs: 関数にキーワード引数を渡すために使用します。
*argsの使用例です。
**kwargsの使用例です。
1.18 セット(set)と辞書(dictionary)の違いは何ですか?
セットは、順序がなく、重複する要素を持たないコレクションです。一方、辞書は、キーと値のペアで構成されたコレクションです。セットは数学的な集合を表現するのに適しており、辞書はキーに基づいて値を効率的に検索するのに適しています。
1.19 Pythonで2つのリストを連結する方法は?
+
演算子またはextend()
メソッドを使用します。
+
演算子は、2つのリストを連結した新しいリストを作成します。
extend()
メソッドは、最初のリストに2番目のリストの要素を追加します。
1.20 docstringとは?
Docstring(ドックストリング)は、Pythonのモジュール、関数、クラス、またはメソッドに関連付けられたドキュメンテーション文字列です。 Docstringは、オブジェクトの目的、使用方法、および引数に関する情報を提供します。