2020年の最初のJavaインタビューの要約

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のパフォーマンスチューニングについて話す

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の違いについて話します

  1. ArrayListは動的配列に基づくデータ構造であり、LinkedListはリンクリストに基づくデータ構造です。
  2. ランダムアクセスで取得および設定する場合、LinkedListはポインターを移動する必要があるため、ArrayListはLinkedListよりも快適です。
  3. 理論的には、追加および削除操作を行う場合、ArrayListはデータを移動する必要があるため、LinedListがより支配的です。

9:スレッドプールの原理といくつかのパラメータについて話します

スレッドプールの原理といくつかのパラメータの詳細な説明

10:スレッドを開始するいくつかの方法を知っています

スレッドを開始するいくつかの方法

11:nginxを何に使用し、高可用性を確保する方法を教えてください。

12:リンクリストにリングがあるかどうかを判断する方法と、リンクリストの最後のノードは何を指しているのですか?

単一リンクリストの最後のノードがnullを指して
いるリンクリストにリングがあるかどうかを判断する方法

13:あなたが知っているドッカーについて教えてください

dockersコンテナ化テクノロジーにより、Linuxでのデプロイメント操作がより便利になります。これらの面倒な構成ファイルを構成する必要はありません。イメージをプルしてから、dockersコマンドを使用して開始するだけで実行できます。これはコンテナーです。応用。

14:ドッカーはマイクロ仮想マシンですか?

Dockerと仮想マシンの違い

15:redisのデータ構造タイプについて話します

Redisデータ構造タイプ

16:Springbootの設計原則

Springbootの設計原理

17:Springmvcはデフォルトでシングルトンまたは複数のケースですが、なぜこのように設計されているのですか?

springmvcはデフォルトでシングルトンまたは複数のインスタンスです

18:あなたが知っているソートアルゴリズムについて教えてください。また、それらの長所と短所についても話してください。

トップ10のソートアルゴリズム

おすすめ

転載: blog.csdn.net/qq_37469055/article/details/105741770