Javaエンジニアの面接問題の蓄積(2.0版)

6742 ワード

前の文章はここにあります:面接問題の蓄積:http://blog.csdn.net/renfufei/article/details/8754239
古いのでCSDNは更新させません.そのうち1-11題は古い問題です.
1.1つの数が2のべき乗であることをどのように判断するか.
個人的には、数字はバイナリに変換され、記号ビットは0で、残りの部分はあり、最も左側の1ビットだけが1で、残りのビットは0で、2のべき乗だと思います.原理は2に乗ると左に1つ入ることです.
2.落とし穴面接問題:
Javaでは、Throwableはインタフェースですか、抽象クラスですか.
3.Javascriptテーマ
  
  
   
           ,      
    
    var myname = "xiaoming";  
    if(!!myage){  
        myname = "xiaozhang";  
    }  
    alert("myname="+myname);  
    
   
   
   
  

4.バイナリアルゴリズム及び思考トラップ問題
現在千本の薬水があり、そのうち九百九十九本は全く同じで、1本だけ中が毒薬だが、外観的には見分けがつかない.毒薬を少し飲ませると、一週間後に突然死んでしまいますが、これまで症状はありませんでした.今1週間以内にどの瓶が毒薬なのかを見つけて、少なくとも何匹のマウスが必要ですか?
5.Javaデータ範囲
Javaでは、100億などの数字がありますが、intを使って保存できますか?
100億*100億は、どのようなタイプで保存できますか?
このように計算すると、intタイプは32ビット、4バイト、2の10乗は1024、約1 K、2^20=1 M、約100万、2^30=1 G、約10億であるため、整数は約40億個、正数22 E個しか残っていないため、100億はlongで記憶できるが、intで記憶することはできない.longは64ビットで、32ビットは100億ドル未満なので、64ビットも100億*100億ドル未満で、K神が言ったBigIntegerやBigDecimalなどの特殊なタイプしか使えません.
テストプログラム:
public class TestIntLong {  
    /** 
     *     int   100 , long   100 *100     
     */  
    public static void main(String[] args) {  
        int num1 = 10 * 1000 * 1000 * 1000;  
        long num2 = 10L * 1000 * 1000 * 1000 * 10 * 1000 * 1000 * 1000;  
        long num3 = 10 * 1000 * 1000 * 1000 * 10 * 1000 * 1000 * 1000L;  
        long num4 = 10L * 1000L * 1000L * 1000L * 10L * 1000L * 1000L * 1000L;  
        //  
        System.out.println("num1="+ num1);//num1=1410065408  
        System.out.println("num2="+ num2);//num2=7766279631452241920  
        System.out.println("num3="+ num3);//num3=1569325056000  
        System.out.println("num4="+ num4);//num4=7766279631452241920  
    }  
}  

6.Java面接問題:インターネットでいくつかの操作を実行する方法
package com.test.test.java;  
/** 
 * Java   :       interface         ? 
 */  
public interface TestInvocation {  
    public static final Runnable RUNNABLE   
        = new Runnable() {  
        @Override  
        public void run() {  
            System.out.println(  
                "    ,       ,  ,          ."  
            );  
        }  
    };   
}  

また、Java 8にはデフォルトの方法が追加されており、このようなニーズを専門にしています.
7.MySQLでUUIDをプライマリ・キーとして使用すると、どのように順序が整いますか?
select concat( date_format(current_timestamp, '%Y%m%d%H%i%s'),'-', UUID() );  

次の結果が返されます.
mysql> select concat( date_format(current_timestamp, '%Y%m%d%H%i%s'),'-', UUID() );  
+----------------------------------------------------------------------+  
| concat( date_format(current_timestamp, '%Y%m%d%H%i%s'),'-', UUID() ) |  
+----------------------------------------------------------------------+  
| 20140705202902-f280257a-043f-11e4-989a-00163e0202ca                  |  
+----------------------------------------------------------------------+  
1 row in set (0.00 sec)  

