エンジニアの転職活動をしていて、面接とは別に「プログラミングテスト(コーディングテスト)」を受けることが結構ありました。これからエンジニア転職する人が気になるところだと思うので、実際にどんな感じだったか、出たお題と合わせて話します。

テストはオンラインで、カンニング不可の本気仕様

私が受けたときは、オンラインで実施されました。カメラをオンにした状態で、専用のコーディング用サイトを開いて、その場で問題を解く形式です。

特徴的だったのは、他のサイトを見てはいけないこと。検索や調べものは禁止で、完全に自分の実力だけで解く、という測られ方でした。カメラありなので、ごまかしもききません。なので、付け焼き刃ではなく、基礎をちゃんと理解しているかが問われる感じでした。

出たお題①:Javaで「累乗」を計算する

1つ目はJavaの問題でした。計算式が示されていて、「xに数字を入れたら計算できるようにプログラムを書け」というもの。内容としては、累乗(xのn乗)を計算する問題でした。

考え方としては、for文を使って掛け算を繰り返します。たとえば「2の3乗」なら、2を3回掛ける、という処理をループで回すイメージです。

実際の解き方の例を示します(これは私が書いたコードそのものではなく、同じ種類の問題の標準的な解答例です):

public static long power(int x, int n) {
    long result = 1;
    for (int i = 0; i < n; i++) {
        result = result * x;
    }
    return result;
}

resultを1から始めて、xをn回掛けていく。シンプルですが、for文の基本が分かっているかを見るには良い問題だと思います。

出たお題②:SQLで月ごとに給料を集計する

2つ目はSQLの問題でした。社員の給料が入ったテーブルから、月ごとに給料を集計して出す、という内容。GROUP BYを使うタイプの問題です。

考え方としては、「月」でグループ化して、その中で給料を合計(または平均)する、という処理になります。

解き方の例はこんな形です(これも標準的な解答例です):

SELECT
    month,
    SUM(salary) AS total_salary
FROM
    salaries
GROUP BY
    month;

GROUP BY month で月ごとにまとめて、SUM(salary) でその月の給料を合計する。実務でもよく使う集計なので、SQLの基本が身についているかを見る問題だな、と感じました。

これから受ける人へ

実際に受けてみて思ったのは、奇をてらった難問は出なかったということ。出たのは、for文での繰り返しや、SQLのGROUP BYといった、基礎的だけど実務で必ず使うもの。逆に言えば、基礎をちゃんと理解していれば対応できます。

オンラインでカメラあり・調べもの禁止、という環境なので、その場で思い出せるレベルまで基礎を固めておくのが大事です。応募先の言語(私の場合はJavaとSQLでした)の、ループ・条件分岐・基本的なデータ操作あたりは、手を動かして復習しておくと安心だと思います。