22 よくある Spring Boot インタビューの質問と回答

公開: 2022-11-10

Java Spring Boot 開発者で、次のインタビューを楽しみにしていますが、何を質問すればよいかわかりませんか? 私たちは助けるためにここにいます!

この記事では、Spring Boot の面接でよく聞かれるいくつかの質問と、面接担当者があなたをテストするために使用できる回答の概要を説明することで、適切な準備を行うのに役立ちます。

面接担当者は、戦略的な Java Spring Boot の質問を使用して、指定された役割に関連する面接対象者のスキル レベルをテストします。 したがって、関連する質問を準備し、それらに答える方法を知っておく必要があります。

インタビューの質問とそれに対応する回答にジャンプする前に、Spring Boot とは何か、そしてそれが Java 開発者にとってどれほど役立つかについての基本的な概要を説明しましょう。

Java スプリング ブートとは

この Java フレームワークは、2014 年に重要なチームによって作成されました。Spring Boot はオープンソース フレームワークであり、独立したプロダクション グレードのアプリケーションを効率的に開発し、Java 仮想マシン (JVM) でも実行できます。

Java 開発者は、迅速で簡単なセットアップ プロセスと安全な構成時間のために、Web アプリケーションやマイクロサービスの開発に好んで使用します。

Spring Boot による Spring ベースのアプリケーションの簡単なセットアップと構成は、次の 3 つのコア機能により可能になります。

  • 自動構成 – Spring アプリケーションの自動構成です。
  • Spring Boot は、使用する構成のデフォルトと、必要な依存関係のためにインストールするパッケージに対する独自のアプローチを提供します。 この独断的なアプローチは、プロジェクトの迅速なセットアップに役立ちます。
  • Sprsetupoot を使用すると、Web サーバーを必要とせずにアプリケーションを独立して実行できます。

Spring Boot は Java 開発者にとってどのように役立ちますか?

1 つには、Spring Boot を使用する Java 開発者は、プロダクション グレードの Spring アプリケーションを開発するために必要なすべてのコンポーネントの自動構成を簡単に利用できます。 これにより、長期的には開発時間が短縮され、最終的には効率が向上します。

Spring Boot は、Spring JDBC、Spring Data、Spring Security、Spring ORM を含む Spring のエコシステムとも簡単に統合できます。

Java 開発者は、Spring Boot を Oracle、MySQL、PostgreSQL、MongoDB などのさまざまなデータベースに接続することもできます。

もちろん、XML 構成、Java Beans、およびデータベース トランザクションを使用した柔軟な構成は、他の便利な機能の 1 つです。

したがって、Spring Boot の基本的な概要がわかったので、面接の準備に役立つ、よくある Spring Boot 面接の質問と回答のいくつかを考えてみましょう。

Spring Boot インタビューの質問と回答

Spring Boot インタビューの質問

Spring Boot の機能にはどのようなものがありますか?

これらの一般的な機能には次のものがあります。

  • Spring Boot CLI は、Spring Boot アプリケーションを作成するための Groovy を提供します。 長期的には、ボイラープレート コードは回避されます。
  • Spring Boot は、潜在的なセキュリティの脅威からアプリケーションを簡単に保護するロギングとセキュリティ機能を提供します。
  • プロジェクトに関連するコンポーネントの自動構成を提供するため、不要な WAR ファイルのリスクを回避できます。
  • スターター Initializer は、デフォルトの内部プロジェクト構造を作成します。 このように、プロジェクト構造を手動で設定する必要はありません。
  • Spring Boot アクチュエーター機能を使用すると、アプリケーションの実行時に洞察とメトリックにアクセスできます。
  • もちろん、主要な Spring Boot 機能の 1 つである Starter Dependency は、特定の機能の一般的に使用される依存関係を集約するのに役立ちます。

Spring Boot スターターとは?

