文系から独学で長期インターンを獲得した方法【学習方法と面接対策】
はじめに
今回の記事では、文系出身の私がほぼ独学で長期インターンを獲得するために行った勉強方法と面接対策についてまとめていきます。
当時の私のレベル感
大学では文系学部に在籍しながら、情報学部の科目をいくつか履修しました。しかし、理論的な科目や数学的な科目が多かったため、アルゴリズムとデータ構造は少し分かるけど、プログラミング力は決して高くはなく、Pythonを少し書くことができるくらいのレベル感でした。この状態で長期インターンに応募した際は、書類選考落ち、または書類選考は通過しても面接で落ちるという状況で、以下の勉強を行った結果、長期インターンの採用をいただくことができました。
学習方法編
学習ステップは大きく2つのステップに分けられます。
- プログラミングとCSの基礎を固める
- web開発の学習
下記では、これらについて詳しく見ていきます。
Step1: プログラミング・CSの基礎を固める
使用した教材: Recursion
プログラミングとCSの基礎を学習するために、Recursionというオンラインサービスを使用しました。Recursionのコンピュータサイエンスの基礎の初級・中級・上級とOOPのコースをまずは一周しました。最初はpythonで進め、中級の途中からJavaで進めました。そして、一周し終わった後、CS中級・上級、OOPをJavaでもう一周して復習しました。
Step2: web開発の学習
Step1を終えた後、web開発の基礎を学習するために、Webを支える技術を読みました。この書籍の1-9章あたりを重点的に読みました。その後にUdemyの講座を通して、Spring BootとReactを使用したwebアプリを2つ作成しました。そして、Udemyの講座とは別に、個人でもう一つwebアプリを作成してから長期インターンに応募しました。
この段階でGitを学習したことで、Gitを使用した開発経験を積むことができたこともよかったです。そして、データベースもRecursionのデータベースのコースで学習しました。
こちらの記事に、アプリケーションはなんでも良く、一通りCRUDができていれば問題ないと書かれていたので、開発するwebアプリの難易度の指標にしました。
Udemyの講座: Full-Stack Java Development with Spring Boot 3 & React
応募編
自身で一度webアプリを作成した後、長期インターンへの応募を開始しました。使用したのは以下のサービスです。
・ゼロワンインターン
・Infraインターン
・Wantedly
・Indeed
応募し、書類選考を通過するといよいよ面接です。書類選考の際には、GitHubや作成したwebアプリのURLも合わせて提出しました。また、履歴書の提出が求められる企業は少なかった印象です。
面接編
基本的には1回の面接(多くても2回)で合否が決まりますが、コーディング試験・面接を課す企業もあります。
面接対策
これまでの経験を論理的に説明できるようにし、自分の成果物についても深く語れるように準備しました。また、応募する企業の求人やホームページにひと通り目を通し、その会社のサービスや社風・カルチャーの理解に努めました。
コーティング面接対策
対策としてLeetCodeやAtCoderを行う選択肢もありましたが、面接まで時間が限られていたため、使い慣れたRecursionのCS中級・上級、OOPを復習しました。その教材の中で出てくるEasy問題と一部のMedium問題でコーディング面接対策を行いました。
コーディング面接
私が経験したコーディング面接の内容は以下のものでした。
1. AtCoderのBレベルの問題を解く
AtCoderは初めてでしたが、面接官に質問しながら解くことができました。しかし、採用人数が1人だったこともあり、不採用という結果でした。
2. Javaのプログラムを書く問題が3問
1問目:メソッドを理解しているか、2問目:クラス設計、 3問目:2問目の設計を抽象クラスを用いて拡張するという合計3問でした。全ての問題を解くことができ、100点満点という評価をいただきました。そして、採用を勝ち取ることができました。
3. Javaのプログラム、論理問題、要約などの国語的な問題を2時間以内に解く
こちらの求人については、都合により辞退させていただきました。
実際に経験したコーディング面接は2つだけですが、Recursionでの上記の学習方法で十分太刀打ちできるものでした。また、コーディング面接では、このデータ構造を使用した理由は?等の質問をされるので、そういう部分も普段から意識して学習できるといいなと思いました。
面接官から直接聞いたコーティング面接のポイント
コーディング面接後に面接官と少し雑談をする機会がありました。その際に、コーディング面接で実際に見ているポイントを教えていただきました。問題が解けるかも大事だけど、分からない時に質問できるか、など今後一緒に働いていく際に必要な部分を見ているとのことでした。
その他
長期インターン獲得までの勉強時間
正確には測っていませんが、長期インターンの採用をいただくまでに約700-800時間学習に費やしました。JavaでCSやweb開発の勉強をしてきたため、可能であれば長期インターンでもJavaを使用したバックエンド開発業務に携わりたいと考えていました。また、Javaの求人が多くないことや、Javaの求人はwebアプリの開発経験を推奨しているものが多かったため、800時間ほどかかりました。(長期インターンでの開発言語にこだわりすぎる必要はないと思います。)しかし、初心者でも企業独自の教育課題をクリアすれば採用をいただける場合など色々な求人があるので、そういった企業に応募することも選択肢の一つだと思います。
面接で聞かれたことリスト
- 自己紹介してください
- 志望動機は? なんでうちの会社?
- 弊社のサービスを説明してください。
- なんで文系からCSに興味を持った?
- 今は何を勉強している?
- 二分探索の時間計算量は?(今はアルゴリズムとデータ構造を勉強していると答えたら)
- うちの会社では何をしたい?
- どのように業務に貢献してくれる?
- 何の教材で勉強した?
- 作成したwebアプリはどういうアプリ?(ポートフォリオを提出していたので)
- そのwebアプリの開発時に大変だったこと、こだわったポイントは?
- インターン中にある程度自分で知識のキャッチアップをしていく必要があるけど、独学でやっていける?
- インターン中に、技術的に分からないことがあったらどうする?
- インターン中に、人間関係のトラブルが生じたらどうする?
- 得意なことと、不得意なことは?
長期インターンの合格率は10%!?
インターネットで長期インターンの合格率と検索すると、合格率10%程度という記事をよく見かけます。自分の肌感からもこの数値は当てはまっていると思います。というのも、私はこれまで長期インターンに合計で10社ほど応募してきました。全くプログラミングができなかった時に2-3社に応募し書類選考落ち、そしてRecursionで勉強を始める前に4-5社ほど応募し、3社と面接を行い不合格。そして、RecursionでCSの基礎を固めweb開発の勉強をした後に2社と面接し、1社から採用をいただくことができました。
この経験から、応募して受かればラッキー、不採用だとしても次の面接に活かせるポイントが見つかったしいい勉強になった、という感じで複数社応募していくのがいいかなと思います。
おわりに
長期インターンでは、バックエンドを中心としたwebアプリ開発に携わっていく予定です。今後は、実務と理論を同時に進めていくことで、CSの理解をさらに深めていきたいと思います。今回の記事が文系からエンジニアを目指している方の参考になりましたら幸いです。何か質問等ございましたら、私の答えられる範囲にはなりますが回答させていただきます。
Discussion