ステージ 1. トレーニング
私は、適切な月額料金表、教材の明確な構造、多くの練習、そして私自身のコミュニティの存在を意識して JavaRush に来ました。最初の点はすべて明らかですが、構造のない言語を学習するのは非常に困難であり、そのようなトレーニングを行うと、確実に Java コアに重大なギャップが残ることになります。 インタビューや技術仕様の経験から、「コア」に関する質問は、ジェネリックのビット単位のシフトやキャストから IO やシリアル化に至るまで、あらゆることに使用できることがわかります。練習は必須です。自分で書いたとしてもまだ半分しか理解できず、覚えていません。さて、コミュニティ: あなたは問題を解決しました - コメントでそれを自慢してください。まだ決めていない場合は、質問することはできますが、既成の解決策を提供してくれる人はおそらくいないでしょう。そして、コースを終了した後でも、無料トピックのカスタム記事に戻りました。そこには、始めるのに役立つものがたくさんあります(特に、ステップバイステップの例と面接用の質問を使用したフレームワークの最初の経験)。一般に、私はこのプロジェクトに基礎を提供してもらったことに感謝していますが、JavaRush だけに依存するつもりはありません。同じ Shildt の何よりも素晴らしい点は、研究対象のトピックに「重なって」おり、いくつかの点を明らかにしていることです。時には理論を先取りして Google に頼らざるを得ないタスクについては、レビューですでに多くのことが述べられています。私にとって、これはマイナスというよりプラスです。そして、今の状況が私が勉強していたときと同じであるという事実はありません。 私と同じように Java を「ゼロから」始める人への即時のアドバイス: ある段階で退屈したり難しくなったりするかもしれません。-
ゼロから始めるのは誰にとっても大変です。コースの最後まで到達できるのはわずか 5% の人だけです。あなたの使命は、その一員になることです。
-
1 ~ 2 か月後、タスクがより難しくて面白くなってきたので、興味を持ち始めました。我慢して。
- 主なものは毎週の進捗状況です。2 週間休んだ後は、復帰するのがすでに困難です。また、誰もが数か月間続けて毎日書くことができるわけではありません。週の時間制限を自分に与えます (たとえば、15 時間)。平日は毎日 1.5 時間コードを書き、両週末にさらに 3 ~ 4 時間コードを書くことも、数晩休暇を取ることもできますが、「週末の制限」により、増加。こうすることで、スケジュールは柔軟ですが規則的になります。もちろん、タスクやプロジェクトごとに作業を測定することは可能ですが、構文レベルとカーネル レベルでは時間で十分です。
ステージ 2. 独学
それで、私はインターンシップには参加できませんでした。グループへの採用が終了するまで、技術要件については数日しか残しておらず、要件を理解する時間がありませんでした。なじみのない単語が多すぎました。なぜなら あと 3 か月も待ちたくなかったので、自分で先に進むことにしました。幸いなことに、すべての人気のあるフレームワークのガイドとビデオ チュートリアルがあります。次の数か月間、私は Spring MVC、Spring Boot + Data、Spring Security、Hibernate、jUnit、Maven、Git、RDBMS を扱い、SQL をマスターし、それらすべてを 1 つの全体にまとめようとしました。6 か月後、今見ると恐ろしいプロジェクトがありましたが、潜在的な雇用主の要求に応じて公開できる「アダルト」フレームワークと GitHub を使用する実践的な経験を積みました。 アドバイス:-
.gitignore について学ぶのは早ければ早いほど良いでしょう。;)
-
多くのガイドには、複数のフレームワークが一度に含まれています。これを使用して独自のものを追加してください。Maven + Spring Boot + Data を使用してオンライン ストアを作成し、認可、単体テスト、ロギングを追加しました。
-
Web プロジェクトの場合は、インターネットから無料のフロントエンド テンプレートを取得できます。これらのテンプレートを使用すると、作業がより快適になり、Git の README のスクリーンショットとして見栄えが良くなります。同時に、HTML と CSS を覚えることができ、スタイルやレイアウトを修正したくなるでしょう。
私に足りなかったもの(その後面接中に火傷を負ってしまいました)
-
アルゴリズム。私の間違いを避けるために、私はすぐにロシア語の短い本「Grocking Algorithms」を勧めます。アルゴリズムの複雑さ、アルゴリズムの構成、クイックソートでは不十分な理由、グラフ理論の入門など、すべてが最もわかりやすい言語で説明されています。
-
「ボンネットの下」のコレクション。これが JavaRush にあったかどうかは覚えていませんが、HashMap.get() がどのように機能するか、または HashSet が要素の順序を保持することが保証されていない理由を知ることは役に立ちます。繰り返しますが、どのコレクションがスレッドセーフであるか、そしてその理由を説明します。
-
SQL。少なくとも JOIN までは必要です。JOIN とは何なのか、どのように機能するのか、2 つのテーブルに SELECT をその場で紙に書く能力が必要です。www.sql-ex.ru をお勧めします。1 ~ 2 日で目的のレベルに到達できます。
-
Spring Core: どのような種類のアノテーションがあるか、コンテキストとは何か、Bean がどのように作成されるか、どの Bean スコープがスレッドセーフであるか、および相互注入を解決する方法 - すべてのインタビューの質問。ページの返し方、JSONの返し方など。私は現在、ロシア語で『Spring 5 for Professionals』を読んでいますが、一般的には『Spring in Action』が推奨されています。
ステージ 3. 就職活動
実際、在宅プロジェクトを完了してから最初の数か月で、さまざまなジュニア/研修生の求人に (HH、LinkedIn、人材紹介会社を通じて) 約 30 件の返信を送りましたが、結果はほぼゼロでした。私は未経験の求人のみに焦点を当て、自分に馴染みのあるスタックを正直に示し、カバーレターに自分の学習能力の高さを書きました。その結果、電話は 2 件あり (そのうち 1 件は私の初中級レベルの英語ですぐに終わりました)、さらに 2 社が技術仕様書を送ってきました。「会議」は 1 回だけで、その後私は一人で紙に書かれたアルゴリズムの問題を解いていました。その後、人事部は書類を取り上げて「電話します」とだけ言いました。私はいくつかのインターンシップ(無給および条件付有給)を受けようとしました。技術仕様書は作成しましたが、最終的な社会保障を超えることはありませんでした。しかし今では、研修生は間違いなく T-Systems、CFT、Andersen、EPAM によって採用されていると言えます(評価はまちまちなので、自分で判断してください)。私にとって、数か月間収入がなくても死なずに座る機会があるのであれば、この分野に参入するのは良い方法です =) 一般に、この経験の後、私はやや落ち込んで、調査全体を一時停止しましたほぼ 6 か月間、以前のプロファイルで作業を続け、趣味でいくつかのアプリケーションを作成しましたが、Git に投稿することさえしませんでした。ある知人に会うまで、私は欠員に関する失敗について何気なく話しました。当時、彼はすでに中間開発者として働いていましたが、同じように独学で始めました。 知人が私にいくつかのアドバイスをくれました。彼自身もそれを活用し、将来の就職活動に大いに役立ちました。彼らをフォローするかどうかはあなた次第です、なぜなら... 彼らはある意味、完全に正直ではありません。したがって、さらに引用します。-
インターンシップ、卒業プロジェクト、フリーランス、リモートワークなど、いずれにしても、6 か月以上の商業経験を履歴書に記入してください。これは、人事部による履歴書の最初の審査の段階で非常に役立ちます。
-
履歴書から「ジュニア」と「期待給与」という言葉を削除します。Java 開発者としてそのままにし、金額については各企業と個別に話し合ってください。
-
あなたの期待値を言う前に、人事部に提案された給与の「フォーク」の名前を言ってもらうようにしてください。企業が 80,000 ~ 120,000 を提示し、あなたが 40,000 以上を求めている場合、一部の選考者はあなたを軽蔑するでしょう。
-
1 ~ 3 年の商業経験が必要な場合でも、あなたのスタックに合ったすべての求人に応募してください。
-
履歴書には、これまでに取り組んできた言語、テクノロジー、フレームワーク全体を含めてください。
-
LinkedIn に登録してください - さまざまな企業の人事担当者が本当にたくさんいます。プロフィールを慎重に記入してください。実際、これはあなたの履歴書でもあります。連絡先のネットワークを構築するには、プロフィールに関連する LION を追加します。LION はすべてのユーザーからのリクエストを受け入れます。
-
無料の Java テストに挑戦してください。多くの場合、ジュニアの面接の前に紙でテストが行われます。事前に準備しておくと良いでしょう。
-
彼らはいつもコレクションについて尋ねます。どのコレクションがあるのか、どのように違うのか、いつ使用するのが最適なのかなどです。
-
常に抽象クラスとインターフェイスを使用します - メソッド、フィールドを持つことができるか、どれを継承できるか、など。
-
ほとんど常にマルチスレッドを使用します。仕事で使用したもの、キーワード、メソッドなど、util.concurrent についてよく知っていますか。
-
メモリを扱うとき、ヒープ、スタック、これらの文字列は等しいか、これらのオブジェクトはなぜ等しいか、などを扱う場合によくあります。
-
時にはアルゴリズムについて、どれを知っていますか、どのような複雑さ、なぜ今からアルゴリズムを書けるでしょうか。
-
場合によっては、パターンに基づいて、どのパターンを知っているか、どのパターンを使用するかに基づいて、シングルトンまたはファクトリーを作成します。
-
SQL では、JOIN の種類、トランザクションとは何か、JDBC でのトランザクションの実行方法、短いクエリを作成することがあります。
-
新しいレコードを編集および追加できる Salesforce プロフィールのビジネス連絡先ページ。
-
コンソール制御を備えた Spring State Machine を使用した、高層ビルのエレベーターのシミュレーション。
-
LibGDX ライブラリに基づいた Android アプリケーションで、ボタンが押されたときに 1 文字ずつテキストが出力されます。
-
HTTP リクエスト経由でクライアントを追加し、JSON を返すカーシェアリングの REST 模倣。
-
フリーセルを通じて無向グラフをソートする問題。
-
ファイルの座標を使用して二等辺三角形を検索します。
-
Stream APIを使用した完成したコードのリファクタリング。
-
三項式をサポートする UI 計算機。
-
結果をファイルに書き込むスレッドの競合。
-
タスクを完了するだけでなく、コードが OOP 原則に準拠していることを確認するようにしてください。
-
コードの効率を確認してください。私は、BufferedWriter の代わりに PrintStream を使用したことが原因で一度拒否されました。
-
実行時間は 50% の余裕をもって計画してください。締め切りの朝 8 時に git Push を実行するよりも、早めに開始して終了する方が良いでしょう。
GO TO FULL VERSION