検索
ホームページJava&#&チュートリアルJava プログラマーにはどのような専門スキルが必要ですか?

Java プログラマーまたはエンジニアの資格を得るには、どのような専門スキルが必要ですか? 面接官は面接前に何を準備する必要がありますか?この記事に掲載されている内容は、履歴書の内容として、または面接中に面接官に話す内容として使用できます。もちろん、この内容を履歴書に記載することもできます。面接では、面接官がこれらの専門スキルを発揮します。この記事は、Java プログラマー (Java エンジニア) のポジションを探している新入生や、中級および上級の Java 開発者を目指すジュニアにとって役立つと思います。

専門スキル

  1. オブジェクト指向プログラミングのための Java 言語の使用に熟練し、プログラミングの習慣があり、コレクション フレームワーク、マルチスレッド (同時プログラミング)、I/O などの一般的に使用される Java API に精通している(NIO) 、ソケット、JDBC、XML、リフレクションなど

  2. JSP とサーブレットに基づく Java Web 開発に精通しており、サーブレットと JSP の動作原理とライフサイクルを深く理解し、JSTL と EL を使用してスクリプトレスの動的ページを作成することに熟練し、リスナーやフィルターなどの Web コンポーネントと、MVC アーキテクチャ パターンを使用した Java Web プロジェクトの開発経験。

  3. Spring の IoC コンテナーと AOP の原則を深く理解し、Spring フレームワークを上手に使用してさまざまな Web コンポーネントとその依存関係を管理し、Spring を上手に使ってトランザクション、ログ、セキュリティなどを管理し、Spring MVC エクスペリエンスを使用したことがあるWeb プロジェクト開発において、プレゼンテーション層テクノロジーとして、Spring によって提供される永続化サポートを使用する Spring の他のフレームワークの統合に精通しています。

  4. Hibernate や MyBatis などの ORM フレームワークの使用に熟達し、Hibernate や MyBatis のコア API に精通しており、Hibernate の関連付けマッピング、継承マッピング、コンポーネント マッピング、キャッシュ メカニズム、トランザクション管理、およびパフォーマンスについて深く理解しているチューニング。

  5. Web フロントエンド開発での HTML、CSS、JavaScript の使用に熟練し、jQuery と Bootstrap に精通しており、Web プロジェクトでの Ajax テクノロジーのアプリケーションを深く理解しており、フロントエンド MVC フレームワーク (AngularJS) を使用したことがある) および JavaScript テンプレート エンジン (HandleBars) プロジェクト開発の経験。

  6. 一般的に使用されるリレーショナル データベース製品 (MySQL、Oracle) に精通しており、データベース プログラミングでの SQL および PL/SQL の使用に習熟しています。

  7. オブジェクト指向の設計原則に精通しており、GoF 設計パターンとエンタープライズ アプリケーション アーキテクチャ パターンを深く理解し、実際の開発での関連経験があり、オブジェクト指向の分析と設計に UML を使用することに熟達しており、TDD (テスト) を持っています。 -駆動開発) と DDD (ドメイン駆動設計) の経験。

  8. Apache、NginX、Tomcat、WildFly、Weblogic などの Web サーバーとアプリケーション サーバーの使用に精通しており、複数サーバーの統合、クラスタリング、負荷分散の構成に精通しています。

  9. 製品プロトタイピング ツール Axure の使用に習熟している、デザイン モデリング ツール PowerDesigner および Enterprise Architect の使用に習熟している、Java 開発環境 Eclipse および IntelliJ の使用に習熟している、フロントエンド開発環境 WebStorm の使用に習熟している、ソフトウェア バージョン管理ツールの使用に習熟しているSVN と Git に加え、プロジェクトの構築および管理ツールである Maven と Gradle の使用に精通しています。

: 上記のすべてのことをよく知っている必要はありません。企業の採用要件に応じて、対応する対象を絞った準備を行うことができます。私個人としては、最初の 6 項目は最低限の要件であり、Java 開発者が備えておくべき専門的なスキルであると考えています。

プロジェクト体験

プロジェクト紹介

このシステムは、Xが委託してYがZのために開発したシステムです。システムにはA、B、C、Dおよびその他のモジュールが含まれています。このシステムは、Java エンタープライズ レベルのオープン ソース フレームワーク E とフロントエンド テクノロジ F を使用します。プレゼンテーション層は G アーキテクチャを使用し、H をビューとして、I をコントローラとして使用し、REST スタイルのリクエストを実装します。ビジネス ロジック層は J パターンを使用し、K を通じてトランザクション、ログ、セキュリティなどの機能を実装し、キャッシュを実装します。 L を介したサービス。永続層は M を使用して CRUD 操作をカプセル化し、最下層は N を使用してデータ アクセスを実装します。プロジェクト全体で P 開発モデルが採用されました。

