Java進階軟體工程師面試題

來源:互聯網
上載者:User

標籤:

Java 軟體進階工程師筆試題

【智力部分】(30分)

1. 燒一根不均勻的繩要用一個小時,如何用它來判斷半個小時?(5分)

兩頭同時燒

2. 4,4,10,10,加減乘除,怎麼出24點?四個數字分別只能用一次(5分)

(10*10-4)/4

3. 如果你有無窮多的水,一個容積為3L的和5L的提桶,你如何準確稱出 4L的水?(5分)

第一步:向5L的通中放兩次3L水,這時3L水桶剩1L水。

第二步:將3L水桶中的1L水倒入5L的水桶中,這時5L的水桶中有1L水。

第三步:再用3L水桶盛滿水全部倒入5L的水桶,4L水就稱出來了。

 

4. 一隻蝸牛從井底爬到井口,每天白天蝸牛要睡覺,晚上才出來活動,一個晚上蝸牛可以向上爬3尺,但是白天睡覺的時候會往下滑2尺,井深10尺,問蝸牛幾天可以爬出來?(5分)

8天。

前七天是(3-1)*7 =7

第八天晚上又爬了3尺,這時已經到井口了。在井口睡覺想滑也滑不下去了。

 

5. 有一種細菌,經過一分鐘分裂為2個,再過一分鐘,分裂為4個,這樣,將一個細菌放在一個瓶子裡面,一個小時後瓶子被細菌充滿了。現在假設一開始放入瓶中的為兩個細菌,那麼到充滿瓶子要多長的時間?(10分)

59分鐘。

一個放了一個細菌的瓶子經過一分鐘分裂,就有兩個細菌了。第二個瓶子直接就有了兩個細菌,也就相當於調過了第一個瓶子在第一分鐘的情況了。以後的情況就完全一致了,所以是59分鐘。

 

【專業部分】(70分)

1. 簡述一下物件導向的特徵,並舉例說明你對物件導向的理解?(5分)

物件導向是基於萬物皆對象這個哲學觀點,把一個帝鄉抽象成類,具體就是你吧一個對象的靜態特徵和動態特徵抽象成屬性和方法,也就是把一類事務的演算法和資料結構封裝在一個類之中,程式就是多個對象和互相間的通訊組成的。

物件導向具有封裝性,繼承性,多態性。封裝隱蔽了對象內部不需要暴漏的細節,似的內部細節的變動跟外界脫離,只依靠介面進行通訊。封裝性降低了編程的複雜性。通過繼承,使得建立一個類變得容易,一個類從衍生類別哪裡獲得其非私人的方法和公用屬性的繁瑣工作交給了編譯器。而繼承和實現介面和運行時的類型標定機制所產生的多態,使得不同的類所產生的對象能夠對相同的訊息做出不同的反映,記得提高了代碼的通用性。

總之,物件導向的特性提高了大型程式的重用性和可維護性。

2. ArrayList和HsahSet的區別,HashMap和Hashtable的區別?(5分)

ArrayList和HashSet的區別:

ArrayList是一組有序的集合,存放的是對象的引用,而不是對象本身。存放的對象是可以重複的。

HashSet存放的對象是不可重複的。

 

HashMap和Hashtable的區別:

  1. 繼承的類不同
  2. HashTable是安全執行緒的,而HashMap是非安全執行緒的。
  3. HashMap的key,value是允許null的,而HashTable不允許。且HashMap效率高。

 

 

 

 

 

 

3. 線程同步的關鍵字是什嗎?sleep() 和 wait() 有什麼區別?怎麼喚醒wait()停止的線程?(5分)

線程同步的關鍵字:synchronized

Sleep()和Wait()的區別:

  1. 父類不同Sleep()來自Thread類,wait()來自Objcet類
  2. 最主要的是sleep()方法沒有釋放鎖,而wait方法釋放了所,使得其他線程可以使用同步空值快或者方法。

Sleep不讓出系統資源;wait是進入線程等待池等待,讓出系統資源,其他線程可以佔用cpu,且需要notify,notifyAlll來喚醒等待池中的線程。

  1. 使用範圍:wait,notify和notifyAll只能在同步空值方法或者同步控制塊裡使用,而sleep可以在任何地方使用
  2. Sleep必須捕獲異常,而wait,notify和notifyAll不需要捕獲異常

 

 

 

4. 列舉你在項目中常用的設計模式(虛擬碼或類圖),並說明每種設計模式的具體應用情境。(5分)

單例模式

Public class Singleton{

      private static volatile Singleton singleton = null;

private Singleton(){}

public static Singleton getSingleton(){

      if(singleton == null){

        synchronized(Singleton.class){

                  if(singleton == null){

                       singleton = new Singleton();

                  }

            }

      }

     return singleton;

}

}

 

多線程中多次擷取某個對象的執行個體,而不必每次都去new。

 

 

 

 

 

4. Spring中交易管理支援哪幾種方式以及每種方式的具體使用方法。(5分)

 實現方式兩種:

 編碼方式;

 聲明式交易管理方式。

 聲明式交易管理是通過AOP技術實現的,實質就是:在方法執行前後進行攔截,然後在目標方法開始之前建立並加入事務,執行完成目標方法後根據執行情況提交後復原事務。

聲明式交易管理有兩種方式:基於XML設定檔(攔截器 AOP),通過標籤@Transaction註解

 

另一種答案:

1.每個bead都有一個事務代理

 

  1. Hibernate的緩衝等級及其特點(5分)

一級緩衝:session層級的緩衝,session關閉後,緩衝就沒有了

二級緩衝:sessionFactory層級的緩衝,它緩衝的是對象

查詢快取:查詢快取也是sessionFactory層級的緩衝,它緩衝的是sql語句

 

一般二級緩衝要和查詢快取配合使用,避免N+1的問題。更建議使用mamcatched單獨做緩衝。

 

 

 

5. 至少寫出一種11位手機號碼的Regex。(5分)

^[1][358][0-9]{9}$

 

6. 用簡短的代碼實現字串“s  tr in   g”到“s tr in g”轉換。即將多個空格轉換為一個空格(5分)

String s = “s  tr in  g”;

S=s.replaceAll(“ +”,” ”);

 

 

7. 使用Socket編寫一個程式,用戶端向伺服器端發送請求(發送字串即可),服務端接收後發送反饋資訊.(10分)

TCP協議

 

網上例子很多 自己找。代碼過長

8. 用SQL語句實現Oracle分頁查詢。(10分)

 Select * from (select ROWNUM rn,t.* from tableName T where t.rn <=40)  TT where tt.rn >=10

 Select * from tableName where userID limit 0,20;

 

 

 

  1. aa,bb表都有20個欄位,且記錄數量都很大,aa,bb表的X欄位(非空)上有索引, 請用SQL列出aa表裡面存在的X在bb表不存在的X的值,請寫出認為最快的語句,並解譯原因。(10分)

select a.x from aa a where not exists (select 1 from bb b where a.x = b.x)

Java進階軟體工程師面試題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.