Python面接質問と回答マスター — 究極の準備ガイド
読者の皆様、これらのPythonプログラミング言語面接質問は、Pythonプログラミング言語の面接で遭遇する可能性のある質問の性質に慣れていただくために特別に設計されています。経験上、優れた面接官は特定の質問をあらかじめ計画することはほとんどなく、通常は科目の基本概念から始まり、その後の議論やあなたの回答に基づいて展開されます。
Python基礎面接質問
Pythonとは?
Pythonは高水準、インタプリタ型、インタラクティブ、オブジェクト指向のスクリプト言語です。高い可読性を持つよう設計されています。他言語が句読点を多用するのに対し英語キーワードを頻繁に使用し、構文構造が少ないのが特徴です。
Pythonの特徴をいくつか挙げてください
- 関数型・構造化プログラミング手法とOOPの両方をサポート
- スクリプト言語としても、バイトコードにコンパイルして大規模アプリケーション構築にも使用可能
- 非常に高水準な動的データ型を提供し、動的型チェックをサポート
- 自動ガベージコレクションをサポート
- C、C++、COM、ActiveX、CORBA、Javaと容易に統合可能
Pythonは大文字小文字を区別する言語ですか?
はい、Pythonは大文字小文字を区別します。識別子、関数名、キーワードが大文字小文字で区別されます。大文字小文字の区別はコードの明確さと精度の維持に役立ちます。
Pythonはプラットフォーム非依存ですか?
はい、Pythonはプラットフォーム非依存です。互換性のあるインタプリタがあれば、あらゆるOSでPythonコードを実行できます。Pythonコードは、ハードウェアとOSの詳細を抽象化するインタプリタによって実行されます。
Pythonの用途は?
- Web開発:Django、Flaskなどのフレームワーク
- データ分析:Pandas、NumPyなどのライブラリ
- 機械学習:TensorFlow、scikit-learnなどのツール
- 自動化:スクリプティングとタスク自動化
- ソフトウェア開発:デスクトップアプリケーション構築
Python 2とPython 3の基本的な違いは?
| No. | 項目 | Python 2 | Python 3 |
|---|---|---|---|
| 1 | Print関数 | print文として括弧なしで使用可能 | 文字列出力に括弧が必須。なしだとエラー |
| 2 | Unicode | ASCII str()型と別個のunicode()型。bytes型なし | Unicode(utf-8)標準。bytes、bytearrayクラスあり |
| 3 | 例外 | 新旧両方の構文記法を受け入れる | 例外引数を括弧で囲まないとSyntaxError |
| 4 | 順序付け不能な比較 | エラーを出さない | 順序付け不能な型比較でTypeErrorを発生 |
Pythonにdouble型はありますか?
いいえ、Pythonにdouble型はありません。浮動小数点数にはfloat型を使用し、これが倍精度デフォルトとなります。
Pythonの文字列はイミュータブルですか?(Yes/No)
はい、Pythonの文字列はイミュータブル(不変)です。
Pythonで True = False は可能ですか?
いいえ、PythonではTrueをFalseに等しくすることはできません。TrueとFalseは別のブール値です。
Python環境変数面接質問
PYTHONPATH環境変数の目的は?
PYTHONPATH — PATHと類似の役割。Pythonインタプリタに、プログラムへインポートされるモジュールファイルの場所を伝えます。PythonソースライブラリディレクトリとPythonソースコードを含むディレクトリを含めるべきです。Pythonインストーラーによってプリセットされることもあります。
PYTHONSTARTUP環境変数の目的は?
PYTHONSTARTUP — Pythonソースコードを含む初期化ファイルのパスを含みます。インタプリタ起動時に毎回実行されます。Unixでは .pythonrc.py と命名され、ユーティリティ読み込みやPYTHONPATH変更コマンドを含みます。
PYTHONCASEOK環境変数の目的は?
PYTHONCASEOK — Windowsで、import文での最初の大文字小文字を区別しないマッチをPythonに指示するために使用。任意の値を設定して有効化。
PYTHONHOME環境変数の目的は?
PYTHONHOME — 代替モジュール検索パス。通常PYTHONSTARTUPやPYTHONPATHディレクトリに埋め込まれ、モジュールライブラリの切り替えを容易にします。
Pythonデータ型と演算面接質問
Pythonでサポートされるデータ型は?
Pythonには5つの標準データ型があります:
- Numbers(数値)
- String(文字列)
- List(リスト)
- Tuple(タプル)
- Dictionary(辞書)
str = 'Hello World!' のとき print str の出力は?
str = "Hello World!" print(str)
出力
Hello World!
str = 'Hello World!' のとき print str[0] の出力は?
Pythonではインデックスは0から始まります。
str = 'Hello World!' print(str[0])
出力
H
str = 'Hello World!' のとき print str[2:5] の出力は?
str = 'Hello World!' print(str[2:5])
出力
llo
str = 'Hello World!' のとき print str[2:] の出力は?
str = 'Hello World!' print(str[2:])
出力
llo World!
str = 'Hello World!' のとき print str * 2 の出力は?
str = 'Hello World!' print(str * 2)
出力
Hello World!Hello World!
str = 'Hello World!' のとき print str + "TEST" の出力は?
str = 'Hello World!' print(str + "TEST")
出力
Hello World!TEST
list = ['abcd', 786, 2.23, 'john', 70.2] のとき print list の出力は?
list = ['abcd', 786, 2.23, 'john', 70.2] print(list)
出力
['abcd', 786, 2.23, 'john', 70.2]
list = ['abcd', 786, 2.23, 'john', 70.2] のとき print list[0] の出力は?
list = ['abcd', 786, 2.23, 'john', 70.2] print(list[0])
出力
abcd
list = ['abcd', 786, 2.23, 'john', 70.2] のとき print list[1:3] の出力は?
list = ['abcd', 786, 2.23, 'john', 70.2] print(list[1:3])
出力
[786, 2.23]
list = ['abcd', 786, 2.23, 'john', 70.2] のとき print list[2:] の出力は?
list = ['abcd', 786, 2.23, 'john', 70.2] print(list[2:])
出力
[2.23, 'john', 70.2]
tinylist = [123, 'john'] のとき print tinylist * 2 の出力は?
tinylist = [123, 'john'] print(tinylist * 2)
出力
[123, 'john', 123, 'john']
list1 = ['abcd', 786, 2.23, 'john', 70.2]、list2 = [123, 'john'] のとき print list1 + list2 の出力は?
list1 = ['abcd', 786, 2.23, 'john', 70.2] list2 = [123, 'john'] print(list1 + list2)
出力
['abcd', 786, 2.23, 'john', 70.2, 123, 'john']
Pythonタプル面接質問
Pythonのタプルとは?
Pythonでは、タプルは複数のアイテムを格納するためのイミュータブルなシーケンスです。作成後は変更できず、パラメータで定義されます。固定コレクションに適しています。
Pythonでのタプルとリストの違いは?
主な違い:リストは角括弧 [ ] で囲み、要素とサイズを変更可能。タプルは丸括弧 ( ) で囲み、更新不可。タプルは読み取り専用リストと考えられる。
tuple = ('abcd', 786, 2.23, 'john', 70.2) のとき print tuple の出力は?
tuple = ('abcd', 786, 2.23, 'john', 70.2) print(tuple)
出力
('abcd', 786, 2.23, 'john', 70.2)
tuple = ('abcd', 786, 2.23, 'john', 70.2) のとき print tuple[0] の出力は?
tuple = ('abcd', 786, 2.23, 'john', 70.2) print(tuple[0])
出力
abcd
tuple = ('abcd', 786, 2.23, 'john', 70.2) のとき print tuple[1:3] の出力は?
tuple = ('abcd', 786, 2.23, 'john', 70.2) print(tuple[1:3])
出力
(786, 2.23)
tuple = ('abcd', 786, 2.23, 'john', 70.2) のとき print tuple[2:] の出力は?
tuple = ('abcd', 786, 2.23, 'john', 70.2) print(tuple[2:])
出力
(2.23, 'john', 70.2)
tinytuple = (123, 'john') のとき print tinytuple * 2 の出力は?
tinytuple = (123, 'john') print(tinytuple * 2)
出力
(123, 'john', 123, 'john')
tuple = ('abcd', 786, 2.23, 'john', 70.2)、tinytuple = (123, 'john') のとき print tuple + tinytuple の出力は?
tuple = ('abcd', 786, 2.23, 'john', 70.2) tinytuple = (123, 'john') print(tuple + tinytuple)
出力
('abcd', 786, 2.23, 'john', 70.2, 123, 'john')
Python辞書面接質問
Pythonの辞書とは?
Pythonの辞書はハッシュテーブル型の一種です。Perlの連想配列やハッシュのように機能し、キーと値のペアで構成されます。辞書のキーはほぼあらゆるPython型になり得ますが、通常は数値や文字列。値は任意のPythonオブジェクトです。
Pythonで辞書を作成するには?
辞書は波括弧 { } で囲み、値は角括弧 [ ] で割り当て・アクセスします。
dict = {} dict['one'] = "This is one" dict[2] = "This is two" tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
辞書からすべてのキーを取得するには?
dictionary.keys() 関数で辞書オブジェクトからすべてのキーを取得できます。
print(dict.keys()) # すべてのキーを出力
辞書からすべての値を取得するには?
dictionary.values() 関数で辞書オブジェクトからすべての値を取得できます。
print(dict.values()) # すべての値を出力
Python文字列面接質問
文字列をintに変換するには?
Pythonで文字列を整数に変換するには int() 関数を使用。文字列が有効な整数を表す必要があり、そうでなければValueError。
文字列をfloatに変換するには?
float() — 文字列をfloatに変換。文字列は数値である必要あり。
オブジェクトを文字列に変換するには?
str(x) — オブジェクトを文字列に変換。
オブジェクトを正規表現に変換するには?
repr(x) — オブジェクトxを表現文字列に変換。
文字列をオブジェクトに変換するには?
eval(str) — 文字列を評価しオブジェクトを返す。
文字列をタプルに変換するには?
tuple(str) — 文字列をタプルに変換。
tuple('Hello')
出力
('H', 'e', 'l', 'l', 'o')
文字列をリストに変換するには?
list(str) — 文字列をリストに変換。
print(list('Hello'))
出力
['H', 'e', 'l', 'l', 'o']
文字列をセットに変換するには?
set(str) — 文字列をセットに変換。重複要素は削除される。
print(set('Hello'))
出力
{'e', 'o', 'H', 'l'}
タプルを使って辞書を作成するには?
dict(zip(tup1,tup2)) — タプルを辞書に変換。zip() でタプルをペアリングし、dict() で辞書に変換。
tup1 = ('a', 'b', 'c', 'd') tup2 = (1, 2, 3, 4) dic = dict(zip(tup1,tup2)) print(dic)
出力
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
文字列の最初の文字を大文字にするには?
capitalize() — 文字列の最初の文字を大文字に変換。
str1 = "tutorialspoint" print(str1.capitalize())
出力
Tutorialspoint
文字列のすべての文字が英数字か判定するには?
isalnum() — 文字列が1文字以上で全文字が英数字ならTrue、そうでなければFalse。
文字列のすべての文字が数字か判定するには?
isdigit() — 文字列が数字のみならTrue、そうでなければFalse。
文字列のすべての文字が小文字か判定するには?
islower() — 1文字以上のケース付き文字があり、すべて小文字ならTrue、そうでなければFalse。
文字列のすべての文字が数値か判定するには?
isnumeric() — Unicode文字列が数値文字のみならTrue、そうでなければFalse。
文字列のすべての文字が空白か判定するには?
isspace() — 文字列が空白文字のみならTrue、そうでなければFalse。
文字列が適切にタイトルケースか判定するには?
istitle() — 文字列が適切に「タイトルケース」ならTrue、そうでなければFalse。
文字列のすべての文字が大文字か判定するには?
isupper() — 1文字以上のケース付き文字があり、すべて大文字ならTrue、そうでなければFalse。
シーケンスの要素を結合するには?
join(seq) — シーケンスseqの要素の文字列表現を区切り文字で連結し、1つの文字列にする。
文字列の長さを取得するには?
len(string) — 文字列の長さを返す。
文字列を左寄せで指定幅にスペースパディングするには?
ljust(width[, fillchar]) — 元の文字列を左寄せで指定幅にスペースパディングした文字列を返す。
文字列をすべて小文字に変換するには?
lower() — 文字列のすべての大文字を小文字に変換。
文字列の先頭空白を削除するには?
lstrip() — 文字列の先頭空白をすべて削除。
文字列から最大のアルファベット文字を取得するには?
max(str) — 文字列strから最大のアルファベット文字を返す。
文字列から最小のアルファベット文字を取得するには?
min(str) — 文字列strから最小のアルファベット文字を返す。
文字列内の古い部分文字列をすべて新しい文字列に置換するには?
replace() — 古い部分文字列のすべての出現を新しい部分文字列で置換。
str1 = "Welcome to tutorialspoint " new_str = str1.replace("Welcome",'Hello Welcome') print(new_str)
出力
Hello Welcome to tutorialspoint
文字列の先頭と末尾の空白をすべて削除するには?
strip() — 先頭(先頭のスペース)と末尾(末尾のスペース)の空白をすべて削除した新しい文字列を返す。
str1 = " Welcome to tutorialspoint " Str = str1.strip() print(Str)
出力
Welcome to tutorialspoint
文字列のすべての文字のケースを変更するには?
upper()— 文字列のすべての文字を大文字に変換lower()— 文字列のすべての文字を小文字に変換swapcase()— 文字列のすべての文字のケースを入れ替え。小文字なら大文字に、大文字なら小文字にcapitalize()— 文字列の最初の文字を大文字にtitle()— 文字列の各単語の最初の文字を大文字に
文字列のタイトルケース版を取得するには?
title() — 文字列の各単語の最初の文字を大文字にする。
文字列をすべて大文字に変換するには?
upper() — 文字列のすべての文字を大文字に変換。
文字列のすべての文字が10進数字か判定するには?
isdecimal() — Unicode文字列が10進数字のみならTrue、そうでなければFalse。
Pythonリスト面接質問
リストのdel()とremove()メソッドの違いは?
両方ともリストから要素を削除するために使用。del() は指定インデックスの要素を削除。スライス操作で複数要素の削除も可能。remove() は要素の最初の出現を削除。
List = [1,2,3,4,5,6] # インデックス指定で削除 del List[1] # スライスで削除 del List[2:3] # 5を削除 List.remove(5) print(List)
出力
[1, 3, 6]
len([1, 2, 3]) の出力は?(出力: 3)
[1, 2, 3] + [4, 5, 6] の出力は? [1, 2, 3, 4, 5, 6]
['Hi!'] * 4 の出力は? ['Hi!', 'Hi!', 'Hi!', 'Hi!']
3 in [1, 2, 3] の出力は? True
for x in [1, 2, 3]: print x の出力は? 1 2 3
L = [1,2,3] のとき L[2] の出力は? 3
L = [1,2,3] のとき L[-2] の出力は? 2
L = [1,2,3] のとき L[1:] の出力は? [2, 3]
2つのリストを比較するには?
等価演算子 [ == ] を使用。両リストが同じ値を含めばTrue、そうでなければFalse。
list1=[1,2,3,4] list2=[1,2,3,4] print(list1==list2)
出力
True
リストの長さを取得するには?
len() 関数でリストの長さを取得。
list1 = [1,2,3,4,5] print(len(list1))
出力
5
リストの最大値要素を取得するには?
max() 関数でリストの最大要素を取得。
list1 = [10, 20, 30, 40, 50] print(max(list1))
出力
50
リストの最小値要素を取得するには?
min() 関数でリストの最小要素を取得。
list1 = [10, 20, 30, 40, 50] print(min(list1))
出力
10
リスト内のオブジェクトのインデックスを取得するには?
index() 関数で要素のインデックス値を取得。
list1 = [10, 20, 30, 40, 50] print(list1.index(30))
出力
2
リストの指定インデックスにオブジェクトを挿入するには?
insert() 関数で特定インデックスに要素を挿入。インデックス値とオブジェクトをパラメータとして受け取る。
list1 = ['a', 'b', 'c', 'd','e'] list1.insert(3,'z')
出力
['a', 'b', 'c', 'z', 'd', 'e']
リストから最後のオブジェクトを削除するには?
pop() 関数で最後のオブジェクトを削除。インデックス値を引数として渡すことも可能で、そのインデックスのオブジェクトを返す。
list1 = ['a', 'b', 'c', 'd','e'] list1.pop() list1.pop(2) print(list1)
出力
['a', 'b', 'd']
リストからオブジェクトを削除するには?
remove()、del()、pop() で要素を削除可能。
list1 = ['a', 'b', 'c', 'd','e'] list1.pop() list1.pop(2) print(list1)
出力
['a', 'b', 'd']
リストを逆順にするには?
reverse() 関数でリストを逆順に。リストスライス [::-1] でも逆順可能。
list1 = ['a', 'b', 'c', 'd','e'] print(list1.reverse()) list2 = [1,2,3,4,5] rev=list2[::-1] print(rev)
出力
['e', 'd', 'c', 'b', 'a'] [5, 4, 3, 2, 1]
リストをソートするには?
sort() 関数でリスト要素を特定順序に配置。デフォルトは昇順。降順にするにはソート後に reverse() を使用。
list1 = [13,10,45,9,5,12] list1.sort() print(list1)
出力
[5, 9, 10, 12, 13, 45]
Python演算子面接質問
** 演算子の目的は?
** 演算子は冪乗演算に使用。ある数を別の数の累乗として計算。例:2**3 は 2の3乗。
// 演算子の目的は?
// は切り捨て除算(床除算)を実行。2数を除算し、結果以下の最大整数を返す。
print(9//5)
出力
1
is 演算子の目的は?
is 演算子は、2つの変数がメモリ上で同一オブジェクトを参照しているか判定。値ではなくオブジェクトの同一性を比較。
not in 演算子の目的は?
not in は、特定要素がリスト、タプル、文字列、辞書などのシーケンスに存在しないか判定。見つからなければTrue、見つかればFalse。
Python制御文面接質問
break文の目的は?
break 文は、特定条件が満たされたときにループの実行を終了。break実行後、ループは即座に停止し、ループに続く次の文に進む。
continue文の目的は?
continue 文は、ループ内の現在のイテレーションの残りコードをスキップし、直接次のイテレーションに移動。break がループ全体を終了するのに対し、continue はループを終了せず次のイテレーションへスキップ。
pass文の目的は?
Pythonの pass はnull文で、将来のコードで置き換え可能。将来実装予定の関数や条件文がある場合に使用。ループや関数定義でブロックを空にするとIndentationErrorになるため、それを避けるために pass を使用。
Python randomモジュール面接質問
リストやタプルからランダムなアイテムを選ぶには?
random.choice() 関数を使用。与えられたリスト/タプルからランダムに選択された要素を返す。import random でモジュールをインポート。ランダムサンプリング、シャッフル、ランダム性を要するシンプルなゲーム作成に有用。
範囲からランダムなアイテムを選ぶには?
random.choice() 関数を使用。'start' から 'stop - 1' の範囲からランダムに選択された要素を返す。指定範囲からランダムな数値選択にも使用。
Pythonでランダムな数値を取得するには?
random() — 0 ≤ r < 1 のランダムな浮動小数点数 r を返す。
乱数生成の開始値を設定するには?
seed([x]) — 乱数生成に使用される整数の開始値を設定。他のrandomモジュール関数呼び出し前に呼ぶ。戻り値はNone。
リストのアイテムをインプレースでランダム化するには?
shuffle(lst) — リストのアイテムをインプレースでランダム化。戻り値はNone。
Python関数とメモリ面接質問
Pythonのlambda関数とは?
lambda はPythonで無名関数を作成するキーワード。文ブロックを含まず、return文も含まない。
未完成の関数バージョンを何と呼ぶ?
未完成の関数バージョンは一般的にスタブまたは部分関数と呼ばれる。実装を持たないプレースホルダー関数で、開発中にコードの他部分をテストするために使用されることが多い。
関数定義時、システムはパラメータとローカル変数をメモリのある領域に格納する。このメモリ領域を何と呼ぶ?
関数定義時にパラメータとローカル変数が格納されるメモリ領域はスタックと呼ばれる。ここでは関数呼び出しを管理し、変数を格納し、特定ファイルのリターンアドレスを管理する。
Pythonモジュールとライブラリ面接質問
OS関連メソッドを適用するために使用されるPythonモジュールは?
Pythonの OS モジュールはオペレーティングシステムとの対話に使用。ファイル・ディレクトリ操作、プロセス管理、環境変数を提供し、Pythonスクリプトが異なるプラットフォームでOS関連タスクを実行可能にする。
機械学習に使用されるPythonライブラリは?
Pythonの scikit-learn ライブラリが機械学習に使用される。
Pythonがバグを見つけるために使用するツールは?
Pythonはいくつかのツールを使用:
pdb— 組み込みPythonデバッガ、インタラクティブデバッグ用pylint— エラーをチェックする静的コード分析ツールpyflakes— コードを実行せずに分析
Python
- Python辞書完全ガイド:作成、操作、高度なテクニック
- Python ラムダ関数: 無名関数の実践ガイド
- Python 関数引数完全マスター: 位置引数・キーワード引数・デフォルト引数
- Python SciPy:ライブラリと関数の包括的チュートリアル
- Python ループ完全マスター:制御フローと繰り返し技法
- Python 変数とデータ型:型の理解と活用
- Python 日付と時刻の完全マスター:実践的ガイド
- Pythonリスト完全ガイド:追加、ソート、長さ、リスト内包表記(実践編)
- Pythonマルチスレッド完全ガイド:GIL解説と実践例
- Pythonのmain関数理解:def main()の実践ガイド
- Pythonの禅(PEP 20):エレガントなコードのための19の不変原則