2020 Javaシニアエンジニアインタビューの要約

ここに画像の説明を挿入

今年の市場は良くありませんが、仕事を続けて給料を上げたい場合や、スキルが良くない場合に転職や転職をしたい場合はどうすればいいですか?実際、正直に言うと、最新のテクノロジーを学ぶことに加えて、深みが必要です。そのため、このアイデアがある場合は、ここをクリックして、コード:cszq、無料のJavaバックエンドおよびアーキテクチャーの学習方法と資料を提供できます。コンテンツはこちらから入手できます。

Javaの基本

HashtableとHashMapの違い。
抽象クラスとインターフェースの違い。
finalキーワードの使用と違い。
例外の分類と処理メカニズム。
JDKバージョンの違い。
StringBuilderの内部実装メカニズム。
反射メカニズムの使用。
匿名の内部クラスの使用。
ジェネリックの概念と使用。
弱い参照とファントム参照の概念と使用法。

オープンソースフレームワーク

1. SpringMVCとStruts2の違い
2. Spring IOCとAOPの概念と実装
3. Springトランザクション管理
4. HibernateとMyBatisの比較
5. Hibernate遅延読み込みメカニズム

JVM仮想マシン

1. GCアルゴリズムとは?
2.ガベージコレクターとは?
3. JVMのチューニング方法
4.キャッシュとNoSQL
5. キャッシュの使用シナリオ
6.キャッシュヒット率の計算
7. MemcacheとRedisの比較
8. Redisの実装方法スライス
9、MongoDBの機能

分散

飼育係の目的ダボの目的
と利点
ダボの実現原理
データ構造とアルゴリズム一方向リンクリストの逆順ダブルリンクリストの演算1億の整数の逆出力
1つの文字列で最も長いパリンドロームを見つける(パリンドローム:abcdcba、両端で対称)


ネットワークプログラミング

GetとPostの違い
Httpsプロトコル実装
長い接続の
ソケット管理する基本的な方法

データベース

内部結合と左結合の違い
複雑なSQLステートメント
データベースの最適化方法
データベースの分割方法
異なるデータ構造のデータの一貫性を確保する方法

安全性

XSS攻撃とは何ですか、またどのように実装しますか?
未解決の問題:システムのセキュリティを確保する方法は?

デザインパターン


デザインパターンのクラス図を書くデザインパターンの意味は何か
シングルトンパターンコードを書く

マルチスレッド

Quartzが繰り返しタスクを開始しないようにする方法?
スレッドプールがいっぱいです。追加の要求を処理する方法?同じオブジェクトの同期メソッドを2つのスレッドが同時に呼び出すことはできますか?

情報はPDFドキュメントに分類されています。必要に応じて、クリックして入力できます。パスワード:cszq、すべてのJavaインタビュー資料は無料で提供されています。必要に応じて、さまざまなJavaバックエンド学習資料もあり、必要に応じて、
+プライベートメッセージをフォローすることもできます。

ここに画像の説明を挿入

例外の分類と処理メカニズム

カテゴリ:
実行時例外チェック済み例外実行時例外:
RuntimeExceptionクラスは継承する必要があり、メソッドを定義するときに実行時例外を宣言する必要はありません。メソッドを呼び出すときにランタイム例外をキャッチする必要はありません。チェック例外:
RumtimeExceptionクラス定義メソッドから継承しない場合は、スローされる可能性のあるチェック例外をスローする必要があります。メソッドを呼び出すときは、チェック例外をキャッチするか、上方にスローし続ける必要があります。論理的に:
ランタイム例外:一般に、そのような例外を処理する方法を必要としないか、または知らない;検査済み例外:一般に、起こり得る例外を処理する方法を知る必要がある。
StringBuilderの内部実装メカニズムStringBuilder内には文字配列があり、コードは次のとおりです
char [] value; // Character array int count; // String lengthすべての追加操作により、可変長文字配列に新しい文字列が追加されます、長さの計算方法はArrayListに似ています。toString()メソッドが呼び出されると、新しいStringオブジェクトで十分です。
public String toString(){return new String(value、0、count); //コピーを作成し、配列を共有しない} ps:StringBufferはスレッドセーフで、StringBuilderはスレッドセーフではありません。

匿名の内部クラスの使用

匿名の内部クラスは名前のないクラスです。1つの場所でのみ使用され、複数の場所で呼び出されることはありません。通常、これは親クラスまたはインターフェイスの特定の実装です。

強い参照、弱い参照、弱い参照、ファントム参照

強力な参照:一般的な参照は強力な参照です。OutOfMemoryでも、制御された参照メモリのこの部分は再利用しません。ソフトリファレンス(SoftReference):メモリ領域が十分である場合、ガベージコレクターはそれを再利用しません;メモリ領域が不十分である場合、これらのオブジェクトのメモリは再利用されます。ガベージコレクタが収集しない限り、オブジェクトは使用できます。++ Soft参照を使用して、メモリ依存のキャッシュを実装できます。++弱参照(WeakReference):弱参照オブジェクトは、ライフサイクルが短くなります。ガベージコレクション期間中に、メモリスペースが十分であるかどうかに関係なく、参照されたオブジェクトのみが検出されると、オブジェクトが収集されます。ファントム参照:ファントム参照はオブジェクトのライフサイクルを決定しません。オブジェクトが1つの仮想参照のみを保持している場合、いつでも再利用できます。++仮想参照は主に、ガベージコレクターによってリサイクルされているオブジェクトのアクティビティを追跡するために使用されます。++オープンソースフレームワーク

SpringMVCとStruts2の違い

SpringMVCのメソッドレベルのインターセプト、Struts2はクラスレベルのインターセプトです。SpringMVCはサーブレットをベースにしてコントローラを実装し、Struts2はフィルタをベースにしています。SpringMVCのパフォーマンスとセキュリティはStruts2よりも高く、SpringMVCはよりコンポーネント化され、プロセス指向で、JSONを返すなどの拡張が容易@ResponseBodyを設定するだけで、Struts2はより分離された純粋なものになりますが、より多くの機能をサポートするには、より多くの自己開発コードが必要になります。

春のトランザクション管理

分類:宣言型トランザクション、プログラムによるトランザクション
宣言型トランザクション:統合構成を通じてトランザクションの統合管理を実現し、一般にTransactionManangerと関連属性を構成します。プログラム的トランザクション(注釈モード):トランザクションタイプ方法で(トランザクション、ロールバックポリシー、などのタイプを含む)構成関連の注釈は、業務が必要です
PROPAGATION_REQUIRED PROPAGATION_SUPPORTS PROPAGATION_MANDATORY PROPAGATION_REQUIRES_NEW PROPAGATION_NOT_SUPPORTED PROPAGATION_NEVER PROPAGATION_NESTEDトランザクション分離レベル
ISOLATION_DEFAULT ISOLATION_READ_UNCOMMITTED ISOLATION_READ_COMMITTED ISOLATION_REPEATABLE_READ ISOLATION_SERIALIZABLE HibernateとMyBatisのを
Hibernateのオブジェクトリレーショナルマッピング(ORM)の完全な実装と比較すると、MyBatisはSQLマッピングを実装しており、MyBatisはより詳細なSQL最適化を実行してクエリフィールドを削減できます。Hibernateよりも習得が簡単で、Hibernateのしきい値が高くなっています。HibernateのDAOレイヤーの開発はMyBatisよりも簡単です。MybatisはSQLと結果のマッピングを維持する必要があります。HibernateはMyBatisよりもオブジェクトを維持およびキャッシュし、オブジェクトの追加、削除、変更、およびチェックを維持する方が便利です。Hibernateデータベースの移植性は非常に良好です。MyBatisデータベースの移植性は良くありません。データベースごとに異なるSQLを作成する必要があります。Hibernateには、より優れた2次レベルのキャッシュメカニズムがあり、サードパーティのキャッシュを使用できます。MyBatis自体が提供するキャッシュメカニズムは適切ではありません。

GCアルゴリズムとは

参照カウントコピーマーク-クリアマーク-圧縮世代(新世代、旧世代、永続世代)ガベージコレクターが持つ
シリアルコレクター:新世代シリアルコレクター、旧世代シリアルコレクター、並列コレクター:新世代ParNewコレクター、新世代ParallelGCコレクター、旧世代ParallelGCコレクターCMSコレクター:(コンカレントマークスイープ、コンカレントマークスイープ)G1コレクター(1.7以降のCMSコレクターの置き換え)JVM
標準パラメーターのチューニング方法
-client -serverモード-Xmn、-Xms、-Xmxモニタリング:jps、jstat、jinfo、jmap、jhat、jstack ... Javaのヒープとスタックの違いは何ですか?
JVMのヒープとスタックは異なるメモリ領域に属し、それらは異なる目的で使用されます。
スタックは多くの場合、メソッドフレームとローカル変数を保存するために使用され、オブジェクトは常にヒープに割り当てられます。スタックは通常ヒープより小さく、ヒープはJVM全体のすべてのスレッドで共有されますが、複数のスレッド間では共有されません。キャッシングとNoSQL

キャッシュヒット率の計算

キャッシュヒット数/(キャッシュヒット数+ミスキャッシュ数)=ヒット率
MemcacheとRedis
memcache の違いは、データをメモリに保存し、停電後にハングアップします。Redisの一部のデータはハードディスクに残り、電源が切れることはありません失った。メモリキャッシュは、Redisのは、複数のデータ型およびデータ構造は、RedisのRedisの単一スレッドの同期からのショットを呼び出すことができない一貫性のメモリキャッシュ分散ハッシュを使用することができるサポート、Redisの断片方法のみCPUキーと値のペアが格納されている
使用してデータマッピングの一貫したハッシュ実装:クライアントシャーディング(各クライアントはシャードに対応)、エージェント支援シャーディング、クエリルーティングシャーディング、codis(エンドウ豆ポッド、動物園飼育員に依存する)などのredisクラスターの使用。

飼育係の使用

分散アプリケーション調整システムとして、zookeeperは多くの分散プロジェクトで使用されています。
統合ネーミングサービス、状態同期サービス、クラスター管理、分散アプリケーション構成項目などの管理タスクを完了するために使用できます。

飼育係の主な操作は次のとおりです。

ノードの作成、ノードデータの読み取り、ノードデータの更新、ノードの削除、ノードの変更の監視アプリケーションシナリオ:
統合ネームサービス、作成を使用してノード番号を自動的に作成;構成管理、複数のノードの共有構成、構成が変更された場合、ズーキーパーを使用してこれらを使用できます設定されたノードは通知を受け、リロードなどの操作を実行します。ダボサービスなど。クラスター管理:クラスターはマスターノードを選出し、リソースを見つけます。共有ロック負荷分散アプリケーションプロジェクト:
ダボサービスクラスター、redisクラスター、Hadoopクラスターなど

ダボの用途と利点

Dubboは、高性能で透過的なRPCリモートサービス呼び出しソリューションとSOAサービスガバナンスソリューションの提供に特化した分散サービスフレームワークです。

データ構造とアルゴリズム

アレンジ
:逆の順序で単一のネックレスのリストを逆の順序で出力する3つの方法単独でリンクされたリストがある
(直接逆の順序でリスト出力にトラバースリンクされたリストは、アレイ内の各ノードの内容を格納し、次に逆の順序(最も簡単な方法)を使用して出力配列をスタックポインター)逆順と出力

最後に、年収100万円で、皆様のご活躍をお祈りいたします。

おすすめ

転載: blog.csdn.net/m0_45270667/article/details/108664135