2023 年 3 月 10 日の Java 開発職の検索の概要

仕事が見つかりました

今年帰国後、開発職の採用活動を始めたので、その面接メモを書きます。

Javaを中心に、現在就職活動に必要とされる技術スタックは大きくいくつかの側面に分かれており、いくつかの側面の面接が入れ子になっている可能性があります。

面接で必ず尋ねるべき質問: マルチスレッド、mysql、Redis、JVM、高同時実行性、高可用性

この記事はいくつかの質問をまとめたもので、インタビュー中にまとめた回答はまだ完成していませんので、完成次第掲載させていただきます。

0. 事前準備

自己紹介

基本的には自己紹介となりますが、ここでは私の基本情報、技術スタック、これまでに手掛けたプロジェクト、私の強み、今後のキャリアプランなどについてお話しさせていただきます。特に良かったです, 私は合格していません. もっと紹介して, 後で計画は, 体力をつけて自分の能力を向上させるためのプロジェクトを行うことです. プロジェクトが十分に良かったら, あなたはプロジェクトについてもっと話すことができます. 私は他の人を見たインターネット上で自己紹介を行い、中級レベルについて共有します。上級レベルの場合、プロジェクトについてさらに紹介する必要があります。プロジェクトが会社に与える影響は何ですか?これによってもたらされる共有には後で注意する必要があります。

履歴書

1. スキルの最初の文字は大文字でプロフェッショナリズムを示します。

2. フォーマットテンプレートの配置

3. 習熟度よりも、使用/習熟の熟練度に重点を置きます。

4. 最初の 1 つまたは 2 つのプロジェクトの詳細な説明 (担当する内容も含む)。プロジェクトはハイライトの周りに書く必要があることに注意してください。書いてはいけないことはハイライトとは関係ありません。ハイライトはハイライトになる可能性があります。同時実行性、高可用性、達成されたメリットなどをできるだけ定量化するように努めます(以前作業していたときは気にしていませんでしたが、今後は注意して作業します)

心の準備

仕事を見つけるのは少し難しいですが、何度も断られることを覚悟し、同時に自己不信に陥り、どうしようもなく精神的な内消費モードに陥らないように、次のことに集中してください。今のことをしっかりやる、やるべきことをやっていれば、少なくとも最後には後悔しない

面接で失敗し続けたとき、面接を日常的に対処しなければならないバグとして扱うようになりました。バグは必ず解決されると感じました。これにより、心理的に楽になり、恐怖や心配がなくなりました(もちろんたまにありました)。

1. 高い同時実行性

これは、大規模な同時実行環境でのプログラミングです。面接官は、いくつかの高同時実行テクノロジ スタックと、プロジェクトでの実際の使用シナリオについて質問します。よくある質問には、次のようなものがあります。

分散ロックの使用

分散トランザクション

分散環境での例外処理

尋ねられる主な具体的な質問は、分散ロックと分散トランザクションの使用法と原則に大まかに焦点が当てられています。

、ここで話している主なテクノロジースタックは、redis、rabbitMQ です。

Redis には、Redisson の基礎となる原則、Redisson が使用される理由、Redis が失われないようにする方法が含まれています。この時点で、メモリ削除メカニズム、多重化など、他の Redis の知識ポイントについて質問することもできます。ある企業では、前の会社での Redis の構成ファイル構成についてですが、当時は記載されていませんでした

RabbitMQ を使用してプロジェクト内の分散トランザクションを完了する方法、デッドレターメカニズムとは何か、メッセージに返信する方法、rabbitMQ と kafka の違い (履歴書に kafka について書いたため)、プロジェクトのどこで RabbitMQ を使用したか、キューを設計する方法、

企業との最初の面接に加えて、Zookeeper を使用して分散ロックを記述する方法についても質問されました。

2. マルチスレッド

