今天進行了公司的處女面,發現自己經驗真的是差了很多,針對一個簡單的問題,沒有細細的去考慮這裡面的任何陷阱,這些題目是很簡單,比如:二分尋找,字串尋找。這兩個看似簡單的小編程題,你能考慮到所有情況嗎?把代碼的健壯性寫的很完全嗎?
比如二分尋找:
public int binarySearch(int[] dataset, int data) { int beginIndex = 0; int endIndex = dataset.length - 1; int midIndex = -1; if (data < dataset[beginIndex] || data > dataset[endIndex]|| beginIndex > endIndex)//這個也是相當的重要 return -1; while (beginIndex <= endIndex) { midIndex = (beginIndex + endIndex) >>> 1; //相當於midIndex = (beginIndex + endIndex) / 2,但是效率會高些 if (data < dataset[midIndex]) { endIndex = midIndex - 1; } else if (data > dataset[midIndex]) { beginIndex = midIndex + 1; } else { return midIndex; } } return -1; }
上面的問題你都考慮到了嗎?
字串翻轉:
我們看下下面這個網友的代碼
int strlens (char str[]){ int len=0; while(str[len]!='\0') len++; return len;}void ExchangeStr (char str[]){ char *first=str,*last,ch; int i=strlens(str); last=first+i-1; while(last>first) { ch=*last; *last=*first; *first=ch; first++; last--; }}
大家分析下有沒有問題呢!?
一個致命的問題:沒有判斷字串是否是Null 字元串,這在面試的時候很看重你的細節,所以大家還是要好好的注意細節。
還有一些題目:
1、計數排序;
2、堆排序;
3、大資料量的處理;
4、快速排序;
5、兩個鏈表的公用節點;
6、一個單鏈表,不知道頭指標,只知道中間元素i的指標,現在刪除指標i指向的元素;
7、單鏈表的反轉。
整個面試過程還是很流暢的,已經去就是自我介紹,然後就開始問項目,而且是死問啊,半年了都,很多都記不清楚了有木有。然後就是寫上面的兩個小程式,然後就是各種扯,工作地點啊,實習時間啊,為什麼選擇整個工作地點,你現在在學校的工作是什麼啊!如果讓你去實習,你老闆會放人嗎?
面試的難度不大,關鍵是看你的當場表現的如何!
自己的處女面就這樣過去了,今天下午還要被數字公司輪姦,聽說三面一起!我的媽媽呀!祈禱自己好運啊!