paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」の開発者が、プログラミングやITエンジニアの転職などについて書いています。

logo

ITエンジニア向け総合求人・学習サービス「paiza」の開発者が、プログラミングやITエンジニアの転職などについて書いています。

Pythonでコーディングテストを受ける人向け・対策用おすすめサイト&書籍10選

f:id:paiza:20211209235144j:plain
f:id:paiza:20180910132940p:plainこんにちは。倉内です。

エンジニアの転職・就活の選考のひとつに「コーディングテスト」があります。(コーディング試験、技術面接などと呼ばれる場合もあります)

選考当日に口頭で答えたり、ホワイトボードに書いたりする形式を取られることも多く、いきあたりばったりで十分力が発揮できず悔しい思いをする方もいらっしゃいます。

企業によって出題方法や評価の観点は異なりますが、普段からプログラミング問題を解く、課題として出されることが多い定番のアルゴリズム、Webサイトやアプリ開発の基礎知識を学んでおくことも大切です。

そこで今回は、Pythonでコーディングテストの対策ができるサイトをご紹介します。

コーディングテストでPythonをおすすめする理由

企業から指定があれば別ですが、問題を解く際のプログラミング言語は自分で選択できます。

情報系の学生の場合、授業をC言語やJavaで受けていて、慣れている方も多いかもしれません。また、エンジニア経験のある方は、自分がこれまで使ってきた言語を選ぶことが多いでしょう。

その言語に十分自信があればよいのですが、そうでない場合は迷ったらPythonを使うことをおすすめします。

Pythonはとにかくシンプルで、基本的な文法の理解がしやすく、さらにコードの記述量もC言語やJavaに比べると少なくて済みます。たとえば「Hello World!」の出力を見るだけでもよく分かります。

C言語:

#include <stdio.h>

int main(void){
    printf("Hello World!");
    return 0;
}

Java:

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        System.out.println("Hello World!");
    }
}

Python3:

print("Hello World!")

コーディングテストには時間制限がありますので、プログラミング言語をコード量の観点で選ぶのもよいと思います。

paizaラーニングでは「Python体験編」(全編無料)や「Python3入門編」(一部無料)といった動画学習講座を公開しています。ぜひ活用していただければと思います。

どんな問題が出されるか

対策の話に入る前に、コーディングテストではどのような問題が出されるのか、いくつかのパターンがありますので確認しておきましょう。

定番アルゴリズムを問う問題

多数存在するアルゴリズムの中でも、エンジニアであれば知っておきたいものがあります。選考ではそれに関する問題をリアルタイムで解いたり、説明したりといったことを求められます。

具体的には「FizzBuzz問題」「フィボナッチ数列」といった基本的なものから、「クイックソート」「マージソート」などのソート、「最短経路問題」「巡回セールスマン問題」などの探索、そして簡単な動的計画法に関する問題などが多いようです。

情報系専攻の方や、すでにエンジニア経験がある方は聞いたことがある・問題を解けるという方も多いと思いますが、そうではない場合ひと通り確認しておくとよいでしょう。

計算量について問う問題

さきほどのアルゴリズムとも関連して、計算量について問われることがあります。

計算量とは、簡単に言うと計算にかかるコストの指標で、時間計算量を表現する方法としてO記法(オーダー記法)が使われます。O(N) や O(logN) といった表記を見たことがある方もいるのではないでしょうか。

実行結果は同じでも採用するアルゴリズム(と入力データ数)によって計算量が異なるため、「より計算量を抑えるためにはどのアルゴリズムを採用するか」を考える必要が出てきます。

基本的な概念や代表的なオーダー表記については、以下の記事で解説していますのでよければ参考にしてみてください。

paiza.hatenablog.com

プログラミング言語の基本知識

たとえば、「オブジェクト指向プログラミングとは」「クラスの継承とは」「ポリモーフィズムとは」といったプログラミング言語に関する知識を問われる問題です。

普段からコーディングをしていてもいざ説明するとなると難しいかもしれません。

自分の言葉で説明できるよう、あらためてプログラミング言語の基本的な知識についてはおさらいしておくとよいでしょう。

コンピュータサイエンスの知識を問う問題

コーディングとは少し違いますが、職種や企業の事業領域によってはコンピュータサイエンスの基礎知識を問われるような問題が出されることもあります。