マルチスレッドについては質問されず、面接が中途半端だったように感じますが、今では基本面接でマルチスレッドについて聞かれ、マルチスレッドの質問の方向性は主に

マルチスレッドとは

プロジェクトのどこでマルチスレッドを使用しますか?

スレッド プール、パラメータ、ブロッキング キュー

ロック、同期化、および再入可能ロックのロジックと基本原理。同期化では通常、ロックのアップグレードとモニターについても質問されます。

スレッドローカルの原則

インタビューではFutureとCallableについてはあまり質問しませんでした。

3. 高可用性

高可用性とは主に、一部のソフトウェアの正常な動作を保証する方法に関するいくつかの戦略を指します。面接では、オンライン ソフトウェアのエラーやプログラム エラーの解決方法についてよく質問されます。

たとえば、Redis はデータのセキュリティを確保します。

フラッシュ セール中に Redis が突然切れました。どうやって解決しましたか? (この部分はフラッシュ セール シナリオへの対処方法についてです。面接官はフラッシュ セール プランの設計方法を尋ね、その後、これを再度質問しました。彼は主に次のことを尋ねました)あなたの考えが完璧かどうか知りたいです)

さらに、MQ メッセージの信頼性を確保するにはどうすればよいでしょうか?

4. データベース

mysql

理論と実践 (SQL) の 2 つの部分に焦点を当てます。

理論には主に、mysql の最適化、インデックスの最適化、SQL の最適化、インデックスが失敗する場合、インデックスのデータ構造、B+ ツリーが使用される理由、Explain 実行プランのパラメーター、mysql ロック、およびサーバーをロックする方法が含まれます。データ、ストレージ エンジンの種類、SQL 実行シーケンス、SQL ストアド プロシージャの作成方法、トランザクション分離レベル

実戦(SQL)

実際、これは SQL の質問をいくつか提供し、SQL やアイデアを記述できるようにするだけです。

例えば、大量のデータを条件やクエリに応じて削除する方法、SQLのNULL判定やNULL文字列判定など

レディス

彼らは主にいくつかのメモリ削除戦略、Redis の基礎となる原則について質問します。最初に Redis がどのような機能に使用されているかを尋ね、次に詳細を尋ねますが、一般的には分散ロックとキャッシュです。

キャッシュは、キャッシュの侵入、雪崩、故障など、および対応する解決策について引き続き質問します。

企業によっては、これら 2 つのデータベースに加えて、MongoDB と Oracle についても質問されますが、Oracle と Mysql は操作が似ており、すぐに覚えて終わりであるため、MongoDB の方が質問が少ないと言われています。

5. フレームワーク

フレームワークは主に Spring、SpringBoot、mybatis について質問します。

Spring は主に、Spring の循環依存関係、独自の Bean を注入できるかどうか、トランザクションのネスト (これが最も多い)、トランザクションの有効期限、SpringBean のライフサイクル、Spring Bean で他の処理があるかどうか、AOP について尋ねます。

SpringBoot は自動アセンブリ、Spring、SpringMVC、SpringBoot の違いと関係について尋ねます。

マイバチの原則

6. 分散マイクロサービス

いくつかのフレームワークや理論について質問する

たとえば、分散とは何ですか、マイクロサービスとは何ですか?

dubbo と SpringCloud の違い、SpringCloud alibaba が以前に使用されたかどうか、Dubbo と SpringCloud の一部のコンポーネントの使用 (Feign の役割と基本原理、dubbo の基礎となるプロトコル、負荷分散など)

マイクロサービスについて話すときに docker について話す場合は、いくつかの docker コマンドについても尋ねるかもしれません。

ここは特に難しいことはなく、話せるようになれば完了です

7. グループリーダーシップの経験

彼らは、これまでの会社の規模、チームを率いたことがあるかどうか、チームの人数、チーム内の対立への対処方法、プロジェクトを完了するためにチームメンバーをどのように導くか、どのような資質が最も優れていると思うかについて尋ねます。チームメンバー間でどのようなことが重要か、そしてどのような経験を持っていますか? この部分は実際の経験に依存します。

