今天进行了公司的处女面,发现自己经验真的是差了很多,针对一个简单的问题,没有细细的去考虑这里面的任何陷阱,这些题目是很简单,比如:二分查找,字符串查找。这两个看似简单的小编程题,你能考虑到所有情况吗?把代码的健壮性写的很完全吗?
比如二分查找:
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--;
}
}
大家分析下有没有问题呢!?
一个致命的问题:没有判断字符串是否是空字符串,这在面试的时候很看重你的细节,所以大家还是要好好的注意细节。
还有一些题目:
1、计数排序;
2、堆排序;
3、大数据量的处理;
4、快速排序;
5、两个链表的公共节点;
6、一个单链表,不知道头指针,只知道中间元素i的指针,现在删除指针i指向的元素;
7、单链表的反转。
整个面试过程还是很流畅的,已经去就是自我介绍,然后就开始问项目,而且是死问啊,半年了都,很多都记不清楚了有木有。然后就是写上面的两个小程序,然后就是各种扯,工作地点啊,实习时间啊,为什么选择整个工作地点,你现在在学校的工作是什么啊!如果让你去实习,你老板会放人吗?
面试的难度不大,关键是看你的当场表现的如何!
自己的处女面就这样过去了,今天下午还要被数字公司轮奸,听说三面一起!我的妈妈呀!祈祷自己好运啊!