Ctripのは、プロの開発Fangxiang秋書面を募集します

質問後の回答

:1は、順序付けられたリストのRの18個の要素[1 ... 18]バイナリ探索は、A [3]配列比較である見つけるために、存在する
A、1,2,3-
B、9,5,2,3
、C 9,5,3
D、9,4,2,3

2、AバイナリシーケンスプレオーダートラバーサルA、B、C、Dの E、F、 シーケンスの先行順C、B、A、E、 D、F、 後順トラバーサル順序: 
A、C 、B、E、F.、D、A
、B、F.、E、D、C、B、A
、C、C、B、E、D、F.、A
D、不確か

3、結果が最終順位で、15,0,6,9,3 {}、ランソート方法の配列については、次の順序のJavaコードを検討:
 公共ボイドソート(匹敵[] A){
  int型N = a.length ;
  INT = H. 1;
  一方(H <N / 3){
   H * = H + 3.1; // 1 ,. 4、13であり、40、...
  }
  ながら(H> = 1){
   (INTのためにIは、H =。 I <N; I ++){
     (J = I INT; Jため> = H && compareElement(A [J]、A [J - H]); J - = H){
      EXCH(A、J、J - H) ;
    }
   }
   H = H / 3;
  }
 }
 
 パブリックブールcompareElement(匹敵V匹敵W){
  v.compareToを返す(W)<0;
 }

パブリック静的ボイドEXCH(匹敵[] A、INT I、int型のJ){
  同等T = [I]。
  [I] = [J]。
  [J] = T。
 }

A、15,0,6,9,3
B、0,15,6,9,3
C、15,0,6,3,9
D、0,3,6,9,15

4.次の文のどちらが正しいのですか? 
優先度の高いA、ガベージコレクションのスレッド、メモリのない利用がタイムリーに回復しないであろうことを保証するために
B、ガベージコレクションプログラムは、開発者が明示的のリリースにどのオブジェクトを指定することができます
プログラムがメモリ不足に表示されないことを確実にするためにC、Javaのガベージコレクションのメカニズム
D、他の選択肢のどれも

5は、以下の結果のJAVAプログラムの実行を与えた:       
パブリッククラス{テスト

パブリック静的テストT1 =新しいテスト();

{  
   のSystem.out.println( "BLOCKA")。  
  }  
  
  静的{  
   するSystem.out.println( "BLOCKB")。  
  } 
  
  パブリック静的無効メイン(文字列[] args)を{  
   テストT2 =新しいテスト();       
  }    
 }
A、BLOCKA、BLOCKB、BLOCKA
B、BLOCKB、BLOCKA、BLOCKA
C BLOCKA、BLOCKB
D、BLOCKB、BLOCKA

:6は、以下の結果Javaプログラム実装得                         
パブリック静的な無効メイン(文字列引数は、[]){
        スレッド新しい新しいTは、スレッドを(){=
            公共ボイドRUN(){
                ;ポン()
            }
        };
        t.run();
     システム。 ( "ピングする")Out.print
    }
    静的ボイドポン(){
        System.out.print( "ポン")から;
      }
A、ピンポン
B、pongping
Cを、そしてピンポンをpongpingそうである
D、出力しません

図7に示すように、次の関連する抽象ファクトリー(抽象工場)パターンが正しい: 
A、抽象ファクトリインスタンスメソッドは、特定のファクトリメソッドである
B、および抽象ファクトリメソッドを単離することができる特定のファクトリクラス、特定の植物の抽象ファクトリインタフェース方法の各責任達成
C、クラスおよび特定の植物の抽象ファクトリメソッドを分離することができるので、より多くのクラス生成する実装ので
、Dの場合、異なる状況の問題を解決するための同じ物体の存在すべき抽象工場

8、ソフトウェア開発のスパイラルモデルは、ウォーターフォールモデルと進化のモデルの利点を組み合わせた、だけでなく、どのような増加しますか?
A、バージョン管理
B、リスク分析
C、実現可能性の分析
D、システムインテグレーション

9、次のオプションは、バイナリ検索キーワードが列をコンペア構成することができませんか?
A、500200450180
B、500450200180
C、180500200450
D、180200500450

10、LRUキャッシュ機能を実現するために設計されたデータ構造(最小最近使用-最近最も使用されたキャッシュ)。これは、次の2つの操作をサポートしています。getおよびput。
 
