なぜ人々はいつもJava要件がますます高くなっているといつも言うのですか?理由は何ですか?

私はいつもxxxのますます高い要求を聞きます。実際、長年の私のキャリアを振り返ると、頻繁な面接担当者として、私は公平であることがわかります。スキル要件はそれほど変わっていません。

分散型、高並行性、マルチスレッディング、スプリングブート、スプリングクラウド、Hadoop、Sparkなどのテクノロジーが無限の流れで出現していることに異議を唱える必要があるかもしれません。新しい開発者として、Yunyunに遅れずについていく必要があります。これらの技術用語には、道教レベルよりも多くの技術レベルが必要です。次に、インタビュー中にJava R&Dエンジニアの要件について話し、要件が高くなっているのか、要件を満たしていない人が多すぎるのかを確認します。

1.データ構造とアルゴリズム。単純なアルゴリズムとデータ構造をマスターする必要がありますか?このリクエストは過剰ですか?プログラマーとして、配列とリンクリストの2つの基本的な構造さえ理解していない場合、何を理解する必要がありますか?バランスバイナリツリー、赤黒木、ハッシュテーブル、ヒープ、バケット、グラフなど。複雑なデータ構造については?単純なバブリングと選択によるソートは手に入れるのが難しいマスターです。彼は、高速ソート、挿入、ヒル、ヒープソート、双方向マージ、双方向マージ、バケットソート、カウント、基数などについて聞いたことがあると思います。非常に基本的なものですか?時と空間の複雑さを知っている人はアミタバ...

2.オペレーティングシステム。Linuxの基本的なコマンドをいくつ知っておく必要がありますか?メモリ割り当て、プロセス、およびスレッドスケジューリングの基本概念を少し理解する必要がありますか?多くのソフトウェアは、実装時に多くのオペレーティングシステムの設計思想を参照しています。

3.データベースレベル。いくつかの主要なパラダイムの定義を理解します。データベーストランザクションのACIDを常に理解できますか?分離レベルの細分性と残りの問題を知っている必要がありますよね?何年か働いている人もいますが、多すぎませんか?SQLの最適化を行ったことがありますか?主流のMYSQLストレージエンジンの違い、いくつかのインデックスとアプリケーションシナリオの違いは、誰と同じくらい珍しいはずですか?テクニカルドッグとして、あなたはデータベーストランザクションの実装について何か知っているべきですよね?2フェーズ提出と3フェーズ提出を知っていますか?あなたがどれだけ知っているかはあなたの個人的な深さに依存します。

上記は一般的なレベルのものです。あなたがプログラマーであると言う限り、あなたは知っておくべきです。次に、Javaに関連するものを分解してみましょう。

1.コレクションに関して:マップ、セット、リストのさまざまな概念を常に知っている必要がありますか?データ構造は重要だと思いますか?特定の実装クラスについてお伺いします。簡単なのはHashMap HashSet ArrayListで、どれだけ話せるかを確認します。可能な場合は、少し興味深いトピックHashTable、CurrentHashMap、TreeSet、LinkedHashSet、LinkedArrayList、BlockingQueueとそのさまざまな実装に変更します。どのくらい教えてくれますか?これらの要件は実際にはそれほど多くありません。Javaに関与している人は、これらが通常のインタビュールールであることを恐れていますか?

2. IO:BIO \ NIO \ AIOについてどれだけ知ることができますか?このトピックはますます浅くなり、トピックも開かれます。基本的なIO操作、実装メカニズム、設計パターン、さらにはオペレーティングシステムのさまざまなスケジューリングについて、また、mina、netty、Grizzlyについてもお話します。 、私はすぐにあなたの深みを見つけることができると思います。これらは役に立たないと言ってはいけません。rpcフレームワークの例外スタックは、基本的に上記の3つの点でスローされます。

3.マルチスレッド:これで逃げることができると思いますか?スレッドのライフサイクル、同期と非同期の違い、いつ同期が必要か、いつ非同期が必要か、スレッドのスケジューリング方法、並行プログラミングについて話し合う、同時実行性が必要な理由、その対処方法、どの並行性の問題に対処し、真実を伝える、アプリケーションシナリオがないことは言うまでもなく、プライマリとセカンダリのビジネスプロセスがあることは誰もが知っているので、メインプロセスに影響を与えないセカンダリプロセスの場合、非同期に処理していなければ、過去に使用したシステムは実際には少しハハですアップ。

