概況
網易沒有統一的招聘系統,都是部門分別招各自的實習生。
我投的部門是做彩票相關的,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)