面試常見問題

1.Java創建對象的幾種方式

  • 用new關鍵字創建
  • 調用對象的clone方法
  • 利用反射,調用Class類的或者是Constructor類的newInstance()方法
  • 用反序列化,調用ObjectInputStream類的readObject()方法

2.HashMap和Hashtable區別

  • hash數組初始化時機不同,Hashtable是在構造函數初始化,而HashMap是在第一次put()初始化hash數組。
  • 在HashTable中,hash數組默認大小是11,增加的方式是old*2+1。在HashMap中,hash數組默認大小是16,增加的方式是2*old而且一定是2的整數.
  • HashMap允許空(null)鍵值(key),而HashTable不允許。
  • HashMap把Hashtable的contains()方法去掉了,改成了containsvalue()和containsKey()。
  • Hashtable的方法是線程安全的,而HashMap不支持線程的同步,不是線程安全的。
  • Hashtable使用Enumeration,HashMap使用Iterator。
  • hash值的使用不同,HashTable直接使用對象的hashCode。
     

3.如何決定使用 HashMap 還是 TreeMap?

HashMap:基於哈希表實現。TreeMap:基於紅黑樹實現。HashMap 和 TreeMap 都是非線程安全。如果你需要得到一個有序的結果時就應該使用TreeMap(因爲HashMap中元素的排列順序是不固定的)。除此之外,由於HashMap有更好的性能,所以大多不需要排序的時候我們會使用HashMap。

4.SQL調優常用方法

  • 1、應儘量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃描。
  • 2、對查詢進行優化,應儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。

5.static關鍵字的作用

  • 修飾成員變量:static修飾時,放入靜態方法區,被堆中所有數據共享。
  • 修飾成員方法:可以使用類名.方法名調用該方法,實際開發中很少用到,static修飾後的方法資源共享,在多線程場景不安全。二是靜態資源常駐內存,很難被回收;static方法也是沒有this的方法,this代表當前對象。而static方法不需要對象。
  • 修飾靜態塊,將要修飾的成員同一放在一個static中。該靜態化會在第一次使用類時,最先初始化static修飾的靜態塊。並且在程序運行過程中,只需要初始化一次,不會進行多次初始化。
  • 靜態導包指在導入包前用static修飾,作用是當使用靜態導包後,引用導入類的方法(變量)時,可以不用XXX=類名.方法,直接XXX=方法()。

6.幾進制時滿足15*34=532

假設進製爲n,則(n+5)*(3n+4)=5n^2+3n+2

解出來得9。

7.linux中查看cpu效率的指令

top

8.JAVA 中可以讓線程停止執行方法有()

  • sleep()
  • stop()
  • synchronized()
  • yield()

9.java的三大框架是什麼,功能各是什麼?

三大框架是用來開發web應用程序中使用的.
Struts:基於MVC的充當了其中的試圖層和控制器
Hibernate:做持久化的,對JDBC輕量級的封裝,使得我們能過面向對象的操作數據庫
Spring: 採用了控制反轉的技術,管理Bean,降低了各層之間的耦合.

10.AOP的實現原理

動態代理

11.classLoader和class.forName的區別

java中class.forName()和classLoader都可以用來對類進行加載。
class.forName()前者除了將類的.class文件加載到jvm中之外,還會對類進行解釋,執行類中的static靜態代碼塊。而classLoader只幹一件事,就是將。class文件加載到jvm中,不會執行static中的內容,只有newInstance纔會去執行static塊。
Class.forName(name,initialize,loader)帶參函數也可控制是否加載static塊。並且只有調用了newInstance()方法採用調用構造函數,創建類的對象

持續更新中。。。。。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章