面試經驗——網易

概況

網易沒有統一的招聘系統,都是部門分別招各自的實習生。
我投的部門是做彩票相關的,Java後臺。
一面二面一起,是同一個人面的我。首先做一套卷子,卷子有選擇、編程題、算法題、問答題。
考的東西基本都是Java相關的,沒有計算機網絡、操作系統的東西。問答題包括現實性的問題、linux命令使用問題和Mysql的sql語句書寫。
二面是根據簡歷瞭解一些東西,和延伸出來相關的技術;然後圍繞着一面 的卷子進一步提問。

一些關鍵問題及解答

1.Sychronized 修飾靜態方法(類方法),則鎖定的其實是該Class。
2.下面程序運行結果是什麼?

class Integer{
    public int i = 10;
}
public class Test {
    public void out(){
        Integer integer = new Integer();
        integer.i = 20;
        change(integer);
        System.out.println(integer.i);
    }
    public void change(Integer integer){
        int i=50;
        integer.i = 30;
        integer = new Integer();
        integer.i = 40;
        System.out.println(integer.i+" "+i);
    }
    public static void main(String[] args){
        Test test = new Test();
        test.out();
    }
}

考察的是引用在當做參數傳入之後,引用內的東西和引用本身如果被改變各有什麼結果。

答案:
40 50
30

  • 當引用的integer進入change()中,首先改了其中的i爲30;
  • 然後引用本身發生了變化,變成了另外一個對象的引用,然後更改了這個對象的i值;
  • 在change()之外的integer的引用是沒有發生變化的,依然是老對象的引用,而在chang中更改i成了30,所以,在out中的打印語句即爲30。

3.下面程序結果是什麼?


class Dog {
    public static void love(){

    }
    public static void barf(){
        System.out.println("wangwang");
    }
}

class LittleDog extends Dog{
    public static void barf(){
        System.out.println("wawa");
    }
}

public class Test {
    public static void main(String[] args){
        Dog d1 = new Dog();
        Dog d2 = new LittleDog();
        d1.barf();
        d2.barf();
    }
}

考察了細心程度,拜託這個不是多態好吧。。。沒看到方法上是static麼??
4.下面程序返回的是什麼?

public static boolean test(){
        boolean b =true;
        try{
            return b;
        }finally{
            b = false;
        }
    }

關於try、catch、finally,參見Java中的try-catch-finally
5.異常都有哪些類型?舉例說明。
詳情參見Java中的異常
6.如果一個數據庫表條目特別多,增加速度非常快,應該如何考慮查找方面的優化?

  • 首先檢查業務邏輯是否合理,快速增加的速度來自於邏輯的設計還是客觀條件本身不可避免?
  • 堆積的數據是否有時效性?對過期的數據進行定期清理。
  • 使用類似Hibernate的緩存機制,在查找過程中先查找內存,若沒有再查找數據庫。

7.現實問題:如果有10個pad,要在10天內通過抽獎,每天能抽中一個pad,如何制定策略?(假設能夠保證每天參與抽獎的人數)

  • 每天都有一個pad要被抽中,那麼每天都會隨機生成某個時刻,在這個時刻之後的第一個抽獎的參加者得到pad。這樣既保證了隨機性(根據時間的隨機性),又保證了這個pad一定能被抽中。

8.Java類庫中使用了哪些設計模式?請舉例,並寫出這些類。

  • 觀察者模式:Java提供了該類的實現Observable和Observer兩個類。
  • 單例模式:Thrift中使用到了單例模式,還有Spring中也可用到。
  • 裝飾模式:FileReader、InputStreamReader,參見Java IO設計模式剖析.

9.java中如果定義一個Integer類,會不會覆蓋已有Integer類?
解答:不會覆蓋。看看第二題就知道了,我新定義了一個類Integer,使用起來沒有任何影響。
10.實現鎖機制都有哪些方法?
可以用字段sychronized和lock,也可以直接用線程的concurrent包中的容器(比如concurrentLinkedList等等)。
11.jvm中的GC原理
請參考jvm——垃圾回收(GC)

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