就活の振り返り

就活の振り返りを簡単に書いておきます。誰かの参考になれば幸いですね。

 

自己紹介

 東京大学理科一類->情報科学科->東京大学大学院コンピュータ科学専攻

プログラミング系のバイト歴2年ほど

研究では自然言語処理とグラフの表現学習を組み合わせたことをやってます。dependency parsingした結果にGNNを適用するみたいなことではなくてグラフの表現学習に自然言語処理を組み合わせる感じです。後ちゃんとプログラミングやり出したのは情報科学科入ってからです。

 

本格的に就活始めるまで

・大学院入学~6月くらいまで

だらだら研究のサーベイしながらインターンを探してました。確かPFNとgoogleインターンがここら辺の募集だった気がします。googleはいつの間にか募集が終わっててPFNはNLP系の募集がなかったので(見落としてただけかもしれない)応募しませんでした。

・6月から8月の終わりまで

授業+研究の傍らインターンに応募して全落ちしました。SONYとNTTとCookPadに応募してSONYは面接、NTTとCookPadは書類選考で落ちました。Yahooにも応募したのですがオンラインのコーディングテストがうまく行かなさすぎて途中でやめてしまいました。ここら辺は研究も含め全てうまくいってなかったですね。やばいなとは思っていたけど打開策も特に見出せずに困ったなあという感じでした。

・9月から12月まで

IT系の選考は12月頃から始まるものが多いのでここら辺で気合い入れんといかんなと思い研究室の先輩に話を聞きました。やはり競技プログラミングが大事なようなのでAtcoderやその関連の情報をまとめているサイトを使って勉強を始めました。後ここら辺で研究テーマを変えました。個人的にはこの研究テーマの変更はまだやり尽くされていない分野に舵をきったと言う点でかなり英断だったように思います。ここら辺でSONYの冬インターンにもう一度応募したがまた面接で落ちました。なんなら面接官も同じ人がいたような気がしないでもないです。

 

就活

12月の終わり頃からそれぞれの企業の本選考が始まりました。ここら辺でAtcoderのコンテストにも参加しだしました。 それまでの3ヶ月間のコソ練の成果か10回ほどで水色になれたのですが大手を振って自慢できるほどの早さでもないのがもどかしいですね。これからは選考を受けた個別の企業について守秘義務とかに触れない程度に書いていきます。あまり意味がないような気もしますが企業名もイニシャルにしておきます。

Y社

検索サービスとかの会社。一番最初に選考がありました。確か書類選考->オンラインのコーディングテスト->一次面接->最終面接みたいな感じでした。データサイエンティストとして受けました。

オンラインのコーディングテストは夏のインターンの時より遥かにスイスイ解けてやはり競技プログラミングの勉強しないとなんだなと思ったが全問解くことはできませんでした。Atcoderで言うならC~Dくらいで今振り返ってみるとあのレベルを全問解けないのは少し物足りない感もありますね。

面接では研究の話や入って何やりたいかなどのいわゆるな話をしました。研究の話よりもバイトでの開発経験の方がウケがよかったように思います。詳しいことは覚えていませんが2回目の面接の後人事の人と話して内々定をもらいました。

 

L社

Webサービス系の会社。MLエンジニア(AI)として受けました。Y社と同時進行くらいで選考がありました。これも書類選考->オンラインのコーディングテスト->一次面接->最終面接みたいな感じでした。

こちらのコーディングテストはAtcoderでいうD~Eくらいのものが2問ほどあってどちらも解けました。いつか忘れたのですがコーディングテスト関連でなんか軽く炎上していたけど個人的にはそのテストではおかしな点は全く感じませんでした。そもそもそのことに触れない方がいい気もするんですけど悪いイメージがつきっぱなしなのもどうかと思うので一応書いておきます。

一次面接、最終面接はどちらも一般的な技術面接で自分の研究に関する発表、質疑応答、なぜその会社を選んだのかなどが聞かれました。第一志望だったこともあり割とガチガチに対策していってたのでそこまで大きなミスはなかったように思います。研究、バイトでの開発経験のどちらも結構評価してもらえて最終面接の後に内々定をもらえました。これはかなり嬉しかったです。

G社

みんな大好きG社。情報系たるもの一回は受けておきたいなと思いダメ元で受けました。最初はSoftware Engineerとして受けましたが途中から向こうの提案もありML Engineerとして受けました。

書類選考->オンラインコーディングテスト->一次面接->二次面接みたいな感じで二次面接で落ちました。

とにかく選考期間が長かったです。2月から5月半ばくらいまでやってたし最終選考まで行ってたら5月終わりくらいまでかかっていたと思います。

オンラインコーディングテストはそんなに難しくなかった気がします。一次面接、二次面接はコーディングインタビューと呼ばれる形式で一次面接はそれが1回、二次面接は4回ありました。一次面接は問題は解けはしたものの細かいミス多かったり説明もうまくできなかったりと散々だったのでこれはいかんと思い二次面接までにめちゃくちゃ練習しました。AtcoderからLeetCodeに切り替えてYoutube上のMock Interview動画を使って疑似面接してみたり綺麗なコーディングの書き方勉強してみたり色々しました。参考にした素晴らしい記事があるので下にリンクを載せておきます。