8.JSON定義の基準で属性名を引用符で囲む必要があるのはなぜですか?
様々なシステム、様々なキーワード、識別子の構成が異なり、Mapなどがあることを考慮すべきである.
9.JVMについて
万(wu)能(lai)の面接テクニックがあって、あなたは求職者に聞いて、この背後の思想は何なのか、あなたは彼の原理を理解して、どうしてこのように実現して、もしあなたに自分で書かせたら、どのくらいの時間で基礎バージョンを作って出ますか?
GC     ,  
  JDK        ,  
        ,  
      ,  
         ,  
     ,  
      、  
      。。。  

10.面接問題:Javaでは、次のような使い方に問題がありますか?
Date nextMonth = new Date(new Date().getTime() + 30*24*60*60*1000);  

もちろん、この使い方はよくありません.プラス1ヶ月で使うべきはCalendarクラスで、CalendarはJavaの標準ツールクラスで、java.utilパッケージの下にあります.
Date today = new Date();  
Calendar cal = Calendar.getInstance();  
cal.setTime(today);  
cal.add(Calendar.MONTH, 1); //       
cal.add(Calendar.DATE, -1); //      
//  
Date nextM = cal.getTime();  
System.out.println(nextM);  

もっと穴があいているのはここです.
long n = 30*24*60*60*1000;  
long nl = 30*24*60*60*1000L;  
System.out.println("n="+n);  
System.out.println("nl="+nl);  

次の出力結果を参照できます.
n=-1702967296  
nl=2592000000  

ヒント:int値はどのくらいの値を置くことができますか?
11.Listのinstanceofについて、123と言ってください
import java.util.ArrayList;  
import java.util.List;  
/** 
 *         (  )     ? 
 */  
public class TestInstanceOf {  
    public static void main(String[] args) {  

        List listS = new ArrayList();  
        List listI = new ArrayList();  
        //        (  )     ?  
        if (listS instanceof List) {  
            System.out.println("listS instanceof List="+true);  
        } else {  
            System.out.println("listS instanceof List="+false);  
        }  
    }  
}  

12.1.Springの理解方法
>   ,  ,      ,      ,core,context     。

12.2.SpringのAOPはどのような方法で実現されていますか.
>   ,    ,cglib...

13.MySQLデータベースの分離境界
> 4 ,       

14.Oracleクエリー・ツリーのキーワード
> connect by prior ,          

15.MySQL繰り返し可能シーン
>   100    ,    ,   50   ,           50  ,   。
>
>  :                    ?      

> redo,undo  ,            

16.MySQLのbin-logの理解
>     :     ,   

17.HTTP,TCP/UDPが置かれている層
>    ,   

18.redis,mongodb,HBAseの適用シーン
> redis,   ,     
> mongo,    ,  ,  
> hbase,     ,   ,         

19.redisのデータ型
20.redisの期限切れは何の役に立つのか、実現原理
>          ,      .          ,          
>
>            .           .     key       ( )    。

21.Linux OracleのJDKをインストールし、プロファイルをどこに配置するか
> /etc/profile.d/

22.性能調整にはどのような手段があるか
23.JVMの分析方法
24. Dubbo
> RPC,     ,    

25.MyBatisの#,$
26.プロジェクトケース、役割
27.HashMapの実現原理
> hash, bucket/  ,  

28.ConcurrentHashMap実現原理、ロックの粒度
>   bucket     

29.バブルソートを実現するためのプログラムを書く
>      ,    

30.Integerのキャッシュ、127、==、equalsの問題
31.AtomicXXXの使用
32.ロックの様々な実装、タイプ、消費、および適用シーン
33.具体的な調整事例と分析
34.JVMメモリパーティション、各スペースのサイズを表示する方法
35.GCの適用シーン、G 1、CMS、各メモリ領域の回収アルゴリズム
36.スレッドプール
>     ,  ,submit()   excutive()    :      

37.データベース方面(SQL最適化、SQL注入、越権、インデックスなど)、
38.ThreadLocalの原理
2016年3月29日更新