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

作者:林子
时间:2014年8月

出处:http://blog.csdn.net/u013011841/article/details/24438709

声明:欢迎指出错误

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

2014年4月24号,我报的是阿里巴巴的研发C++,在华工大学城校区旁边的华工大酒店。回头想想好像是报错了,应该投算法project师的,悔不当初啊!由于简历写的是一些算法方面的东西,而面试官好像对这方面好像也不大熟悉的感觉,所以弄的还是有点尴尬。面试的地点是在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仅仅是推断边界,并没有因此添加复杂度。由于我看的是程杰的那本大话数据结构,非常基础非常easy的一本,所以可能写出来的代码没有啥特色,后来回来看了一下,清华大学严蔚敏教授写的那个版本号也是这个,尽管程杰的有优化方法,但是感觉跟他要的点就全然不一样,后来看到算法导论上一个仅仅有一个for循环的方法,不知道是不是他说的那种。

后来想想也是,如果阿里巴巴有100亿条数据须要排序,那我写的那个比較挫的代码可能要1000个小时,但是他们要的是1个小时就能排好的方法,因此他们对效率的要求可能相当高。

2014阿里巴巴研发project师暑期实习生面试经验的更多相关文章

  1. 阿里巴巴2014研发project师实习生面试经历

    java研发project师的初面是在上周三进行的,终于结果到了晚上才出,而没有通过的则是一结束网上就更新了状态.之后阿里通知这周三,也就是今天进行二面. 凑巧的是今早被舍友吵醒,中午那个困啊,但没时 ...

  2. 网易游戏2015年暑期实习生面试经历-游戏研发project师

    首先,我还是先介绍一下网易游戏吧.引用别人的一段话 作者:王选易.出处: http://www.cnblogs.com/neverdie/ 欢迎转载 .也请保留这段声明.假设你喜欢这篇文章,请点[推荐 ...

  3. 最美应用-从Android研发project师的角度之[最美时光]

    最美应用-从Android研发project师的角度之最美时光 @author ASCE1885的 Github 简书 微博 CSDN 近期发现最美应用这样一个站点.它会定期推介一些非常有意思的app ...

  4. 百度2016研发project师笔试题(四)

    百度2016研发project师笔试题(四) 2015/12/8 10:42(网上收集整理的,參考答案在后面.若有错误请大神指出) 1. 关于MapReduce的描写叙述错误的是() A. 一个Tas ...

  5. 网易2016研发project师笔试题

    网易2016研发project师笔试题 2015/12/9 11:25(网上收集整理的,參考答案在后面,若有错误请大神指出) 1. 运行指令find / -name "test.c" ...

  6. 网易研发project师(移动端游戏)—暑期实习生电面题目 2014年5月14日

    2014年5月14日 暑期实习生电话面试: 首先自我介绍. 一.C++ 1.extern的使用方法 2.虚函数 3.强制转换 4.malloc和new的差别 二.计算机网络 1.TCP和UDP有什么差 ...

  7. 阿里巴巴2014年校园招聘(秋季招聘)在线笔试--測试研发project师

    第一部分是单选题:40分钟答题时间. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveG1oMTk1NA==/font/5a6L5L2T/fontsize/ ...

  8. 阿里巴巴2016研发project师笔试题

    问题1: 假设下列的公式成立:78+78=123,则採用的是_______进制表示的. 本题实则考察进制转换.能够设为x进制.可是x进制有一个问题.即我们无法对x进制直接进行加减乘除.故转化为我们常见 ...

  9. 2014新浪研发project师实习笔试(哈尔滨站)

    刚经历了新浪笔试,写篇博客记录一下下.方便以后查看. 一.基础题 1.栈和队列的异同点. 2.算法性能的4个评价标准. 排序算法中最稳定的算法. 那几个算法的空间复杂度是O(1)的. 3.线性表,平衡 ...

随机推荐

  1. JavaScipt面向对象编程----闭包

    在javascript中闭包是一个非常不好理解的概念,可是确实一个不可逃避的东西,那么今天我们就来一起学习一下闭包. 什么是闭包? 闭包:官方"的解释是:闭包是一个拥有很多变量和绑定了这些变 ...

  2. Matlab学习------------带有右键菜单的GUI学习实例

    实例步骤: 须要设置UIContextMenu,否则点击右键不显示. 右键点击第一个菜单之后:(在菜单中加入对应的回调函数) function r1_Callback(hObject, eventda ...

  3. 【剑指offer】打印1到最大的n数字

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/25562105 剑指offer第12题.九度OJ測试通过. 题目描写叙述: 给定一个数字N, ...

  4. 华丽的网上突出代码组件CodeMirror

    农民之间的代码懒惰性质:愚公绝不能过夜.一劳永逸永远不知疲倦!这是一个代码示例 动态配置,在不同的场景抽象为常见的配置逻辑加,这使得有可能"为一个全球性的代码.代码做搬运工",更糟 ...

  5. SQL Server系统数据库备份最佳实践

    原文:SQL Server系统数据库备份最佳实践 首先了解主要的系统数据库: 系统数据库 master 包含登录信息和其他数据库的核心信息 msdb 存储作业.操作员.警报.备份还原历史.数据库邮件信 ...

  6. mapxtreme C# 完美车辆动态轨迹展示

    演示程序请在 http://pan.baidu.com/s/1jG9gKMM#dir/path=%2F%E4%BA%A7%E5%93%81%2FDemos 找 Trajectory.rar 轨迹回放功 ...

  7. 用命令行在github新建一个项目

    Github Repository API中说明了可以通过发送一个请求来认证,之后就能通过命令行自动新建远程仓库了. 认证 curl -u 'username' https://api.github. ...

  8. 常见的FPGA内串行数据采样的方式

    总结下常见的对串行数据采样的三种方式: 1. 全采样存储方式: 采用过采样,用过采样时钟,用移位寄存器移位,把每次采样值都存起来.采用高速的过采样时钟运行. 然后等待触发条件,(就是找到数据的起始点条 ...

  9. 【剑指offer】最大和连续子阵列

    个開始,到第3个为止).你会不会被他忽悠住? 输入: 输入有多组数据,每组測试数据包括两行. 第一行为一个整数n(0<=n<=100000),当n=0时,输入结束.接下去的一行包括n个整数 ...

  10. android 拍照注意问题

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, reqCode) ...