ホームページ  >  記事  >  Java  >  Java プログラマーにはどのような専門スキルが必要ですか?

Java プログラマーにはどのような専門スキルが必要ですか?

零下一度
零下一度オリジナル
2017-06-27 09:16:191833ブラウズ

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 までご連絡ください。