2014阿里巴巴研发工程师暑期实习生面试经验

2014阿里巴巴研发工程师暑期实习生面试经验

作者:林子

Blog:

时间:2014年8月出处:声明:欢迎指出错误

先写个初稿,有空再改改。

2014年4月24号,我报的是阿里巴巴的研发C++,在华工大学城校区旁边的华工大酒店。回头想想好像是报错了,应该投算法工程师的,悔不当初啊!因为简历写的是一些算法方面的东西,而面试官好像对这方面好像也不大熟悉的感觉,所以弄的还是有点尴尬。面试的地点是在3楼,里面有很多张桌子,像是大型相亲会一样的地方,一对一的面试,是一个很清瘦的小伙子。一开始先试做自我介绍,随便说了一些东西,面试官也没怎么听,就闲聊了一些学校啊什么的东西,问完就开始问我项目的事情。

问题1:对项目没有一个很好的总结

我现在做的项目基本上就是属于机器学习啊,人工算法方面的东西,因为面试官也不是很懂,所以问了我这些东西在生活上有什么用途?稀里糊涂讲了半天没有想出来这个到底能用在哪个地方,用函数的角度去讲,面试官又说不行,最后只好坦白说实在找不到一个简单一点的例子来形容这个算法。

然后是做过的其他的项目可能也没有什么亮点,没有产生一些额外的加分点的,所以有机会的话可以做一些有特色的项目啊,做出一些亮点来吸引别人,然后再表达的好一些,让别人觉得你还挺牛逼的样子。

问题2:系统设计能力?

此题考的应该是设计模式!

问的第二个问题是一个球在这个墙壁里面撞来撞去,你用面向对象的语言去设计这个系统?

这个问题回答的应该算还过的去吧,我当时就是设计了一个关于球的类,定义了一些私有成员数据,还有公有的成员函数,包括获取坐标,输出坐标,还有移动操作。面试官说不行,然后给提示说这个墙的呢?然后我又写了墙的类,有墙的建立,还有边界的处理,他就问下一个问题了。

问题3:数据结构题:在第i个结点后的单链表的一个插入操作? (限时5分钟)

这个代码写的不是很好,差不多下面就是这样子,由于这个确实写的不是很好,可能有些超时

Status ListInsert(LinkList *L, int i, ElemType e){int j;LinkList p, s;p = *L;j = 1;while (p && j <= i){p = p->next;++j;}if (!p || j > i+1)return ERROR;s = (LinkList)malloc(sizeof(Node));s->data = e;s->next = p->next;p->next = s;return OK;}

代码写的不是很熟练,写的也是比较乱,所以他直接就问我了是不是很久没有写代码了,让我给他讲了这具体的都是些什么意思。纠结的地方有二个地方,第一是说我写的这个好多类型都不是C里面的,让人摸不透到底是他不懂,还是他在考我?然后我就把链表的结构点的定义也讲给他听,说着说着又说到第二个点,是他问我这个指针怎么是这么用,我说这个是指向结构体的指针,两个人纠结了一会,讲着讲着就不知道在讲什么了,他就让我给他讲讲这个算法是怎么实现的,我就巴拉巴拉讲了一会就结束了这个问题。

问题4:算法题:挑选一个你最擅长的算法题写出来?(限时3分钟)

这个是最坑爹的一个,当时听到这个的时候感觉还挺开心的,觉得准备的东西终于用上了,快速排序背了好长时间,而且各种优化版本,,还有复杂度的推导,于是很自信的跟面试官说那就快速排序吧。面试官也乐了,说这个可是决定了你的生死哦。现在想想,当时是没有搞清楚状况吧,很嘚瑟的跟他说写的不好就不会选快速排序了,于是刷刷两分钟左右的时间把代码写了下来.

int Partition(SqList *L, int low, int high){int pivotkey;pivotkey = L->r[low];while (low<high){while (low<high&&L->r[high] >= pivotkey)high–;swap(L, low, high);while (low<high&&L->r[low] <= pivotkey)low++;swap(L, low, high);}return low; }void QSort(SqList *L, int low, int high){int pivot;if (low<high){pivot = Partition(L, low, high);QSort(L, low, pivot – 1);QSort(L, pivot + 1, high);}}

出来之后就发现我错了,果断的被刷掉了,不知道是策略问题还是其他的问题吧,我一开始是想着先写一个基本的快速排序,他要是有要求再把优化的快速排序写出来。可是他看完之后都没有给我其他的机会,先让我讲讲这个partition是怎么个实现的,我讲了一会,然后重点来了,他很鄙夷的语气问了我你这里怎么会有三个while,当时就愣住了,解释说这个while只是判断边界,并没有因此增加复杂度。因为我看的是程杰的那本大话数据结构,很基础很简单的一本,所以可能写出来的代码没有啥特色,后来回来看了一下,清华大学严蔚敏教授写的那个版本也是这个,虽然程杰的有优化方法,但是感觉跟他要的点就完全不一样,后来看到算法导论上一个只有一个for循环的方法,不知道是不是他说的那种。

是清晰的又是朦胧的,是一杯苦茶,最后却品出清雅之香。

2014阿里巴巴研发工程师暑期实习生面试经验

相关文章:

你感兴趣的文章:

标签云: