小編去年7月份應屆入職,已經成為社會人13個月了。這期間發生了很多事情,近期相關的工作總結也會逐漸和大家見面。這次先和大家分享一次面試實習生的經歷。
因為是不是正式秋招的面試,實習生面試大部分是相對簡單些:不會故意問一些比較奇奇怪怪的算法,主要是編程語言的基礎考察,以及通過簡單常見的算法題考察候選人的編程思維。
基礎考察部分普普通通,沒有什么印象很深刻的事情。對于編程語言基礎,只能和大家說:一定要比較熟悉一門語言,你會多門語言 && 都是了解的水平,對你的面試絕對是負面影響。
下面聊聊面試中印象深刻的部分:算法題部分。如上面所說,一般不會在算法上面為難實習生,所以算法面試環節的題目也比較簡單:
二分查找的實現
這個簡單吧,絕對良心 && 經典題目,因為是C++的面試,所以本文給出的代碼都是C++的,java同學也可以看懂。
因為二分查找是經典的算法,這個題目本身沒有什么問題,候選人也給出了很標準的二分查找實現,類似下面的實現:
int binarySearch1(int *a, int len , int target)
{
int low = 0, high = len;
while(low < high)
{
int middle = (low + high) / 2;
if(target == a[middle])
return middle;
else if(target > a[middle])
low = middle +1;
else if(target < a[middle])
high = middle;
}
return -1;
};
如果到這里,算法面試就結束了的話,感覺有點太水了。所以一個想法是在這個題目上延伸一下,但是又需要控制難度(畢竟只是一面)。然后拍了下腦袋,在上面二分查找的實現上又提了一個要求:
在第一個答案的基礎上(不能改變函數的參數和返回值),實現下面的功能:
- 如果目標值在數組中存在,則返回目標值在數組中的下標;
- 如果目標值在數組中不存在,則調用函數方可以根據返回值得到目標值應該插入到數組的哪一個index。
實話說,上面這個題目其實也不難,就是在標準的二分查找的基礎上增加了第二點要求,修改預期不是很多,比較二分查找本身難度就十分有限。
但是比較遺憾的是,半小時過去了,還是沒有給出完全正確的答案。
最后的結果......大家也可想而知。大家平心而論,大家覺得這個道題難嗎,歡迎大家評論留言發表自己的看法。