程序员面试题—国内知名IT公司面试经历

来源:互联网 发布:mac装win7好不好 编辑:程序博客网 时间:2024/06/07 10:11

今天进行了公司的处女面,发现自己经验真的是差了很多,针对一个简单的问题,没有细细的去考虑这里面的任何陷阱,这些题目是很简单,比如:二分查找,字符串查找。这两个看似简单的小编程题,你能考虑到所有情况吗?把代码的健壮性写的很完全吗?

比如二分查找:

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、单链表的反转。

整个面试过程还是很流畅的,已经去就是自我介绍,然后就开始问项目,而且是死问啊,半年了都,很多都记不清楚了有木有。然后就是写上面的两个小程序,然后就是各种扯,工作地点啊,实习时间啊,为什么选择整个工作地点,你现在在学校的工作是什么啊!如果让你去实习,你老板会放人吗?

面试的难度不大,关键是看你的当场表现的如何!

自己的处女面就这样过去了,今天下午还要被数字公司轮奸,听说三面一起!我的妈妈呀!祈祷自己好运啊!