目指すはエンジニア就職。
無事に面接を獲得して、もしくは今後に備えてどんな面接対策(技術的な内容含む)をしたらいいのか?というのは気になるところですよね。
こんにちは、@codeship_techです。
新卒のキャリアをエンジニアとしてスタートさせたいとき、目指す企業のレベルが高くなると面接でも技術に突っ込んだ質問が出てきます。
エンジニアになるにあたって、普段からどれくらい「プログラミングの勉強をしているのか」や「技術への関心が知識として垣間見えるか」を知りたいという質問ですね。
今回は、エンジニアを志望する人向けに、サーバーサイドエンジニアが採用面接において複数社で実際に聞かれた内容を挙げつつ、採用する面接官側がどのような意図でその質問をしたかを紹介したいと思います。
- 新卒エンジニア就活ではどんな技術的な質問がされるの?
- 面接官の質問の意図が知りたい!
- 面接に対してどんな回答を準備すればいいの?
この記事はこんな人へ向けて書きました。
目次
成果物(ポートフォリオ)について
ポートフォリオはありますか?拝見させてください。
ほぼ全てのWEB系企業において学習の成果 = 制作物を持っているかどうかで、学習意欲があることを確認してきます。
これまでに勉強してきたことをフル動員したアプリケーションをポートフォリオとして制作したいですね。
また、最悪ローカル環境でも構いませんができるだけポートフォリオは何かしらのサーバ環境でデプロイした状態で提出できるようにしておきましょう。
静的なWebサイトなどに関しては、githubやfirebase、herokuなどなど様々なサービスで無料でホスティングすることも可能なのでぜひやるようにしましょう。
あなたがポートフォリオ作成で最も力を入れた所は何処ですか?
このアプリに追加で認証機能をつけるとしたら、どこから改修を行いますか?
自分で考えてコーディングしたかを確認されます。
書籍・スクール・Web上の学習コンテンツなどの教材通りに手を動かしただけの人はここで弾かれてしまいますので注意です。
企業が求めているのは、ただコーディングをしてくれるロボットではなく、考え作ることができるエンジニアです。
ですから最低でも、あなたが「自分で考えて行動できる」ことをアピールすることができる何かしらの実装をする必要があります。
「ポートフォリオが必要らしいからとりあえず作った」ではダメなのです。
「なぜポートフォリオが必要なのか?」、「どんなポートフォリオを作ればいいのか?」をしっかり考えるようにしましょう。
もしアプリ開発をする上で考えることなどが分からない場合は、こちらの記事の3点などを参考にしてみるといいでしょう。
【Q&A】アプリ設計のHow to【Ruby on Rails】
技術の概念への理解
オブジェクト指向の三大要素を簡単に説明してください。
ブラウザを立ち上げてサイトが表示されるまでにネットワークで何が起こっているかを簡単に説明してください。
プログラミング言語に限らない一般的な技術の背景知識などを、手を動かすだけではなく調べたり本を読んだりして勉強した習慣があるかを聞いてきます。
これらの内容は
- 「オブジェクト指向でなぜ作るのか」
- 「マスタリングTCP/IP」
- 「Webを支える技術」
など、有名な定番書籍に書いてあることが多く、インターネットで検索してもすぐに知識を収集できます。
日頃のプログラミング学習の中でも、いざ説明を求めらたときにいまいち説明できず曖昧になっている知識分野は、できるだけ調べて自分の言葉でアウトプットするように習慣づけると良いでしょう。
そういった習慣で得た知識は、もし面接で直接聞かれなくても採用された後で業務上のコミュニケーションや新たな勉強をする際の助けになります。
働くイメージの確認
弊社のエンジニアとしてどのような仕事を行いたいですか?
仕事像が想像できているかを聞いてきます。
何も答えられないと「指示待ち人間なのでは」と悪い印象を与えます。
また、ここでありがちなのが「学習したいこと」や「自分の成長のため」を全面的に押し出してアピールすることですが、実はそれもあまり良くありません。
採用側によっては「この人は研修とOJTだけを受けて数年技術を習得したら退社するのでは」と勘ぐって見てくるからです。
会社としては「最初の教育コストをかけた分、長く貢献してくれる人材」を採用したいので、「会社に貢献できる目標」を掲げることがベターだと考えましょう。
また、どんなことで貢献できるかについては、志望する会社の募集要項をよく読みましょう。
社風とのマッチ(仕事へのモチベーション)や業務への貢献可能性という点から、企業の求める人材に当てはまるようにすることが大切です。
- 「数年以内に新規プロジェクトの発足メンバーになる」
- 「年間数十万ユーザーを持つ人気アプリケーションの開発に携わる」
など具体的数値例を掲げられるとなお良いでしょう。
システムやコードへの理解
ログイン機能のフローチャートを書き出してください。
在庫の追加をしたときのシステムの流れ図を書いてみてください。
システムの流れを問うてくるテストで、このような質問はプログラミングにおいてコピペしかできない人などを落とすために行われます。
先にもお伝えしたことですが、企業が求めているのはただコードを実装する人ではなくシステムを理解し、考えながらコードを実装できるエンジニアです。
理解のために自身の作ったポートフォリオのDFDを書いてみるなどして見ましょう。
DFDとはデータフロー図のことで、入出力されるデータの情報や格納先を矢印などを使って示します。
プログラミングをたくさん勉強していく中でいろんなものを開発すると思いますが、自分で作ったものは他人が見ても理解できるようシステムを図解するようにしましょう。
頭の中で思い描きながら実装スピード重視という人も、これができるだけで個人開発だけじゃなくチーム開発にもすぐ適応できると、評価が高くなります。
日常的な学習傾向の把握
資格はお持ちですか?
実は「未経験でもやる気のあること」をアピール方法は必ずしもポートフォリオだけとは限らず、
- Java Silver
- Ruby Silver
- 基本情報技術者試験
- LinuCレベル1
などの資格を(未経験の時点で)所持していることは、アピールとして非常に効果的です。
腰を据えて勉強しても良いでしょう。
昨今「エンジニアは資格を持っていても意味がない」と言われ資格取得が敬遠され、ポートフォリオ作成が重視される風潮が存在するのは事実です。
ですが、未経験者のアピールにおいては大いに意味があります。
「意味がない」とは「実務に入ったら資格試験で問われるような網羅的な知識の詰め込みや暗記が役にたたない」という含意にすぎず、未経験者が自分の努力(資格取得のための勉強量)を形として示して他の志願者と差別化するために、客観的証明としての資格は大変効果的です。
まとめ
エンジニアの就活(主にWeb系)について、面接で聞かれる技術的な質問について実際の例と質問の意図を解説・ご紹介しました。
- 「自発的な学習習慣がある」
- 「努力を形にしている(資格合格、ポートフォリオ、コーディング能力」
- 「自分の行いたい仕事や行なっている開発について真剣に考えている」
上記のことを聞いてくる傾向が強いので、それらを対策する方針で面接の準備をすると良いでしょう。
また、有料無料含め様々なプログラミングの学習教材が増えてきたことで、プログラミング学習者に求められる「実績」や「感心されるレベル」も上がってきました。
知識でも技術でもどうやって他人と差別化して自分の価値を高められるかをしっかり考えるようにしましょう。
実務的なオリジナルポートフォリオ開発を通して差別化できるエンジニアを目指す
CodeShipでは、オンラインカリキュラムと現役エンジニアである講師の質疑応答・アドバイスのある学習を通して、より現場に近く実践的なプログラミングを学習します。
また、卒業制作では受講生一人一人に合わせた完全オリジナルのポートフォリオ開発を課題としており、設計から品質重視のコーディング、デザイン、デプロイと運用まで学ぶことができます。
もちろん就活・インターン選考や転職の際にご自身のポートフォリオとして提出することも可能です。
一人一人作るものが違う完全オリジナルのポートフォリオ開発でも、開発経験の豊富な現役エンジニア講師が最後までアイデア面から設計・開発の技術面までコードレビューやアドバイス・サポート致します。
いきなりスクールに入会するのはお金もかかるしハードルが高い、、、
という方はまずは無料相談・体験会にて何度でもお気軽にご相談・ご体験ください。