面試題要點

一.static修飾某個字段時,確定會改變字段建立的方式(每一個被static修飾的字段對於每個類來講只有一份存儲空間,而非static修飾的字段對於每個對象來講都有一個存儲空間)java

     static 修飾符修飾的變量是全部同一個類生成的對象共享的tomcat

 

二.多線程

  1. 使用匿名內部類時,必須繼承一個類或實現一個接口
  2. 匿名內部類因爲沒有名字,所以不能定義構造函數
  3. 匿名內部類中不能含有靜態成員變量和靜態方法

 

Thread 的 run 和 start 方法:函數

 

 

ANT 和 Maven 區別:this

 

struts1 和 struts2的區別:spa

 

 

子類構造方法在調用時必須先調用父類的,因爲父類沒有無參構造,必須在子類中顯式調用線程

 

1)Bootstrap ClassLoadercode

負責加載$JAVA_HOME中jre/lib/rt.jar裏全部的class,由C++實現,不是ClassLoader子類對象

2)Extension ClassLoaderblog

負責加載java平臺中擴展功能的一些jar包,包括$JAVA_HOME中jre/lib/*.jar或-Djava.ext.dirs指定目錄下的jar包

3)App ClassLoader

負責記載classpath中指定的jar包及目錄中class

4)Custom ClassLoader

屬於應用程序根據自身須要自定義的ClassLoader,如tomcat、jboss都會根據j2ee規範自行實現ClassLoader

加載過程當中會先檢查類是否被已加載,檢查順序是自底向上,從Custom ClassLoader到BootStrap ClassLoader逐層檢查,只要某個classloader已加載就視爲已加載此類,保證此類只全部ClassLoader加載一次。而加載的順序是自頂向下,也就是由上層來逐層嘗試加載此類。

ArrayList空間的增加率爲1.5倍

 

一、ThreadLocal的類聲明:

public class ThreadLocal<T>

能夠看出ThreadLocal並無繼承自Thread,也沒有實現Runnable接口。

二、ThreadLocal類爲每個線程都維護了本身獨有的變量拷貝。每一個線程都擁有了本身獨立的一個變量。

因此ThreadLocal重要做用並不在於多線程間的數據共享,而是數據的獨立。

因爲每一個線程在訪問該變量時,讀取和修改的,都是本身獨有的那一份變量拷貝,不會被其餘線程訪問,

變量被完全封閉在每一個訪問的線程中。

三、ThreadLocal中定義了一個哈希表用於爲每一個線程都提供一個變量的副本:

 static class ThreadLocalMap {

        static class Entry extends WeakReference<ThreadLocal> {

            /** The value associated with this ThreadLocal. */

            Object value;

            Entry(ThreadLocal k, Object v) {

                super(k);

                value = v;

            }

        }

        /**

         * The table, resized as necessary.

         * table.length MUST always be a power of two.

         */

        private Entry[] table;

}

相關文章
相關標籤/搜索