转自:http://blog.csdn.net/qitian0008/article/details/7485356
今天进行了公司的处女面,发现自己经验真的是差了很多,针对一个简单的问题,没有细细的去考虑这里面的任何陷阱,这些题目是很简单,比如:二分查找,字符串查找。这两个看似简单的小编程题,你能考虑到所有情况吗?把代码的健壮性写的很完全吗?
比如二分查找:
- 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、单链表的反转。
整个面试过程还是很流畅的,已经去就是自我介绍,然后就开始问项目,而且是死问啊,半年了都,很多都记不清楚了有木有。然后就是写上面的两个小程序,然后就是各种扯,工作地点啊,实习时间啊,为什么选择整个工作地点,你现在在学校的工作是什么啊!如果让你去实习,你老板会放人吗?
面试的难度不大,关键是看你的当场表现的如何!
自己的处女面就这样过去了,今天下午还要被数字公司轮奸,听说三面一起!我的妈妈呀!祈祷自己好运啊!
本文分享了一次面试经历,重点分析了二分查找和字符串翻转等常见编程题中容易忽视的陷阱,强调了代码健壮性和细节的重要性。
1300

被折叠的 条评论
为什么被折叠?



