阿里算法工程师内推面试经历

一面

时间:2015年7月22日

下午四点多接到电话,手机上标注的是骚扰电话,当时准备不接的。但是手机一直响了很久,最后还是接了,我还很不客气的问对方是谁。对方很温柔的回答说“我这边是阿里巴巴 ”。当时差点被下尿了,但是还强壮镇定,询问是否是要开始面试,因为一个星期之前我投了阿里妈妈事业部的内推简历,想要应聘的岗位是算法工程师。

接下来就是正式的面试,持续时间半个小时(应该是公司规定的时间)。主要问的问题有:
1、做过什么项目?
2、介绍一下你做过的项目,是怎么完成这个项目的?
3、比赛中用到什么机器学习算法?
4、特征有哪些,是怎么提取特征的?
5、怎么进行模型调参?
6、LR模型中各项参数代表什么意思?
7、怎么验证特征是否有用?

因为我今年参加过阿里移动推荐算法大赛,所以面试基本都在问比赛的内容,而且问题都是由浅入深层层递进,最后都问的很细节的东西。因为比赛过去已经有将近一个月了,所以很多东西记得不是很清楚了,导致面试的时候逻辑不是很清晰。另外在面试过程中,面试官还对我们的特征提出了质疑。当时我一下慌了神,但立刻整理思路,解释说这些特征一方面可能从实际应用的角度得到解释,另一方面,我们也是参考了去年参赛队伍的经验。

二面

时间:2015年7月30日

时间同样是下午四点多,看到是北京的号码打过来的电话,知道是阿里的电话二面。但当时,正好有点事,跟面试官约好第二天下午四点再面试。二面的时间是一个小时,刚好借助这个缓冲期,我找到以前比赛的代码重温了比赛的内容,另外我还临时恶补了常用的机器学习算法,重点复习这些算法的优缺点什么的。果然面试的问题集中在比赛上面。

现在整理出面试官的主要问题:
1、介绍一下你参加比赛的情况。
2、什么样的数据被认为是噪声数据,依据是什么?
3、你们用到什么机器学习算法?
4、你们提取了哪些特征,详细介绍一下。
5、怎么判断模型有没有过拟合?
6、你们是怎么分工的?
7、给你3张表,第一张表有两列数据query(用户搜索记录)和item_id(商品ID),这两个字段的值都是唯一的;第二张表的数据是query和query对应的信息;第三张表的数据是item_id和商品的对应信息其中第一张的数据量是3千万,第二和第三张表的数据不唯一,数据量是50亿。怎样将这三张表join起来。后来面试官提示说这里面可能存在数据不平衡问题,比如说有一些query对应条数据,怎样用Mapreduce实现。
8、远程桌面面试,要求写代码实现判断两棵二叉树是否相等的功能。

小结:二面跟一面的情况类似,有一个小时的时间都集中在比赛上,基本都是我在描述比赛的过程,面试官大部分时间都在听我讲。一开始面试官让我介绍一下比赛的情况,我没有抓住重点介绍的是比赛中我遇到的困难,后来被他打断说他想了解的是你们是使用的什么方法完成的比赛。第7个问题当时我没回答好,因为我们在比赛中只是用到过Mapreduce,但对Mapreduce的具体细节不是很清楚,希望有大神能不吝赐教,帮助解答一下第7个问题。第8个问题,应该不难,用递归实现很容易。代码是在一个国外的远程面试网站collabedit上写的,这是第一次碰到。这里附上我写的代码:

bool IsTwoBinaryTreesEqual(BinaryTree *pRoot1, BinaryTree *pRoot2)
{
    if(!pRoot1 || !pRoot2)
        if(!pRoot1 && !pRoot2)
            return true;
        else
            return false;
    bool isRootEqual=pRoot1->m_Value==pRoot2->m_Value;
    bool isLeftEqual=IsTwoBinaryTreesEqual(pRoot1->m_pLeft,pRoot2->m_pLeft);
    bool isRightEqual=IsTwoBinaryTreesEqual(pRoot1->m_pRight,pRoot2->m_pRight);
    return isRootEqual && isLeftEqual && isRightEqual;
}

三面?

阿里的内推面试官方消息是7月31日截止,不知道会不会有面试机会,问过面试官,但是没有得到明确的答复…

你可能感兴趣的:(面试)