Part4-2選考別対策2:エンジニア面接
- よくある就活ご相談
-
エンジニア面接ということで緊張しています。
どんな質問をされるのでしょうか?
- ポイント1自身の研究内容について
- ■問われる内容
- ✔︎理系の修士以上の方は詳細な研究内容
- ✔︎理系の学士の方はこれから取り組む研究の概要について
研究については、面接官がエンジニア以外の場合でもよく聞かれます。取り組んできた内容について、きっちり整理しておきましょう。
特に、理系で修士課程以上に進まれた方の場合、どんな研究をしてきたかは必ずと言っていいほど聞かれます。加えて、面接官がその分野に詳しいエンジニアである場合も珍しくはありません。こうした面接官は、研究内容に対して突っ込んだ質問をすることで、研究の深度や該当分野に対する理解度を見極めようとしています。
また、研究の要点をまとめて、他人でもわかるように説明できる力があるかどうかも見られています。
- 対策!自身の研究内容を整理し、いろいろな切り口から語れるようにしておきましょう!
- ■対策としてできること
- ✔︎自身の研究内容を10分、5分、3分、1分で説明できるように整理してみてください。
例えば、研究内容を10分、5分、3分、1分バージョンといったそれぞれの時間内で簡潔に語れるパターンを作っておけば、面接で急に説明を求められた時も、的確に話すことができます。
熱心に研究されてきた方ほど、自分の専門分野についてなら何時間でも語れるかと思います。ただ、面接では短い時間で簡潔に説明できなければなりません。「研究内容の要点」を絞り込んで、ポイントを押さえた的確な説明ができるようにしておきましょう。面接官は1日に何人もの学生を面接しています。長々と要点のつかみにくい話をされても、ひとりひとりの内容を詳細に覚えてもらうことは不可能です。
これは研究内容に限った話ではありませんが、面接が苦手な人は、ご自身の伝えたい内容や重要なポイントを簡潔にまとめて伝える練習をしましょう。
- ポイント2情報工学の基礎知識があるか
- ■問われる内容
- ✔︎情報工学に関する基礎知識(アルゴリズムの説明など)
エンジニア職の面接では、情報工学に関する基礎知識を問われるケースもあります。
例えば、
「ソート(バブルソート、マージソート、クイックソート)と探索(二分探索、線形探索)について、主な種類やそれぞれの違いを説明してください。」
といった質問をされたりします。
こういった知識は、研究内容や専門分野に限らず、情報工学やプログラミングの分野で、共通して基礎となる内容です。もちろん実務に取り組むうえでも必要となりますから、面接で直接聞かれることもよくあります。
ただ、基礎知識ぐらい知っているし勉強したこともあるのに、面接の場で急に聞かれるとうまく答えられない…という方も多いですよね。こうしたもったいない失敗を減らすには、簡単にでもおさらいと準備をしておくことをおすすめします。
- 対策!代表的なアルゴリズムなどは説明できるようにしておきましょう。
- ■対策としてできること
- ✔︎︎簡単に説明すると、つまりどんなアルゴリズムなのか?
- ✔︎︎メリットや特徴は何か?
- ✔︎︎逆にデメリットは何か?
- ✔︎︎どういったシーンで使えそうか?
ダラダラと説明しても言いたいことは伝わりません。また、「要点を押さえた説明ができないということは、ちゃんと理解できていないんだろうな」とも思われかねません。
代表的なアルゴリズムについては、上記のポイントを押さえて、端的に説明できるようにしておきましょう。
また、実際にアルゴリズムを使ってプログラミングをしてみると、さらに理解が深まるかと思います。一般的なアルゴリズムについては、学習サイトや書籍で学ぶことができます。また、paizaのブログ記事でも紹介しておりますので、ぜひ参考にしてください。
- ポイント3基礎的なコーディングスキルがあるかどうか
- ■問われる内容
- ✔基礎的なコーディングスキルがあるかどうか
最近は、採用試験でコーディングスキルを見られるケースも増えてきました。具体的には、面接の場で簡単な問題が出されて、ホワイトボードにコードを書いたり、PCを使って企業が用意したコーディング問題を解いたりする試験などがあります。
こういった問題は、時間も限られているので、そこまで難易度の高いものが出題されることはありません。paizaで言えばCランク程度までの問題がほとんどです。
ただ、落ち着いて考えればわかるはずの問題も、採用試験となると緊張してうまく解けない…ということもあるかと思います。普段からプログラミング問題を解いて、慣れておくとよいでしょう。
- 対策!問題を解いて練習をしておきましょう
- ■対策としてできること
- ✔︎︎代表的な問題を解いて解法を覚えておく
- ✔paizaの問題をいくつか解いて慣れておく
企業も新たな問題を作成したり、添削に時間をかけたりするのはなるべく避けたいと考えています。エンジニアの採用試験でよく出題される問題がいくつかありますので、一度は問いて解法を理解しておくとよいでしょう。
よく出題される代表的な問題としては、FizzBuzz、フィボナッチ数列、素数判定などがあります。これらの問題の解き方はpaizaラーニングでも解説していますので、ぜひごらんください。
また、paizaではレベル別にたくさんのプログラミングスキルチェック問題を公開しています。採用試験対策としては、B〜Dランクの問題を中心に練習してみてください。
- ポイント4ポートフォリオや課題を通してアウトプットできる力があるか
- ■問われる内容
- ✔今までに作った作品とそれに関する説明(ポートフォリオなど)
- ✔お題に沿ったプログラムの作成(課題選考など)
採用選考では、授業や研究・趣味で開発したアプリケーションなどといった作品の提出や、それに関する説明を求められることがあります。そのため、自分の作品については、初対面の相手にもわかるように説明できる力が必要となります。普段から、学んだ内容を自分の言葉でアウトプットする習慣をつけておくとよいでしょう。
面接官は、特に「どんな考えを持って作ったのか」「作ったシステムや使った技術について、きちんと理解できているのか」といった点を見ています。
具体的には、以下のような質問がよく出ます。
- ・なぜその開発環境を選んだのか?
- 「なんとなく」「みんなが使っていたから」というだけでは、「その技術の特徴を理解して選んだわけではないんだな」「自分の考えがない人だな」といった印象になってしまいます。例えば「AのフレームワークとBのフレームワークにはそれぞれこんなメリットとデメリットがあるが、今回はこんな理由でAのフレームワークを採用した」といった説明ができれば、「技術を理解したうえできちんと考えているんだな」という説得力が出ます。
- ・なぜその作品を作ろうと思ったのか?
- 面接官は、この質問から「熱意を持ってプロダクト開発に取り組める人なのか」を見極めようとしています。たとえ「何か作っておけば就活で有利になりそう」という動機で作ったものだとしても、そのまま言ってしまうと「開発が好きで作ったわけではないんだな」と思われてしまいます。 例えば、「昔からゲームが大好きで自分でも作ってみたかった」「〇〇というサービスのこの部分が使いにくいと思っていたので、改善されたものを作ってみよう思った」などと、自分の考えが話せるとよいでしょう。また、自分なりにこだわったポイントや工夫した部分についても説明できると、さらに熱意が伝わりやすくなります。
企業によっては、お題に沿ったプログラムを作成する選考課題が出題されることもあります。 課題の内容はさまざまで、paizaのスキルチェックのようなプログラミング問題が出る場合もあれば、簡易的なWebアプリやゲームなどを作る場合もあります。また、学生には親しみのない技術に関する課題を出す企業もあります。
IT業界では、毎日のように新しい技術が現れます。特に実務では、全く経験のない技術を、調べながら使っていくことも珍しくありません。エンジニアには、たとえ未知の分野でも自分で調査できる・学べる能力がとても重要なのです。そのため、企業はこういった課題選考を通して、「たとえ知らない分野の課題が出ても諦めずに調査・学習できるか」「短期間でも必要な技術をキャッチアップできるか」を見ています。
課題選考においては、余裕があれば以下の点も意識しておくとよいでしょう。
- ・コードは読みやすいか
- 特に見られるのは変数名です。「どんな目的で、何に使う変数か」がわかりやすい名前をつける必要があります。「変数名なんで何でもいいのでは?」と思うかもしれませんが、実務では、後で見返した時にわかりにくい名前だと、作業に無駄な時間がかかってしまいます。そのため、開発エンジニアは変数名やメソッド名などに気を遣っているのです。
- ・MVCやオブジェクト指向などの概念を理解できているか
- 特に、Web系の企業を受ける際は意識しておくとよいでしょう。コードは「オブジェクト指向を理解したうえでコーディングできているな」などといった視点で見られる場合もあるため、曖昧な人は勉強し直しておくとよいかと思います。
- 対策!まずはポートフォリオ作成にチャレンジしてみよう
- ■対策としてできること
- ✔︎︎まずはポートフォリオを作ってみましょう
面接でスムーズに説明できるよう、作品をまとめたポートフォリオを作っておきましょう。
まだ作品がない・少ないという人は、志望する業界や職種に関連した言語やフレームワーク、ライブラリなどの技術に少しずつでも触れていきましょう。どんな技術も、自分で手を動かして使ってみないことには習得できません。たとえチュートリアルだけでも使った経験があれば、選考課題が出ても焦らずに取り組めます。面接でその技術の話題が出た場合も、「全く触ったことがない人」よりは、話すことができますよね。
自分で何かを作るとなると、「そもそも何を作るのか」「どんなインフラや開発環境を使うのか」といったことを考えなければなりません。その際は、何も考えずに学習サイトや書籍に書いてある通りに作るのではなく、「なぜこの開発環境が適しているのか」「なぜこんな動きをするのか」といったことを考えながら取り組んでみましょう。 面接で作品について聞かれた時に、「ただ書籍の通りに作っただけ」ではなく、「こんな考えを持って作った・ここは自分なりに工夫した・作ってみてこの部分の理解が深まった」といった話ができれば、より説得力が出ます。
ポートフォリオがあると、面接で自分の作品や取り組みについて説明がしやすくなるため、多くの先輩たちが「作っておいてよかった」と言っています。ぜひ参考にしてください。
- ポイント5課題解決能力があるか
- ■問われる内容
- ✔シミュレーション問題などを通じて課題解決能力があるかどうか
面接でシミュレーション問題を出す企業もあります。
シミュレーション問題というのは、例えば「こんな処理を実行したいけど、メモリが不足しています。どうしますか?」といった問題です。
こうした質問をする面接官は、必ずしも正解を求めているわけではありません。
応募者の受け答えに対して、
- ・どんな切り口からどんな仮説を立てるのか
- ・仮説をもとにどんな解決策を考えつくのか
- ・どんな根拠を持って優先度を決めるのか
といった視点で、課題解決能力を見極めようとしているのです。
例としては、以下のような質問を聞かれたりします。
- ・サービスの〇〇機能でこんな不具合が出てしまいました。原因は何だと思いますか?今後同じような不具合を出さないためには何をすればいいと思いますか?
- ・サービスのレスポンスが遅くなってしまいました。なぜ遅くなっているのか、原因としてどんな仮説が考えられますか?
- ・サイトにアクセスしたら404エラーが出てしまいました。どこからどうやって原因を調査しますか?
- ・うちのサービスに対して、どうすればもっとユーザーの利用率が上がると思いますか?
繰り返しになりますが、こうした質問に正解は求められていません。(そもそも正解のない問題がほとんどです) ただ、実務でもこうした課題や不具合にぶつかることはよくあります。その際、エンジニアは原因を調べて解決したり、サービスをよりよい方向に改善していかなければなりません。そのため、こうした質問を通して、筋の通った仮説や解決策を考えられる素養があるか(=課題解決力があるか)が見られているのです。
- 対策!課題解決パターンを意識した経験を積んでおこう
- ■対策としてできること
- ✔︎課題発生から原因調査・解決までの考え方を整理しておこう
- ✔︎自分でアプリなどを作りながら、課題発生から解決までの流れを経験してみよう
課題解決の考え方としては、例として以下のような切り口があります。
- ・原因はどの場所のどんな要素にあると考えられるか?(仮説)
- ・原因を検証する手段にはどんなものがあるか?
- ・対策の優先度はどう決めるか?(かかる工数や人員、実現可能性など)