1. 程式人生 > >真實企業JAVA面試題

真實企業JAVA面試題

請舉例解釋@Required annotation

在產品級別的應用中,IoC容器可能聲明瞭數十萬了beanbeanbean之間有著複雜的依賴關係。設值註解方法的短板之一就是驗證所有的屬性是否被註解是一項十分困難的操作。可以通過在<bean>中設定dependency-check來解決這個問題。

在應用程式的生命週期中,你可能不大願意花時間在驗證所有bean的屬性是否按照上下文檔案正確配置。或者你寧可驗證某個bean的特定屬性是否被正確的設定。即使是用dependency-check屬性也不能很好的解決這個問題,在這種情況下,你需要使用@Required註解。

需要用如下的方式使用來標明

bean的設值方法。

public class EmployeeFactoryBean extendsAbstractFactoryBean<Object>

{

   private String designation;

   public String getDesignation() {

       return designation;

   }

   @Required

   public void setDesignation(String designation) {

       this.designation = designation;

   }

   //more code here

}

RequiredAnnotationBeanPostProcessorSpring中的後置處理用來驗證被@Required註解的bean屬性是否被正確的設定了。在使用RequiredAnnotationBeanPostProcesso來驗證bean屬性之前,首先要在IoC容器中對其進行註冊:

<beanclass="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>

但是如果沒有屬性被用@Required註解過的話,後置處理器會丟擲一個BeanInitializationException

異常。

20、請舉例解釋@Autowired註解?

@Autowired註解對自動裝配何時何處被實現提供了更多細粒度的控制。@Autowired註解可以像@Required註解、構造器一樣被用於在bean的設值方法上自動裝配bean的屬性,一個引數或者帶有任意名稱或帶有多個引數的方法。

比如,可以在設值方法上使用@Autowired註解來替代配置檔案中的<property>元素。當Spring容器在setter方法上找到@Autowired註解時,會嘗試用byType自動裝配。

當然我們也可以在構造方法上使用@Autowired註解。帶有@Autowired註解的構造方法意味著在建立一個bean時將會被自動裝配,即便在配置檔案中使用<constructor-arg>元素。

public class TextEditor {

  private SpellChecker spellChecker;

  @Autowired

  public TextEditor(SpellChecker spellChecker){

     System.out.println("Inside TextEditor constructor." );

     this.spellChecker = spellChecker;

  }

  public void spellCheck(){

     spellChecker.checkSpelling();

  }

}

下面是沒有構造引數的配置方式:

<beans>

  <context:annotation-config/>

  <!-- Definition for textEditor bean without constructor-arg  -->

  <bean id="textEditor"class="com.howtodoinjava.TextEditor">

  </bean>

  <!-- Definition for spellChecker bean -->

  <bean id="spellChecker"class="com.howtodoinjava.SpellChecker">

  </bean>

</beans>

21、請舉例說明@Qualifier註解?

@Qualifier註解意味著可以在被標註bean的欄位上可以自動裝配。Qualifier註解可以用來取消Spring不能取消的bean應用。

下面的示例將會在Customerperson屬性中自動裝配person的值。

public class Customer

{

   @Autowired

   private Person person;

}

下面我們要在配置檔案中來配置Person類。

<bean id="customer"class="com.howtodoinjava.common.Customer" />

<bean id="personA" class="com.howtodoinjava.common.Person">

   <property name="name" value="lokesh" />

</bean>

<bean id="personB"class="com.howtodoinjava.common.Person" >

   <property name="name" value="alex" />

</bean>

Spring會知道要自動裝配哪個person bean麼?不會的,但是執行上面的示例時,會丟擲下面的異常:

Caused by:org.springframework.beans.factory.NoSuchBeanDefinitionException:

   No unique bean of type [com.howtodoinjava.common.Person] is defined:

       expected single matching bean but found 2: [personA, personB]

要解決上面的問題,需要使用@Quanlifier註解來告訴Spring容器要裝配哪個bean

public class Customer

{

   @Autowired

   @Qualifier("personA")

   private Person person;

}

相關推薦

真實企業JAVA試題

請舉例解釋@Required annotation?在產品級別的應用中,IoC容器可能聲明瞭數十萬了bean,bean與bean之間有著複雜的依賴關係。設值註解方法的短板之一就是驗證所有的屬性是否被註解是一項十分困難的操作。可以通過在<bean>中設定“depen

各大互聯網企業Java試題匯總,看我如何成功拿到百度的offer

ati nta 評價 可能 代碼 context 最好 alt ice 前言 本人Java開發,5年經驗,7月初來到帝都,開啟面試經歷,前後20天左右,主面互聯網公司,一二線大公司或者是融資中的創業公司都面試過,拿了一些offer,其中包括奇虎360,最後綜合決定還是去百

各大網際網路企業Java試題彙總,看我如何成功拿到百度的offer

前言 本人Java開發,5年經驗,7月初來到帝都,開啟面試經歷,前後20天左右,主面網際網路公司,一二線大公司或者是融資中的創業公司都面試過,拿了一些offer,其中包括奇虎360,最後綜合決定還是去百度了。 首先不同面試官面試風格一定不同,我這裡就是總結這些天面試J

一線網際網路企業必問120道Java試題以及答案

