序文
現在の一般的な環境から判断すると、転職を成功させるのは例年に比べてはるかに困難になっています。当たり前の感覚:インターネット業界の競争はますます激化しており、面接もますます厳しくなっており、アリ、テンセント、ファーウェイなど多くの大企業が採用枠を大幅に削減しているが、面接は厳しさを増している。 「閾値は何度も引き上げられてきました。実際、生き残りたいなら、淘汰、適者生存、適者生存が必要です。これは永遠の法則です。あなたと私がしなければならないことは、社会や大手企業の発展に適応し、技術の深さと広さを培い、改善し、淘汰されないように一般環境に従うことを継続します。
皆さんもご存知かと思いますが、現在、面接はますます難しくなってきています。覚えなければならない面接の質問はますます増えています。調査はますます詳細になり、底辺はますます低くなります。私たちが構築したいのは明らかです。空母を素手で!私たちプログラマーにとっては本当に恥ずかしいことです。
面接官の質問は、自分で用意した「質問バンク」の質問と異なることが多く、復習しても次の面接はどこから始めればよいのかわかりません。
このため、私は特別に「Java Interview Assault Core Manual」を作成し、皆さんと共有します。内容は以下のとおりです: Java の基本、JVM、マルチスレッド、MySQL、spring、springboot、springcloud、Dubbo、Mybatis、Redis、アルゴリズム、マイクロサービス、ディストリビューション技術のブレインマップなど25の技術分野…クオリティが非常に高い!!!
この新しいバージョンのドキュメントは非常に包括的で、Java の基本、Java コレクション、JavaWeb、Java 例外、OOP、IO および NIO、リフレクション、アノテーション、マルチスレッド、JVM、MySQL、MongoDB、Spring ファミリ バケット、コンピュータ ネットワーク、分散アーキテクチャ、 Redis、Linux、git、フロントエンド、アルゴリズムとデータ構造、MyBatis、RocketMQ、Netty、Dubbo、Zookeeper、分散キャッシュ、データ構造など。1309 件の面接質問、内容は非常に豊富で、多くの人が内定を獲得するのに役立ちました。インターネット第一線の企業から。皆さんにもシェアさせてください。
ドキュメントには詳細が多すぎるため、知識ポイントの一部の章のみが大まかな紹介として編集されており、各章の小さなノードにはより詳細な内容が記載されています。
JavaOOP
- B/Sアーキテクチャとは何ですか? C/Sアーキテクチャとは
- Java ではどのような開発プラットフォームが利用できますか?
- JDKとは何ですか? JREとは何ですか?
- Java言語の特徴は何ですか
- オブジェクト指向と手続き型指向の違い
- データ構造とは何ですか?
- Javaのデータ構造は何ですか?
- OOPとは何ですか?
- クラスとオブジェクトの関係は何ですか?
- Javaにはいくつかのデータ型があります
Java コレクション/ジェネリック
- ArrayList と linkedList の違い
- ハッシュマップとハッシュテーブルの違い
- コレクションのパッケージ構造、コレクションとの違い
- 汎用共通機能(追加予定)
- リスト、セット、マップの違いについて話す
- Array と ArrayList の違いは何ですか?
- マップの特徴は何ですか
- コレクションは Java.util パッケージに保存され、主にいくつかのインターフェイスがあります。
- リストインターフェイスとは何ですか
- ArrayList (配列) について話します。
Java例外
- Java の 2 種類の例外とは何ですか?
- 例外処理メカニズムはいくつありますか?
- 例外をカスタマイズする方法
- try catch ようやく、try に return がありますが、finally はまだ実行されていますか?
- 例外とエラーのパッケージ構造
- トウとトウの違い
- エラーと例外の違いは何ですか?
- エラーと例外の違いは何ですか
Java の IO と NIO
- JavaのIOストリーム?
- Java IOとNIOの違い
- 一般的に使用される io クラスは何ですか
- バイトストリームと文字ストリームの違い
- ブロッキング IO モデル
- ノンブロッキングIOモデル
- 多重化IOモデル
- 信号駆動型 IO モデル
- 非同期IOモデル
- ジャワニオ
Java リフレクション
- new を使用してオブジェクトを作成する以外に、オブジェクトの作成にどのような方法を使用できますか?
- Java リフレクションを通じてオブジェクトを作成するのと、new を通じてオブジェクトを作成する方が効率的ですか?
- Javaリフレクションの役割
- 反射メカニズムはどこで使用されますか?
- リフレクションの実装:
- Java リフレクションを実装するクラス:
- 反映メカニズムの長所と短所:
- Java リフレクション API
- リフレクションの使用手順(クラスオブジェクトの取得、オブジェクトメソッドの呼び出し)
- Class オブジェクトを取得するにはいくつかの方法があります
- リフレクションを使用してオブジェクト インスタンスを動的に作成する
Java シリアル化
- Java シリアル化とは何ですか? Java シリアル化を実現するにはどうすればよいですか?
- オブジェクトとその状態をメモリまたはディスクに保存 (永続化)
- シリアル化されたオブジェクトはバイト配列として永続化されます。静的メンバーは永続化されません。
- ユーザーリモートオブジェクト転送をシリアル化する
- Serializable はシリアル化を実装します
- writeObject および readObject のカスタムシリアル化戦略
- シリアル化されたID
- シリアル化では静的変数は保存されません
- Transient キーワードは、変数がファイルにシリアル化されるのを防ぎます。
- シリアル化 (ディープ クローン 1 で実装)
マルチスレッドと同時実行
- Java でマルチスレッドを実装するにはいくつかの方法があります
- Threadクラスを継承する
- Runnable インターフェイスを実装します。
- ExecutorService、Callable、Future には戻り値スレッドがあります
- スレッドプールに基づく
- 4つのスレッドプール
- 実行中のスレッドを停止する方法
- Notice() と NotifyAll() の違いは何ですか?
- sleep() と wait() の違いは何ですか?
- 揮発性とは何ですか? 秩序は保証されますか?
JVM
- Javaではメモリリークが発生するのでしょうか?簡単に説明してください。
- 64 ビット JVM では、int の長さはどれくらいですか?
- シリアル GC とパラレル GC の違いは?
- 32ビットと64ビットのJVMの場合、int型変数の長さはどれくらいですか?
- JavaのWeakReferenceとSoftReferenceの違いは何ですか?
- JVM オプション -XX:+UseCompressedOops は何をしますか? なぜ使うのか
- Java プログラムを通じて JVM が 32 ビットか 64 ビットかを判断するにはどうすればよいですか?
- 32 ビット JVM と 64 ビット JVM の最大ヒープ メモリはそれぞれどれくらいですか?
- JRE、JDK、JVM、JITの違いは何ですか?
- Java ヒープ領域と GC について説明しますか?
MySQL
- データベースストレージエンジン
- InnoDB (B+ ツリー)
- TokiDB (データ付きフラクタル ツリー ノード)
- メモリ
- データベースエンジンとは何ですか
- InnoDB と MyISAM の違い
- 索引
- 一般的なインデックス作成の原則は次のとおりです。
- データベースの 3 つの標準形式は何ですか?
- 第一正規形 (第一 NF - 列は細分化されません)
レディス
- リディスとは何ですか?
- Redis は他の Key-Value ストアとどう違うのですか?
- Redis のデータ型は?
- Redis を使用するメリットは何ですか?
- Memcached に対する Redis の利点は何ですか?
- Memcache と Redis の違いは何ですか?
- Redis はシングルプロセスおよびシングルスレッドですか?
- 文字列型のスマート ストレージの最大容量はどれくらいですか?
- Redis の永続化メカニズム
- キャッシュなだれ、キャッシュペネトレーション、キャッシュウォームアップ、キャッシュ更新、キャッシュダウングレードなど。
Memcached
- Memcached とは何ですか?またその機能は何ですか?
- エンタープライズ クラスター アーキテクチャにおける memcached サービスのアプリケーション シナリオは何ですか?
- Memcached サービスの分散クラスターを実現するにはどうすればよいですか?
- Memcached サービスの特徴と動作原理は何ですか?
- Memcached メモリ管理メカニズムの原理を簡単に説明してください。
- memcached はどのように機能しますか?
- memcached の最大の利点は何ですか?
- memcached と MySQL クエリ
- サーバーのローカル キャッシュ (PHP の APC、mmap ファイルなど) と比較して、memcached の長所と短所は何ですか?
- memcached のキャッシュ機構とは何ですか?
- memcached は冗長メカニズムをどのように実装しますか?
モンゴDB
- モンゴデータベースとは何ですか?
- mongodbの特徴は何ですか?
- NoSQL データベースとは何ですか? NoSQL と RDBMS の違いは何ですか? NoSQL データベースを使用する理由と使用しない理由は何ですか? NoSQL データベースの利点について教えてください。
- NoSQL データベースにはどのような種類がありますか?
- MySQL と MongoDB の最も基本的な違いは何ですか?
- MongoDB、CouchDB、CouchBase をどのように比較しますか?
- MongoDB が最高の NoSQL データベースである理由は何ですか?
- エントリが不完全な場合(たとえば、途中でクラッシュした場合)、ジャーナルの再生に問題が発生しますか?
- MongoDB におけるアナライザーの役割は何ですか?
- ネームスペースとは何ですか?
春
- Spring Framework のさまざまなバージョンの主な機能は何ですか?
- Springフレームワークとは何ですか?
- Spring Framework の利点を挙げてください。
- Spring Framework のさまざまな機能は何ですか?
- Spring Framework にはモジュールがいくつあり、それらは何ですか?
- Spring 構成ファイルとは何ですか?
- Spring アプリケーションのさまざまなコンポーネントは何ですか?
- Springの使い方にはどのようなものがあるのでしょうか?
- Spring IOC コンテナとは何ですか?
- 依存関係の注入とは何ですか?
スプリングブーツ
- スプリングブートとは何ですか?
- Spring Boot を使用する理由
- Spring Boot の利点は何ですか?
- Spring Boot のコア アノテーションはどれですか? 主にどの注釈で構成されていますか?
- Spring Bootを実行するにはどのような方法がありますか
- Spring Boot のスターターを理解するにはどうすればよいですか?
- Spring Boot の起動時に特定のコードを実行するにはどうすればよいですか?
- Spring Boot を実行するにはスタンドアロン コンテナーが必要ですか?
- Spring Boot のモニターとは何ですか?
- Spring Boot で例外処理を実装するにはどうすればよいですか?
春の雲
- スプリングクラウドとは何ですか?
- Spring Cloud を使用する利点は何ですか?
- サービスの登録と検出とは何を意味しますか? Spring Cloud はそれをどのように実装しますか?
- ロードバランシングの意味は何ですか?
- ヒストリックスとは何ですか?耐障害性はどのように実現されるのでしょうか?
- Hystrix サーキットブレーカーとは何ですか? 必要ですか?
- Netflix フェイクとは何ですか? その利点は何ですか?
- Springクラウドバスとは何ですか?必要ですか?
- マイクロサービスとは
- サービスサーキットブレーカーとは何ですか? サービスの低下とは何ですか
ラビットMQ
- ウサギmqとは何ですか
- Rabbitmq を使用する理由
- Rabbitmq を使用したシナリオ
- メッセージが RabbitMQ に正しく送信されることを確認するにはどうすればよいですか? メッセージの受信者がメッセージを確実に消費するようにするにはどうすればよいでしょうか?
- メッセージの繰り返しの配信や消費を避けるにはどうすればよいでしょうか?
- メッセージはどのトランスポートに基づいていますか?
- メッセージはどのように配布されるのでしょうか?
- メッセージはどのようにルーティングされるのでしょうか?
- メッセージが失われないようにするにはどうすればよいでしょうか?
- RabbitMQ を使用する利点は何ですか?
ダボ
- ダボを使用する理由
- Dubbo の全体的なアーキテクチャ設計の層は何ですか?
- デフォルトではどのような通信フレームワークが使用されますか?また、代替手段はありますか?
- サービスコールはブロックされていますか?
- 一般的にどのようなレジストリが使用されますか? 別のオプションはありますか?
- デフォルトではどのシリアル化フレームワークが使用されますか?他に何を知っていますか?
- サービスプロバイダーが失敗提案を実行できる原則は何ですか?
- サービス開始が古いバージョンに影響を与えないのはなぜですか?
- サービス呼び出しチェーンが長すぎる問題を解決するにはどうすればよいですか?
- コア構成について教えてください。
マイバティス
- マイバティスとは何ですか?
- マイベイトのメリット
- MyBatis フレームワークの欠点
- MyBatis フレームワークが適用される場面
- MyBatis は Hibernate とどう違うのですか?
- {} と ${} の違いは何ですか?
- エンティティクラスの属性名がテーブルのフィールド名と異なる場合はどうすればよいですか?
- ファジークエリのようなステートメントを記述するにはどうすればよいですか?
- 通常、Xml マッピング ファイルには、それに対応する Dao インターフェイスが記述されます。この Dao インターフェイスの動作原理は何ですか? パラメーターが異なる場合、Dao インターフェースのメソッドをオーバーロードできますか?
- 自動生成された (主) キーの値を取得するにはどうすればよいですか?
動物園の飼育員
- ズーキーパーとは何ですか?
- Zookeeper は分散一貫性特性をどのように保証しますか?
- ZooKeeper は何を提供しますか?
- Zookeeper ファイル システム
- ZABプロトコル?
- 4種類のデータノード Znode
- Zookeeper Watcher メカニズム - データ変更通知
- クライアントはウォッチャーの実装を登録します
- サーバー側処理 Watcher実装
- クライアント コールバック ウォッチャー
データ構造
- スタック
- 列
- リンクリスト (リンク)
- ハッシュ表
- 二分木を並べ替える
- プレフィックスツリー
- 赤黒い木
- B-TREE
- ビットマップ
エラスティックサーチ
- elasticsearch についてどのくらい知っていますか。会社の es クラスター アーキテクチャ、インデックス データ サイズ、フラグメントの数、およびいくつかのチューニング方法について話してください。
- elasticsearchの逆インデックスとは何ですか
- Elasticsearch インデックス データの詳細な方法、チューニング、デプロイ方法
- elasticsearch がマスター選挙を実装する方法
- Elasticsearch のドキュメントのインデックス作成プロセスを詳細に説明する
- Elasticsearch検索のプロセスを詳しく説明してください。
- Elasticsearch をデプロイする場合の Linux 設定の最適化方法は何ですか
- lucenceの内部構造はどうなっているのでしょうか?
- Elasticsearch はマスター選出をどのように実現しますか?
- Elasticsearch のノード (たとえば、合計 20 個) のうち、10 個がマスターを選択し、残りの 10 個が別のマスターを選択する場合、どうすればよいですか?
カフカ
- カフカとは
- パーティションのデータ ファイル (オフセット、MessageSize、データ)
- データファイルセグメンテーションセグメント(シーケンシャル読み取りおよび書き込み、セグメントコマンド、バイナリ検索)
- 負荷分散 (パーティションはさまざまなブローカーに均等に分散されます)
- 一括送信
- 圧縮 (GZIP または Snappy)
- 消費者向けデザイン
- 消費者グループ
- トピックのリストを取得する方法
- プロデューサとコンシューマのコマンドラインは何ですか?
マイクロサービス
- マイクロサービス アーキテクチャの利点は何ですか?
- マイクロサービスの特徴は何ですか?
- マイクロサービスを設計するのに最適な時期はいつですか?
- マイクロサービス アーキテクチャはどのように機能するのでしょうか?
- マイクロサービス アーキテクチャの長所と短所は何ですか?
- モノリシック、SOA、マイクロサービス アーキテクチャの違いは何ですか?
- マイクロサービス アーキテクチャを使用する場合、どのような課題に直面しますか?
- SOA とマイクロサービス アーキテクチャの主な違いは何ですか?
- マイクロサービスの特徴は何ですか?
Linux
- 絶対パスにはどのような記号が使われますか? カレントディレクトリと上位ディレクトリとは何ですか?メインカタログは何ですか?カタログを切り替えるにはどのような順序が使用されますか?
- 現在のプロセスを確認するにはどうすればよいですか? 出口を実行するにはどうすればよいですか? 現在のパスを確認するにはどうすればよいですか?
- 画面をクリアするにはどうすればよいですか? 現在のコマンドを終了するにはどうすればよいですか? 睡眠をどのように実装するか? いつ確認するか
- Ls コマンドは何をするのでしょうか? どのようなパラメータを取得できますか?その違いは何ですか?
- ファイルを表示するコマンドは何ですか
- よく使用される Linux コマンドをいくつか挙げます
- 普段どのようにログを確認していますか?
- ソフト リンク (ショートカット) とハード リンク コマンドを作成する
- ディレクトリの作成にはどのようなコマンドを使用しますか? ファイルの作成にはどのようなコマンドが使用されますか? ファイルをコピーするにはどのような順序を使用しますか?
- ファイルの内容を表示するにはどのようなコマンドが利用できますか?
特集コンテンツ
やっと
面接、難しいですか?最終的な結果は良いのか悪いのか?面接官のバックグラウンド(オーラ+スキル)、メンタルや認知力、コミュニケーションスキルによって異なります。また、一部の主流の大規模インターネット企業の面接 (Alibaba、JD.com、Meituan、Didi) では、面接官の評価と肯定を得るために、面接中に自分の能力を示すことが求められます。
そして、プログラマーは仕事に応募する際に何層もの面接を受ける必要があります。ことわざにあるように、ナイフを研ぐことは誤って薪を切ることはありません。面接前にしっかりと準備をしておくことは、面接中の面接官の質問や緊急事態にうまく対処するのに役立ちます。