1。サーブレット実行プロセス
クライアントはHTTP要求を発行し、Webサーバーはリクエストをサーブレットコンテナに転送します。サーブレットコンテナはURLを解析し、Web.xmlに基づいて対応するサーブレットを見つけ、リクエストと応答オブジェクトを見つけたサーブレットに渡します。サーブレットは、要求に基づいてリクエストを発行し、リクエスト情報やその他の情報を知ることができます。サーブレットがビジネスロジックを処理した後、情報を応答に入れてクライアントに応答します。
2。SpringMVCの実行プロセス
SpringMVCは、コアとしてDispatchServletを備えた階層制御フレームワークです。まず、クライアントはリクエストをWebサーバーに発行して要求URLを解析し、DispatchServletのマッピングURLを一致させます。一致する場合は、このリクエストをDispatchServletに入れます。 DispatchServletは、マッピングマッピング構成に応じて対応するハンドルを検索し、検索権を見つけたハンドルの処理権を引き渡します。ハンドルは、ビジネスロジックを処理するためのコードをカプセル化します。ハンドルが処理されると、論理ビューモデルビューがDispatchServletに返されます。この時点で、モデルビューは正式なビューではなく論理的なビューであるため、DispatchServletはViewResourceビューリソースを介してモデルビューを解析し、解析されたパラメーターをビューに入れてクライアントに戻して表示します。
3. TXTファイルを考えると、特定の文字列が表示される回数を取得する方法
file file = new file( "e://test.txt"); inputstream is = new fileinputStream(file); byte b [] = new byte [1024]; int a = a = is.read(b); string str [] = new string(b、0、a).split( ""); int i = i = i =(for(for(for(for) 0; i <str.length; i ++){if( "a" .equals(str [i]))count ++;} system.out.println(count); 4。Javaデザインモデルのアイデア(単一列モード、工場モード、戦略モード、合計23の設計モード)
a)シングルトンモード:Singletonモードのコアには、データベース接続、オンライン人数などの新しい1つのインスタンスオブジェクトモードのみが必要です。一部のWebサイトで見られるオンライン番号統計は、データベースまたはメモリにタイマーを保存するSingletonモードを通じて実装されます。誰かがログインしたとき、それを追加して、何度も何度も戻します。誰かがログアウトしたら、それを取り出して減算し、何度も何度も戻します。ただし、2人が同時にログインすると、同時にカウンターを取り出し、同時に1つを追加して同時に戻します。このようにして、データは間違っています。したがって、すべての人が使用するために必要なグローバル変数のオブジェクトが必要であり、1つのインスタンスオブジェクトのみが必要です。これはSingletonモードの適用であり、Singletonモードはインスタンスオブジェクトの数を制御し、GCリサイクルを助長するため、リソースを節約します。
b)ポリシーパターン:いくつかのクラスの一般的な方法を新しいクラスに抽出して、拡張しやすく、コードの移植性と保守性を確保できるようにします。たとえば、アヒルのオブジェクトを書き込むための要件があり、それらはフライ、外観と呼ばれます。各ダッククラスがこれらの3つの方法を書いている場合、コードは冗長になります。この時点で、ダッククラスで呼ばれる、フライ、外観と呼ばれる3つの方法を抽出し、それらをダックの親クラスに入れて、各アヒルがアヒルの親クラスを継承し、これら3つの方法を書き直すことができます。このようにして、カプセル化されたコードは非常にポータブルです。ユーザーがDuck Can Can Swimなどの新しい要件を提案すると、私たちのプログラマーにとって非常に簡単です。アヒルの親クラスに水泳方法を追加し、水泳のアヒルに水泳方法を書き直させるだけです。
c)工場モード:単純な工場モードは、主に統一された方法でインスタンスオブジェクトへの参照を提供し、ファクトリーモードインターフェイスを介してインスタンスオブジェクトへの参照を取得します。たとえば、ログイン関数の場合、バックエンドには、コントローラークラス、インターフェイスクラス、および実装インターフェイスの実装クラスの3つのクラスがあります。クライアントがリクエストを発行すると、要求がコントローラークラスに渡されると、コントローラーはインターフェイスの参照オブジェクトを取得し、実装クラスはインターフェイスがログインビジネスロジックコードをカプセル化します。登録要件を追加する必要がある場合、インターフェイスクラスに登録方法を追加し、実装クラスにメソッドを実装するだけで、コントローラーは元のコードを変更せずにインターフェイスの参照オブジェクトを取得できます。このアプローチは非常にスケーラブルです。
5。バブルソート、バイナリ検索
a)バブル
public static void mp(int a []){int swap = 0; for(int i = 0; i <a.length; i ++){for(int j = i; j <a.length; j ++){if(a [j]> a [i]){swap = a [i]; a [i] = a [j] = a [j] = swap;}}} system.out.println(arrays.toString(a));}b)バイナリ検索
public static int ef(int a []、int tag){int first = 0; int end = a.length; for(int i = 0; i <a.length; i ++){int middle =(first + end) / 2; if(tag == a [middle]){return middule;} if(tag> a [middle]){first = middle + 1;} if(tag < 0;} 6-8。 Ajaxの理解
a)Ajaxは非同期リクエスト、つまりローカルリフレッシュテクノロジーです。従来のページでは、ユーザーはボタンまたはイベントをクリックして、リクエストをトリガーしてページを更新する必要があります。非同期テクノロジーは、クリックせずにイベントをトリガーします。これにより、モールのショッピングカートの非同期負荷など、ユーザーエクスペリエンスが向上します。製品をクリックすると、背景を要求してパラメーターを直接変更する必要はありません。
9。親クラスと子のクラスの間の呼び出しの順序(印刷結果)
a)親クラスの静的コードブロック
b)サブクラス静的コードブロック
c)親クラスコンストラクター
d)サブクラス建設方法
e)サブクラスの通常の方法
f)親クラスの方法を書き直し、書き換え方法を印刷します
10。内側と外側のクラスの呼び出し
a)内部クラスは、プライベートを含む外部クラスのメンバー変数を直接呼び出して、これを使用できます。それを呼び出すために外部クラスによって参照されるキーワード
b)外部クラスが内部クラスを呼び出す場合、内部クラスオブジェクトを作成する必要があります
11。マルチスレッド
a)プロセスは独立したランニング環境であり、プログラムと見なすことができますが、スレッドはプロセスのタスクと見なすことができます。たとえば、QQはプロセスであり、QQウィンドウはスレッドです。
b)マルチスレッドプログラムでは、マルチスレッドの並行性はプログラムの効率を向上させることができます。特定のスレッドがリソースを待っているため、CPUはアイドル状態に入りません。他のスレッドにリソースを提供します。
c)ユーザースレッドはプログラムを開発するスレッドであり、デーモンスレッドはJVM仮想のGCなどのシステムスレッドです
d)スレッドの優先度:各スレッドには優先度レベルがあります。有限レベルの高い人は、最初にCPUリソースを取得して、既製の状態から実行状態にスレッドを変更することができます。限られたレベルのスレッドをカスタマイズすることもできます
e)デッドロック:少なくとも2つ以上のスレッドが2つ以上のCPUリソースを努力します。デッドロックを避けてもネストされたロックの使用を避けてください。彼らが同期し、無限の待機を避ける必要がある場所にロックを追加する必要があります。
12。AOPとIOCの概念(つまり、春の中核)
A)IOC:Springはオープンソースのフレームワークです。フレームワークを使用すると、ワークロードを減らし、作業効率を向上させることができます。これは階層構造です。つまり、対応するレイヤーが対応するビジネスロジックを処理し、コードの結合度を減らします。スプリングの中核は、IOC制御反転とAOP指向の接線プログラミングです。 IOC制御の反転は主に、プログラム間の関係がコンテナによって制御され、オブジェクトを制御し、外部リソースの獲得を制御することを強調しています。反転とは、従来のプログラミングでは、依存関係を取得するオブジェクトを作成し、IOCではコンテナがオブジェクトを作成し、従属オブジェクトを注入するのに役立ちます。オブジェクトを見つけて注入するのに役立つコンテナです。オブジェクトが取得されるため、反転と呼ばれます。
b)AOP:指向プログラミングは、主にログ、アクセス許可、物などのシステムレベルでビジネスを管理します。AOPは、カプセル化されたオブジェクトをカットし、複数のオブジェクトに影響する共通の動作を見つけ、それらを再利用可能なモジュールにカプセル化することです。このモジュールはアスペクトと名付けられています。セクションは、ビジネスロジックに関連するものではなく、ビジネスモジュールによって共同で呼ばれるロジックを抽出およびカプセル化し、システム内の重複コードを削減し、モジュール間の結合を削減し、システムの保守性を向上させます。
13。冬眠の核となるアイデア
a)冬眠の中心的なアイデアは、ROMオブジェクト関係マッピングメカニズムです。これは、テーブル間のオブジェクト間の操作へのマッピングです。つまり、データベースから抽出された情報は、設定したマッピング要件に従って特定のオブジェクトに自動的にカプセル化されます。したがって、Hibernateは、データテーブルエンティティクラスをマッピングすることにより、データ行に対応するオブジェクトを変更することです。
14。Struts1とStruts2の違い
15.文字列内の文字の最適な削除
16-17。 ArrayListとLinkedListの違い
a)リストインターフェイスを実装するすべてのリストです。 ArrayListは配列ベースのデータ構造であり、LinkedListはリンクリストデータ構造です。特定の要素を取得するとき、アレイリストは比較的高速です。 LinkedListにはポインターを移動する必要がありますが、配列のサブスクリプトを介して取得できます。要素を保存して要素を削除する場合、LinkedListがより効率的です。 ArrayListにはデータを移動する必要がある間に、指定された位置に指定された位置に移動する必要がありますが、それを追加または削除する必要があります。
18.データベースの最適化
a)メールボックスフィールドなどの適切なフィールドを選択して、char(6)に設定し、フィールドをnotnullに設定してみてください。
b)サブクエリーの代わりにクエリに左結合を使用する
c)ユニオンジョイントクエリを使用して、一時的なテーブルを手動で作成する
d)物をオンにします。データベースで複数のステートメントが実行されると、物事はロールバックされ、データベースの整合性を維持できます。
e)外部キーを使用すると、物事はデータの整合性を維持できますが、データの相関を保証することはできません。外部キーを使用すると、データの相関を確保できます
f)インデックスを使用して、インデックス作成はデータベースのパフォーマンスを改善する一般的な方法です。これにより、データベースサーバーは、特に最大、最小、クエリごとに、インデックスなしよりもはるかに速く特定の行を取得できます。効果はより明白です
g)最適化されたクエリステートメント。ほとんどの場合、インデックスを使用するとクエリの速度が向上しますが、SQLステートメントが不適切に使用されている場合、インデックスはその特性を再生できません。
19。Tomcatサーバーの最適化(メモリ、同時接続の数、キャッシュ)
a)メモリの最適化:主にTomcatの起動パラメーターを最適化します。 Tomcatスタートアップスクリプトなどで最大メモリを変更できます。
b)スレッドカウント最適化:Tomcatの同時接続パラメーターは、システム処理パフォーマンスなどを改善するために使用されるアイドル接続スレッドの最小数の変更など、Tomcat構成ファイルのServer.xmlで主に構成されています。
c)キャッシュを最適化:圧縮関数をオンにし、パラメーターを変更します。たとえば、圧縮出力コンテンツのサイズはデフォルトで2kbであり、適切に変更できます。
20。HTTPプロトコル
a)一般的に使用される要求方法には、GetとPostが含まれます
b)GETとPOSTの違い:データを転送し、取得するパラメーターとアクセスアドレスを取得すると、ユーザーはそれを見ることができます。これは安全ではなく、情報の漏れにつながります。投稿は、ユーザーには見えないエンティティ内のフィールドと対応する値をカプセル化します。ポストに制限はありませんが、パラメーターが渡されるパラメーターに制限がありますが、制限はありません。
21。TCP/UDPプロトコル
22。Javaコレクションクラスのフレームワークの基本的なインターフェイスは何ですか
a)コレクションインターフェイス、リスト、およびセットコレクションインターフェイス、アレイリスト、リンクリスト、ベクトル実装リストインターフェイス、スタック継承ベクトル、マップインターフェイス、ハッシュテーブル、ハッシュマップ実装マップインターフェイス
23。クラス読み込みプロセス
a)新しいクラスに遭遇したときに、最初にメソッド領域に移動してクラスファイルを見つけます。見つからない場合は、クラスファイルを見つけるためにハードディスクに移動します。それを見つけた後、それを返し、クラスファイルをメソッド領域にロードします。クラスがロードされると、静的メンバー変数はメソッド領域の静的領域に割り当てられます。非静的なメンバー変数は、非静的領域に割り当てられます。次に、静的メンバー変数の初期化とデフォルト値の割り当てを開始します。デフォルト値を割り当てると、staticメンバー変数によって記述された場所に従って表示値が割り当てられ、静的コードが実行されます。クラスの読み込みは、すべての静的コードが実行されたときにのみ完了します。
24。オブジェクト作成
a)新しいクラスに遭遇すると、クラスがロードされ、クラスファイルが配置されます
b)すべての静的メンバー変数を初期化すると、静的コードブロックも実行され、クラスがロードされたときにのみ実行されます。
c)新しいオブジェクトの場合、JVMはヒープ内の十分な大きさのストレージスペースを割り当てます
d)ストレージスペースをクリアし、デフォルト値をすべての変数に割り当て、すべてのオブジェクト参照をnullに割り当てます
e)書き込み位置に従ってフィールドに初期化操作を与える
f)コンストラクターメソッドを呼び出す(継承なし)
25。JVM最適化
a)パラメーターを設定し、JVMのメモリの最大数を設定します
b)ゴミコレクターの選択
26。高い並行性処理
a)チケットを購入せずにチケットを見ることができるようにする方法など、いくつかの高い並行性の問題を理解します。明らかに、同期メカニズムは使用できません。同期はロックされており、同期は一度に1人でしか実行できないためです。現時点では、ロックメカニズムを使用でき、楽観的なロックを使用するとこの問題を解決できます。楽観的なロックの単純な意味は、テーブルをロックせずにビジネスコントロールを使用して並行性の問題を解決することです。これにより、データの読みやすさと保存されたデータの排他性が保証され、並行性によって引き起こされる汚い読み取りデータの問題を解決しながらパフォーマンスが確保されます。
27。物事の理解
a)物事は原子、一貫性があり、持続性があり、孤立しています
b)原子性:すべての実行が成功するか、すべて失敗するものに戻ることを指します。
c)一貫性:実行前後に物事は一貫性があります
d)永続性:物事における複数のデータの操作は永続的です
e)分離:1つのことがデータで動作している場合、別のことはデータで動作できません。つまり、複数の同時物が互いに分離されます。
28.ストラットワークフロー
a)クライアントはサーブレットコンテナにリクエストを発行します
b)リクエストは、いくつかの列フィルタリング後にfilterdispatcherによって呼び出され、filterdispatchはActionMapperを介して対応するアクションを検索します。
c)ActionMapperは対応するアクションを見つけてFilterDispatchに返し、DispatchはActionProxyの処理権を与えます
d)ActionProxyは、構成ファイルを介して対応するアクションクラスを見つけます
e)ActionProxyは、ビジネスロジックを処理するためのActionIInvocationのインスタンスを作成します
f)アクションが処理されると、ActionInvocationは、stuts.xmlの構成に従って、対応する返品結果を見つける責任があります。結果は通常、JSPページです。