2020年の最初のJavaインタビューの要約
1つ:インタビューで遭遇した問題
1:最近行ったプロジェクトについて話します2:
同期とロックの違いについて話します。また、ロック内の方法について話します
3:Java仮想マシンのメモリリサイクルアルゴリズムとリサイクル原理
について話します4: MySQLの最適化
5:MySQLインデックスとインデックスの違いについて話し、インデックスが失敗するのはいつか
6:tomcatパフォーマンスチューニング
について話します7:シングルトンモードでスレッドセーフを確保する方法について話します
8:ArrayListとLinkedListの違い
について話します9 :スレッドプールの原理といくつかのパラメーターについて話します
10:スレッドを開始するいくつかの方法を知っています
11:通常nginxを何に使用し、同時に高可用性を確保する
方法12:あるかどうかを判断する方法リンクリスト内で鳴り、リンクリストの最後でノードは何を指しますか?
13:ドッカーについて知っていることを教えてください
14:ドッカーはマイクロ仮想マシンですか?
15:redisのデータ構造タイプについて教えてください
16:Springbootの設計原則
17:Springmvcのデフォルトはシングルトンまたは複数のケースですが、なぜこのように設計されているのですか
18:知っているソートアルゴリズムについて教えてください。短所
2:面接の質問への回答
1:最近のプロジェクトについて話す
普段仕事でやっているプロジェクトをフォローしている限り、この質問については何も言うことはありません。基本的な問題はそれほど大きくありません。
2:同期とロックの違いについて話し、ロック内のメソッドについても話します
違い:
- Synchronizedはキーワードであり、組み込みの言語実装であり、Lockはインターフェースです。
- Synchronizedは、スレッドが異常な場合に自動的にロックを解放するため、異常なデッドロックは発生しません。ロックが異常な場合、ロックは自動的に解除されないため、最終的にロック解除を実装する必要があります。
- Lockは中断可能なロックであり、Synchronizedは中断不可能なロックです。スレッドがロックの解放を完了するまで待つ必要があります。
- Lockは、読み取りロックを使用して、マルチスレッドの読み取り効率を向上させることができます。
ロックインターフェイスのメソッド:
-
//ロックを取得します
voidlock() -
//現在のスレッドが中断されていない場合は、ロックを取得します
void lockInterruptibly() -
//このロックインスタンスにバインドされた新しいConditionインスタンスを返します
ConditionnewCondition() -
//
boolean tryLock()を呼び出すときに、ロックがアイドル状態の場合にのみロックを取得します -
//指定された待機時間内にロックがアイドル状態であり、現在のスレッドが中断されていない場合は、ロック
ブール値tryLock(long time、TimeUnit unit)を取得します。 -
//ロック
を解除しますvoidunlock()
3:Java仮想マシンのメモリリサイクルアルゴリズムとリサイクル原理について話します
4:MySQLの最適化について話します
MySQLのパフォーマンス最適化とインデックスの違いを確認してください
5:MySQLインデックスとインデックスの違いについて教えてください。インデックスはいつ失敗しますか?
MySQLインデックスとインデックスの違い、インデックスが失敗するのはいつですか
6:Tomcatのパフォーマンスチューニングについて話す
7:シングルトンモードのスレッドセーフを確保する方法について話します
public class SingletonClass {
private volatile static SingletonClass instance = null;
public static SingletonClass getInstance() {
if (instance == null) {
synchronized (SingletonClass.class) {
if(instance == null) {
instance = new SingletonClass();
}
}
}
return instance;
}
private SingletonClass() {
}
}
8:ArrayListとLinkedListの違いについて話します
- ArrayListは動的配列に基づくデータ構造であり、LinkedListはリンクリストに基づくデータ構造です。
- ランダムアクセスで取得および設定する場合、LinkedListはポインターを移動する必要があるため、ArrayListはLinkedListよりも快適です。
- 理論的には、追加および削除操作を行う場合、ArrayListはデータを移動する必要があるため、LinedListがより支配的です。
9:スレッドプールの原理といくつかのパラメータについて話します
10:スレッドを開始するいくつかの方法を知っています
11:nginxを何に使用し、高可用性を確保する方法を教えてください。
- nginxは通常、画像サーバーおよび負荷分散として使用されます
- 負荷分散で使用されるアルゴリズムには、ポーリングアルゴリズム、重み付けアルゴリズム
nginxの使用、およびアルゴリズムの説明が含まれます。
12:リンクリストにリングがあるかどうかを判断する方法と、リンクリストの最後のノードは何を指しているのですか?
単一リンクリストの最後のノードがnullを指して
いるリンクリストにリングがあるかどうかを判断する方法
13:あなたが知っているドッカーについて教えてください
dockersコンテナ化テクノロジーにより、Linuxでのデプロイメント操作がより便利になります。これらの面倒な構成ファイルを構成する必要はありません。イメージをプルしてから、dockersコマンドを使用して開始するだけで実行できます。これはコンテナーです。応用。
14:ドッカーはマイクロ仮想マシンですか?
15:redisのデータ構造タイプについて話します
16:Springbootの設計原則
17:Springmvcはデフォルトでシングルトンまたは複数のケースですが、なぜこのように設計されているのですか?
springmvcはデフォルトでシングルトンまたは複数のインスタンスです