多執行緒、併發及執行緒的基礎問題 1)Java 中能建立 volatile 陣列嗎? 能,Java 中可以建立 volatile 型別陣列,不過只是一個指向陣列的引用,而不是整個陣列。我的意思是,如果改變引用指向的陣列,將會受到 volatile 的保護,但是如果多個執行緒同時改變陣列的元素

java試題真實

java面試題(真實) java 資料庫 java 九大內建物件 輸入輸出物件:out物件、response物件、request物件; 通訊控制物件:pageContext物件、session物件、

java試題,各大企業常見的java試題之八

IO 流及Socket 部分:(共5 題:基礎5 道) 1、什麼是java 序列化,如何實現java 序列化?【基礎】 答:序列化就是一種用來處理物件流的機制,所謂物件流也就是將物件的內容進行流化。可以對流化後的物件進行讀寫操作,也可將流化後的物件傳輸於網路之間。序列化是為

java試題,各大企業常見的java試題之七

1、什麼時候用assert?【中等難度】 答:assertion(斷言)在軟體開發中是一種常用的除錯方式,很多開發語言中都支援這種機制。一般來說,assertion 用於保證程式最基本、關鍵的正確性。assertion 檢查通常在開發和測試時開啟。為了提高效能,在軟體釋出後

企業Shell試題14:開發腳本入侵檢測與報警案例

開發腳本入侵檢測與報警案例、md5sum指紋、 面試及實戰考試題:監控web站點目錄(/var/html/www)下所有文件是否被惡意篡改(文件內容被改了),如果有就打印改動的文件名(發郵件),定時任務每3分鐘執行一次。1.1問題分析1)首先要說明的是,思考過程的積累比實際代碼開發的能力積累更重

Java試題和解答(三)

增加 自旋 println class 答案 logs 聯網 get link 1、這段代碼大多數情況下運行正常,但是某些情況下會出問題。什麽時候會出現什麽問題?如何修正? public class MyStack { private List<S

java試題

調用 strong 同步鎖 記錄 沒有 拋出異常 數據 sleep wait sleep()和wait()的區別  sleep是線程類的方法,它會讓出cpu去執行其他線程,當指定時間過後,會從新回到此線程上,但是雖然讓出了CPU ,並不會釋放對象鎖,   wait是obje

java試題

情況 減少 元素 pro pin 內存大小 java_opts req -xms 個人的一點參考總結,如有雷同,純屬巧合! 1、hashmap的實現原理以及hashtable的線程安全是怎麽實現的?HashMap其實也是一個線性的數組實現的,所以可以理解為其存儲數據的容

java試題-java基礎

runtime 都是 缺點 子類 true 大數 virtual 過程 面向連接 1.1java與其他語言相比,有什麽優點和缺點?   首先,java與c、c++相比,java是一種完全的面對對象的語言,雖然他的底層(運行時庫)使用c語言開發的,可是並不依賴於c,因為jav

Java(試題):字符串截取

int lan out 試題 void trace 題目 replace odi 在Java中,字符串“abcd”與字符串“ab你好”的長度是一樣,都是四個字符。 但對應的字節數不同,一個漢字占兩個字節。 定義一個方法,按照指定的字節數來取子串。 如:對於“ab你好”,如果

Java試題和解答(四)

aio sys main sina 數據 由於 ssd shm 檢測 1、JVM什麽情況下會GC,GC策略有哪些 當應用程序分配新的對象,GC的代的預算大小已經達到閾值,比如GC的第0代已滿;代碼主動顯式調用System.GC.Collect();其他特殊情況,比如,系統

100+經典Java試題及答案解析

是什麽 自定義 我們 計數 接口類 同步方法 main err ans 面向對象編程(OOP) Java是一個支持並發、基於類和面向對象的計算機編程語言。下面列出了面向對象軟件開發的優點: 代碼開發模塊化,更易維護和修改。 代碼復用。 增強代碼的可靠性和靈活

java試題2

pan ole light [0 -i att turn mat [] 1.冒泡排序 public static void test(){ int[] array = new int[]{1,4,5,8,9,34,4,32,65}; int tmp; for(

10個經典的Java試題集合

支持 獲得 equal 效率 可用 ash 很快 鍵值對 shm 1.Java的HashMap是如何工作的? HashMap是一個針對數據結構的鍵值,每個鍵都會有相應的值,關鍵是識別這樣的值。 HashMap 基於 hashing 原理,我們通過 put ()和 g

Java試題-線程安全

通過 釋放 運行時 ica work 面試題 條件 同時 strong 1. 什麽叫線程安全?servlet是線程安全嗎? 答:如果你的代碼所在的進程中有多個線程在同時運行,而這些線程可能會同時運行這段代碼。如果每次運行結果和單線程運行的結果是一樣的,而且其

java試題(二)

imap 產生 java面試 大型 過程 ets ibm apache服務 廣泛 11、說出Servlet的生命周期,並說出Servlet和CGI的區別? Servlet被服務器實例化後,容器運行其init方法,請求到達時運行其service方法,service方法自動派遣

java試題整理(1)

pmap 復制 java對象 試題 取出 樹形 年輕代和老年代 com 足夠 1、Equals與==的區別?   ==是判斷兩個變量或者實例是不是指向同一個內存地址   equals是判斷兩個變量或者實例所指向的內存地址中的值是不是相同 2、Object有哪些公用方法?