(感想)
私が採用側または、大手なら課す。
現職で採択するなら、
チームで使っている技術スタックの問題を選択形式で出題したい。(即戦力がほしい)
#◆チェックリスト & PRPoint
「実装ができる」だけは自己中な状態
→影響範囲が広くなり保守が大変(未然に防ぐ実装)
#◆コーディング面接・試験
1.1~2次面接など、選考の序盤~中盤の段階(45分)
コンピュータサイエンスに関連した知識を問われる技術面接もある
(codingなし)
事前課題を解き、面接官にその実装について解説をする面接
(事前のコーディングに3,4時間かかるものもあり)
##流れ
- 問題の確認
↓ - 解法を考える
↓ - 実際にコーディング
↓ - 解説(工夫点)
↓ - ディスカッション
- 問題の一部が変わったらどのようにコードを変えるか
- 計算量
- 更に改善できるコードがあるかどうか
- エッジケースに対応できているか
- コードを書く際に気をつけたこと(コーディング規約など)
##評価ポイント
企業により評価方法はさまざまですが、
以下の項目については共通していると思ってよいでしょう。
1. アルゴリズムとデータ構造に関する基礎知識を持っているか
そもそも基礎知識がなければ解けない問題が出題されるので
2. 全てのテストケースを制限時間内に通す実装力を持っているか
→ 入出力例には出ていないエッジケースや例外ケースに気づけるか
→ 計算量を意識して効率がよく実行時間の制約を満たす実装ができるか
3. 変数名や関数名を適切に命名するなど、他人が読みやすいコードを書けるか
一度のコーディング試験で書く必要のあるコードの量はそう多くありません。関数自体を作らなかったり、変数もxやyなど単純なものを使う場合が多いです。
また、コーディング試験の形式によっては
以下のようなポイントも評価されます。
・コードを書き慣れているか
オフラインで実施する場合や、コーディング中の画面をその場で映す形式の場合、コードがスラスラと書けるかを見られる場合もあります。
・ディスカッションの中で、自分が書いたコードを分かりやすく説明できるか
コミュニケーション能力やカルチャーフィットについては中盤以降の面接で見られるため、あくまでそれ以前の足切り的な位置づけであるコーディング試験では重要視しない企業が多いと思われます。
##おすすめ使用言語
よほど使い慣れている言語が無い限りは、pythonがおすすめ。
圧倒的に楽。
業務でjavaを使ってますが、効率重視であえてpythonを選択
#◆対策◆
## ✖Paizaのスキルチェック
就活サービスとしては良いと思いますが、コーディング試験対策には向いていません。 なぜかというと、模範解答が無いため、復習ができないためです。
(高評価のeasy問題を解きまくる。)
https://leetcode.com/
※goodの比率が50%以上の問題を良問
※力づくではなく、
しっかりとアルゴリズムを理解しながら解くことをオススメします。bruteforceは、誰でもできてしまうので
Codilityで苦手な問題の種類を解く。
楽天などが採用しているらしいコーディング試験サイト
Atcoder(ビギナーコンテストくらいのレベル)やproject eulerなど利用してもいいかもしれません。
#要はセンター試験のようなもの
アルゴリズムをごりごり活用するような会社だと、勉強する価値は大いにある。
ただし、ある程度の企業規模になれば
※ただし受けた人曰く
新しく勉強したアルゴリズムを業務で使ったことは一度もないです。とのこと。
#コーディングテストが実施される企業
(コーディングテストの選考があった)企業
↑難
SmartNews(競技プログラミング慣れしていないと難しい)
Recruit
BizReach
Rakuten
Wantedly
↓易
その他コーディングテストが実施されることを知っている企業
Google
Line
Yahoo
プログラミングテストでの選考も可能な企業
teamLab
(他に知っている方がいたら教えてください)
体感として、ある程度有名なWeb系の企業だと、
コーディングテストが必要な割合は3、4割な気がします。