注: 上記の説明では、通常、E は Spring (Java エンタープライズ開発のためのワンストップの選択肢) を指します。もちろん、F は jQuery ライブラリとそのプラグイン、または Bootstrap フレームワークを指します。シングルページ アプリケーション (SPA) を構築したい場合、最適なソリューションはフロントエンド MVC フレームワーク (AngularJS など) と JavaScript テンプレート エンジン (HandleBars など) です。G は明らかに MVC (Model-View-Control) です。最も可能性の高い実装フレームワークは Spring MVC です。JSF には Struts 2、JSF、および Apache によって提供される MyFaces 実装に加えて、MVC の V として JSP を使用することもできます。また、テンプレート エンジン (Freemarker や Velocity など) を使用することもできます。もちろん、Spring MVC はフロントエンド コントローラーとして DispatcherServlet を提供します。通常はトランザクション スクリプト、K は AOP (アスペクト指向プログラミング) テクノロジー、L は現在 Memcached と Redis が広く使用されています。M には多くのオプションがありますが、最も可能性が高いのは Hibernate と MyBatis です。両方のテクノロジーも使用できます。同時に、追加、削除、変更は通常 Hibernate によって処理されますが、複雑なクエリは MyBatis によって処理されます。また、基盤となるデータ アクセスには従来からリレーショナル データベースが使用されてきました。ビッグデータ時代の到来により、NoSQL (MongoDB、MemBase、BigTable など) や他のビッグ データ アクセス ソリューション (GFS、HDFS など) も使用できるようになりました。 、など); プロジェクト開発モデル P は、ウォーターフォール モデル、ラピッド プロトタイプ モデル、インクリメンタル モデル、スパイラル モデル、ファウンテン モデル、RAD モデル待機にすることができます。