たとえば「OSとはなにか、どんな役割をしているか」「コンピュータの一次記憶装置と二次記憶装置について説明しなさい」といったものです。

もしくはネットワーク技術(インターネットの仕組み)やセキュリティ、データベースなど業務をする上で土台となるような基礎知識を問われることもあるでしょう。

開発における問題解決の方法・考え方

エンジニアにとって論理思考ができるかは重要な要素です。合わせて、「どんな思考を持っているか」を見て、自社のエンジニアチームや会社自体の社風とマッチするかも判断されます。

簡単なWebアプリやサービス開発の課題を出して、実装したコードだけでなく、それに取り組む姿勢も評価対象になります。

また、「Webサービス開発にあたってこういう問題が発生したとき、どのような方法で解決するか」「解決が困難な場合、はじめにどのようなアプローチを取るか」などが問われることもあります。

前提条件を与えられて解決のために採用する技術やツールを問う場合もあれば、思考やふるまいを見られている場合もあります。口頭の場合、回答した内容に対してさらに深堀りされるので、その場での判断力なども問われます。

コーディングテスト対策ができるサイトと書籍

f:id:paiza:20211210134303j:plain

ここからはコーディングテスト対策についてお伝えしていきます。いずれも無料の範囲でも十分使えるので、ぜひいろいろ試してみてください。

LeetCode

leetcode.com

LeetCodeは、GAFAをはじめ外資系IT企業のコーディング面接でよく出題されるプログラミング問題と似た問題を解くことができる学習サイトです。

実際のコーディングテストでここからいくつかピックアップされて出題されることもあるようです。

アルゴリズムやデータベースといったカテゴリを選択できます。また、問題にはArrayやSortingといったタグづけがされているので自分が練習したい分野の問題を選ぶことが可能です。

f:id:paiza:20211210104447j:plain

初めての方は難易度「Easy」から取り組んでみましょう。

公式の回答はC++とJavaですが、Discussを見るとPythonで解答コードの例を載せてくれている方がたくさんいますので、そちらを参考にして問題を解いていきましょう。

AtCoder

atcoder.jp

AtCoderは言わずと知れた競技プログラミングサイトですが、3000以上の過去問題にいつでも挑戦することができ解答・解説も用意されているため、コーディングテスト対策にもおすすめです。

過去に開催されたコンテストの解説はC++で書かれていますが、ソースコードはPythonも用意されています。

競技プログラミングにあまりなじみのない方は、登録後はまず初心者向け問題集「AtCoder Beginners Selection」や「practice contest」で問題を解いてみるとよいでしょう。

yukicoder

yukicoder.me

競技プログラミングの練習サイトという位置づけで、多くのプログラミング問題と解答・解説を参照できます。(定期的にコンテストも開催されています)

AC(Accepted:正解)した他ユーザーのコードを見ることができるため、分からなかった問題やもっと綺麗なコードを書きたい場合に複数のユーザーの解答を参考にすることができます。

paizaラーニング

paizaラーニングではプログラミング問題だけでなく、動画講座によりアルゴリズムやコンピュータサイエンスの基礎的な内容を学ぶことができます。

目的別のおすすめコンテンツをご紹介します。

スキルチェック

難易度S・A・B・C・D(Sがもっとも難しい)のさまざまなプログラミング問題を公開しています。時間制限がある中で問題を解くため、コーディングテストの練習に適しています。

paizaのスキルチェック

レベルアップ問題集

スキルチェックと同等の問題を時間制限なしで解ける練習問題集です。

20211201105847

レベルアップ問題集では、ループや条件文、配列といった基本文法をおさらいできる問題から、ソート、線形探索などアルゴリズムに関する問題まで多様な練習問題を公開しています。

すべての問題の入力テストケースおよび一部問題では解答コード例・解説もご用意しています。ぜひご活用ください!

動画学習講座

プログラミング言語の基本を押さえたい方には、四則演算やif文・for文といった基礎文法を学べる「体験編」、さらに発展して多次元配列や関数、例外処理などが学べる「入門編」がおすすめです。言語別講座一覧はこちら

さきほど挙げたコーディングテストで定番のアルゴリズム問題を解説している講座もあります。

20211210154422

