この記事を書く目的は、Javaを長年使用してきた私の経験のいくつかを要約し、Javaをよりよく学び、使用できるように、ある程度の経験を提供することを望んでいます。
この紹介の主な内容は、J2SEに関連する部分です。また、今後、JavaでのJ2EE関連およびさまざまなフレームワーク関連のコンテンツをいくつか紹介します。
長年のJava開発と、Java開発者へのインタビューの経験を組み合わせた後、J2SEの主な目的は次のコンテンツを習得することだと思います。
1.JVM関連
Javaを初めて使用する場合は、JVMの知識を深く理解する必要はありませんが、JVMの概念を簡単に理解するだけで十分です。
ただし、Javaの経験が3年以上ある上級開発者にとって、JVMを知らないことはほとんど受け入れられません。
JVMはJava操作の基礎であり、JVMについて何も知らない人がJava言語を完全に理解できるとは信じがたいです。
3年以上のJavaの経験を持つ開発者にインタビューしたとき、JVMはほとんど必見の質問でした。
もちろん、JVMは技術的な能力を決定する唯一のインタビューの質問ではありませんが、Java開発能力のレベルを証明することができます。
JVMカテゴリでは、習得する必要のある知識は次のとおりです。
JVMメモリモデルと構造
GCの原理、パフォーマンスチューニング
チューニング:スレッドダンプ、メモリ構造の分析
クラスバイナリバイトコード構造、クラスローダーシステム、クラスロードプロセス、インスタンス作成プロセス
メソッド実行プロセス
Javaのメジャーバージョンによって提供される新機能(簡単に理解する必要があります)
Javaを学びたい場合は、Javaの学習資料をいくつか紹介します。どこでも検索するのに時間を無駄にする必要はありません。Javaのエントリから習熟までのすべての資料をまとめました。これらの資料はすべて私が作成したものです。最新のものその年にまとめられたJava学習ルート、Java筆記テストの質問、Javaインタビューの質問、Javaゼロベースから熟練したビデオコース、Java開発ツール、Java実践プロジェクト、Java電子書籍、Java研究ノート、PDFドキュメントチュートリアル、Javaプログラマー経験、Javaジョブ再開テンプレートなど。これらの資料は、将来Javaを学ぶのに間違いなく役立ちます。これはすべてのJava初心者にとって必須です。自分でダウンロードするには、私のJavaテクノロジーqq交換グループに参加してください。すべての資料はグループに含まれています。 。ファイルでは、あなたが入ったときにあなたと通信し、あなたともっと学ぶ必要があります。
2.Java操作
これは非常に単純に見えるかもしれません。Javaプログラムを実行する方法を誰が知っていますか?
しかし、多くの場合、IDEを介してのみJavaプログラムを実行しますが、基盤となるIDEはどのようにJavaプログラムを実行しますか?多くの人が理解していません。
この知識ポイントは、Java開発者が習得する必要のある最も基本的な知識です。最初の知識は、コマンドラインでJavaプログラムを実行する方法を確実に教えることですが、多くの人がJavaを学び、IDEを使用すると、これを忘れてしまいます。
これを知ることが重要なのはなぜですか?Javaの最も純粋な起動方法を知った後、起動に問題が発生したときに起動されるディレクトリの数、実行の名前、パラメータ、足りないものなどはありませんか。
これは、これらの奇妙で起こりうる環境関連の問題を解決するための実際の開発に役立ちます。
ここで習得する必要のある知識は次のとおりです。
javacはjavaファイルをクラスファイルにコンパイルします
javaコマンドの使用方法、コマンドラインでpackageを使用してjavaクラスを開始する方法
Javaプログラムに関連するさまざまなパス(クラスパス、java.library.path、Javaが実行されるメインディレクトリなど)
3.データ型
これについて言うことはあまりありません。Javaの基本型とオブジェクト型の習得にすぎません。
ボックス化やボックス化解除など、JDKを自動的に変換する方法について詳しく知ることができます。また、ボックス化後の型の同等性の判断を避けるように注意する必要があります。
主な知識ポイント:
基本タイプ:int、long、float、double、boolean。。。
対応するオブジェクトタイプ:整数およびその他のタイプから基本タイプへの変換、ボックス化およびボックス化解除
オブジェクトタイプ:等しい、ハッシュコード
文字列型の特徴
4.オブジェクトと例
この点で、開発者はクラスとインスタンスの概念と、Javaのオブジェクト指向機能の基盤であるそれらの違いを理解する必要があります。
主な知識のポイントは次のとおりです。
クラスとインスタンスの概念
インスタンス作成プロセス:
継承なし:メモリスペースの割り当て、変数の初期化、コンストラクターの呼び出し
継承:静的アクションの処理、メモリスペースの割り当て、初期値としての変数の定義、基本クラス->サブクラスから、定義時の初期化の処理、構築メソッドの実行
注意点:
静的プロパティなどは、基本クラス->サブクラスから初期化されます
デフォルトのパラメータなしの構築方法に関連する機能
5.アクセス制御
これは、Javaカプセル化機能の基盤でもあります。習得する必要があるのは、クラス、メソッド、およびフィールドのパブリック保護されたデフォルトのプライベート変更です。
Javaを学びたい場合は、Javaの学習資料をいくつか紹介します。どこでも検索するのに時間を無駄にする必要はありません。Javaのエントリから習熟までのすべての資料をまとめました。これらの資料はすべて私が作成したものです。最新のものその年にまとめられたJava学習ルート、Java筆記テストの質問、Javaインタビューの質問、Javaゼロベースから熟練したビデオコース、Java開発ツール、Java実践プロジェクト、Java電子書籍、Java研究ノート、PDFドキュメントチュートリアル、Javaプログラマー経験、Javaジョブ再開テンプレートなど。これらの資料は、将来Javaを学ぶのに間違いなく役立ちます。これはすべてのJava初心者にとって必須です。自分でダウンロードするには、私のJavaテクノロジーqq交換グループに参加してください。すべての資料はグループに含まれています。 。ファイルでは、あなたが入ったときにあなたと通信し、あなたともっと学ぶ必要があります。
6.プロセス制御
Javaフロー制御の基本。ただし、一部の構文は必ずしも一般的ではありませんが、必要に応じてそれらを理解して使用する必要があります。
習得する必要がある: if、switch、loop、for、while、およびその他のフロー制御文法。
7.オブジェクト指向プログラミングの概念
これはJavaのコアコンセプトであり、Java開発者は習得する必要があります。
Javaの多くの機能または知識ポイントは、Javaのオブジェクト指向プログラミングの概念に関連しています。
私の理解では、優れた開発者はこれらの機能(知識のポイント)自体を理解する必要があるだけではありません。
また、これらのオブジェクトがJavaのオブジェクト指向プログラミングの概念にどのように反映されているかを知る必要があります。これは、開発者がJavaやその他のオブジェクト指向プログラミング言語の開発言語を習得するのに役立ちます。
ここに簡単なリストがあります。主な知識のポイントは次のとおりです。
3つのオブジェクト指向機能:カプセル化、継承、ポリモーフィズム。
それぞれの定義の概念、反映される特性、およびそれぞれの使用シナリオ
静的多重ディスパッチと動的単一ディスパッチの概念
オーバーロードの概念と使用
継承:インターフェースの複数の実装、基本クラスの単一の継承
抽象化、抽象クラス、インターフェース
ポリモーフィズム:メソッドカバレッジの概念と使用
インターフェイスコールバック
8.静的
静的属性は、Javaの日常の開発でもよく使用されます。静的キーワードに関連する使用法を理解し、abstract、final、およびその他のキーワードと組み合わせて使用できるかどうかなど、他のキーワードと組み合わせて使用する必要があります。
習得する必要がある主なものは次のとおりです。
静的プロパティの定義と使用、およびクラスがロードされたときに初期化する方法
静的メソッドの定義と使用
静的クラスの定義と使用
静的コードブロックの初期化の定義とタイミング
9.基本的な知識のポイント
これは主に、システムによって分類されていないいくつかの散在するいくつかのJava知識ポイントです。
また、日常の開発にも多く使用されています。実際にはこのコンテンツはたくさんありますが、ここでは一時的に要約しているだけです。
含む:
等しい
ハッシュコード
トリング/文字列バッファ
最後の
最終的に
ファイナライズ
10.収集フレームワーク
これはもっと習得する必要のある部分です。Java開発の場合、コレクションフレームワークを使用する必要はないと言えます。これは非常に重要です。ここにまとめられたJavaコレクションの面接の質問と回答について明確にする必要があります。
ただし、ここでの知識のポイントは難しくありませんが、コレクションの内部実装を理解することをお勧めします。これは、1W要素のコレクションなど、さまざまなシナリオで問題を解決するための適切なフレームワークを選択するのに役立つためです。コレクションの特性や内部実装を知っている判断操作が含まれているので、正しい選択をするのは簡単です。
以下のコンテンツがここに含まれています(並行性に関連するものは含まれていません):
コレクションフレームワークシステム:基本的なコレクション、マップ
特定のセット実装の内容、リスト、セット、マップの特定の実装、内部構造、特別なメソッド、適用可能なシナリオなど。
コレクション関連のツール、コレクションなどの使用法。
11.例外フレーム
Javaの開発では、例外にあまり注意を払わない場合があります。例外処理のベストプラクティスについて詳しく説明します。
一般に、例外が発生した場合、それは直接スローされるか、ランダムキャッチの後に、プログラムの全体的な操作に大きな影響を与えません。ただし、エンタープライズレベルの設計と開発では、異常な設計と処理の品質は、システムの全体的な堅牢性に関連していることがよくあります。
開発者にとって、優れたシステムの例外は、多くの例外処理ロジックがいたるところに散らばるのを避けるために均一に処理する必要があります。システムの場合、例外は制御可能で、操作と保守が簡単である必要があります。例外フレームワークは非常に単純ですが、例外処理はエンタープライズレベルのアプリケーション開発全体にとって非常に重要です。例外を適切に処理するには、Javaの例外システムを理解する必要があります。
この部分で習得する必要のある知識ポイントは多くありません。主に次のとおりです。
異常なシステム:
スロー可能
例外
RuntimeException
エラー
RuntimeExceptionと一般的なExceptionの違い、特定の処理方法など。
Javaを学びたい場合は、Javaの学習資料をいくつか紹介します。どこでも検索するのに時間を無駄にする必要はありません。Javaのエントリから習熟までのすべての資料をまとめました。これらの資料はすべて私が作成したものです。最新のものその年にまとめられたJava学習ルート、Java筆記テストの質問、Javaインタビューの質問、Javaゼロベースから熟練したビデオコース、Java開発ツール、Java実践プロジェクト、Java電子書籍、Java研究ノート、PDFドキュメントチュートリアル、Javaプログラマー経験、Javaジョブ再開テンプレートなど。これらの資料は、将来Javaを学ぶのに間違いなく役立ちます。これはすべてのJava初心者にとって必須です。自分でダウンロードするには、私のJavaテクノロジーqq交換グループに参加してください。すべての資料はグループに含まれています。 。ファイルでは、あなたが入ったときにあなたと通信し、あなたともっと学ぶ必要があります。
12. Java IO
JavaのIOは、ファイルの読み取りと書き込みのように単純であるだけでなく、ソケットネットワークの読み取りと書き込みなどのすべての入出力操作も含みます。たとえば、標準のHTTPリクエストでPostのコンテンツを読み取ることも、出力プロセスなどです。
IOの場合、Javaは基本的な入力および出力関連のAPIを提供するだけでなく、操作を簡素化するReaderやWriterなどのAPIも提供します。これは、特定の開発(多数のIO操作を含むプロジェクト)でも非常に重要です。通常、日常の開発で使用されます。これには、ログ、一時ファイルの読み取りと書き込みなども含まれます。
これに関する主な知識のポイントは次のとおりです。
基本的なIOシステムには、InputStream、OutputStream、Reader / Writer、ファイル読み取り、さまざまなストリーム読み取りなど、NIOの概念、特定の使用方法、および使用シナリオが含まれます。
13.マルチスレッドの同時実行性
マルチスレッドは、一般的にJavaでは難しい部分と見なされています。
マルチスレッドは、CPU使用率を効果的に高め、システム全体の効率を向上させることができます。特に、多数のIO操作がブロックされている場合は、Javaマルチスレッドインタビューの質問と回答についてここで明確にする必要があります。
しかし、それは両刃の剣でもあり、うまく使用されない場合、システムはほとんどまたはまったく改善されないだけでなく、複数のスレッド間のデバッグなどの問題も引き起こします。
マルチスレッドには多くのコンテンツがあります。Javaでマルチスレッドを最初に使用する際に習得する必要のある知識のポイントを簡単に説明します。いくつかの高度な機能の使用シナリオを個別に紹介する機会があります。詳細は後で。Javaテクノロジスタックパブリックアカウントの「マルチスレッド」に返信して、一連のマルチスレッドチュートリアルを入手してください。
マルチスレッドの実装と起動
呼び出し可能と実行可能の違い
syncrhoizedとreentrantLockの特性と比較
スレッドプール
実行結果を取得するための将来の非同期方法
並行パッケージ
ロック
14.ネットワーク
Javaは、TCPプロトコルとUDPプロトコルを直接操作できるAPIも提供します。
ネットワークパフォーマンスを強調する必要がある場合は、TCP / UDPを直接通信に使用できます。
これらの関連APIの使用法は、Tomcatなどのソースコードで確認できます。
ただし、一般的にTCPが直接使用されることは少なく、処理にはMINAやNettyなどのフレームワークが使用されます。この分野での開発はあまり行われていないため、詳細は説明しません。
15.日付と時刻の処理
ほとんどすべてのアプリケーションで、時刻と日付の処理をバイパスすることはできませんが、JDK8より前の時刻関連APIの使用は適切ではありません。
その時代には、城田などの時間枠を選ぶことができます。JDK8のリリース後、新しいtime APIは基本的に他のフレームワークの利点を組み込んでおり、すでに直接使用できます。
Java開発者の場合、時間と日付を処理するためにAPIを上手に使用する必要があります。
特定のナレッジポイントはリストされなくなりました。今後、JDK8での日時APIの使用法を要約する特別な記事が作成されます。
16.XML解析/ JSON解析
実際、これら2つのコンテンツはJ2SEのコンテンツではありませんが、日常の開発では、他のプログラムや構成ファイルとの相互作用は、これら2つの形式の分析からますます切り離せなくなります。
ただし、開発者にとって、特定のXML / JSON解析の原則と方法のいくつかを理解できると、プログラムをより効率的かつ堅牢にするために、特定のシナリオごとに適切な方法を選択するのに役立ちます。
XML:DOM解析とSAX解析の基本原則、およびそれぞれの適用可能なシナリオを理解する必要があります
JSON:Jackson、FastJson、Gsonなどの一般的なJSONフレームワークの使用法を理解する必要があります。
17.Mavenの使用法
MavenはJavaのコンテンツではありませんが、Mavenは革新的であり、Java開発に非常に便利です。これらの30個のMavenコマンドに精通している必要があります。
依存関係の導入と管理、開発プロセスの更新とリリース、さらにはバージョンの更新まで、Mavenを使用すると、開発プロセスの複雑さが大幅に簡素化され、多くの時間を節約できます。
MavenはJava開発者の標準になっていると言えます。したがって、私はMavenをJava開発者にとっての基本的な知識ポイントと見なしています。
Javaテクノロジースタックのパブリックアカウントで「Maven」に返信して、Mavenシリーズのチュートリアルを入手してください。将来的には、Mavenの使用などに関する経験とスキルの一部を紹介します。ここでは詳しく説明しません。 。
18.ジェネリック
これはJDK5で導入された新しい概念ですが、実際には構文糖衣です。
Javaコードを書くときは便利です。一般的なアプリケーションやビジネス開発では、Javaコードを使用するだけでよく、ジェネリックスの定義などの操作を必ずしも使用する必要はありません。
ただし、開発にはいくつかの基本的なパブリックコンポーネントが使用されます。必要なときにこの部分を注意深く読むことができます。通常の状況では、単純に使用できます。
19.注釈
また、jdk5の後に導入されたため、メタアノテーションを理解する必要があります。
Springは優れたフレームワークであり、最初からxmlが標準の構成ファイルとして使用されていました。
ただし、Spring 3以降、特にspring-bootの登場後、xml構成ファイルを単純化するためのアノテーションの使用がますます一般的になっています。開発者にとっては、xml構成の時間を大幅に節約できます。
ただし、すべての構成をグローバルに理解して管理できるxmlとは異なり、注釈がさまざまなクラスに分散しているため、すべてのxmlを完全に置き換える方法がないという欠点があります。
一般的な開発者の場合は、注釈を使用するだけです。一部の公的機関の開発者は、注釈の定義と実装を理解する必要がある場合があります。必要なときに注意深く見ることができます。
20. RMI
Java言語の独自のリモート呼び出しインターフェースであるRemoteMethodInvocationは、比較的シンプルで使いやすいです。RMIとRPCの違いの詳細については、ここをクリックしてください。
ただし、言語をまたがる必要がある場合は、それをサポートするためにWebサービスなどの他の方法を使用する必要があります。
一般的に、プログラムはRMIを使用する必要はありませんが、特定の状況で使用できます。プロジェクト内のプログラムのリモート開始と停止を制御するためにRMIを使用しました。
21. JNI
Javaでネイティブインターフェイスメソッドを呼び出すことができるJavaNative Interfaceは、通常、C / C ++コードを呼び出すために使用されます。
Javaでso / dllファイルをロードする際のパスの問題は、インターフェイス自体を呼び出すのに複雑ではありませんが、必要なローカルインターフェイスライブラリをロードするのに多くの時間がかかることに注意してください。
上記は、私の見解のいくつかの簡単な紹介であり、Javaのこれらの基本的な知識と技術的なポイントの紹介です。
これらの内容は、長年にわたるJavaの使用に関する要約から派生しています。コンテンツが完全ではない領域がまだいくつかあり、将来の記事で追加される予定です。
やっと
Javaを学びたい場合は、Javaの学習資料をいくつか紹介します。どこでも検索するのに時間を無駄にする必要はありません。Javaのエントリから習熟までのすべての資料をまとめました。これらの資料はすべて私が作成したものです。最新のものその年にまとめられたJava学習ルート、Java筆記テストの質問、Javaインタビューの質問、Javaゼロベースから熟練したビデオコース、Java開発ツール、Java実践プロジェクト、Java電子書籍、Java研究ノート、PDFドキュメントチュートリアル、Javaプログラマー経験、Javaジョブ再開テンプレートなど。これらの資料は、将来Javaを学ぶのに間違いなく役立ちます。これはすべてのJava初心者にとって必須です。自分でダウンロードするには、私のJavaテクノロジーqq交換グループに参加してください。すべての資料はグループに含まれています。 。ファイルでは、あなたが入ったときにあなたと通信し、あなたともっと学ぶ必要があります。