個人的な状況
北京のコーディネーターは、15年間の学部生が通常の大学を卒業し、卒業後は伝統的な電気通信会社で働き、17年後に美団Dianpingで働きました。
4年の経験はどのようなスキルを持っている必要があります
まず、優れたJavaプログラマーが約4年の経験で持つべきスキルについて簡単に説明しましょう。「プロのスキル」と「プロジェクト」の2つの部分によると、以下を含みますが、これらに限定されません。
プロフェッショナルスキル
- 基礎:一般的に使用されるJDKクラスの原則、ソースコード、および使用シナリオ。
- デザインパターン:いくつかの一般的な原則、使用シナリオ、シングルトン、動的エージェント、テンプレート、責任の連鎖など。
- データ構造:配列、リンクリスト、スタック、キュー、ツリー。
- ネットワーク:TCP、HTTP、HTTPS、負荷分散アルゴリズム。
- フレームワーク:Spring IoCの原則、Spring AOPの原則と使用、Springで一般的に使用される拡張ポイント、MyBatisコアプロセス。
- ミドルウェア:一般的に使用されるミドルウェアのコア原則とベストプラクティスであり、そのうちの1つまたは2つ、Redis、Kafka(RocketMQ、RabbitMQ)、Dubbo、Zookeeperについて詳細に学習しています。
- データベース(MySQL):インデックスの原則、分離レベル、ロックメカニズム、サブデータベースサブテーブル、遅いSQLの配置と最適化、オンラインの問題解決。
- Netty:NIOの原則、コアコンポーネント、I / O多重化(epoll)、ゼロコピー。
- JVM:ランタイムデータ領域、ガベージコレクションアルゴリズム、ガベージコレクター(CMS、G1)、一般的な構成パラメーター、オンラインの問題の場所と解決策。
- 安定性の保証:絶縁、電流制限、融着、劣化など。
- Linux:基本的なコマンドを使用して、問題をすばやく見つけてトラブルシューティングします。
- 分散理論:CAP、BASE、2PC、3PC、TCC。
プロジェクトの側面
- 複雑なモジュールの要件分析、スキーム設計、および最終実装を独立して完了することができます。
- 常に考え、より良い設計とソリューションを見つけ、遅いSQLと遅いサービスを積極的に最適化することができます。
- データベースのデッドロック、サーバーのダウンタイム、頻繁なサーバーのフルGCなど、問題のトラブルシューティング、オンラインの問題の特定と修復を時間内に行うことができます。
- 困難な問題を解決する能力を持ち、プロジェクトが直面する課題を継続的に解決し、ジュニアエンジニアに技術的なガイダンスを提供することができます。
- 最初はチーム(約1〜3人)を率いる能力があり、要件を合理的に割り当てることができ、進捗管理、リスク評価、およびコードレビューを適切に行うことができます。
厳密に言えば、上記を完全に行うのは少し難しく、私自身も持っていませんが、それを目標ととらえ、頑張っていきます。
面接の一般的な形式
Dachangのインタビューは通常、「シリアルガン」の形式で行われます。例:
インタビュアー:どのマップが使用されたか
我:LinkedHashMap、ConcurrentHashMap、HashMap、TreeMap
インタビュアー:これら4種類のマップの違い
私:ConcurrentHashMapはスレッドセーフであり、LinkedHashMapは挿入順序とアクセス順序を記録でき、TreeMapは並べ替えをカスタマイズできます。ただし、これらのシナリオを除き、他のシナリオでは基本的にHashMapを使用できます。
インタビュアー:ConcurrentHashMapはどのようにしてスレッドセーフを保証しますか
私:セグメント化されたロックはJDK 1.8の前に渡され、CAS + SynchronizedはJDK1.8の後に渡されました
インタビュアー:JDK1.8の前後のConcurrentHashMapロックの違いは何ですか
私:JDK 1.8より前のロックセグメンテーション、JDK 1.8の後の単一ノードのロックでは、ロックの粒度が低下し、同時実行性が高くなります。
このモデルの質問方法は、実際には、候補者の知識ポイントの理解が単なる表面的なものなのか、それとも実際に深く研究されているのかを理解することです。
インタビュー内容
一般的な面接の内容をいくつか紹介します。面接の質問は、必ずしも実際に出会ったものではありません。他の人の面接の質問から収集したものでも、参考のために重要だと思う知識のポイントでもかまいません。
これらのインタビューコンテンツをPDFドキュメントとJava学習ドキュメントにまとめました。それが必要な友達は、3つの記事の後にVX:mxj94670を追加して受け取ることができます。
1.プロジェクト
このプロジェクトは、3〜5年の経験を持つ開発にとって非常に重要であり、インタビュアーもこれを非常に高く評価しています。この経験の発展は基本的に大手企業の主要なコーディング力であるため、この年齢の候補者に面接する場合、プロジェクトは通常非常に重要な部分です。インタビュアーは通常、最も関与している(または最も強力な)プロジェクトを自己紹介し、そこから質問するように求めます。一般的なものは次のとおりです。
- 最も関与しているプロジェクトを紹介します
- プロジェクトのアーキテクチャ図を描く
- コアプロセスが途中で処理され、サーバーがクラッシュした場合、どうなりますか?
- プロジェクトで遭遇した課題や問題とその解決方法
- プロジェクトの安定性と可用性を確保する方法
- データセキュリティを設計する方法
- プロジェクトの技術的選択、なぜこれらを選択するのか
- ..。
2.シーンの質問
面接官が遅いほど、候補者の通常の蓄積と問題解決能力をテストするシーンの質問をするのが好きになります。このリンクは、人々のグループ、特に神経質になりやすい学生を簡単に殺す可能性があり、気を失うのは簡単です。シーンの質問の中核は、一般に、大量のデータの問題に対処し、パフォーマンスの問題を解決することです。
シナリオの質問は本質的に比較的オープンであり、標準的な答えはありません。独自のソリューションで問題を解決できる限り、「正当化」することができます。
このセッションでは、インタビュアーは私が遭遇した実際のオンラインシーンについて質問するかもしれません。
3.専門的なスキル
セットする
- よく使われる地図
- これらのタイプのマップの違い
- CocurrentHashMapはどのようにスレッドセーフを保証しますか
- JDK1.8の前後のCocurrentHashMapのロックの違いは何ですか
- HashMapの原理について話す
- HashMapが配置されている場合、新しいリンクリストノードが先頭に配置されているか末尾に配置されているか
- HashMap拡張のプロセス
- JDK1.8でのHashMapの変更点は何ですか
- JDK1.8のCocurrentHashMapで変更された点
- TreeMapの原則
- Map、List、Setはそれぞれ、あなたが知っているスレッドセーフクラスとスレッドセーフクラスについて話します
マルチスレッド、ロック
- 使用されているスレッドプール
- スレッドプールパラメータを設定する方法
- スレッドプールの各パラメーターの役割
- スレッドプールのパラメータ設定で注意すべき点
- スレッドプールワークフロー
- JDKの並行性クラスは何を知っていますか
- AQSの基本原則
- 悲観的ロックと楽観的ロックを導入する
- どのロックが使用されているか
- 同期とロックの違いと使用シナリオ
- 同期原理
- 静的メソッド、通常のメソッド、this、Lock.classでの同期動作の違い
- バイアスロックと軽量ロックを導入する理由、およびアップグレードプロセスを導入する
- デッドロックの必要条件、デッドロックを防ぐ方法
- CountDownLatchとCyclicBarrierを導入
- CASを紹介します。問題は何ですか
- ThreadLocalを紹介します。問題は何ですか
インターネット
- HTTPSはどのように暗号化されますか
- 通常のハッシュとコンシステントハッシュの原理
- コンシステントハッシュのデメリット
- TCPスリーウェイハンドシェイクプロセス、なぜスリーウェイハンドシェイクが必要なのですか
- TIME_WAIT状態がCLOSE状態に戻る前に2MSLを通過する必要があるのはなぜですか
- TCP輻輳制御
- TCPは、フロー制御、無秩序、およびパケット損失の問題をどのように解決しますか
- スティッキングとアンパックが発生する理由とその解決方法
春、ミバティス
- Mybatisの#と$の違い
- SQLインジェクションを防ぐ方法
- Mybatisを使用する場合、DAO(マッパー)インターフェースを呼び出すときにSQLを呼び出す方法
- SpringIoCプロセスを紹介します
- BeanFactoryとFactoryBeanの違い
- SpringのAOPはどのように実装されていますか
- Springのトランザクション伝播動作とは何ですか?ネストされたトランザクションについて話しましょう
- どのような状況でオブジェクトをプロキシできないか
- Springは循環依存の問題をどのように解決しますか
- SpringIoCコンテナの構築後にロジックを実装する方法
- @Resourceと@Autowireの違い
- @Autowire名前を使用して注入する方法
- Beanのinit-method属性で指定されたメソッドで他のBeanインスタンスが使用されている場合、問題はありますか?
- @PostConstructによって変更されたメソッドで他のBeanインスタンスが使用されている場合、問題はありますか?
- Springでは、同じIDのBeanが2つある場合、エラーが報告されますか?エラーが報告される場合、どの段階でエラーが報告されますか?
- Springでは、Beanのclass属性が存在しないクラスを指定します。エラーは報告されますか?エラーが発生した場合、どの段階で
- Springの一般的な拡張ポイントは何ですか
MySQL
- MySQLインデックスデータ構造
- B +ツリーを使用する理由と、他のインデックスと比較した場合の利点
- さまざまなインデックスの違い
- 範囲検索でB +ツリーを処理する方法
- MySQLインデックスリーフノードに保存されているもの
- ジョイントインデックス(複合インデックス)の基本的な実装
- MySQLがデータの行をロックする方法
- SELECTステートメントはミューテックスロックを追加できますか
- データの行に対する複数のトランザクションSELECTFOR UPDATEが同時にブロックされるか、異常になります
- MySQLのバージョンと実行エンジン
- 異なるMySQL実行エンジンの違い
- MySQLトランザクション分離レベル
- MySQLの繰り返し可能な読み取りがどのように実現されるか
- MySQLにファントム読み取りがありますか
- MySQLギャップロック
- MySQLのマスタースレーブ同期の原則
- サブデータベースとサブテーブルの実装スキーム
- 分散型一意IDスキーム
- 遅いクエリを最適化する方法
- 説明の各フィールドの意味
- Explainのtypeフィールドの一般的な値は何ですか
- 説明の際に通常どの分野に注目しますか、またその理由
JVM
- ランタイムデータ領域
- サーバーはどのガベージコレクターを使用しますか
- CMSガベージコレクションの原則
- G1ガベージコレクションの特徴、なぜ低レイテンシ
- ガベージコレクションのアルゴリズム、長所と短所は何ですか
- GCルートとして使用できるオブジェクト
- どのクラスローダーがありますか
- 親委任モデル、どのシナリオが親委任モデルを破っているのか
- オンラインサーバーで頻繁に発生するフルGCのトラブルシューティング方法
- 問題を特定するために一般的に使用されるコマンド
- JVMチューニングのプロセスを紹介します
カフカ
- Kafkaを使用する理由
- Kafkaのさまざまなコンポーネントを紹介します
- Kafkaに書き込まれたデータが失われないようにする方法
- Kafkaから消費されたデータが失われないようにする方法
- カフカがこんなに高性能な理由
- ゼロコピー技術を実現するために使用される方法
- Javaにも同様のゼロコピー技術がありますが、それはどの方法ですか
- Kafkaはどのようにしてメッセージの順次消費を保証しますか
- カフカが繰り返し消費を回避する方法
- HighWatermarkとLEOとは
- ISRとは何ですか?なぜISRを導入する必要があるのですか?
Redis
- プロジェクトで使用されているRedisバージョン
- プロジェクトでのRedisの使用シナリオ
- Redisはどのようにして高可用性を確保しますか
- Redisの選挙プロセス
- RedisとMemcacheの違い
- Redisクラスターモード
- Redisクラスターは断片化を増やす必要があります。ロスレススロット移行を確実にする方法
- Redis分散ロックの実装
- Redisは期限切れのキー戦略を削除します
- Redisのメモリ除去戦略
- 構造の基礎となるRedisのハッシュオブジェクト
- Redisでのハッシュオブジェクトの拡張プロセス
- データ量が多い場合、Redisのハッシュオブジェクトの展開プロセスに問題はありますか?
- Redisの永続化メカニズムは何ですか
- RDBとAOFの実現原理、長所と短所
- AOF書き換えプロセス
- センチネルモードの原理
- キャッシュを使用する場合、データベースを操作するかキャッシュを最初に操作するか
- キャッシュを更新する代わりにキャッシュを無効にする理由
- キャッシュの浸透、キャッシュの内訳、キャッシュのなだれ
- キャッシュを更新するためのいくつかのデザインパターン
Zookeeper
- Zookeeperの使用シナリオ
- Zookeeperは分散ロックをどのように実装しますか
- Zookeeperはどのようにしてデータの整合性を確保しますか
- ZAB協定の原則
- ZookeeperがフォローしているCAPはどれですか
- 動物園の飼育係とユーリカの違い
- 動物園の飼育係のリーダー選出
- オブザーバーの役割
- リーダーはコミットメッセージを送信しましたが、すべてのフォロワーがこのメッセージを受信しなかったため、リーダーが電話を切りました。次に何が起こりますか?
配布
- CAP理論
- BASE理論
- 分散トランザクション2PCおよびTCCの原則
- TCCがキャンセルフェーズで失敗した場合の対処方法
- Paxosアルゴリズム、Raftアルゴリズム
4.時間表面
5つのレベルを通過し、6人の将軍を最後までカットし、最後にHrに来たら、おめでとうございます。あなたはオファーに非常に近いです。昇進して給料を上げ、ゼネラルマネージャーになり、CEOになり、白風明と結婚し、人生の頂点に立つことを想像することができます。
人事面接は主に候補者の一般的な資質を理解するためのものであり、よくある質問は次のとおりです。
- 私が最も投資したプロジェクトを紹介します(当時はショックを受け、Hrもプロジェクトについて質問し始めました)
- 辞めるわけ
- 現在の給与、業績
- 現在面接中の他社の状況
- 普段は勉強する習慣がありますか、どのように勉強しましたか、今何を勉強していますか
- これからの計画
情報収集方法:3回連続でVX:mxj94670を追加!