Spring Boot スターターは、アプリケーションの依存関係を有効にする一連の依存関係管理プロバイダーを含む依存関係記述子です。 フレームワークに自動依存関係解決を提供します。 スターターは、簡単かつ迅速な開発を強化します。

Spring Bootのアクチュエータとは何ですか?その利点は何ですか?

アクチュエーターは、Spring Boot 機能の 1 つであり、アプリケーションの実行中にアプリケーション内で何が起こるかを監視できます。

たとえば、デバッグ中に、アクチュエーターを使用してログを分析し、CPU 使用率や Bean の識別などの機能にアクセスできます。

さらに、アクチュエーターは、情報を監視および管理する本番対応の REST エンドポイントへの簡単なアクセスを提供するだけでなく、Web からデータを取得します。

タイムリーフとは何ですか? タイムリーフの使い方は?

Thymeleaf は、Spring と HTML5 Java Web アプリケーションの両方に自然なテンプレート レイアウトを作成する Java のサーバー側テンプレートです。

Spring Boot は、pom.xml ファイルの spring-boot-starter-thymeleaf 依存関係を使用して thymeleaf の自動構成を実行し、動的 ​​Web コンテンツを提供します。

Spring Boot が thymeleaf テンプレートまたは HTML ファイルを読み取ってレンダリングできるようにするには、テンプレートをsrc/main/resources/templatesに配置します。

次に、Thymeleaf は index.html ファイルを解析し、コントローラー クラスから渡された実際の値を、インデックス ファイルで使用可能な動的な値の代わりに使用します。

この後、Spring Boot アプリケーションが実行されるとすぐに、メッセージが Web ブラウザーでレンダリングされます。

 org.springframework.boot spring-boot-starter-thymeleaf

Spring Initializer を使用して Spring Boot プロジェクトを作成するプロセスを説明する。

Spring Web ツールである Spring Initializr を使用すると、プロジェクトの詳細を提供することで、いくつかの手順を使用して Spring Boot プロジェクトを作成できます。

  1. Spring initializr に移動し、入力フィールドに入力します。
  2. Generateボタンをクリックすると、プロジェクトのダウンロードが開始されます。
  3. ダウンロードしたプロジェクトを zip ファイルから抽出し、IDE から開きます。 IDE から、[ファイル] -> [新規] -> [既存のソースからのプロジェクト] -> [Spring-boot-app] に移動し、pom.xml ファイルを選択します。 プロジェクトが同期されるように、変更のインポート プロンプトをクリックします。 この後、忘れずに application.properties ファイルに移動し、server.port 番号をserver.port=7000に編集してください。
  4. 次に、 src->main->java->com.gfg.Spring.boot.appからアプリケーションを実行します。

Spring Boot の JPA とは?

これは、Object-Relation Mapping (ORM) を使用してリレーショナル データを管理し、Java オブジェクトまたは Java クラスとアプリケーションのリレーショナル データベースの間でデータにアクセスできるようにする Java の仕様です。

JPA は、プラットフォームに依存しないオブジェクト指向のクエリ言語である Java Persistent Query Language (JPQL) を使用します。

JPA は、提供する Entity Manager API を使用して、データベースに対するクエリ処理とオブジェクト トランザクションを許可します。

Spring Boot の自動構成とは?

自動構成は、アプリケーションに追加する jar 依存関係を使用して、Spring Boot アプリケーション構成を自動化しようとします。

アプリケーションのクラスパスで利用可能な依存関係に応じて、自動構成は、特に JPA やスプリング セキュリティなど、スプリング固有のモジュールの組み込みオブジェクトを宣言します。

スプリング アノテーションとは

Spring アノテーションは、プログラム スニペットに関する情報を提供するメタデータを参照し、そのプログラムに補足データを追加します。 クラスやメソッドを含むコード コンポーネントは、多くの場合、注釈に関連付けられています。

注釈は、プログラムの操作やコンパイルされたコードの後続のアクションに直接影響しません。
それらの構文は「 @ 」記号で始まります。

