パパの7色の顧問日記 「面接官編」
息子「いってらっしゃーい!今日の仕事は面接官なの?」
パパ「うん。AIエンジニアを2人面接するんだ」
息子「えらいね!でも、パパの方が強いでしょ?」
パパ「はっはっは、今日はバトルじゃないんだ(大嘘)。実力のある人を見つけるのが面接官の仕事なんだよ」
電車の中で、パパは考えていた。
(マナフィ2枚構築...環境を読んで予想外の一手...そうだ!面接でも型にはまらない発想力を見極めないと...)
会社に到着。最初の面接者は、スタートアップで機械学習基盤を一人で構築してきたという佐藤さん。温和な笑顔の奥に芯の強さが感じられる。
2番目は、大手IT企業でインフラエンジニアとして腕を磨き、最近AIに興味を持ち転身を決意したという山田さん。無駄のない受け答えが印象的。
「では、簡単なシェルの実装をPythonでお願いします。ディレクトリの移動やファイル操作ができる程度で構いません」
佐藤さんの回答:
import os
import sys
import shutil
def simple_shell():
while True:
cwd = os.getcwd()
command = input(f"{cwd}$ ").strip().split()
if not command:
continue
if command[0] == "exit":
break
elif command[0] == "cd":
os.chdir(command[1])
elif command[0] == "ls":
print("\n".join(os.listdir()))
elif command[0] == "cp":
shutil.copy(command[1], command[2])
elif command[0] == "rm":
os.remove(command[1])
else:
print(f"Command not found: {command[0]}")
if __name__ == "__main__":
simple_shell()
山田さんの回答:
import os
import sys
from pathlib import Path
def mini_shell():
while True:
try:
cmd = input(f"{Path.cwd()}> ").split()
match cmd[0]:
case "exit": return
case "cd": Path.chdir(cmd[1])
case "ls": print(*Path.cwd().glob("*"), sep="\n")
case "cp": Path(cmd[1]).write_bytes(Path(cmd[2]).read_bytes())
case "rm": Path(cmd[1]).unlink()
case _: print("Unknown command")
except Exception as e:
print(f"Error: {e}")
if __name__ == "__main__":
mini_shell()
(なるほど...佐藤さんは基本に忠実だが、エラーハンドリングが甘い。山田さんはPythonの新機能を理解していて、エラー処理も堅実...でも)
「お二人とも素晴らしい実装ですね。ただ、まだ一つ確認したいことがあります」
パパはポケットからデッキを取り出した。
「実は、論理的思考力を測る最後のテストがあります」
二人は目を丸くする。
「サーナイトexデッキで、お二人と対戦させていただきます」
佐藤さん「実は...私もポケカやってます。ミュウVMAXです」
山田さん「私はレジドラゴVSTARを...」
パパ(心の中で)
(よし、環境デッキを使いこなせる実力者だ。マナフィ2枚の真価を見せるときが来た...!特に佐藤さんはレギュレーション落ちの禁止級のミュウデッキを持ち歩いているとは、、有望だな。)
採用面接は、思わぬポケモンバトルへと展開していくのであった...。
(つづく)