#1. Redis はどのようにローカル データと同期しますか?
プログラムは mysql の更新、追加、削除を実装し、redis を同期的に操作します。
プログラムは redis をクエリします。存在しない場合は、mysql にクエリを実行し、redis を自動的に保存します
2. Redis にはいくつのデータ構造がありますか?
set、list、hash、string、zset
3. Java メモリ オーバーフローはどのようにして発生しますか?
OutOfMemoryError:
(1)PerGern Space プログラム内で多数の jar またはクラスが使用されているため、仮想マシンがクラスをロードするためのスペースが不足しています。
解決策: パラメータ XX:PermSize および XX:MaxPermSize を調整し、jar パッケージを減らし、クラスの繰り返しロードを減らします
(2) Java ヒープ
Space Java 仮想マシンの作成は複数のオブジェクトが多すぎます。解決策: パラメータ Xms (初期ヒープ サイズ) と Xmx (最大ヒープ サイズ) を調整し、無限ループや重複オブジェクトの不必要な作成を確認します。
(3)新しいネイティブ スレッドを作成できません
JVM が占有するメモリ領域が多すぎるため、JVM でスレッドを作成するには、オペレーティング システムでスレッドを作成する必要があります。解決策: JVM のスレッド サイズを調整します。
4. String s = “123”、このステートメントによって生成されるオブジェクトの数はいくつですか?
文字列プールに「123」がない場合は生成して定数プールに入れ、「123」がある場合は 0 を生成します
5 、JDK8 の新機能、例で説明
(1) ラムダ式: 関数プログラミング、メソッドリファレンス
(2) ストリーム API
(3)インターフェースのデフォルトメソッド
(4) 日時APIの改善、新しいDateTimeFormatterメソッド
6. 高同時実行性と高負荷の解決
(1) HTMLを可能な限り静的にし、情報入力・公開システムCMSを利用して情報入力用の静的ページを自動生成し、頻繁に変更されない動的データをフロントエンドにキャッシュする。
(2) CDN 高速化、CSS/JS などのリソースを別サーバーに分散
(3) 頻繁に変更されないデータをキャッシュします (Redis、memcache)。
(4) 画像サーバーはアプリケーションサーバーから分離されています。
(5) クラスター
7. プロデューサー モデルとコンシューマー モデルの役割は何ですか?
(1) 生産能力と消費者の購買力のバランスをとることでシステム全体の運用効率を向上 (2) デカップリング
8、Mybatis レベル 1、レベル 2 レベルキャッシュ
(1) レベル 1 キャッシュ: PerpetualCache に基づく HashMap ローカル キャッシュで、スコープ セッションを保存します。Session
がフラッシュまたはクローズされると、セッション内のすべてのキャッシュがクリアされます。
(2) 2 次キャッシュは、1 次キャッシュと同じメカニズムを持っています。デフォルトでは、PerpetualCache と HashMap ストレージも使用します。違いは、ストレージ スコープ マッパーにあり、ストレージ ソースは次のとおりです。 2次キャッシュを有効にする必要がある場合。
9 を SQL マッピング ファイルに追加して、公開から利用までのサービスの詳細なプロセスを記述します。
最初に zk の構成情報を取得し、次に URL を取得します。次に、レジストリと register メソッドを呼び出して URL を Zookeeper
10 に登録します。ロード バランシングを実現するにはどうすればよいですか?どのようなアルゴリズムを実現できますか?
ランダム、ラウンドロビン、コンシステントハッシュ、およびマスター/スレーブ
11. 必要に応じて、Spring AOP をどのように実装しますか?
AOP テクノロジの実装は、主に 2 つのカテゴリに分類されます。1 つは動的プロキシ テクノロジの使用です。これは、メッセージをインターセプトしてメッセージを装飾し、元のオブジェクトの動作の実行を置き換える方法を使用します。
2 つ目は、静的ウィービングを使用して「アスペクト」を作成するための特定の構文を導入し、「アスペクト」に関連するコードがコンパイラー
12 に組み込まれるようにすることです。繰り返しのページ送信を防止しますか?
クラスター環境: トークンと redis を使用 (redis はシングルスレッドなので、処理をキューに入れる必要があります)
処理プロセス:
1. データを送信する前に、トークンをサービスに送信する必要があります。トークンを申請し、トークンを Redis メモリに置きます。トークンは
2 に対して有効です。送信後にバックグラウンドでトークンを確認し、同時にトークンを削除します。 、新しいトークンを生成し、
13 を返します。micro Serve とは何ですか?
さまざまなビジネス ルールに従ってプロジェクトをマイクロサービスに分割し、それらをさまざまなマシンにデプロイします。サービスは互いに呼び出します
14. Web サービスとは何ですか?
(1) Web サービスは、Web 経由で呼び出すことができる API を外部に公開するアプリケーションです。
(2) HTTP プロトコルに基づいてデータを送信します。これにより、別のマシン上で別のアプリケーションを実行することができ、追加の専用サードパーティ ソフトウェアやハードウェアに頼ることなく、データを交換したり相互に統合したりすることができます
15.あなたのプロジェクトに Struts2 を選択した理由について教えてください?
①アクションはPOJOクラスでサーブレットAPIに依存せず、テスト容易性が良好、②強力なインターセプタにより開発の複雑さを簡素化、
③複数のパフォーマンスをサポートレイヤー技術: JSP、Freemarker , など; ④ 柔軟な検証方法; ⑤ 国際化 (I18N) サポート ⑥ 宣言的例外管理;
⑦ JSON プラグインによる Ajax の簡素化; ⑧ Spring プラグインによる Spring との統合;
16. インターセプターとフィルターの違いについて話しますか?
インターセプターとフィルターの両方を使用して、横断的なアテンション関数を実装できます。主な違いは次のとおりです: ①インターセプターは JAVA リフレクション メカニズムに基づいており、フィルターは関数コールバックに基づいています
②フィルターはサーブレットに依存しますインターセプタはサーブレット コンテナに依存しませんが、インターセプタはサーブレット コンテナに依存しません。
③インターセプタはアクション リクエスト (アクション中のメソッド) でのみ動作しますが、フィルタはほぼすべてのリクエスト (CSS JSP JS) で動作します
17. Spring はどのような種類のトランザクション管理をサポートしていますか?
プログラムによるトランザクション管理: プログラムによる管理、優れた柔軟性、保守が困難
宣言型トランザクション管理: ビジネス コードとトランザクション管理を分離でき、管理にはアノテーションと XML 構成のみを使用します。 things
php 中国語の Web サイト、無料の Java 入門チュートリアル が多数あり、オンラインで学習することを歓迎します。
以上が中級および上級 Java 面接の質問 (回答付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。