Spring Boot は、以下を含む 6 つの主要なアノテーション タイプを提供します。

  • スプリング コア アノテーション
  • Spring データ注釈
  • Spring Bean アノテーション
  • Spring Web アノテーション
  • 春のスケジューリングの注釈
  • スプリング ブート アノテーション

Spring Data REST とはどういう意味ですか?

Spring Data REST は、最小限のコードを使用して Spring Data Resources に関連する RESTful のリソースを公開します。

次の例では、POST メソッドを使用して、URL としてhttp://localhost/exampleを使用し、ヘッダーとしてContent-Type: application/jsonを使用してコンテンツを要求します。

リクエスト内容:

 { "name": "Jimmy", "Gender": "Male", "Age": 23 }

応答内容:

 { "name": "Jimmy", "Gender": "Male", "Age": 23 "_links": { "self": { "href": "http://localhost:8080/example/1" }, "person": { "href": "http://localhost:8080/example/1" } } }

Spring Boot DevTools の必要性は何ですか?

これらは、開発を容易にし、開発時間を節約するために、それぞれの開発環境にプロパティが適用される定義済みツールの詳細なセットです。

Spring Boot アプリケーションのコードを変更するたびに、Spring Boot DevTools 機能が自動的に再起動します。 したがって、コードを変更するたびにアプリケーションを手動で再起動する手間が省けます。

春のデータとは?

Spring データは、基礎となるデータ ストアの特別な特性を保持し続けるため、開発者がリレーショナルおよび非リレーショナル データやクラウドベースのデータ サービスなどのデータ アクセス テクノロジに簡単にアクセスできるようにすることを目指しています。

Bean が存在するときに自動構成を元に戻す方法を教えてください。

ここでは、次のように name 属性と value 属性を含む @ConditionalOnMissingBean アノテーションを使用します。

  • value 属性は、チェックする Bean タイプを格納します
  • チェックする Bean の名前を指定する name 属性

Spring Boot でデータベースからデータを取得するには?

次の手順を使用して、MySQL データベースから Spring Boot アプリケーションにデータにアクセスできます。

ステップ 1: create DATABASE personコマンドを使用して、MySQL にデータベースを作成します。

ステップ 2:データベース内にテーブルを作成します。

 CREATE TABLE person(id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(255));

ステップ 3:ここで、Spring Boot アプリケーションを作成し、それに JDBC、MySQL、および必要な Web 依存関係を追加します。

ステップ 4:以下のように、application.properties ファイルからデータベースを構成します。

 spring.datasource.url=jdbc:mysql://localhost:3306/personDetails spring.datasource.username=example123 spring.datasource.password=example123 spring.jpa.hibernate.ddl-auto=create-drop

ステップ 5:次に、コントローラ クラスでリクエストを処理しましょう。

 package com.person; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.RestController; @RestController public class JdbcController { @Autowired JdbcTemplate jdbc; @RequestMapping("/save") public String index(){ jdbc.execute("insert into person (name)values(Trial)"); return "Name entered Successfully"; } }

最後に、アプリケーションを実行してデータベース エントリをチェックし、アクセスされたデータを確認します。

なぜ Spring プロファイルが必要なのですか?

Spring プロファイルを使用すると、アプリケーションの構成をさまざまな部分に分離し、特定の開発に利用できます。

また、Spring プロファイルは、Spring プロファイルが利用できない場合に、開発者が環境固有の外部構成を管理する手間を省きます。

さらに、これにより同期を維持することが難しくなり、特定の環境固有のパラメーターに応じて特定の必要なものを利用するいくつかの工場のようなコンポーネントを作成する必要が余分に生じることになります。

Spring ブートで組み込み Tomcat サーバーのポートを変更できますか?

はい、できます。

