程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 螞蟻金服平台技術事業部面試,螞蟻事業部

螞蟻金服平台技術事業部面試,螞蟻事業部

編輯:JAVA綜合教程

螞蟻金服平台技術事業部面試,螞蟻事業部


架構師面試指導性框架(面試官給出的超級標准答案):

一、Java基礎

  1.java基類是什麼?有哪些方法?

    答:java.lang.Object; 對象相關{getClass()、protected clone()、toString()、equals()、hashCode()、private registerNatives()}、線程相關{notify()、notifyAll()、wait(空|long|long,int)}、GC相關的{finalize()}。

  2.equals和==差別?

    答:equals為對象相等;==代表引用相等(即同一個對象)。Object.equals()的實現和==相同,但子類可以覆蓋此方法,以便實現不同的比較算法,例如String.equals()逐字比較。

  3.hashCode()的作用?

    答:在HashMap和HashSet中,做為雜湊值,來提高查找性能。Object.hashCode()實際上返回的是對象的引用地址,但子類可以覆蓋此方法,實現不同的雜湊算法。

  4.hashCode()方法和equals()方法的關系

    答:如果兩個對象equals()相等,那麼hashCode()必須相等;反之,則不一定。hashCode()相等,可能equals()不等,但這個概率不能太高,否則將增加HashMap沖突的可能性,而降低查找的效率。

  5.如何停止一個線程?

    答:設置一個標記,讓線程自動停止。必要時,主線程執行join方法,等待子線程完全退出。

 

public class TestThread {
    private boolean exit = false;

    private void go() throws Exception {
        Thread thread = new Thread(new MyRunnable(), "my_thread");

        System.out.println("Press Enter to exit...");
        thread.start();

        /* System.in返回InputStream; read()返回一個int值 */
        System.in.read();

        exit = true;
        thread.join();

    }

    private class MyRunnable implements Runnable {

        @Override
        public void run() {
            for (int i = 1; !exit; i++) {
                System.out.println(Thread.currentThread().getName() + ": " + i);

                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                }
            }
        }
    }

    public static void main(String[] args) throws Exception {
        new TestThread().go();
    }
}

 

  事實上,Thread自己有interrupted標志,可以通過Thread.interrupted()或某些方法的InterruptedException來捕獲中斷標志。

  6.Thread.setDeamon()的含義?

    答:一個Daemon線程是一個在背景執行服務的線程,例如網絡服務器傾聽連接端口的服務、隱藏的系統線程如垃圾收集線程或其它JVM 建立的線程,如果所有的非Daemon的線程都結束了,則Daemon線程自動就會終止。Thread.setDaemon(true)就是設置一個線程為daemon線程。該方法必須在Thread.start()之前執行。並且daemon線程創建的子線程,自動成為daemon線程

  7.classLoader的功能和工作模式?

    答:ClassLoader的功能是讀取二進制碼,生成Class對象。ClassLoader使用的是委托模式(delegation模式)。ClassLoader呈樹狀結構,每個結點代表一個ClassLoader。一般來說,ClassLoader查找一個類時,會先詢問parent ClassLoader,如果找不到,才會在自身查找。下面是JavaEE ClassLoader的常見結構:(System Class Loader之前其實省略了一個Bootstrap Class Loader,用來裝載jre/lib下的JDK基本類)

  8.列舉幾個Collection類庫中常用的類,並簡述其結構。

    答:Set{HashSet、TreeSet}、List{ArrayList、LinkedList、Vector}、Map{HashMap、HashTable、TreeMap}

  9.InputStream、OutputStream和Reader、Writer有何區別?何為字符?何為字節?

  10.如何在字符流和字節流之間轉換?

  11.GC垃圾收集是什麼意思?怎麼樣的對象會被垃圾收集?

二、J2EE基礎

  1.JSP工作原理

    答:JSP會先轉換成Servlet,然後再執行。

  2.Servlet中session工作原理

    答:通過JessionId來索引session數據。通常將JessionId保存在cookie中,但也可以編碼到URL中。session的數據是保存在服務端的,具體的實現方式由應用服務器決定。

  3.WEB層是如何解決Cluster的?

    答:關鍵是解決session的問題,可以通過sticky server的方式,也可以通過session復制的機制。如果web應用不使用session(無狀態的),則可以將請求隨機分發到任何一台對等的應用服務器上。

  4.JMS模式?

    答:Queue模式:point-to-point(點對點),一頭發消息,一頭收消息。消息收掉就沒了,兩個接收者不能收到同一個消息。Topic模式:publish-subscriber(發布、訂閱),一個人發消息,多個訂閱topic的人接收消息,多個接收者能夠收到同一個topic中的同一個消息。

  5.Transcation有哪幾種隔離級別(Isolation level)?

    答:數據在修改過程中的中間狀態對其它事務的可見程度,和其它事務修改數據的中間狀態對本事務的可見性。

 

// 1. READ UNCOMMITTED --Dirty reads, non-repeatable reads, and phantom reads are all allowed;
// 2. READ COMMITTED --Dirty reads are prevented; non-repeatable reads and phantom reads are allowed.;
// 3. REPEATABLE READ --Dirty reads and non-repeatable reads are prevented; phantom reads are allowed;
// 4. SERIALIZABLE --Dirty reads, non-repeatable reads, and phantom reads are all prevented;
// Oracle支持兩種:READ COMMITTED(默認)、SERIALIZABLE。

 

  6.Golbal transcation原理是什麼?

    答:兩階段可以提交。不僅可對數據庫,也可對其他資源如JMS進行transcation操作。

三、框架相關

  1.Spring核心理念是什麼?

    答:核心是IoC(Inversion of Control、反轉控制)或DJ(Dependency Injection、依賴注入)。通過IoC或DJ的方式來裝配對象,解除對象與對象之間的耦合性,從而簡化應用的開發、測試過程。和IoC或DJ密切相關的,還有AOP(Aspect Oriented Programming、面向切面的編程)。有了IoC,就很容易實現AOP。通過AOP,可以將額外的功能透明地附著於對象上,而不會影響到使用對象的代碼。通過此種機制,就可實現很多功能:遠程、異步調用、Transaction、Security、Intercepter。

 

// 3.3.1.Web層框架
//      Webwork、Struts、Tapestry、Turbine、Spring MVC……
// 3.3.2.數據層框架
//      Hibernate、iBatis、Torque、OJB……
// 3.3.3.普通工具類
//      Jakarta commons……
// 模板工具:Velocity、Freemarker……
// 3.3.4.測試框架
//      Junit、Testng、Cactus、HttpUnit……
// 3.3.5.Service框架
//      Spring、HiveMind、Avalon……

 

  2.mybatis和hibernate的異同點、優缺點

  3.OOA(Object-Oriented Analysis 面向對象分析方法)、OOD(Object-Oriented Design,OOD)原則中,類A依賴類B會產生什麼問題?

    答:A的擴展性會有問題:如果希望擴展A,使之操作另一個對象C,則必須修改A的代碼。A的穩定性會有問題:對B的修改將會影響到A(可能需要重編譯A)。

  4.如何解除這種耦合?

    答:使用接口:A依賴接口I,B實現接口I。使用接口和適配器(如果B不能實現接口I):A依賴接口I,適配器B'實現接口I,並且內部依賴B。

  5.列舉若干設計模式?並說名其解決的問題?

    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved