前に書く
2020年のこの特別な時期に、3分の1が瞬く間に過ぎましたが、この時期を通じて、多くの知識を習得し、建築の知識を深める友人もいます。何人かの友人は始めなかった、そして今度は無駄に浪費されたので、彼らの知識は減っただけでなく、より多くの人々に追い越されることを許した。面接の最中、面接の質問でお気に入りの大工場のオファーをパスする可能性が高いですが、これは絶対に望んでいることではないと思います。Xiaobian Zhaiは、この間に自宅でJavaに関するいくつかのインタビューの質問を整理しました:JVM +分散+アルゴリズム+ロック+ MQ +マイクロサービス+データベース。
JAVAの基本
- JAVAの基本的なデータ型とは何ですか、またそれらは何バイトを占めますか?
- Stringクラスを継承できますか、またその理由は何ですか。
- String、Stringbuffer、StringBuilderの違い。
- ArrayListとLinkedListの違いは何ですか。
- 親の静的データ、コンストラクター、フィールド、サブクラスの静的データ、コンストラクター、フィールドなど、クラスのインスタンス化の順序について話します。
- どのMapクラスを使用しましたか?違いは何ですか?HashMapはスレッドセーフですか?同時に使用されるMapは何ですか?ストレージメソッド、ハッシュコード、拡張、デフォルト容量などの内部原則は何ですか?
- JAVA8のConcurrentHashMapがセグメントロックをあきらめるのはなぜですか?問題がある場合、それを設計する場合、どのように設計しますか?
- 順序付けられたMap実装クラスはありますか?ある場合、それらはどのように順序付けされることが保証されますか?
- 抽象クラスとインターフェースの違いクラスは複数のクラスを継承できますか?インターフェースは複数のインターフェースを継承できますか?クラスは複数のインターフェースを実装できますか?
- 継承と集約の違いは何ですか。
- IOモデルとは何か、理解しているnioについて話します。彼とbio、aioの違いは何ですか、reactorモデルについて話します。
- リフレクションの原理、リフレクションがクラスインスタンスを作成する3つの方法は何か。
- リフレクションでは、Class.forNameとClassLoaderの違い。
- 動的エージェントを実装するいくつかの方法を説明し、それぞれの利点と欠点を述べます。
- 動的プロキシとcglibの違い。
- CGlibメソッドがインターフェイスのプロキシを実装できる理由。
- 最終使用。
- 3つのシングルトンモード実装を記述します。
- 子クラスの親クラスのすべてのハッシュコードと等価の実装を自動的に完了するにはどうすればよいですか?そうすることの利点と欠点は何ですか。
- OO設計概念を組み合わせて、アプリケーション設計におけるアクセス修飾子public、private、protected、defaultの役割について話してください。
- 深いコピーと浅いコピーの違い。
- 配列およびリンクリストのデータ構造の説明、それぞれの時間の複雑さ。
- エラーと例外の違い、CheckedExceptionとRuntimeExceptionの違い。
- ランタイム例外を5つ挙げてください。
- 私のコードでは、java.lang.Stringクラスを作成した場合、このクラスをクラスローダーでロードできますか?なぜか。
- java.lang.ObjectオブジェクトのhashCodeおよびequalsメソッドの理解について教えてください。どのような状況下で
- これらの2つのメソッドを再実装するには。
- jdk1.5では、ジェネリックが導入され、ジェネリックの存在を使用して問題が解決されます。
- このようなa.hashcode()の使用方法とa.equals(b)との関係
- 2つの等しくないオブジェクトが同じハッシュコードを持つことは可能ですか?
- JavaでのHashSetの動作。
- シリアル化とは何か、シリアル化の方法、なぜシリアル化するのか、逆シリアル化で発生する問題とその解決方法。
- java8の新機能。
オープンソースフレームワークの知識
- Tomcat構造とそのクラスローダープロセス、スレッドモデルなどについて簡単に説明します。
- どのようにTomcatをチューニングするか、どのパラメーターが関係するか。
- Springの読み込みプロセスについて説明します。
- Spring AOPの実現原理。
- Springトランザクションの伝播プロパティについて説明します。
- Springがトランザクションを管理する方法。
- Springはトランザクションをどのように構成しますか(特に、いくつかの主要なxml要素)。
- 非シングルトン注入の原理である春についての理解について話してください。そのライフサイクル?サイクリック噴射の原理、AOPの元の実装
- 理由:aopのいくつかの用語について、それらがどのように相互に作用するかについて話します。
- SpringmvcのDispatcherServlet初期化プロセス。
- Nettyのスレッドモデル。reactorモデルに基づいてnettyを実装する方法。
- nettyを選ぶ理由
- TCPスティッキパケットとは何ですか。解決策は何ですか。
- nettyのfashwheeltimerの使用法、実装の原則、時間どおりではない呼び出しがあったかどうか、それを解決する方法。
- nettyのハートビートが弱いネットワークで処理されている場合の対処方法。
- nettyの通信プロトコルは何ですか?
- springmvcによって使用されるアノテーション、機能とは何か、および原則。
- springboot起動メカニズム。
- Springテストの質問に対する一連の回答については、ここをクリックしてください。
マルチスレッド
- マルチスレッドを実現するいくつかの方法、スレッドセーフとは何か。
- 揮発性の原理と効果はロックを置き換えることができますか?
- スレッドのライフサイクル状態図を描画します。
- 睡眠と待機の違い。
- 睡眠と睡眠の違い(0)。
- ロックと同期の違い。
- 同期の原則は何ですか?それは一般的にどこで使用されますか(静的メソッドと非静的メソッドの違い、静的など)
- 静的メソッドと非静的メソッドを同時に実行した場合の影響はありますか)、次の用語を説明します:並べ替え、スピンロック、バイアスロック、ライト
- マグニチュードロック、リエントラントロック、フェアロック、アンフェアロック、楽観的ロック、悲観的ロック。
- 使用されているアトミッククラスとその原理は何ですか。
- 原則について話すために、JUCの下でどの並行性ツールが研究されてきましたか。
- スレッドプールを使用したことがありますか?使用したことがある場合は、原理を説明し、newCacheとnewFixedの違いについて説明してください。
- coreSize、maxsizeなど、数値のさまざまなパラメーターの意味は何ですか?
- スレッドプールを閉じる方法はいくつかありますが、それらの違いは何ですか。
- サードパーティのインターフェースがある場合、データを取得するために呼び出すスレッドが多数ありますが、現在、1秒あたり最大10スレッドと規定されています。
- それを呼び出すときにそれを行う方法。
- Springのコントローラーは1つですか、それとも複数ですか?並行性の安全性を確保する方法。
- 3つのスレッドを使用して、abccabcなどのabcの3つの文字を順番に印刷します。
- ThreadLocalを使用したことがありますか?その目的は何ですか?その原則は何ですか?それを使用するときに注意する必要があるものは何ですか。
- 並行して安全なリンクリストを実装する場合は、どうしますか。
- ロックフリーのデータ構造とは何か、それらが実装する原則は何か。
- 待機について話し、Java同期メカニズムを通知します。
- CASメカニズムとは何か、およびABA問題を解決する方法。
- スレッドが複数のスレッドでハングアップした場合の対処方法。
- countdowlatchと環状バリアの内部原則と使用法、およびそれらの違い(
- (Countdownlatchのawaitメソッドとその実現方法)。
- AbstractQueuedSynchronizerについてどのくらい知っていますか?ロックとロック解除のプロセス、排他的ロックと公平なロックについて話しますか
- ロックの違いは何ですか。
- 同期メソッドを使用して静的メソッドと非静的メソッドを変更する違いは何ですか。
- ConcurrentLinkedQueueとLinkedBlockingQueueの使用法と違いについて簡単に説明します。
- スレッドがデッドロックした原因は何ですか?スレッドのデッドロックを解除する方法。
- 非常に多くのスレッド(異なるマシンである可能性があります)は、ある種の作業を完了するために互いに調整を待つ必要があり、この調整スキームの設計方法を尋ねます。
- 読み取り/書き込みロックを使用したことがありますか。その原理は何ですか。また、一般的にどのような状況で使用されますか?
- 複数のスレッドを開き、順次実行を保証する場合、実装のいくつかの方法は何ですか、または複数のスレッドが確実に実行されるようにする方法は?
- もう一度結果を取得します。
- 遅延キューの実装、delayQueueとタイムホイールアルゴリズムの違い。
- 回答行マルチスレッドテストの質問については、ここをクリックしてください。
JVMの知識
スタックメモリオーバーフローが発生する状況。
JVMのメモリ構造、EdenとSurvivorの比率。
JVMメモリを新世代、旧世代、および永続世代に分割する理由 なぜそれを新世代のエデンとサバイバーに分ける必要があるのですか?
JVMの完全なGCプロセス、オブジェクトを古い世代に昇格する方法、知っている主なJVMパラメータのいくつかについて話す
番号。
ガベージコレクターの種類、それぞれの長所と短所、cmsとG1に焦点を当て、原理、プロセス、長所と短所を知っています。
ガベージコレクションアルゴリズムの実装原理。
メモリオーバーフローが発生した場合、どのようにトラブルシューティングしますか?
並べ替え、メモリバリア、発生前、メインメモリなど、JVMメモリモデルに関する知識
メモリなど
単にあなたが知っているクラスローダーについて話し、親の委任を壊すことができるか、そしてそれを壊す方法を話してください。
JAVAの反射メカニズムについて話してください。
オンラインアプリケーションのJVMパラメータは何ですか。
g1とcmsの違い、スループット優先と応答優先のガベージコレクターの選択。
スレッドスタック情報の再生方法。
次のjvmパラメータの意味を説明してください。
-server -Xms512m -Xmx512m -Xss1024K
-XX:PermSize = 256m -XX:MaxPermSize = 512m-
XX:MaxTenuringThreshold = 20XX:CMSInitiatingOccupancyFraction = 80-
XX:+ UseCMSInitiatingOccupancyOnly。
オペレーティングシステム
- Linuxシステムでどのカーネルパラメータに注意を払って、知っていることについて話しましたか。
- LinuxにはいくつかのIOモデルがあり、それぞれの意味は何ですか。
- epollとpollの違いは何ですか。
- 通常使用されるLinuxコマンド。
- 1行のコマンドを使用して、ファイルの最後の5行を表示します。
- 単一のコマンドを使用して、実行中のJavaプロセスを出力します。
- 理解しているオペレーティングシステムのスレッド切り替えプロセスを紹介します。
- プロセスとスレッドの違い。
- topコマンドの後に何があり、何をしますか。
- オンラインCPUが急増しています。どうやって問題を見つけますか?
TCPとHTTP
http1.0とhttp1.1の違いは何ですか。
TCPの3ウェイハンドシェイクと4ウェイウェーブのプロセス。4回切断する理由。ハンドシェイクが2つしかない場合はどうなりますか。
TIME_WAITとCLOSE_WAITの違い。
200、302、404など、知っているいくつかのHTTP応答コードについて話します。
ブラウザを使用してリンク(例:http://www.javastack.cn)を開く場合、コンピュータはどのような手順を実行しますか。
TCP / IPの信頼性を確保する方法は、TCPヘッダーの構造について話します。
ブラウザのキャッシュを回避する方法。
HTTPプロトコルのステートレスを理解する方法。
Httpリクエストのgetとpost、およびパケット形式の違いについて簡単に説明します。
HTTPのメソッドは何ですか
HTTPリクエストのパケット形式を簡単に説明します。
HTTP long connectionとはどういう意味ですか?
HTTPSの暗号化方法とは何か、暗号化と復号化のプロセス全体について説明します。
Httpとhttpsの3ウェイハンドシェイクの違いは何ですか。
ブロック転送とは何ですか。
セッションとcookieの違い。
一連の回答の質問については、ここをクリックしてください。
データベースの知識
- データベースの分離レベルとは、それぞれの意味とは何か、MYSQLのデフォルトの分離レベルとは何か。
- ファントムリーディングとは?
- MYSQLのストレージエンジンとは何か、それぞれの利点と欠点。
- 高い同時実行性の下で、同じデータ行を安全に変更する方法。
- 楽観的ロックと悲観的ロックとは何か、2つの標準的なINNODB行レベルロックとは何か、それらの意味を説明します。
- SQL最適化の一般的な手順、実行計画の見方、各フィールドの意味の理解方法は何ですか。
- データベースはデッドロックしますか?デッドロックの例として、MySQLはどのようにしてデッドロックを解決しますか?
- MYsqlインデックスの原則、インデックスのタイプ、合理的なインデックスの作成方法、インデックスの最適化方法。
- クラスター化インデックスと非クラスター化インデックスの違い。
- select for updateの意味は何ですか、それはテーブルまたは行または何かをロックしますか?
- それを実現するためにBtreeを使用する理由、それがどのように分割されるか、いつ分割されるか、そしてなぜバランスが取れているか
- データベースのACIDは何ですか。
- テーブルには1000万近くのデータがあり、CRUDは遅く、どのように最適化するか。
- Mysqlテーブルスキャンを最適化する方法。
- SQLの記述方法では、複合インデックスを効果的に使用できます。
- mysqlとinの違い。
- データベースの自動インクリメント主キーで起こりうる問題。
- MVCCの意味、その実現方法。
- あなたがやったプロジェクトでサブライブラリとサブテーブルに遭遇しましたか?それを行う方法は、jdbcのシャーディングなどのミドルウェアに役立ちますか?
- 原理を知っていますか?
- MYSQLのマスター/スレーブ遅延を解決する方法。
アーキテクチャの設計と配布
自分でJavaでLRUを実装します。
分散クラスターで一意のシリアル番号を取得する方法。
30分以内に支払いなしでトランザクションを自動的に閉じるスパイクシステムを設計します。
redisとzookeeperを使用して分散ロックを実現する方法 長所と短所は何か、問題は何か、それらは何に適用できるか
シーン。(拡張:レッドロックを知っている場合は、彼のアルゴリズムの実装について話してください。紛争はどこにありますか)
誰かが悪意を持って不正な接続を作成した場合、それを解決する方法。
分散トランザクションの原理、長所と短所、分散トランザクションの使用方法、2pcと3pcの違い、解決される問題、および
解決されていない問題、それらを解決する方法、独自のプロジェクトで分散トランザクションを処理する方法。
整合性のあるハッシュとは何ですか。
安らぎとは何か、あなたが理解している安らぎについて話しなさい。
優れたAPIを設計する方法。
長い100w接続を設計、確立、維持する方法。
MESIプロトコル(キャッシュコヒーレンス)とは何かを説明します。
あなたが知っているいくつかのHASHアルゴリズムについて話します。単純なものも許容されます。
paxosアルゴリズムとは何ですか、zabプロトコルとは何ですか。
オンライン文書システム、文書を編集することができる、複数の人がすることを防ぐ方法
ドキュメントを編集および更新します。
オンラインシステムが突然異常に遅くなる場合、どのように問題を見つけますか。
通常使用するデザインパターンについて説明します。
ダボの原則、ソースコード、データの流れ方、クラスタリング、負荷分散、サービス登録の実現方法を見たことはありますか
検出、再試行転送、および迅速な失敗の戦略は何ですか。
RPCリクエストのフローはどのようなものですか。
rpcを自分で実装した場合、その原理を簡単に説明できます。Rpcはどのような問題を解決しますか?
非同期モードの目的と重要性。
開始と終了の原則、作業中のアプリケーションなど、プログラミングにおけるいくつかの設計原則を考慮する方法。
高い同時実行性、スケーラビリティなどを必要とするソーシャルネットワーキングサイトで「プライベートメッセージ」機能を設計します。アーキテクチャの図を描きます。
MVCパターンは一般的なMVCフレームワークです。
設計に関与したサーバーアーキテクチャについて説明し、絵を描き、発生した問題とその解決方法について説明します。
アプリケーションサーバーはパフォーマンスをどのように監視するか、さまざまな方法の違い。
高度な同時支払いプランの設計方法とアーキテクチャの設計方法。
負荷分散を実現する方法、実現可能なアルゴリズム。
Zookeeperの目的、選挙の原則は何ですか。
Zookeeper監視メカニズムの原理。
Mybatisの基本的な実装原理。
分散環境でcountDownLatchを実現するソリューションについて考えてください。
バックグラウンドシステムは、リクエストの繰り返し送信をどのように防止しますか?
サービスのリリースから消費までの詳細なプロセスを説明してください。
理解しているサービスガバナンスについて話します。
インターフェイスのべき等性を実現する方法。
現在の制限戦略、トークンバケット、ファネルアルゴリズムの使用シナリオの実行方法。
データの整合性とは何ですか。また、データの整合性をどのように理解していますか。
分散サービスの呼び出し元(サービスプロバイダーに依存していない場合)、サービスパーティーが電話を切った後の無効なリソース要求の大量の処理方法
無駄、サービスプロバイダーのスループットが高くない場合の対処方法、サービスがハングした場合の対処方法、しばらくしてから再起動する方法
リソースの最小の浪費とは何か、ハーフオープントラフィックの実装メカニズムは何ですか。
ダボの汎化呼び出しを実装する方法(ある場合)。
リモート呼び出しでタイムアウト現象が発生します。エレガントな制御が実装されている場合、JDKに組み込まれているタイムアウトメカニズムとはどのように実装されますか。
キャッシュ
- 一般的なキャッシング戦略とは何か、キャッシュ内のデータ(redisなど)とDBの一貫性をどのように実現するか、プロジェクトで使用した
- キャッシュシステムとその設計方法。
- キャッシュの破壊と雪崩を防ぐ方法。
- キャッシュデータの有効期限が切れた後の更新を設計する方法。
- redisリスト構造に関連する操作。
- Redisのデータ構造は何ですか。
- Redisを使用する際に注意する必要があること、永続化方法、メモリ設定、クラスターアプリケーション、利点と欠点、排除戦略などについて話します。
- redis2とredis3の違い、redis3の内部通信メカニズム。
- 現在のredisクラスターのゲームプレイ、それぞれの長所と短所、シナリオは何ですか。
- Memcacheの原理。どのデータがキャッシュに配置されるのに適しているか。
- redisとmemcachedのメモリ管理の違い。
- Redisの同時競合の問題を解決する方法?RedisトランザクションのCAS操作を知っていますか?
- Redisの選挙アルゴリズムとプロセスは何ですか。
- Redisの永続化メカニズム、AOFとRDBの違い。
- Redisはデータを同期する方法をクラスター化します。
- どのredis最適化操作を知る。
- Reidsのマスタースレーブレプリケーションメカニズムの原理。
- Redisのスレッドモデルとは
- キャッシュの全体的なサイズを制御できる、自動的に適応されるローカルキャッシュを設計するソリューションを検討してください。
- キャッシュ(ローカルキャッシュ、集中キャッシュ)の使用方法を説明し、ローカルキャッシュと集中キャッシュの利点と欠点を簡単に説明します。
- ローカルキャッシュを同時に使用する場合の考慮事項。
アルゴリズム
- 10億の数値の中で最小の10を見つけます。
- 1億の数字があり、そのうちの2つが繰り返されています。すばやく見つけて、時間とスペースを最適化する必要があります。
- 中間値を見つけるためにランダムに生成された2億個の順序付けされていない整数。
- 長さが不明な(場合によっては大きい)入力文字列を与え、繰り返される文字を再配置するためのスキームを考案します。
- 二分木をトラバースします。
- 3n + 1の数があり、そのうち3nは繰り返されますが、1だけは繰り返されません。
- 関数を逆にする文字列(www.javastack.cnなど)を記述します。
- 一般的な並べ替えアルゴリズム、高速な並べ替え、マージ、バブリング。高速キューの最適な時間の複雑さと最悪の複雑さ。バブルソート
- 最適化計画。
- バイナリサーチの時間の複雑さと利点。
- 構築されたTreeSetの逆ソートを完了する方法。
- B +ツリー、Bツリーとは、実際の使用シナリオをリストします。
- 単一リンクリストで、最後のN個のデータを削除します。
- 200の順序付けられた配列、各配列の100要素は、top20要素を見つけます。
- 一方向リンクリストで、真ん中の要素を見つけます。
メッセージキュー
メッセージキューのシナリオを使用します。
メッセージの再送信は戦略を補足します。
メッセージの順序を確認する方法。
使用しているMQと、他のMQと比較した利点と欠点は、MQ接続がスレッドセーフであり、会社のMQサービスである
アーキテクチャとは何ですか?
MQシステムのデータが失われないようにする方法。
rabbitmqがクラスターの高可用性を実現する方法。
カフカの高スループットの理由。
kafkaと他のメッセージキューの違い、kafkaのマスター/スレーブ同期を実現する方法。
MQを使用して最終的な整合性を達成する方法。
kafkaで問題が発生しましたか?
MQの繰り返しの消費、それを回避する方法、べき等を達成する方法が存在する可能性があります。
MQメッセージの遅延に対処する方法、メッセージに有効期限を設定できるか、有効期限が切れたときに通常行うこと
検索する
- elasticsearchはどのくらい知っていますか?会社のesクラスターアーキテクチャ、インデックスデータサイズ、シャードの数、およびいくつかについて話します
- チューニングという意味です。elasticsearchの逆索引とは何ですか。
- elasticsearchに索引データがさらにある場合の対処方法、それを調整およびデプロイする方法。
- elasticsearchはどのようにしてマスター選挙を達成しますか?
- Elasticsearchインデックス作成ドキュメントのプロセスを詳しく説明します。
- Elasticsearch検索のプロセスを詳しく説明します。
- Elasticsearchがデプロイされている場合のLinux設定の最適化方法は何ですか?
- lucenceの内部構造とは何ですか。
上記は、最も包括的なJavaインタビューの質問をまとめたものです。次は、BATインタビューJavaが必要な質問と回答の最新の概要です。
2020最新のBATの高度なJavaインタビューの質問と回答