これを行うには、 application.propertiesファイルを操作してserver.portプロパティを含め、選択したポートを割り当てます。 Spring Boot は、アプリケーション プロパティ ファイルを自動的に読み込み、必要な構成をアプリケーションに適用します。

たとえば、 server.port番号をデフォルト値の 8080 からserver.port= 8081に変更できます。

ロギング用に Log4j をどのように構成しますか?

これらのいくつかの簡単な手順で、ログ用に Log4j を構成できます。

  1. まず、Java プロジェクトを作成してから、プロジェクトを右クリックします。 MyEclipse->File->New->Java Projectに移動してプロジェクトに名前を付け、finish をクリックします。
  2. 次に、Java プロジェクト名を右クリックし、[ビルド パス] -> [ビルド パスの構成] を選択します。 この手順により、log4j ファイルが追加されます。
  3. ライブラリに移動して [ Add External JARS ] ボタンをクリックし、表示されるドロップダウン メニューから log4j ファイルを選択します。 次に、[OK] をクリックします。
  4. log4j.propertiesファイルと呼ばれる新しい Java ファイルを作成し、[完了] をクリックして、このファイルをクラスパスに追加します。
  5. Classpath から [Advanced] をクリックし、[ Add Folders] オプションを選択して、忘れずに [OK] をクリックします。
  6. これで log4j.properties ファイルを検索し、[OK] をクリックしてプロジェクトを実行できます。
  7. コンソールで以下の出力を確認してください。
 [main] DEBUG Example – Hello this is a debug message [main] INFO Example – Hello this is an info message

IoC コンテナとは

IoC (Inversion of Control) コンテナーは、依存性注入を自動的に実装するコア Spring コンテナーです。 クラスのアプリケーションをインスタンス化し、オブジェクトの構成と必要な依存関係の組み立てを担当します。

また、オブジェクトのインスタンス化から破棄までのライフサイクルも管理します。

IoC は、Java コード、XML、および Java アノテーションのメタデータ構成を使用してこれらのタスクを実行します。

コンテナーは、Java オブジェクトとこれらのオブジェクトのライフサイクルを制御するため、制御の反転と呼ばれます。 それ以外の場合、これは開発者のタスクです。

Maven を使用して Spring Boot アプリケーションを作成する方法を説明する

このプロセスには、一連の手順が必要です。

ステップ 1:プロジェクトのタイプを選択します。

ステップ 2:プロジェクトに名前を付けて設定し、終了ボタンをクリックしてプロジェクトを作成します。

ステップ 3:次に、Maven プロジェクトから pom.xml ファイルを構成して、そこから Spring Boot プロジェクトを作成します。

pom.xml ファイル:

 <project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.javatpoint</groupId> <artifactId>spring-boot-example</artifactId> <version>0.0.1-SNAPS<name>JavaTpoint Spring Boot Example</name> </project>

構成には、Maven プロジェクトへの親の追加が含まれます。 これにより、Maven プロジェクトが親プロジェクトの子プロジェクトとして宣言されます。

 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.2.RELEASE</version> </parent>

ステップ 4:次に、Web 依存関係である spring-boot-starter-web を pom.xml に追加します。

 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>

ステップ 5 : プロジェクトの Java バージョンを追加します。

 <properties> <java.version>1.8</java.version> </properties>

ステップ 6:新しい依存関係を追加するたびに、Maven プロジェクトを更新する必要があることに注意してください。

ステップ 7: src/main/java パッケージ内に Java クラスを作成して、Maven プロジェクトを実行可能にします。

ステップ 8:次に、Spring アプリケーションのクラスの static run メソッドを呼び出します。

ステップ 9:最後に、クラスを Java アプリケーションとして実行します。