4.仮想マシンに関するこれらのこと:Javaはすべて完了しました。仮想マシンに関するいくつかのことを知っておく必要がありますか?JVMメモリモデル、ガベージコレクションメカニズム、およびガベージコレクターがさまざまなメカニズムでどのように機能するかについては、まだ知っています。JVMバイトコードは厳しすぎるため、通常は必要ありません。いくつかのスキルを披露する必要がある場合は、要求を満たす必要があります。全員がうまくいけば、目標を達成できるといいのですが。

5.まだいくつかの基本的なものが必要です:httpプロトコル、httpsプロトコル、DNS解決プロセス、サーブレットとは何ですか?ライフサイクルとは何ですか?リクエスト/レスポンスの違い、セッション/クッキーの違いの実装メカニズム、リダイレクト/フォワードの違いについて簡単に説明できますか?これらは基本的な知識です。ウェブ開発について知らない場合、何をしていますか?

6.プログラミングフレームワーク:Web開発に携わっている場合、SpringMVCの仕組みなど、Webフレームワークの実行プロセスについて説明する必要があります。自分でWebフレームワークを実装できますか?どうすればアイデアを得ることができますか?自炊用のスプーンがどのように機能するかを理解する必要がありますか?もちろん、要件が高くなっており、過去に問題が置き換えられることは言うまでもありませんが、Struts Webwork springMVCの実行プロセスについて教えていただけますか?違いは何ですか?なぜstrus2は言及されていないのですか?すでに尋ねられているからです。

7. Springが関与したので、IOC \ AOPの実現原理はどのようにして生まれましたか。Beanの範囲、サービスの伝播メカニズム、分離レベルは、基本的にまだ尋ねる必要がありますか?反省、エージェントで何が起こっているのか理解することは不可能です。JDKのcglibのaspectJをプロキシするいくつかの方法についてどのくらい知っていますか?フレームワークを放棄して、クラスベースのエージェントを自分で実装する方法はありますか?mybatisをご存知ですか?jdbcに関すること、データベース接続プールに関することを聞いたことがあるかどうかに関係なく、チャットへの関心を高めることができる限り、話し合う必要があります。春のブーツについてはまだお話ししていませんが、上記を十分に理解していて十分です。

8.一般的な性質のいくつか:有名なApacheを知っていますか?Webサーバーとアプリケーションサーバーの違いを知っていますか?あなたは今までにngnixで遊んだことがありますか?ngnixで何をしていますか?キャッシュについて聞いたことがありますか?遊び方?ブラウザー側からバックエンドまでのさまざまなキャッシングレイヤーをどのように操作しますか?戦略はどのように決定されますか?分散キャッシュについて聞いたことがありますか?Memcachedとredisがプレイされています。つまり、多くのトピックなどがあります。

9.分散のいくつかの概念:なぜ分散されているか知っていますか?分散の古典的な問題は何ですか?アプリケーションをステートレスでグローバルに一意なIDをより簡単な方法で実装する方法(スノーフレークアルゴリズムのような悪路については話さないでください。これは、組織では2つの文と見なされ、実際にはAmitabhaです。おめでとうございます) 、負荷分散の概念はありますか?実行する方法?高可用性を実現するには?分散環境で一貫性を確保するにはどうすればよいですか?メッセージミドルウェアで遊んだことはありますか?それらが何であるか、実装の違いはどこにあるのか、そしてなぜ使用されているのか知っていますか?分散環境でサービスの信頼性を確保するにはどうすればよいですか?雪崩の問題にどう対処するか?浸透問題にどのように直面するか?春の雲に関連するトピックを含むがそれに限定されない、分散された問題のどの側面が解決されたか、それらをどのように解決するか、そして戦略は何ですか?問題は、それがあなたの深さに依存するということです。

全体として、問題はもう少しDaoレベルであり、もう少し原則的な性質であり、原則はそこにあり、技術レベルは急速に変化しますが、要するに、それはすべてDaoの特定の問題を解決することです。アートのレベルを理解していれば、せいぜいテクノロジーに興味があるだけです。これは良いことですが、タオは常にそこにいる必要があります。核となるものは10年前と同じで、常にそこにあります。

最後に、現在Javaも学習していて、Javaの入門学習中に学習方法、学習ルート、学習効率などに関する質問に遭遇した場合は、私のJava初心者学習交換スカートに参加するために申し込むことができます:Java初心者学習コミュニケーションスカートでJavaの学習を始めたばかりの初心者も多く、Javaテクノロジ開発に携わっている大物もいます。理解できないことはいつでもコミュニケーションできます。スカートファイルでJavaテクノロジを実行する時間もあります。いくつかの学習マニュアル、インタビューの質問、開発ツール、PDFドキュメント、本のチュートリアル。

おすすめ

転載: blog.csdn.net/weixin_46898270/article/details/108334581