top 48 spring interview questions
今後の面接の準備に役立つ、最もよくある春の面接の質問と回答のリスト:
この記事では、最も人気があり、広く使用されているSpringFrameworkについて学習します。これには、初心者や経験豊富な専門家向けのSpringFrameworkとSpringMVCの質問が含まれています。ただし、春の部分に入る前に、フレームワークとは何か、なぜフレームワークを追加で必要とするのかを理解しましょう。
簡単に言うと、フレームワークは、特定のアクションを実行するために他のものが来て蓄積するためにすでに構築されている特定の境界として理解できます。
ソフトウェア用語では、フレームワークは、開発モードにあるすべてのアプリケーションをサポートするための多くの機能と機能を含む、すでに開発されている特定のアプリケーションとして定義できます。
SpringFramework
フレームワークには、開発者がアプリケーションを開発するために作成する必要のない既製のクラスとコンポーネントがいくつか含まれているため、コードの複雑さが大幅に軽減され、アプリケーションの保守が容易になります。また、時間を節約できるため、コスト削減が実現します。
春 フレームワークは、サイズが小さく、効果が高いため、軽量フレームワークとして知られています。オープンソースであるため、Javaアプリケーションをシンプルかつ簡単な方法で開発するための強力なインフラストラクチャを提供します。 Hibernate、Struts、EJBなどの他のさまざまなフレームワークをサポートします。
複数のことを同時に達成するために、特定のモジュールに分割されています。 Springモジュールには、コアモジュール、Webモジュール、データ統合モジュール、テストモジュール、AOPモジュールなどが含まれます。各モジュールは、開発者の要件に従って独自の目的を果たします。
この記事では、インタビューの観点から重要な春のすべての重要なトピックをカバーします。
Spring Frameworkとは何か、そのモジュールタイプ、依存性の注入と制御の反転の概念、Beanとそのライフサイクル、Beanのさまざまなスコープ、自動配線の概念、Springでのイベント処理、Spring AOP、Springトランザクション管理について説明します。 、SpringMVCとそのアーキテクチャフロー。
また、スプリングと構成のさまざまなモジュールで使用される重要な注釈、およびスプリングコンテナについても説明します。
非常に重要な概念のいくつかのコード例がここで説明されており、それらは詳細な方法で説明するのに役立ちます。 SpringMVCのサンプル例を参照するための追加のリンクが提供されています。ディスパッチャサーブレットの概念を非常に洗練された方法で説明しました。
この鮮明でポイントツーポイントの回答により、面接の質問のほとんどに自信を持って答えることができます。
最も人気のある春のインタビューの質問と回答
Spring Frameworkの面接で最もよく聞かれる質問を、詳細な回答と例とともに調べてみましょう。
Q#1)フレームワークとは何ですか? SpringFrameworkについて説明します。
回答: フレームワークは、開発者がすでに構築されたクラスとライブラリを使用してアプリケーションに機能を追加するのに役立つ、すでに構築されたソフトウェアです。
Spring Frameworkは依存性注入フレームワークであり、開発者がJavaに基づいてアプリケーションを開発するのに役立ちます。 SpringはJavaEnterpriseのオープンソースフレームワークです。
Q#2)Springが他のフレームワークよりも好まれるのはなぜですか?
回答: 以下の機能により、Springは他のフレームワークよりも優先されます。
- 非常に小さいサイズと軽量
- 制御の反転により、疎結合アプリケーションの実現に役立ちます。
- AOPサポート
- MVCフレームワーク
- 優れたトランザクション管理機能
- 春のコンテナ
- 例外処理
Q#3)SpringFrameworkでさまざまなタイプのモジュールを分類します。
回答: ザ・ SpringFrameworkの5つの主要モジュールを以下に示します。
- コア、Bean、コンテキスト、および式言語を含むSpring CoreContainer。
- AOPとアスペクト。
- JDBC、OXM、ORM、トランザクションモジュールなどを含むデータ統合モジュール。
- Web、サーブレット、ストラット、およびポートレットを含むWebモジュール。
- テスト
Q#4)Spring構成ファイルについて説明してください。
回答: XMLファイルには、クラスに関するすべての情報とその構成プロセス、およびこれらのクラスが他のクラスとどのように相互作用したかが含まれています。
Q#5)依存性注入の概念を説明してください。
回答: まず、インジェクションとは、依存関係を任意の依存オブジェクトに転送することを意味します。
依存性注入は、疎結合アプリケーションの開発に役立つ一種のデザインパターンです。これは、アプリケーションの依存関係を解決するのに役立つ制御の反転の実装です。
自己オブジェクトの作成を回避し、構成を通じてオブジェクトを作成する方法をガイドし、IOCがどのサービスをどのコンポーネントと照合する必要があるかを決定します。
依存性注入は、SpringFrameworkのコア機能です。
Q#6)依存性注入の種類は何ですか?それらを説明します。
回答: 依存性注入には2つのタイプがあります。 それらは次のとおりです。
- 建設ベースの依存性注入 –これは、Springコンテナーが引数を使用してコンストラクターを呼び出し、それぞれが他のクラスに依存している場合に実現されます。
- セッターベースの依存性注入- これは、Beanをインスタンス化するための引数なしでコンストラクターを呼び出した後、SpringコンテナーがBeanのsetterメソッドを呼び出すときに実現されます。
Q#7)どちらを使用するのが良いですか–コンストラクターまたはセッターベースの依存関係?
回答: 状況に応じて、両方のタイプの依存性注入を適宜使用できます。経験則では、必須の依存関係にはコンストラクターベースの依存性注入が使用され、オプションの依存性にはセッターベースの依存性注入が使用されます。
Q#8)制御の反転の利点は何ですか?
回答: IOCにはいくつかの利点があり、 それらのいくつかは以下に言及されています:
- IOCは、アプリケーション内のコードを減らすことにより、コードの複雑さを減らすことができます。
- アプリケーションでIOCを使用することにより、ルックアップやシングルトンが不要になるため、テストがよりシンプルで簡単になります。
- 疎結合はIOCによって実現され、その結果、コードがより保守しやすくなります。
- IOCは、サービスの早期インスタンス化と遅延ロードをサポートします。
Q#9)AOPの概念を説明してください。
回答: AOPはアスペクト指向プログラミングの略です。これは、開発者がトランザクション管理やロギングなどの責任の動作を再構築するのに役立つプログラミングの別のアプローチです。
AOPは横断的関心事のために実装されています。つまり、定義は1つの場所で提供され、機能的にはスクリプトの助けを借りて多くの場所で使用できます。
Q#10)SpringContainerの使用について説明してください。
回答: これは、Springフレームワークのコア部分およびバックボーンです。 Springコンテナは、オブジェクトの作成、オブジェクトの結合、構成の管理、および作成、実装、破棄のライフサイクルの完了に役立ちます。
Springコンテナは、依存性注入の助けを借りて、アプリケーションを構築するコンポーネントを管理します。
Q#11)IOCコンテナの種類は何ですか?
回答:IOCコンテナには、以下の2つのタイプがあります。
- ビーンファクトリー –これは単純なコンテナーであり、依存性注入のサポートを提供します。
- Spring ApplicationContext –これは、ファイルからのテキストメッセージのデコードなどの複雑な機能を追加し、リスナーにイベントを公開できる高度なコンテナーです。
Q#12)Bean Factoryコンテナの実装は何ですか?
回答: XmlBeanFactoryクラスは、Beanファクトリの最も重要な実装であり、XMLファイルからデータを読み取るのに役立ちます。
Q#13)ApplicationContextコンテナの実装は何ですか?
回答: 最も一般的に使用されるApplicationContextコンテナには、FileSystemXmlApplicationContext、ClassPathXmlApplicationContext、WebXmlApplicationContextなどがあります。
Q#14)春の豆とは何ですか?
回答: Spring Beanは、Springコンテナによって管理される単純なJavaオブジェクトに他なりません。
例:
package com.javaworld; public class Demo { private String message; public void setMessage(String message){ this.message = message; } public void getMessage(){ System.out.println('Display Information: ' + message); } }
Q#15)Bean定義のコンポーネントは何ですか?
回答: 基本的に、Bean定義は、Springコンテナーが、Bean作成プロセス、Beanのライフサイクル、Beanの依存関係などの詳細を知るために使用する構成メタデータを保持します。
Q#16)構成メタデータをSpringコンテナに提供する方法は何ですか?
回答: 構成メタデータは、XMLベースの構成ファイル、注釈ベースの構成、およびJavaベースの構成の3つの方法でSpringContainerに提供できます。
Q#17)SpringアプリケーションにBeanを追加するための構文は何ですか?
回答:構文:
Q#18)Beanスコープのタイプは何ですか?
回答: Beanスコープは、シングルトンとプロトタイプ、リクエスト、セッション、グローバルセッションなどとして定義できます。
- プロトタイプは、毎回新しいBeanインスタンスが必要になったときに宣言されます。
- シングルトンは、毎回同じBeanインスタンスが使用されるときに宣言されます。
- リクエストはHTTPリクエストスコープに使用されます。
- セッションはHTTPセッションスコープに使用されます。
- Global-HTTPセッションは、BeanをグローバルHTTPセッションにスコープします。
Syntax:
Q#19)SpringのBeanのデフォルトのスコープはどれですか?さらに、それらは同期されていますか?
回答: SpringのBeanのデフォルトスコープはシングルトンです。さらに、それらは同期されていません。つまり、スレッドセーフではありません。
Q#20)春の豆のライフサイクルは何ですか?
回答: Spring Beanのライフサイクルは、以下に示すように、特定の手順に従います。
- インスタンス化– XMLファイルのSpringコンテナがBean定義を見つけて、Beanがインスタンス化されます。
- プロパティを設定する– Springコンテナは、依存性注入を利用して、Bean定義に記載されているすべてのプロパティを設定します。
- Beanの名前を設定します。
- 豆工場の設置。
- Beanの事前初期化と初期化。
- Beanの初期化後。
- destroy()メソッドを呼び出してBeanを破棄します。
Q#21)インナービーンズとはどういう意味ですか?
回答: プロパティまたはコンストラクター要素内で定義されているBeanは、内部Beanと呼ばれます。
内部Beanに特定のIDまたは名前は必要ありません。実際、Springコンテナーは、スコープ定義とともにこれらの値を回避します。内部Beanは匿名であると言われ、そのスコープは常にプロトタイプとして定義されます。
Q#22)コレクションのコンセプトをSpringに挿入する方法は何ですか?
回答: 基本的に、Springに挿入するコレクション要素は4つあります。
彼らです:
- 素子 –値の重複を排除することにより、値のセットを配線します。
- 素子 –値を挿入または挿入すると便利であり、値の重複も可能です。
- 素子 –任意のタイプのキーまたは名前と値のペアを挿入するために使用されます。
- 素子 –キーまたは名前と値のペアを挿入するために使用されますが、タイプは文字列のみである必要があります。
Q#23)自動配線の概念を説明してください。
回答: 自動配線は、Springフレームワークの重要な概念です。セッターまたはコンストラクターベースのインジェクションを使用して、オブジェクトの依存関係を暗黙的にインジェクトするために使用されます。自動配線は参照型でのみ機能するため、プリミティブ型と文字列型の値を挿入する場合には役立ちません。
autowireの最大の利点は、依存性注入がautowireによって処理されるため、開発者が記述する必要のあるコードが少なくなることです。また、プログラマーはその時点でプロセスを制御していません。
Syntax:
推奨読書=> Spring Autowired Annotation、 Spring BeanAutowireの名前
Q#24)自動配線のさまざまなモードについて説明してください。
回答: 自動配線には5つのモードがあり、依存性注入機能を使用するためにSpringコンテナをガイドします。
- モードなし –これはデフォルト設定として呼び出され、自動配線が無効になっていることを意味し、参照配線には明示的なBeanを使用する必要があります。
- 名前で –自動配線はプロパティ名で実行できます。 Springコンテナーは、XML構成ファイルでautowire属性がbyNameに設定されているBeanを検索します。
- byType –自動配線はプロパティタイプごとに実行できます。 Springコンテナーは、XML構成ファイルでautowire属性がbyTypeに設定されているBeanを検索します。
- ビルダー – byTypeとほぼ同じですが、コンテナー内にコンストラクター引数タイプが見つからない場合、そのタイプはコンストラクター引数に適用でき、エラーがスローされます。
- 自動検出 –選択の優先順位を示すSpringの動作を指します。まず、Springはコンストラクターを使用して自動配線を選択します。自動配線が行われない場合は、優先度をbyTypeに変更します。
Q#25)自動配線に制限はありますか?はいの場合、説明してください。
回答: はい、自動配線には以下のような制限があります。
- オーバーライドする可能性は常にあります。
- 開発者は、プリミティブプロパティとSpringプロパティを自動配線できなくなります。
- 自動配線は、明示的な配線と比較して、大きなアプリケーションで使用すると複雑になります。
Q#26)アノテーション配線とは何ですか?どのようにオンにしますか?
回答: XMLの代替使用法は、開発者が特定のクラスまたはメソッドのアノテーションを使用して、構成全体を1つのクラスに移動するアノテーションです。
を宣言することにより、Spring構成ファイルでオンになります。
Q#27)@Requiredアノテーションの用途は何ですか?
回答: これは、構成時にBeanプロパティに自動配線またはBean定義の明示的なプロパティ値を入力する必要があることを示すために使用されます。
例:
package com.softwaretestinghelp; import org.Springframework.beans.factory.annotation.Required; public class Employee { private Integer age; private String Lname; @Required public void setAge(Integer age) { this.age = age; } public Integer getAge() { return age; } @Required public void setLName(String Lname) { this.name = name; } public String getLName() { return name; } }
Q#28)@Autowiredアノテーションの用途は何ですか?
回答: 自動配線をどこでどのように実行するかをより適切に制御および理解するのに役立ちます。これは、任意のセッターメソッド、プロパティ、またはコンストラクターでBeanを自動配線するために使用できます。
例:
package com.softwaretestinghelp; import org.Springframework.beans.factory.annotation.Autowired; public class code-editor { private SpellCheck spellCheck; @Autowired public void setSpellCheck( SpellCheck spellCheck ){ this.spellCheck = spellCheck; } public SpellCheck getSpellCheck( ) { return spellCheck; } public void spellCheck() { spellCheck.checkSpelling(); } }
Q#29)@Qualifierアノテーションの用途は何ですか?
回答: これは主に、開発者が同じタイプのBeanを多数作成する必要があり、そのうちの1つだけをプロパティでワイヤリングする場合に使用されます。このシナリオでは、混乱を取り除き、ワイヤリングする正確なBeanを指定するために@Qualifierと@Autowiredを使用します。
Q#30)春のイベントはどのように処理されますか?
回答: イベント処理は、ApplicationEventクラスとApplicationListnerインターフェイスを介して実現されます。
BeanがApplicationListnerを実装すると、ApplicationEventがApplicationContextに生成され、Beanが生成されたことを通知します。
Q#31)標準的な春のイベントの例は何ですか?
回答: それぞれの目的に役立つ多くの標準的なSpringイベントがあり、そのうちのいくつかはContextStartedEvent、ContextRefreshedEvent、ContextStoppedEvent、ContextClosedEvent、RequestHandledEventなどです。
Q#32)ジョイントポイントは何を意味しますか?
回答: これは、AOPアスペクトをプラグインできる特定のポイントを示します。これは、AOPフレームワークを使用して何らかのアクションを実行できるアプリケーション内の元の場所です。
Q#33)JDBCテンプレートとは何ですか?Springでどのように使用しますか?
回答: JDBCテンプレートは、JDBCをより効率的に使用するためにSpringフレームワークによって提供されるテンプレートです。
JDBCテンプレートは通常、データベースデータのオブジェクトへの変換、準備された呼び出し可能なステートメントの実行に使用され、データベースのエラー処理もサポートします。
Q#34)Springのトランザクション管理とは何ですか?さまざまなタイプのトランザクション管理について説明します。
回答: トランザクションは基本的に、データベース内の一部のデータに対して実行される操作です。トランザクション管理は、リレーショナルデータベース管理システムの下にあり、データの倫理と一貫性を確保するために使用されます。
トランザクション管理の主な利点は、正しく統合することにより、宣言型およびプログラムによるトランザクション管理と、Hibernate、JTA、JDBCなどのAPIをサポートすることです。
トランザクション管理には2つのタイプがあり、以下に説明します。
- プログラマティックトランザクション管理 コーディングまたはスクリプトの観点からトランザクションを支援するために使用されます。
- 宣言型トランザクション管理 ビジネスコードとトランザクションを分離するために使用されます。
Q#35)最も一般的に使用されるトランザクション管理はどれですか?
回答: 宣言型トランザクション管理は、開発者によって広く使用されています。
Q#36)SpringMVCフレームワークについて説明してください。
回答: MVCは、Model、View、およびControllerの略です。 Spring MVCフレームワークは、優れたアーキテクチャーフローと構成を備えたWebアプリケーションを開発するために使用されます。他のフレームワークとの統合において非常に柔軟性があります。
Q#37)SpringMVCアーキテクチャについて説明してください。
回答: Spring MVCアーキテクチャは、モデル、ビュー、およびコントローラーに基づいています。
(画像 ソース )
上記のリンクには、参照用の完全なSpringMVCフローの簡単な例もあります。
春の建築の流れは次のようになります :
- 要求は、ディスパッチャサーブレットによって受信されます。
- ディスパッチャサーブレットは、コントローラクラス名の観点から応答を提供するハンドラマッピングに要求を送信します。
- これで、要求はディスパッチャサーブレットからコントローラに送信されるため、コントローラは要求を処理し、モデルビューオブジェクトをディスパッチャサーブレットへの応答として返します。
- この場合も、ディスパッチャサーブレットは、正しいビューページを取得するためにビューリゾルバに要求を送信します。
- 最後に、ディスパッチャサーブレットは、受信したモデルオブジェクトをブラウザページに送信して、結果を表示します。
@Controllerと@RequestMappingは、SpringMVCフローで使用される2つの主要なアノテーションです。
Q#38)Dispatcherサーブレットの用途は何ですか?
回答: Dispatcher Servletは、クライアントからのすべての着信HTTP要求と応答を処理するために使用されます。全体として、ハンドラーからコントローラーへのすべての通信を制御して、リゾルバーを実際のビューページに表示します。
Q#39)SpringMVCでの@Controllerアノテーションと@RequestMappingアノテーションの使用について説明してください。
回答:
@コントローラ –コントローラーのように動作する特定のクラスを示します。
@RequestMapping –基本的に、URLをクラス全体または特定のメソッドにマッピングするために使用されます。
Q#40)制御の反転と依存性注入について簡単な例で説明してください。
回答: ご存知のように、これはアプリケーションから依存関係を削除するために使用されます。
DIのないコード:
public class Student { Address address; Employee() { address= new Address();// here we are creating instance } }
StudentとAddressは同じインスタンスを使用するため、ここで依存関係が作成されます。
DIを使用したコード:
public class Student{ Address address; Employee(Address address) { this.address=address;//not creating instance } }
ここではインスタンスが作成されないため、依存関係は作成されないため、コードはより柔軟になり、疎結合になります。
Q#41)アドバイスとその種類を説明してください。
回答: AOPによって実行されるアクションは、アドバイスと呼ばれます。
以下に述べるように、5つのタイプのアドバイスがあります。
- アドバイスの前に。
- アドバイスの後。
- アドバイスを返した後。
- アドバイスの周り。
- アドバイスを投げます。
Q#42)Springがサポートするさまざまなタイプのオブジェクトリレーショナルマッピングとは何ですか?
回答: Springは、Hibernate、IBatis、TopLink、Java Data Object、OJB、JPAなどのORMをサポートしています。
Q#43)SpringがフレームワークやSpring Frameworkの主要な利点よりも優先されるのはなぜですか?
回答: いくつかの理由から、フレームワークよりもSpringの方が好まれます。 それらのいくつかは以下に言及されています:
- Springは、コア、Web、データアクセス、テストなどのサブモジュールによって、アプリケーション開発の多くの複雑な問題を解決します。
- Springは開発用のPOJOクラスを提供し、それによってストレスが軽減されます。
- 他のフレームワークとの強力な統合。
- 優れたアプリケーションテスト。
- トランザクション管理機能とモジュール性。
Q#44)Spring Batchとはどういう意味ですか?
実世界でのデータマイニングの例
回答: Spring Batchは、エンタープライズシステム用の堅牢なバッチアプリケーションの開発をサポートするために作成された軽量のフレームワークでもあります。
Spring Batchは、生産性と開発アプローチを改善し、ユーザーがSpringで学習した特定の機能をはるかに簡単にします。
Q#45)Springバッチフレームワークの主な用途は何ですか?
回答: Spring Batchは主にファイルの読み取りと書き込みに使用され、データベースでの読み取りまたは書き込み、データ変換、レポート作成、データのインポートとエクスポートなどの特定の操作の実行にも使用されます。
Q#46)Springバッチアーキテクチャについて説明してください。
回答: Spring Batchアーキテクチャは、主に3つのコンポーネント層、つまりアプリケーション、コア、インフラストラクチャで構成されています。
アプリケーションは、SpringBatchを通じて開発者が作成したスクリプトジョブとバッチジョブで構成されます。コアには、バッチジョブの起動と制御に必要なすべての重要で必要なクラスが含まれています。最後に、インフラストラクチャは、サービス、リーダー、ライターなどを含むアプリケーションとコアの両方を処理します。
Q#47)SpringBatchのタスクレットについて説明してください。
回答: タスクレットはインターフェイスであり、実行時にリソースのクリーンアップ、削除、またはセットアップなどの1つのタスクを実行するために呼び出されることがよくあります。
Q#48)SpringBatchの動作原理を説明してください。
回答: Spring Batchは、主に以下の4つのステップで機能します。
- まず、ステップ-それはそれぞれの仕事をするために仕事を導きます。
- データを提供するためのitemReaderインターフェースがあります。
- データを変換するためのitemProcessorインターフェースがあります。
- 最後に、目的の結果を生成するためのitemStreamWriterインターフェイスがあります。
結論
この記事がSpringFrameworkに関する明確な情報を提供してくれることを願っています。 Springとその機能、Springが使用されるアプリケーション、およびSpringがアプリケーション開発に不可欠である理由について説明しました。
Springモジュール、依存性注入、制御の反転、トランザクション管理、アスペクト指向プログラミング、疎結合の概念、Spring MVCアーキテクチャ、重要なアノテーション、Bean、および自動配線。
上記のすべてのトピックをカバーするすべての重要な春のインタビューの質問がここに含まれています。インタビュアーの理解を深めるコード例を使用して、概念を説明することを常にお勧めします。
この記事があなたのインタビューをクリアするのに役立つことを願っています、最高です!