Spring に対する Spring Boot の利点は何ですか?

  • ブートイニシャライザー (ブートストラップと呼ばれる手法) を使用してソース言語をコンパイルする Spring Boot のブートストラップ機能により、ユーザーのデバイスのスペースを節約でき、アプリケーションの読み込み時間も短縮されます。
  • Spring とは異なり、Spring Boot では、親の POM (親オブジェクト モデル) または XML ファイルに依存せずに、spring-boot-dependencies を追加した後に依存関係を管理できます。
  • Spring Boot を使用すると、開発者は XML 構成を使用する必要なく、注釈または XML 構成を使用することもできます。
  • 開発者は、アプリケーションのセットアップに必要なボイラープレート コードが少ないことから、Spring Boot を好みます。 これは、Spring Boot にはインメモリ データベースと組み込みの Tomcat サーバーが付属しており、ボイラープレート コードが減少するためです。 一方、Spring にはより多くのボイラープレート コードがあります。
  • Spring Boot は、必ずしも WAR (Web アプリケーション リソース) ファイルを必要とせず、JAR (Java リソース) のみに依存できます。これは、小さくて単純な構造を持ち、ユーザーと開発者にとってより便利です。
  • Spring Boot は、Tomcat や Jetty などのサーバーも自動的に組み込みます。 したがって、開発者は、Spring で行うようにサーバーを手動でセットアップする必要はありません。

Spring Bootでページネーションを行うには?

ページネーション プロセスでは、データをセクションに分割してリソースを節約します。 これには、ページ サイズとページ番号の 2 つのフィールドが含まれます。

このプロセスには、次のようないくつかの手順が含まれます。

ステップ 1:初期設定
Consiseupn エンティティは、ドメイン クラスとして Person という名前を付けます。

 @Entity public class Person { @Id private long id; private String name; }

ステップ 2:リポジトリの作成
次に、 PersonRepository を使用してPersonRepositoryextendsし、ページングと並べ替えのためのfindAll(Pageable pageable PagingAndSortingRepository ) メソッドとfindAll(Sort sort)メソッドをそれぞれ取得できるようにします。

 public interface PersonRepository extends PagingAndSortingRepository<Person, Integer> { List<Product> findAllByPrice(double price, Pageable pageable); }

ステップ 3:ページネーションのステップ
ここでの最初のステップでは、 PageRequestオブジェクトを作成します。 Pageableインターフェイスを実装する要求に応じて、ページ番号とページ サイズを渡す。

 Pageable firstPageWithTwoElements = PageRequest.of(0,2); Pageable secondPageWithThreeElements = PageRequest.of(1,3);

次に、このPageRequestオブジェクトをパラメータとしてリポジトリ メソッドに渡します。

 Page<Person> allProducts = personRepository.findAllByPrice(findPageWithTwoElements); List<Items> allTwoDollarItems = itemsRepository.findAllByPrice(2, secondPageThreeElements)

デフォルトでは、 findAll(Pageable pageable)メソッドはPage<T>オブジェクトを返します。

カスタム自動構成を登録する方法を説明する

@EnableAutoConfiguration キー META-INF/spring.factories ファイルの下で、完全修飾名を指定します。 この手順では、自動構成クラスを登録します。

 org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.baeldung.autoconfigure.CustomAutoConfiguration

Maven を使用してプロジェクトをビルドするには、ファイルをresources/META-INFディレクトリに配置する必要があります。

Spring Boot のブートストラップとは何ですか?

ブートストラップは、起動時に Spring Boot アプリケーションでロジックを実行するプロセスです。
Boot initializr は、Spring Boot でソース言語をコンパイルします。 このプロセスにより、デバイスのスペースが節約され、アプリケーションの読み込み時間も短縮されます。

最後の言葉

さて、この記事では、面接中に面接担当者がおそらく尋ねる可能性のあるいくつかの Spring Boot の質問と、自信を持ってそれを達成するのに役立つ回答について説明しました。 あなたがその夢の仕事に就くことを願っています!

また、Java の面接で尋ねられた質問から、いくつかの関連するヒントを学びたいと思うかもしれません。

頑張ってください!