Java 面试知识整理(五):面试问答(日文/中文对照)

Spring 基础

Q: IOCとは何ですか?

IOC(Inversion of Control)は制御の反転です。従来はプログラマがnewでオブジェクトを作成していましたが、Springではコンテナがオブジェクトを管理します。これにより、結合度が下がり、保守性が向上します。

Q: DIとは何ですか?

DI(Dependency Injection)は依存性注入です。Springコンテナが自動的に依存するオブジェクトを注入します。@Autowiredアノテーションを使います。

Q: AOPとは何ですか?

AOP(Aspect Oriented Programming)はアスペクト指向プログラミングです。ログ出力や権限チェックなどの横断的関心事を、本来のビジネスロジックから分離できます。

Q: @Transactionalの役割は?

@Transactionalは宣言的トランザクション管理を提供します。メソッド内の処理が全て成功した場合のみコミットし、一つでも失敗した場合はロールバックします。

数据库

Q: 内部結合と外部結合の違いは?

内部結合(INNER JOIN)は両方のテーブルに一致するデータのみを返します。外部結合(OUTER JOIN)は一致しないデータも含めて返します。LEFT JOINは左テーブルの全データを返します。

Q: インデックスと主キーの違いは?

主キーはテーブルに1つだけで、NULL不可、一意です。インデックスは検索を高速化するためのもので、1つのテーブルに複数設定でき、NULLも許可されます。

Q: 主キーと外部キーの違いは?

主キーはテーブル内のレコードを一意に識別します。外部キーは他のテーブルの主キーを参照し、テーブル間の関連付けを行います。

Java 基础

Q: 同期と非同期の違いは?

同期処理は前の処理が完了するまで待ちます。非同期処理は待たずに次の処理を実行します。非同期処理は、API呼び出しやファイル読み書きなどの時間がかかる処理に適しています。

Q: finallyブロックの役割は?

finallyブロックは例外の有無に関わらず必ず実行されます。主にデータベース接続やファイルストリームのクローズなど、リソース解放に使用します。

Q: continueとbreakの違いは?

continueは現在のループの残りの処理をスキップして次のイテレーションに進みます。breakはループ自体を終了します。

Q: Sessionとは何ですか?

Sessionはサーバー側でユーザー情報を保持する仕組みです。ユーザーがログインするとサーバーはSessionを作成し、Session IDをCookieとして返します。以降のリクエストではこのSession IDを使ってユーザーを識別します。


面试速记卡

┌─────────────────────────────────────────────────────┐
│                   面试前5分钟速记                      │
├─────────────────────────────────────────────────────┤
│                                                       │
│  📌 MVC     = Model / View / Controller               │
│  📌 IOC     = 控制反转(Spring管对象)                  │
│  📌 DI      = 依赖注入(@Autowired)                    │
│  📌 AOP     = 面向切面(@Around)                       │
│  📌 DAO     = 数据访问层                               │
│  📌 continue = 跳过本轮循环                             │
│  📌 finally  = 一定执行(释放资源)                      │
│  📌 INNER JOIN = 只返回匹配的数据                        │
│  📌 LEFT JOIN  = 左表全部 + 右表匹配的                   │
│  📌 @Transactional = 事务(全部成功或全部回滚)           │
│  📌 @PostConstruct = 初始化时执行                        │
│  📌 @PreDestroy = 销毁前执行                             │
│                                                       │
└─────────────────────────────────────────────────────┘

面试小贴士:

  • 回答问题时先说结论,再展开说明
  • 能用代码示例的尽量用代码说话
  • 不知道的就说「すみません、わかりません」然后尝试关联已知知识
  • 日文回答时注意使用「です・ます」体