int型のget(int型のキー) -キーがすでに存在する場合は、値がキー値(常に0より大きい)のリターンに対応する、キーがない場合は存在しない、または-1。
無効プット(int型のキー、int型の値 ) - キーが値が挿入され、存在しない場合は、キーがすでに存在する場合、既存の値が使用され、以前に値を置き換えます。容量制限に達した場合は、LRUキャッシュは、新しい要素を挿入する前に、必要があり、少なくとも最近使用した要素が削除されました。
 
既に既存の更新を置き換えるの値、使用されていない、新たに挿入された又は取得キーを1回使用するとみなさ:「使用」の定義に特に注意を払います。
 
制限は:それはO(1)の時間計算に2つの操作を完了します。

参照だけのための個人的な思考、

1.回答分析:
正解:Dの
表題の手段:
[14、15 ,, 18】ルックアッププロセス二分法を使用して、3を見ると、
それは左側になければならないので、最初の試み、[1,18]間隔(1 + 18)/ = 9 2、9は、より大きい3を見出し、
第二の試みを、[1,8]区間の上限が決定されるように、前のステップ9に見られるように、8、(+ 8 1)/ = 4,4 2は、3よりも大きく、
第三の試み、[1,3]間隔、真実として、(1 + 3)/ 2 = 2,2及び小2、
第試み、[3,3]、3 == 3は、見つかった;
端を。

2.回答の分析:
正解:Aは、  
最初のトラバースの後、順番に、最初のオーダーが何であるかを知っている
前順:ルート、左、右の   
前順:左、根、右
後順:、右、左ルート
こちら最初の順序は、B、C、Dであり 、E F ルートであるように、C、B、E、プレオーダー配列 D、F、 その結果、C、ルートノードAの左側にB、D ;、E、右側のFは
:次に、我々は最初の左側Aの構造決定
    左側のみB、およびCを 第一の配列、Bはルートを知ることができ、Cは、既知のモチーフに係る左の子B.であることができます
次いで、構造Aの右側:
    右側AはD、E、Fです。最初の注文によると、私たちは、Dがルートであることを知ることができる;
    ので、Eは、左または右の子の子をdとしますか?配列は、左の子DでなければならないEに見出される;
    配列に従って、F Dは右側に、それはDの唯一の右の子になるように、Eは、左/右の子にすることはできません
。図に示すツリー構造
image.png
3、解答パース
の答えはある:D
この問題は、本質的にヒルソートされます。
詳細なヒルソート方法、参照:https://blog.csdn.net/gaoruowen1/article/details/81015244

4、解決するための解答
正解:D
A:リスト上の優先ガベージコレクションのスレッドは、理由があります:GC総資源は最後の手段ではなく、メインスレッドがコアビジネスロジックの内部である一方、ときにのみ十分でないメモリやCPU、GCを起動していませんGCは、アイドル状態になります。
B:GCチューブが所有するガベージコレクション。
C:GCはちょうど例大多数が、組み合わせコードは、包括的なGCを考慮することができないで無限の可能性を持っていることを保証するために、それが必要なJVMのチューニングです。

5.回答の分析:
正解:
静的変数クラスとインスタンス変数を作成するには、クラスのロードをトリガーします。コードの静的ブロックは、クラスだけがロードされるときに一度ロードされます。ランテストT2 =新しいテスト()で、インスタンス変数トリガクラスのロードを作成するときにクラスのパブリック静的テストT1 =新しいテスト()負荷、静的クラス変数トリガークラスローディングを作成します。最初は、パブリック静的テストT1 =新しいテスト(実行 ); テストT2 =新しいテストBLOCKA BLOCKBを印刷した後に行う();. BLOCKAを印刷。パブリック静的テストT1 =新しいテスト(IF )、 バックブロックの静的がグループBから選択される、BLOCKB公共静的テストT1を=新しいテスト(実行、印刷 ); BLOCKAを印刷します。

6.回答の分析:
正解:B  
RUN()新しいスレッドを起動しない方法は、start()メソッドで、ここならば、それは新しいスレッド、ピンポンを開始し、2なり、実行順序ので、ここでは、唯一のメインスレッドがあります最初の答えを実行するスレッドを知らないB.です

7.回答の分析:
正解:B 
抽象工場は、具体的な植物は、抽象の例抽象的、具体的な工場です

8、解決するための解答
正解:Bの
らせんモデルを考慮に体系的かつ厳格な監視機能と迅速なプロトタイピングの反復ウォーターフォールモデルを取るソフトウェア開発プロセスモデルの進化です。スパイラルモデルの最大の特徴は、他のモデルでは利用できないリスク分析の導入である重大なリスクは、損失を低減するためには、除外することができない場合、ソフトウェアが停止します。一方、各反復でのリスクを軽減するために、ステージのヘリカル経路モデルを試作。スパイラルモデルは、大規模な高価なシステム・レベルのソフトウェア・アプリケーションに適しています。

解決する9、回答
A:正解
A:;第2のルックアップ200-500三ルック200~450又は450~500 180のいずれかがそうエラー含むことができない最初の外観は0-500である
最初:Bを500から0の検索、2番目の表情0から450まで、第三のルックアップ0-200第4の検索0-180
C:最初の外観は、0から180であり、第2のルックアップ180から500;第三の検索200-500; 200〜450第四の検索または450〜500
D:最初の外観は0から180であり、200-の終わりを見つけるために二回、第三のルックアップ200-500第4検索200〜450または450〜500

10、答案解析
 
インポートたjava.util.HashMap。
輸入java.util.Map;
インポートjava.util.Scanner;
  
公共CLAS *** AIN {
    プライベートクラスノード{
        ノードの横、前;
        int型のキー、値;
  
        ノード(){}
        ノード(INTキー、INT値){
            this.value =値。
            this.keyは、キー=。
        }
    }
  
    プライベートノード頭、尾;
    プライベート地図<整数、ノード>マップ。
    プライベートint型の数、容量;
  
    プライベート無効にaddNode(ノードノード){
        ノードの古い= head.next。
        head.next =ノード。
        node.prev =ヘッド。
        古い= node.next。
        old.prev =ノード。
    }
  
    プライベートボイドがremoveNode(ノードノード){
        ノード以前= node.prev。
        previous.next = node.next。
        node.next.prev =前回;
    }
  
    プライベートボイドmoveToHead(ノードノード){
        がremoveNode(ノード)。
        addNode(ノード)。
    }
  
    プライベート・ノードpopTail(){
        ノードプリ= tail.prev。
        がremoveNode(PRE)。
        事前に返します。
    }
  
    公共メイン(INT容量){
        this.capacity =容量。
        this.count = 0;
        マップ=新しいHashMapの<>();
        ヘッド=新しいノード();
        テール=新しいノード();
        head.next =尾。
        tail.prev =ヘッド。
    }
  
    公共int型のGET(INTキー){
        ノードノード= map.get(キー)。
        IF(ノード== NULL)リターン-1。
        moveToHead(ノード)。
        node.value返します。
    }
  
    公共ボイドPUT(INTキー、INT値){
        ノードのノード= map.get(キー)。
        IF(ノード== NULL){
            IF(カウント==容量){
                map.remove(popTail()キー。)
                - カウント;
            }
            ノード新鮮=新しいノード(キー、値)。
            map.put(キー、新鮮な);
            addNode(新鮮な)。
            ++数えます。
        } そうしないと {
            node.value =値。
        }
    }
    パブリック静的無効メイン(文字列[] args){
        スキャナスキャナ=新しいスキャナ(System.in)。
        int型の容量= Integer.valueOf(scanner.nextLine()(トリム)。);
        メインインスタンス=新しいメイン(容量);
        一方、(scanner.hasNextLine()){
            文字列コマンド= scanner.nextLine()(トリム)。
            IF(容量> 0 && command.charAt(0)== 'P'){
                int型のキー= Integer.valueOf(command.substring(2、command.lastIndexOfは(」「)));
                int型値= Integer.valueOf(コマンド(command.lastIndexOf(」「)+1))を.substring。
                instance.put(キー、値)。
            }そうであれば(command.charAt(0)== 'G'){
                IF(容量<= 0){
                    System.out.printlnは(-1)。
                }他{
                    int型のキー= Integer.valueOf(command.substring(2))。
                    System.out.println(instance.get(キー));
                }
            }
        }
    }
}

60元記事公開 ウォン称賛73 ビューに23万+を

おすすめ

転載: blog.csdn.net/tyyking/article/details/102567182