プロジェクト開発プロセス

  1. 実現可能性分析>>>要件分析>>>要件仕様

  2. OOAD (ユースケース図、シーケンス図、アクティビティ図)
  • インターフェイスのプロトタイプ: ビジネス層の設計時に要件を理解し、トランザクション スクリプトを導出するのに役立ちます

  • 設計>>> 概要設計仕様/詳細設計仕様
  • ビジネスの抽出エンティティ (ドメイン オブジェクト): クラス図、E-R 図 (概念設計段階)
    • レイヤード アーキテクチャ: 各レイヤーの技術的な実装計画を決定します (使用するフレームワーク、データベース サーバー、アプリケーション サーバーなどに固有)。ビジネス層の設計: トランザクション スクリプト モード (トランザクション: ユーザーが送信するリクエストはトランザクションです。スクリプト: メソッドまたは関数です。トランザクション スクリプト: リクエストをメソッドまたは関数としてカプセル化します。トランザクション スクリプト モード: トランザクションはスクリプトで開始されます)開始、スクリプトの終了で終了)。ビジネス層に関係するオブジェクトには、トランザクション スクリプト クラス (ビジネス プロセスのカプセル化)、データ アクセス オブジェクト (DAO、永続化操作のカプセル化)、およびデータ転送オブジェクト (DTO、失血/貧血フィールド オブジェクトのカプセル化) の 3 種類があります。トランザクション スクリプト クラスの組み合わせ (集約) データ アクセス オブジェクトの間。どちらもデータ転送オブジェクトに依存します

    • フォワード エンジニアリング (UML クラス図が Java コードを生成する) とリバース エンジニアリング (Java コードが UML クラス図を生成する)

    • データベースの物理設計 (ER 図をテーブル関係図に変換、データベースとテーブルを構築、ツールを使用してテスト データを挿入)

    • コーディング
  • テスト>>> テストレポート/欠陥レポート

  • 単体テスト: ソフトウェア内のテスト可能な最小単位をチェックして検証します。Java では、JUnit ツールを使用して実装できるクラス内のメソッドをテストします。
    • 結合テスト: 結合テストは、アセンブリテストまたはジョイントテストとも呼ばれます。単体テストに基づいて、すべてのモジュールが設計要件に従ってテスト用のサブシステムに組み立てられます。

    • システムテスト: 確認済みのソフトウェア、ハードウェア、周辺機器、ネットワークなどの要素を組み合わせて、情報システムのさまざまな組み立てテストや確認テストを実施し、製品システム全体を検証することを目的としています。要求仕様の定義を満たし、要求仕様との不一致や矛盾を発見し、より完全な解決策を提案します。

    • 受け入れテスト: ソフトウェア製品の単体テスト、統合テスト、システムテストが完了した後、製品のリリース前にソフトウェアテスト活動が実施されます。これは技術テストの最終段階であり、納品テストとも呼ばれます。受け入れテストの目的は、ソフトウェアの準備が整い、エンドユーザーがソフトウェアの意図した機能とタスクを実行するために使用できることを確認することです。

    • 配信とメンテナンス>>> ユーザーマニュアル/操作マニュアル
  • プロジェクト管理
  • バージョン管理: CVS/SVN/Git

    • 自動ビルド: Ant/Maven /アイビー/Gradle

    • 継続的統合: Hudson/Jenkins

    • システムアーキテクチャ

    負荷分散サーバー: F5、A10

    • アプリケーションサーバー:

      • HTTP サーバー: Apache、NginX (HTTP、リバース プロキシ、メール プロキシ サーバー)

      • サーブレット コンテナ: Tomcat、Resin

      • EJB コンテナ: WildFly (JBoss Application Server)、GlassFish、Weblogic、Websphere

    • データベースサーバー: MySQL、Oracle

    サードパーティツール(プラグイン)アプリケーション

    • チャートツール: jQueryベースのチャートプラグイン(jQchart、Flot、Chartedなど) .)、Chart.js、Highcharts など。

    • レポートツール: Pentaho Reporting、iReport、DynamicReports など。

    • ドキュメント処理: POI、iText など。

    • ワークフローエンジン: jBPM、OpenWFE、Snaker、SWAMP など。

    • ジョブのスケジューリング: Quartz、JobServer、Oddjob など。

    • キャッシュ サービス: EhCache、memcached、SwarmCache など。

    • メッセージキュー: Open-MQ、ZeroMQ など

    • セキュリティフレームワーク:Shiro、PicketBoxなど

    • 検索エンジン: IndexTank、Lucene、ElasticSearch など。

    • Ajax フレームワーク: jQuery、ExtJS、DWR など。

    • UIプラグイン: EasyUI、MiniUIなど

    • リッチテキストボックス: UEditor、CKEditorなど。

    インタビューの質問

    • プロジェクトはどの会社のために開発されましたか?プロジェクトへの投資は何ですか?

    • プロジェクト開発には何人が参加しましたか?チーム全体におけるテスター、開発者、プロジェクトマネージャーの割合はどのくらいですか?

    • プロジェクトの開発期間はどのくらいですか?プロジェクトの総コード量はどれくらいですか?コードはどのくらいありますか?

    • プロジェクトはどのような開発モデルまたは開発プロセスを採用していますか?プロジェクトの構造は何ですか?プロジェクトのテクノロジーの選択は何ですか?

    • プロジェクトではどのような責任がありますか?頻繁な会議や残業はありますか?プロジェクト完了後に得られた利益や教訓は何ですか?

    • プロジェクトで最も難しかった部分は何ですか?チーム開発中に遭遇するさまざまな矛盾をどのように解決するか?

    注: 実際のプロジェクトの経験がない人は、51job、Zhaopin、Lagou.com などの Web サイトで Java プログラマーを募集している企業を検索し、その公式 Web サイトを見つけて、その企業が行っているプロジェクトについて学ぶことができます。プロジェクトの詳細な紹介を確認し、いくつかの機能を完成させて、設計とコードが適切であるかどうかを確認するのが最善です。これは、ある程度のプロジェクトの経験を積むことに相当します。

    面接の質問

    Javaの面接でよくある質問を『Java面接質問集』、『Java面接質問全集』、『面接プログラミング質問補足』にまとめ、ブログに記事を続々公開しています。 . インタビューの質問をまとめて公開していきます。

    その他

    よくある間違い

    1. コンピューターで練習するだけ

    2. 行動面接の質問を練習しない

    3. 模擬面接トレーニングをしない

    4. ドン問題解決のアイデアについて大声で語らないでください

    5. コードは十分に厳密ではありません

    6. テストコードを書かないでください

    7. 簡単に諦めてください

    面接中に面接官に質問し直すことができますインタビュー

    1. 私 X テクノロジーを使用していることに気付きましたが、Y の問題をどのように解決しましたか?

    2. なぜあなたの製品は Y テクノロジーではなく X テクノロジーを使用しているのですか?私の知る限り、X テクノロジーには A、B、C などの利点がありますが、問題 D と E もあり、テクノロジー Y は問題 D と E を解決できます。

    3. 私はあなたが話している X テクノロジーについてはあまり詳しくありませんが、それがどのように機能するかについて詳しく教えていただけますか。

    4. あなたのチームはどのようにプロジェクトを計画していますか?定例会議は週に何回ありますか? 1 週間あたりのコードのおおよその量はどれくらいですか?

    5. 問題 X に対して私が思いつく唯一の解決策は Y です。この問題をどうやって解決しますか?

    S.A.R.ルール

    S.A.Rルールとは、まず問題のシナリオを説明し、次にとった行動を説明し、最後に結果を述べるというものです。

    アルゴリズムの問​​題に対する 5 つの解決策

    1. 方法例: 例を通して一般的なルールを発見します。

      例: 円に内接する三角形が鋭角三角形である確率はどれくらいですか?これは、Sogou からの面接の質問です。円上にランダムに 3 つの点を描き、それを結んで三角形を作ると答えがわかります。

    2. パターンマッチング手法

      例: 順序付けされた配列の要素がループを介して移動され、要素の順序は「3 4 5 6 1 2」になります。配列内の要素が異なると仮定して、配列内の最小の要素を見つける方法。この質問は二分探索と非常に似ているので、二分探索アルゴリズムから学ぶことができます。最小の要素は明らかに「中央 > 右」の転換点に現れます。

    3. 単純化された一般化手法

      説明: 問題のサイズとデータ型を単純化し、普遍的な解決策を発見します。

    4. 簡単な構築方法

      例: 「abcde」の考えられるすべての順列と組み合わせを見つけます。最初に「a」のみの場合を検討し、次に「ab」の場合を検討します。最終的には再帰的な式になる可能性があります。このアプローチは、多くの場合、再帰的アプローチに発展します。

    5. データ構造ブレインストーミング方法

      例: いくつかの数値をランダムに生成し、その中央値を見つけます。この種の質問については、頭の中で知っているデータ構造を調べて、どれが最も適切なデータ構造であるかを確認できます。上記の質問では、大きいルート ヒープと小さいルート ヒープの 2 つのヒープを作成できます。小さい要素は大きいルート ヒープに配置され、大きい要素は小さいルート ヒープに配置されます。2 つのヒープのバランスが崩れている場合は、それらを取得することができます。ヒープの 1 つから要素を別のヒープに入れるだけです。最終的な中央値は、2 つのヒープのルートの 1 つである必要があります。

    雇用交渉

    1. 自信を持って、具体的な給与要件を提示してください

    2. 予想より少し高い金額を提示してください

    3. 給与だけに注目しないでください(多くの企業は給与の支払いを望んでいます)給与以上の条件を譲歩する)

    4. 最も適切な方法を使用する(電話やメールで給与交渉を試みても良い)

    自己評価

    1. 学習能力(IT 業界の人々に求められる) 新しいテクノロジー、ツール、手法を継続的に理解する)

    2. チーム意識 (IT 業界は個人の英雄主義よりもチームワークを奨励する)

    3. ストレス耐性 (多くの IT 企業の労働強度は比較的高いもの 大きいもの)

    Javaを学習している学生は注意してください! ! !

    以上がJava プログラマーにはどのような専門スキルが必要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    Javaがクロスプラットフォームデスクトップアプリケーションを開発するための人気のある選択肢なのはなぜですか?Javaがクロスプラットフォームデスクトップアプリケーションを開発するための人気のある選択肢なのはなぜですか?Apr 25, 2025 am 12:23 AM

    javaispopularforsoss-platformdesktopapplicationsduetoits "writeonce、runaynay" philosophy.1)itusesbytecodatiTatrunnanyjvm-adipplatform.2)ライブラリリケンディンガンドジャヴァフククレアティック - ルルクリス

    Javaでプラットフォーム固有のコードを作成する必要がある場合がある状況について話し合います。Javaでプラットフォーム固有のコードを作成する必要がある場合がある状況について話し合います。Apr 25, 2025 am 12:22 AM

    Javaでプラットフォーム固有のコードを作成する理由には、特定のオペレーティングシステム機能へのアクセス、特定のハードウェアとの対話、パフォーマンスの最適化が含まれます。 1)JNAまたはJNIを使​​用して、Windowsレジストリにアクセスします。 2)JNIを介してLinux固有のハードウェアドライバーと対話します。 3)金属を使用して、JNIを介してMacOSのゲームパフォーマンスを最適化します。それにもかかわらず、プラットフォーム固有のコードを書くことは、コードの移植性に影響を与え、複雑さを高め、パフォーマンスのオーバーヘッドとセキュリティのリスクをもたらす可能性があります。

    プラットフォームの独立性に関連するJava開発の将来の傾向は何ですか?プラットフォームの独立性に関連するJava開発の将来の傾向は何ですか?Apr 25, 2025 am 12:12 AM

    Javaは、クラウドネイティブアプリケーション、マルチプラットフォームの展開、および言語間の相互運用性を通じて、プラットフォームの独立性をさらに強化します。 1)クラウドネイティブアプリケーションは、GraalvmとQuarkusを使用してスタートアップ速度を向上させます。 2)Javaは、埋め込みデバイス、モバイルデバイス、量子コンピューターに拡張されます。 3)Graalvmを通じて、JavaはPythonやJavaScriptなどの言語とシームレスに統合して、言語間の相互運用性を高めます。

    Javaの強力なタイピングは、プラットフォームの独立性にどのように貢献しますか?Javaの強力なタイピングは、プラットフォームの独立性にどのように貢献しますか?Apr 25, 2025 am 12:11 AM

    Javaの強力なタイプ化されたシステムは、タイプの安全性、統一タイプの変換、多型を通じてプラットフォームの独立性を保証します。 1)タイプの安全性は、コンパイル時間でタイプチェックを実行して、ランタイムエラーを回避します。 2)統一された型変換ルールは、すべてのプラットフォームで一貫しています。 3)多型とインターフェイスメカニズムにより、コードはさまざまなプラットフォームで一貫して動作します。

    Javaネイティブインターフェイス(JNI)がプラットフォームの独立性をどのように妥協できるかを説明します。Javaネイティブインターフェイス(JNI)がプラットフォームの独立性をどのように妥協できるかを説明します。Apr 25, 2025 am 12:07 AM

    JNIはJavaのプラットフォームの独立を破壊します。 1)JNIは特定のプラットフォームにローカルライブラリを必要とします。2)ローカルコードをターゲットプラットフォームにコンパイルおよびリンクする必要があります。3)異なるバージョンのオペレーティングシステムまたはJVMは、異なるローカルライブラリバージョンを必要とする場合があります。

    Javaのプラットフォームの独立性を脅かしたり強化したりする新しいテクノロジーはありますか?Javaのプラットフォームの独立性を脅かしたり強化したりする新しいテクノロジーはありますか?Apr 24, 2025 am 12:11 AM

    新しいテクノロジーは、両方の脅威をもたらし、Javaのプラットフォームの独立性を高めます。 1)Dockerなどのクラウドコンピューティングとコンテナ化テクノロジーは、Javaのプラットフォームの独立性を強化しますが、さまざまなクラウド環境に適応するために最適化する必要があります。 2)WebAssemblyは、Graalvmを介してJavaコードをコンパイルし、プラットフォームの独立性を拡張しますが、パフォーマンスのために他の言語と競合する必要があります。

    JVMのさまざまな実装は何ですか、そしてそれらはすべて同じレベルのプラットフォームの独立性を提供しますか?JVMのさまざまな実装は何ですか、そしてそれらはすべて同じレベルのプラットフォームの独立性を提供しますか?Apr 24, 2025 am 12:10 AM

    JVMの実装が異なると、プラットフォームの独立性が得られますが、パフォーマンスはわずかに異なります。 1。OracleHotspotとOpenJDKJVMは、プラットフォームの独立性で同様に機能しますが、OpenJDKは追加の構成が必要になる場合があります。 2。IBMJ9JVMは、特定のオペレーティングシステムで最適化を実行します。 3. Graalvmは複数の言語をサポートし、追加の構成が必要です。 4。AzulzingJVMには、特定のプラットフォーム調整が必要です。

    プラットフォームの独立性は、開発コストと時間をどのように削減しますか?プラットフォームの独立性は、開発コストと時間をどのように削減しますか?Apr 24, 2025 am 12:08 AM

    プラットフォームの独立性により、開発コストが削減され、複数のオペレーティングシステムで同じコードセットを実行することで開発時間を短縮します。具体的には、次のように表示されます。1。開発時間を短縮すると、1セットのコードのみが必要です。 2。メンテナンスコストを削減し、テストプロセスを統合します。 3.展開プロセスを簡素化するための迅速な反復とチームコラボレーション。

    See all articles

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    PhpStorm Mac バージョン

    PhpStorm Mac バージョン

    最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

    AtomエディタMac版ダウンロード

    AtomエディタMac版ダウンロード

    最も人気のあるオープンソースエディター

    WebStorm Mac版

    WebStorm Mac版

    便利なJavaScript開発ツール

    SecLists

    SecLists

    SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

    EditPlus 中国語クラック版

    EditPlus 中国語クラック版

    サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません