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