8. 設計計画

彼らは、現在要求に直面しているかどうか、それにどのように対処する必要があるか、どのようなプロセスがあるか、現段階での注意事項は何かなどを尋ねます。

この部分と上記のグループ リーダーシップは自由回答型の質問であり、事前に答えを考えておく必要があります。

または、次のようないくつかの問題の解決策について話します。

データベースには 1,000 万件のデータがありますが、redis には 10 万件のデータしか保存されません。redis 内のデータがホット データであることを確認するにはどうすればよいですか?

10 ギガバイトのファイルと 1 ギガバイトのメモリがあります。それらを並べ替えるにはどうすればよいですか?

フラッシュ セール システムでは、30 分以内に支払いがない場合、取引が自動的に終了します。これを実装するにはどうすればよいですか?

コマンドを使用して Java プロジェクトの実行ステータスを監視するにはどうすればよいですか?

9. プロジェクト

このパートでは、最初にプロジェクトのプロセスについて質問し、次にプロジェクトに基づいて拡張します。拡張には主にビジネスとテクノロジーが含まれます。

ビジネス: 主にプロジェクトの機能、主にプロジェクト機能の詳細に焦点を当てます。たとえば、私のプロジェクトにフラッシュ セールがあります。このとき、面接官はフラッシュ セールが定期的なフラッシュ セールであるか、イベントのフラッシュ セールであるかを尋ねます。 、何人が参加するか、フラッシュセール後の使用方法について説明します。

テクノロジー: プロジェクトで使用されているテクノロジー、そのテクノロジーが使用されている理由、フラッシュ セール中に XXX タイプの問題があるかどうか、およびその解決方法。実際、そのテクノロジーはまだ可用性が高くなります。

10、JVM

本当はこれが一番上にあるはずなのですが、目次を書いたときに忘れてしまいました。

JVM は面接でも必須の質問です

主な質問には、JVM メモリ構造、一般的な JVM パラメータ、JVM チューニング、以前の会社の JVM パラメータ設定、以前のジョブでどのような JVM 最適化が行われたか、メモリ リークの問題、JVM パラメータの設定方法、CPU が稼働しているときに実行されるフル GC が含まれます。いっぱいです 解決方法

11. サーバー

主に、Linux 関連の問題、一般的な Linux コマンド、CPU 使用率の確認方法、プロセスの確認方法、ファイルのクエリ方法、サービス例外の解決方法、オンライン システムが突然異常に遅くなった場合の問題の発見方法を管理します。

12. 問題解決

開発中にどのような問題に遭遇し、それが深刻な問題につながったのか、それをどのように解決するかなど、プロジェクトに登場するシーンの解決策が中心で、よりハイエンドで高級な問題が望ましいです。

また、以前に社内で発生した問題について質問されることもありますが、そのほとんどはサードパーティのツールやサービスの異常な解決策です。たとえば、Redis でデータが失われる問題の解決方法、問題の解決方法などです。サービス異常等の問題

13. コードに関する質問

大規模な工場に入ると、この部分のアルゴリズムを更新する必要があります。

うまくいかなかった場合は、基本的なコードの質問をいくつか覚えてください。この期間中に私が遭遇した質問には次のものがあります。

末尾が 3,5,9 の 100 以内の値を計算します

バブルソート

クイックソート

リンクリストを実装する

Java プログラムを作成して関数を実装します。3 つ以上のスレッドを使用して 200,000 個のデータをテーブルに同時に挿入します。

手書きの2つのデザインパターン

追記

回答は要約されていますが、現時点では包括的ではないため、後で時間があるときに追加します。

https://blog.csdn.net/lihao1107156171/article/details/129826148

おすすめ

転載: blog.csdn.net/lihao1107156171/article/details/129481258