ジュニア Java プログラマーから資格のあるアーキテクトに成長する方法、または資格のあるアーキテクトがどのような技術知識体系を備えているべきか3 年または 5 年経つと混乱するベテラン プログラマーからよく尋ねられる質問です。この記事が、これまで見た中で最も包括的で信頼できる回答となることを願っています。
1: プログラミングの基礎
C であろうと C++ であろうと、Java であろうと PHP であろうと、資格のあるプログラマーになりたいのであれば、基本的なデータ構造とアルゴリズムの基礎を持っている必要があります。次の記事では、アイデアから実装まで、一般的に使用されるデータ構造と古典的なアルゴリズムを整理します。
1-1 よく使用されるデータ構造
配列、リンクリスト、ヒープ、スタック、キュー、ハッシュテーブル、バイナリツリーなど
1-2 アルゴリズムのアイデア
アルゴリズムの時間計算量と空間計算量の分析と計算
アルゴリズムのアイデア: 再帰、再帰、枯渇、貪欲、分割統治、動的プログラミング、反復、分岐限定
1-3 古典的なアルゴリズム
古典的なソート: 挿入ソート、バブルソート、クイックソート (分割および交換ソート)、直接選択ソート、ヒープソート、マージソート
古典的な検索: 順次検索、バイナリ検索、バイナリソートツリー検索
1-4 高度なデータ構造
B+/B- 数値、赤黒ツリー、グラフなど
1-5 高度なアルゴリズム
グラフの深さ優先検索、グラフの幅優先検索、トポロジカルソート、ダイクストラアルゴリズム (単一ソース最短パス)、ハフマンコーディング、ユークリッド除算、最小スパニングツリーなど
2: Java 言語の基礎
20 年ほど前に誕生した Java 言語は、クロスプラットフォームでオブジェクト指向であり、さまざまな用途に適しているため、Web Web サイト、モバイル デバイス、デスクトップ アプリケーションで広く使用されています。分散コンピューティング機能を備えており、長年にわたり TOBIE で堅固にランクされており、最近ではプログラミング言語ランキングのトップにランクインしています。 Java の傑出した特徴は何なのかをまず明確にする必要があります。
2-1 基本文法
Java構文形式、定数と変数、変数スコープ、メソッドとメソッドのオーバーロード、演算子、プログラムフロー制御、さまざまな基本データ型とパッケージングクラス
2-2 重要: コレクションクラス
Collectionさまざまな List、Set、Queue、Map の実装と統合関係、実装原則
Collection と Array
2-3 その他の JavaAPI
String と StringBuffer、System クラスと Runtime クラス、Date クラスと DateFormat クラス
java.lang パッケージ
java.util パッケージ (コレクションクラスシステム、正規表現、zip、時刻、乱数、プロパティ、リソース、タイマーなど)
java.math パッケージ
java.NET パッケージ
java.text パッケージ (各種
java.securityパッケージ
2-4 オブジェクト指向、インターフェース指向
オブジェクトの3大特徴:カプセル化、継承、ポリモーフィズム、メリットとデメリット
クラスの設計方法、クラス設計原則
this キーワード、final キーワード、static キーワード
オブジェクトのインスタンス化プロセス
メソッドの書き換えとオーバーロード、メソッドとメソッドパラメータの受け渡しプロセス
コンストラクター
内部構造
クラス、抽象クラス、インターフェイス
オブジェクトの多態性 (変換)サブクラスと親クラスの間、親カートンクラスへの参照)、ポリモーフィズムにおける抽象クラスとインターフェースの適用
2-5 JVMメモリモデル、ガベージコレクション
2-6 例外について
Throwable/Error/Exception、Checked Exception vsチェックされていない例外、例外のキャッチとスロー、例外キャッチの原則、finally の使用
2-7 マルチスレッド
スレッドとプロセスの概念
プログラム内でマルチスレッドを作成する方法、スレッドの安全性の問題、スレッド間の通信スレッド
スレッド同期
デッドロック問題の分析
スレッドプール
2-8 IO
java.ioパッケージ、パイプラインモデルに基づいたIOシステムの設計思想と、一般的に使用されるI/Oシステムの特性と使用シナリオを理解するIOクラス。
ファイルと関連クラス、バイト ストリームのInputStreamとOutputStream、文字ストリームのReaderとWriter、および対応するバッファ ストリームとパイプ ストリーム、バイトと文字の変換ストリーム、パッケージ化ストリーム、および一般的なパッケージ化クラスは、IOパフォーマンスの分析に使用されます
2- 9XML
SAX、DOM、および JDOM の長所と短所を理解し、それらのいずれかを使用して XML 解析およびコンテンツ処理を完了できるようにします
2-10 いくつかの高度な機能
プロキシ、ジェネリックス、列挙型、Java 正規表現
2-11 ネットワークプログラミング
ネットワーク通信プロトコルの原則と適用可能なシナリオ、ソケットプログラミング、WEBサーバーの動作原理
2-11 JDK1.5、JDK1.6、JDK1 。 7. 以前のバージョンと比較して、JDK1.8 の各バージョンに追加された新機能と改善点は何ですか
3: データベース関連
データ構造については、簡単に説明しました。データベースは、単純に電子データベースのようなものです。専用のファイル キャビネットは、特定のデータ構造に従ってデータを整理、保管、管理する倉庫です。
3-1 理論的根拠
データベース設計の原則とパラダイム
トランザクション(ACID、動作原理、トランザクション分離レベル、ロック、トランザクション伝播メカニズム)
3-2 さまざまなデータベースの長所と短所の分析、使用シナリオ
MySQL/SQLServer/Oracle および各種 NoSQL (Redis、MongoDB、Memcached、Hbase、CouchDB など)
3-2 SQL ステートメント
データベース作成、権限割り当て、テーブル作成、追加、削除、変更、接続、サブクエリ
トリガー、ストアドプロシージャ、トランザクション制御
3-3 最適化
インデックスの原理と応用、大規模テーブルクエリの最適化、複数テーブル接続クエリの最適化、サブクエリの最適化など
3-4 データベース、テーブル、バックアップ、移行
インポート、エクスポート、データベース、テーブル、コールドスタンバイ、ホットバックアップ、マスタースレーブバックアップ、デュアルマシンホットバックアップ、垂直拡張、水平拡張
3-5 JDBC
JDBC接続、Statement、PreparedStatement、CallableStatement、ResultSet、その他のさまざまな用途
接続プール(構成の使用法、実装)原則)
ORM、DAO
4: JavaWebコア技術(一部フロントエンド含む)
HTML5/Css/jsネイティブ/jQuery
Ajax(クロスドメイン等)
JSP/ JavaBean/サーブレット/EL/JSTL /TabLib
JSF
JSON
EJB
シリアル化と逆シリアル化
ルールエンジン
検索エンジン
テンプレートエンジン
キャッシュ
認証
テスト
クラスター
永続性
静的ページテクノロジーの生成
高性能
セキュリティ
トランザクションJTA
その他、管理JMX、セキュリティJCCA/JAAS、統合JCA、通信JNDI/JMS/JavaMain/JAF、SSIテクノロジーなど、知っておくべきこと
5. 主流のフレームワークとツール
Struts1/Struts2
spring (IoC、AOPなど)、SpringMVC
Persistence: hibernate/MyBatis
Log: Log4j
単体テスト: JUnit
メッセージキュー: ActiveMQ、RabbitMQなど
ロードバランシング: Nginx/HaProxy
Webサーバー: Tomcat、JBoss、Jetty、Resin、WebLogic、WebSphereなど
通信: WebService (cxfのsoap、restfulプロトコル)
キャッシュ: redis、Memcached
ワークストリーム: アクティビティ、JBPM
検索エンジン: lucene、lucene パッケージに基づく solr
テンプレート エンジン: Velocity、FreeMaker
ビッグデータ: Hadoop (HDFS および MapReduce)
ビルド ツール: Ant /Maven
six 、JavaWeb システム設計とアーキテクチャ
Java 設計パターン
JAVA および UML モデリング
サービス指向アーキテクチャ: SOA/SCA/ESB/OSGI/EAI、マイクロサービス
リソース指向アーキテクチャ: ROA/REST
クラウド指向アーキテクチャ: COA/Saas/クラウドコンピューティング
大規模なWebサイトの負荷分散、システムチューニングなど
Seven, More
トラブルシューティング能力:
ができるはず例外情報とおおよその位置に基づいて問題の原因を迅速に特定します
最適化機能
コード仕様とコード管理:
独自のコード仕様システムを持ち、コードは可読です
幅広い知識:
さまざまなネットワーク製品と機能を理解し、あらゆる種類のミドルウェアを理解し、落とし穴がどこにあるのかを知ることができ、さまざまな技術的ソリューションの長所と短所をよく理解し、さまざまなリソースを統合して最適化を達成する方法を知っています。 ... さまざまなテクノロジーとアプリケーションシナリオを理解し、それらを解決するのに十分な実務経験を持っている インテグレーション中に遭遇するさまざまな奇妙な問題
技術管理/テクニカルディレクター:
プロダクト管理、プロジェクト管理、チームビルディング、チーム改善
以上がJava の進歩への道の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。