また、「Web技術入門」をはじめ独学では手を出しづらい分野の講座も多数公開しています。

20211210123004

Webフレームワークを使ったアプリケーション開発の講座は、ただプログラミング問題を解くのではなく、実際の開発業務をイメージするのに役立てていただければと思います。

20211210123018

プログラミングエンタメ

paizaには楽しんでプログラミング問題を解いてもらえるようなエンタメコンテンツもご用意しています。

20211210130619

たとえば、ファンタジー系PRGの世界観で、プログラミング問題を解くことでストーリーを進めていくゲームがあります。「勉強に疲れた…」という方は、こういったコンテンツもぜひ利用してみてください。

Codility

app.codility.com

実際企業の選考に使われているコーディングテストのサービスで、練習問題は無料で挑戦することができます。

難易度はEasy、Medium、Hardの3段階でLessonsタブのメニューを見てみると、コーディングテストでよく出題される内容が並んでいることが分かります。

f:id:paiza:20211210131608j:plain

たとえば、ソートの問題であれば計算量を示すオーダーの表記もされており、解説もコーディングテスト対策に役立ちます。

Lessonsの公式の解答コードにPythonはありませんが、検索するとPythonで解いたものを載せてくださっている方もたくさんいらっしゃるので参考にするとよいでしょう。

(参考)Python3でCodilityのLessonを解いてみた - Qiita

CS50.jp

cs50.jp

ここまではプログラミング問題を解けるサイトを中心にご紹介しましたが、このサイトはハーバード大のコンピュータサイエンス入門講座「CS50」を日本語翻訳したものです。

以下のように学べる内容は幅広く、これらを日本語(日本語字幕)で、しかも無料で学べる方法は他にはあまりないと思います。

f:id:paiza:20211210132911j:plain

おすすめ書籍4選

問題解決力を鍛える!アルゴリズムとデータ構造

アルゴリズムの紹介だけでなく、アルゴリズムを理解し、使いこなせるようになるために役立つ1冊。

コーディングテスト対策を始めたばかりの方が最初に手に取る書籍としておすすめです。

Pythonで学ぶアルゴリズムの教科書

競技プログラミングでは実行速度の関係から、コードはC++で書かれることが多く、アルゴリズムなどを学びたいときにPythonのコードが見当たらないこともあるでしょう。

この書籍では定番のアルゴリズムをPythonでどう書くとよいかを学ぶことができます。

世界で闘うプログラミング力を鍛える本

外資系IT企業のコーディングテスト対策にと言われることが多い本書ですが、計算量についての問題がとてもよく、そのあたりを理解したい人におすすめできる1冊です。

Pythonで解いたコードをGitHubにアップしてくださっている方もいるので、参考にするとよいでしょう。

(参考)GitHub - YadaYuki/cracking-coding-interview-python

プログラミングコンテストチャレンジブック

通称「蟻本」と呼ばれ、競技プログラミングに取り組む方にとっては必須の参考書です。

コーディングテスト対策にも役立ちますが、初心者の方が初めて読む1冊にしては難易度が高いので、ある程度ベースのコーディングスキルやアルゴリズムの知識がある方におすすめです。

まとめ

Pythonでのコーディングテスト対策におすすめのサイトと書籍を紹介してきました。

本文中にも書いたとおり、Pythonはシンプルでコード量も少なくて済むため、時間制限のある中で問題に解答することを考えるとよい選択肢と言えるでしょう。他の言語の経験がある方は特に習得も早いと思います。

ただ、普段からプログラミングや開発をしている人でも選考の場で答えたり問題を解いたりしようとすると、緊張もあってなかなかうまくいかないこともあります。

本来の実力を発揮するためにもしっかりと準備をして本番に臨みましょう!




paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。

詳しくはこちら
paizaラーニング

そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。

スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。

詳しくはこちら
paizaのスキルチェック

paizaのおすすめコンテンツ

Webセキュリティ入門 ハッカー入門 Webセキュリティ講座がスタート!CVは内田真礼さん! Python✕AI 機械学習入門講座 CVに上坂すみれさんを起用!人気の機械学習講座を公開中!
paiza転職 paiza新卒 EN:TRY paizaラーニング 記事内に記載している情報は、記事公開時点でのものとなります。 Copyright Paiza, Inc, All rights reserved.