2014年5月銳戰遊戲公司Java面試經歷

因同學介紹,投了簡歷,去公司面試。報的是Java工程師。

一開始,自我介紹,問了下項目,寫二分查找插入,返回要插入的位置信息。

一個月前面試的時候也讓寫這個,但是覺得Java也挺好寫的,就用Java寫了,回去後也沒有看看有沒有錯;今天寫的時候因爲剛看過快排,老是想着快排的東西,加上隔壁也有人在面試聲音挺大覺得略吵,寫得好亂,後來重新寫了一下,但是似乎有錯。

接着,把一個單鏈表倒着排,問算法。

我把尾指針接到頭構成環,便於遍歷,接着就是重新建一個。覺得很慢。後來想到的也是首尾交換,時間應該只是少了一半吧。

問了Java和C++的不同(JVM,那麼JVM在不同操作系統中的實現是一樣的嗎?)問了Java中的類用過哪些,問了線程,同步(同步synchronized作用對象是什麼?)。問StringBuilder是否用過。

問了排序方法,時間複雜度,讓寫快排。

問了TCP/IP HTTP,不是很會。

看我學過軟工,問設計模式,讓講,我說mvc,他說那不算。。。問工廠模式,不會。

 

問爲什麼來遊戲公司,是否喜歡玩遊戲,能來多久,平時愛好,以後讀研出國工作?

 

後來和同學交流,問到的內容:

兩個單鏈表,如何判斷是否交叉;

給一堆數,找最大的那個,找最大的5個?

數據庫用的什麼語言(.mdb)

多線程的同步問題,什麼時候會死鎖。

 

大概就這些了。回來後實現了一下,發現自己寫的那個果然有錯,我傻傻地用了遞歸(雖然也可以)。以下是剛剛寫的二分查找和二分插入。

 

package sort;

public class BinarySearch {

	/**
	 * @param args
	 */
         //用while語句實現二分	 
         	public static int binarySearch(int[] a, int key){
		int left=0;
		int right=a.length-1;
		while(left<=right){
			int mid=(left+right)/2;
			if(key<a[mid]){
				right=mid-1;
			}
			if(key>a[mid])
				left=mid+1;
			if(key==a[mid])
				return mid;
		}
		
		return -1;
	}
	//用遞歸實現二分
	public static int binarySearch1(int[] a, int key, int l, int r){
		int mid=(l+r)/2;
		if(l<=r){
		System.out.println("left:"+l+" right:"+r+" mid:"+mid);
		if(key<a[mid])
			return binarySearch1(a,key,l,mid-1);
		if(key>a[mid])
			return binarySearch1(a,key,mid+1,r);
		return mid;
		}
		else return -1;
	}
	//對應的插入,返回插入的位置
	public static int binaryInsert(int[] a, int key){
		int left=0;
		int right=a.length-1;
		while(left<right){
			int mid=(left+right)/2;
			if(key<a[mid]){
				right=mid-1;
			}
			if(key>a[mid])
				left=mid+1;
			if(key==a[mid])
				return mid;
		}
		
		return left;
	}
	public static int binaryInsert1(int[] a, int key, int l, int r){
		int mid=(l+r)/2;
		
		if(l<r){
		if(key<a[mid])
			return binaryInsert1(a,key,l,mid-1);
		if(key>a[mid])
			return binaryInsert1(a,key,mid+1,r);
		return mid;
		}
		else return l;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] a={1,2,3,5,7,9};
		System.out.println(binaryInsert(a,4));

	}

}


 

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