面接問題の蓄積

4856 ワード

簡単に検索できる問題なら、列挙する必要はありません.積み重ねる.
1.1つの数が2のべき乗であることをどのように判断するか.
個人的には、数字はバイナリに変換され、記号ビットは0で、残りの部分はあり、最も左側の1ビットだけが1で、残りのビットは0で、2のべき乗だと思います.原理は2に乗ると左に1つ入ることです.
2.落とし穴面接問題:
Javaでは、Throwableはインタフェースですか、抽象クラスですか.
3.Javascriptテーマ
<!DOCTYPE HTML>
<html>
 <head>
  <title>         ,    </title>
  <script>
	var myname = "xiaoming";
	if(!!myage){
		myname = "xiaozhang";
	}
	alert("myname="+myname);
  </script>
 </head>
 <body>
 </body>
</html>

4.バイナリアルゴリズム及び思考トラップ問題
       ,              , 
         ,          。 
           ,              , 
          。 
               ,          ? 

5.Javaデータ範囲
Javaでは、100億などの数字がありますが、intを使って保存できますか?100億*100億は、どのようなタイプで保存できますか?
    , int    32 ,4   ,2 10    1024,   1K,2^20 = 1M, 100 , 2^30= 1G,   10 ,         40    ,  22E ,   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定義の基準で属性名を引用符で囲む必要があるのはなぜですか?
{"name": "csdn", "age": 11}

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<String> listS = new ArrayList<String>();
        List<TestInstanceOf> listI = new ArrayList<TestInstanceOf>();
        //        (  )     ?
        if (listS instanceof List<TestInstanceOf>) {
            System.out.println("listS instanceof List<TestInstanceOf>="+true);
        } else {
            System.out.println("listS instanceof List<TestInstanceOf>="+false);
        }
    }
}

12.