リリース・改善中
Algorithm
コーディング面接で評価される点、頻出の問題パターン、段階的な解き方、計算量の説明方法をまとめた実践ガイドです。
コーディング面接対策とは、限られた時間でアルゴリズム問題を解きながら、考えを声に出して説明するための習慣とテクニックの集まりです。問題の確認、例の作成、総当たり、最適化、実装、テストという再現可能な手順と、ハッシュマップ、ツーポインタ、スライディングウィンドウ、累積和といった繰り返し現れるパターンから成ります。
多くの企業はコーディングテストやライブコーディング面接で開発者を選考し、最終的な答えだけでなく、問題の理解、解決の過程、コードの品質、検証、コミュニケーションも評価します。明確な手順があれば、最適解にたどり着けなくてもこうした力を示せますし、同じ習慣は日々のデバッグやコードレビューにも役立ちます。
問題の数よりもパターン単位で学ぶのが効果的です。パターンを一つ理解し、それを使う問題をいくつか解いたら、面接官に話すつもりで解法と計算量を声に出して説明します。時間を計って解き、境界ケースと総当たりの結果でコードを検証し、最後に模擬面接で仕上げます。
入力サイズ、境界ケース、出力形式を最初に確認します。その答えで使えるアルゴリズムが決まることがよくあります。
単純で正しい解法とその計算量をまず示し、繰り返されている処理を見つけて適切なデータ構造で取り除きます。
「ソート済み」「連続する」「すでに見た」といった手がかりが、ツーポインタ、スライディングウィンドウ、ハッシュマップを示します。
判断を言葉で共有し、小さな例を手でたどり、境界ケースを確かめてから完成とします。
longest_unique_window は、同じ文字が繰り返されない最長の部分文字列の長さを返します。右端を一つずつ進めながら各文字を最後に見た位置を記録し、ウィンドウ内で重複が出たら左端をその直後へ移すため、各インデックスは定数回しか処理されず O(n) で動きます。python sliding_window.py で実行すると、いくつかの例の結果が表示されます。
sliding_window.py
def longest_unique_window(s: str) -> int:
"""Length of the longest substring without a repeated character (sliding window)."""
last_seen = {}
left = best = 0
for right, ch in enumerate(s):
if last_seen.get(ch, -1) >= left:
left = last_seen[ch] + 1
last_seen[ch] = right
best = max(best, right - left + 1)
return best
if __name__ == "__main__":
for text in ["tastedev", "abba", "interview", ""]:
print(f"{text!r}: {longest_unique_window(text)}")
python sliding_window.pyインストールから コーディング面接対策 の中心となる考え方まで、6 章で順を追って学びます。
コーディング面接対策 について質問し、経験を共有し、意見を交わす場所です。
まだディスカッションはありません。最初の話題を始めましょう。
コメント 0件
ログイン · ログインするとコメントできます。
最初のコメントを書いてみましょう。