序文:
ゴールドスリーシルバーフォーです。本日は、高頻度の面接の質問と、Javaコアの詳細な面接ドキュメントを紹介します。面接や転職が必要な友達が輝いて立ち上がることを願っています。
1.高頻度の面接の質問
1. SpringMVCの実行プロセスは何ですか?
ユーザーがサーバーにリクエストを送信すると、そのリクエストはSpringフロントエンドコントロールのServeltDispatcherServletによってキャプチャされます。
DispatcherServletは、要求URLを解析して、要求されたリソースID(URI)を取得します。次に、URIに従って、HandlerMappingを呼び出して、Handler構成のすべての関連オブジェクト(HandlerオブジェクトとHandlerオブジェクトに対応するインターセプターを含む)を取得し、最後にHandlerExecutionChainオブジェクトの形式で返します。
DispatcherServletは、取得したハンドラーに基づいて適切なHandlerAdapterを選択します。(注:HandlerAdapterが正常に取得された場合、この時点でインターセプターのpreHandler(...)メソッドが実行されます)
リクエストにモデルデータを抽出し、ハンドラー入力パラメーターを入力して、ハンドラー(コントローラー)の実行を開始します。構成に応じて、ハンドラー入力パラメーターを入力するプロセスで、Springはいくつかの追加作業を行うのに役立ちます。
(1)HttpMessageConveter:リクエストメッセージ(Json、xmlなど)をオブジェクトに変換し、オブジェクトを指定されたレスポンスメッセージに変換します
(2)データ変換:要求メッセージに対してデータ変換を行います。整数、倍精度浮動小数点数などに変換された文字列など。
(3)データルートフォーマット:リクエストメッセージのデータフォーマット。文字列をフォーマットされた数値またはフォーマットされた日付に変換するなど。
(4)データ検証:データの有効性(長さ、形式など)を検証し、検証結果をBindingResultまたはErrorに保存します
ハンドラーが実行されると、ModelAndViewオブジェクトがDispatcherServletに返されます。
返されたModelAndViewに従って、適切なViewResolver(Springコンテナーに登録されているViewResolverである必要があります)を選択し、DispatcherServletに返します。
ViewResolverは、モデルとビューを組み合わせてビューをレンダリングします
レンダリング結果をクライアントに返します。
クイックメモリースキル:
コアコントローラーはリクエストをキャプチャし、ハンドラーを見つけ、ハンドラーを実行し、ViewResolverを選択し、ViewResolverを介してビューをレンダリングし、戻り値を返します。
2. AOPとは何ですか?あなたはそれで何をしますか?
1. AOP:アスペクト指向プログラミング
2.基本原則:動的エージェントデザインパターンを使用して、メソッドの実行の前後、または例外が発生したときに関連するロジックを追加します。
私たちは主にAOPを使用して次のことを行います。
1.トランザクション処理の実行方法の前に、トランザクションを開き、実行が完了した後にトランザクションを閉じ、例外が発生した後にトランザクションをロールバックします。
2.権限の判断メソッドを実行する前に、権限があるかどうかを判断します
3.実行前のログ処理
3.春の豆の注入方法はいくつありますか?
- コンストラクターインジェクション
コンストラクターインジェクションは、その名前が示すように、プログラムコンポーネントにコンストラクターを実装することです。コンストラクターは1つまたは複数にすることができます。
設定値インジェクション(セッターインジェクション)設定値インジェクションは、setXxxxメソッドを介してBeanをコンポーネントに注入することです。- フィールドインジェクション(アノテーションインジェクション)。
4.SSMフレームワークの利点
Springの利点:SpringのIOC機能により、オブジェクト間の依存関係がSpringに渡されて制御されます。これにより、デカップリングが容易になり、開発が簡素化されます。SpringのAOP機能により、繰り返されるモジュールが一元化され、トランザクション、ログ、およびアクセス許可が制御され、他の優れたオープンソースフレームワークの統合サポートが提供されます。
Spring MVCの利点:Spring MVCは、MVC設計のアイデアを使用する軽量のWebフレームワークであり、Webレイヤーを分離して開発をより簡潔にし、Springとシームレスに接続し、柔軟なデータ検証、フォーマット、およびデータバインディングメカニズムを提供します。
Mybatisの利点:データベース(sql)の操作は、SQLとコード間の結合を緩和するxmlファイル構成を採用し、マッピングタグを提供し、オブジェクトとデータベースormフィールド間のマッピングをサポートし、オブジェクトリレーショナルマッピングタグをサポートし、プロビジョニングをサポートしますオブジェクト関係形成の追加されたxmlタグ、動的SQLをサポート
2、Javaコアインタビュードキュメント
このPDFマニュアルの知識ポイントには、5つの主要な部分が含まれています。
- Javaの部分:Javaの基本、コレクション、並行性、マルチスレッド、JVM、デザインパターン
- データ構造アルゴリズム:Javaアルゴリズム、データ構造
- オープンソースフレームワークの部分:Spring、MyBatis、MVC、netty、tomcat
- 分散部分:アーキテクチャ設計、Redisキャッシュ、Zookeeper、kafka、RabbitMQ、負荷分散など。
- マイクロサービス部分:SpringBoot、SpringCloud、Dubbo、Docker
スペースの制限とコンテンツが多すぎるため、ドキュメントはPDFファイルに整理されています。このドキュメントが必要な友達:ワンクリック3接続後
1つは、Java知識の部分です。
現在、インタビューは多くの原則と基礎に特別な注意を払っていますが、多くの人々はいくつかのコア原則、特にJVM、一般的に使用されるアルゴリズムやデータ構造などのJavaのコア基本知識ポイントを完全に理解していません。いわゆる高層ビルが地上から立ち上がるので、しっかりと土台をマスターするだけで、さらに先に進むことができます。常に更新される技術に直面して、素早くマスターすると同時に、目立つことができます。面接と仕事!以下に、習得しなければならないJava知識の部分を示します。いくつかの重要な知識である多くのコンテンツがあります。!!
1. Javaの基本:
2. Javaコレクション:
3.並行性の知識
5.java仮想マシン(JVM)
JVMは、ジュニアJavaプログラマーの成長に必要なパスです。JVMを学習する前に、コードがクラスにコンパイルされ、仮想マシンが実行するクラスをロードすることを知っておく必要があります。JVMを学習すると、プロセスを深く理解できます。コンパイルからロードまでのコードの作成。、メモリ内のオブジェクトの作成とガベージコレクション、および日常の開発におけるパフォーマンスの問題の迅速な配置も、もちろんインタビューに不可欠なボーナスアイテムです。
6.デザインパターン
以前、「多くのプログラマーは、コードを整理する方法、効率を改善する方法、コードの保守性、再利用性、スケーラビリティ、柔軟性を改善する方法を知りません。記述されたコードは混乱していますが、正常に実行できます。」 。そのような声明に対して、業界に参入するときに残されたコードを見て、私は恥ずかしそうに笑った。おそらくほとんどの人が同じように感じるだろう。
JDKソースコードから主流のオープンソースフレームワークまで、デザインパターンの適用はいたるところにあります。「私の使用するデザインパターン」は、多かれ少なかれプログラマーのコーディング思考の本能になっています。
知識のポイント:
7.データ構造とアルゴリズム
習得すべき知識のポイント:
どのデータ構造(ライン、チェーン、ヒープ、スタック、キュー)と、それらがJavaで役立つ場所。8つの主要なアルゴリズム(時間の複雑さ、スペースの複雑さ、メモリ、CPUへの影響)とそのアプリケーション。KMP検索アルゴリズム、バイナリ検索、再帰的アルゴリズム(書き込み、メモリの影響)。数値、グラフ、およびそれらのアプリケーション。ハッシュテーブルと実際の作業で使用する場所
2.データベース部分
第三に、オープンソースフレームワークの部分
軽量のJava開発フレームワークとして、SpringはJavaシステムアプリケーション全体にインターフェース指向プログラミングのアイデアを統合しているため、Javaのインタビューでよく言及されます。
第四に、分散型の同時実行性の高いアーキテクチャの部分
このパートでは、Redis、Zookeeper、データベースパフォーマンスの最適化、負荷分散などを含む分散アーキテクチャの知識について説明します。
5、マイクロサービスの知識