その結果、個人的には二次は一次面接よりはできがよかったと思うのですが残念ながら二週間ほど後に不合格の連絡が来ました。2回面接すっぽかされたり日本語面接だと事前に言ってたのに突然英語面接に変わったりしたのに落とすとは何事かと憤慨しましたがまあ解答速度遅かったり明らかに失敗した回があったりしたので仕方ないなと思います。一次面接、二次面接ともに難しさとしてはAtcoderのC~D問題くらいかと思いますが解答速度と思考のアウトプットが求められるのでその点が慣れてないと難しいと思うのとCS全般の知識が必要だったりします。

 

note.com

 

S社

2回インターン受けて落とされたS社です。イニシャルにする意味もないですね。そもそももう受ける気もなかったのですが色々あってうけることにしました。

インターンはダメだったとはいえ今まで培った就活スキルをフルパワーに活かせば内定取れるんじゃないかと思い受けたのですが普通に一次面接で落ちました。本当に縁がない。R&Dを受けたのですが、志望した領域が今やってる研究内容とあまり噛み合わせが良くなかったのと面接での研究発表の時に直近の良い実験結果も含め時間内に説明しようと早口になってしまったのが良くなかったように思います。

 

以上が受けた企業群となります。博士課程行って良い成果残せる自信もなかったので就活は早めに行動したつもりだったのですが振り返ってみると4社というのは特別多い感じもしないですね。ここからは就活においての自分のよかった点、よくなかった点を書いていきたいと思います。

よかった点

・受ける業界との相性

最初に書いた通り、理科一類->IS->CSという情報系ど真ん中の道を通ってきたので書類選考や面接の際にCSの知識を持っているという前提で接してもらえたのはありがたかったです。後は学歴への比重が比較的小さい業界とは言え全くゼロかというとそうではないと思うのでそこらへんも少しは役に立ったのではないかと思います。後は今研究でやってるNLPに関連する職種を意識して選びました。勿論好きというのもありますが、研究で対象にしている分野を選ぶのは自分にとっても企業にとっても専門性という点でメリットが大きいんじゃないかと思います。

 

・バイトでの開発経験

正直研究内容よりこっちの方が全体的にウケがよかった気がします。僕が研究でやっていることは説明こそしやすいのですが実社会への応用を強く意識しているわけではないのでその点会社での開発経験はそこら辺がすでにgivenな分就活という点においては強い気がします。特にガチガチ研究だけ行う職種でない場合、何かしらのチーム開発経験であったりソフトウェア開発経験などはあるに越したことはないと思います。まあでも受ける職種によるとは思います。

 

・言いたいことをある程度伝えられる

コミュ強ってわけでは決してないのですが、知らない人たちの前で話すことに一切の緊張がない人間なので言いたいことをうまく伝えられないということはなかったかなと思います。ただもちろん準備していないことをスラスラと言えるわけではないので事前に企業HPであったり就活サイトであったりで準備はまあまあやりました。それでも準備していない質問を聞かれることはままあるので、そういう時は事前に準備しているものであったりとか自分が強いフィールドにうまいことスライドさせていくことを意識しました。

 

よくなかった点

・自発的な実績がない

競技プログラミングで世界大会に行ったわけでもなく、アプリの開発経験もOSSへのcontributionもない人間なので自発的な貢献をESなどに書かなくてはいけない時には何も書くことがありませんでした。論文の投稿実績もないのでインターン落ちまくってたのはそこら辺が原因なのかなと思います。こんなこと言ってもマジでしゃあないですがもう少し真剣にCSに取り組んでればな〜と思わないこともないです。一年のサーオリでTSG見に行ったものの難しそうすぎてしっぽを巻いて逃げ出したのも良くなかった気がする。

 

競技プログラミングの経験が少ない

先程のものと被りますが現在のIT系の就活では競技プログラミングの経験があって悪いことはひとつもないのでもう少し早めからちゃんと勉強しておけばよかったなと思います。競技プログラミング偏重に疑問を投げかけている方もいますが僕は少なくともそんな疑問を投げかけられるレベルにすら達していないなと見てて思います。個人的にはAtcoderやLeetcodeは勿論、コーディングインタビューではCS系の知識を問われるような問題も出るのでそこら辺も準備しておいた方がいいかと思います。

 

・情報共有があまりできなかった

学科や専攻にあまり友達がいないのでそこらへんの情報共有ができませんでした。専攻のSlackに就活チャンネルが作られたりしたのですが(ありがたい...)、同じ専攻といえど分野が違うと受ける企業も微妙に違ったりするので研究室や研究分野が同じ人と友達になって色々情報交換するのが一番いいような気がします。これはコロナとか関係なく僕の性格と怠慢です。

 

まとめ

インターン全落ちしたりしましたが最終的には自分の実力以上のところに内定いただけて非常にありがたかったです。この時期だとインターン受ける人が多いので一喜一憂することもあるかと思いますが僕みたいに全落ちしても内定がもらえる例はあるので、月並みな意見ですが自分の長所を伸ばして短所は何かしらでカバーして頑張ってください。あとこの記事見直して良くないなと自分で思う部分あったらサイレントで書き換えますが気にしないでください。