京东,广告部门,算法工程师,面经
对不起大家,我来晚了。。。。本想昨天发的,但是后来太困了,就睡了。
今天将昨天面试发布在知乎上,如果想看全部,请点链接:
前记:
先介绍一下博主的背景吧,本科普通211,大学毕业有幸保研到国内某c9高校计算机专业研究生,研究方向是复杂系统建模(机器学习相关吧,其实没怎么科研,所以很水),目前在一家出行类互联网公司实习,岗位是算法实习生。
个人黑历史:因为博主有一颗创业的心,所以研一的时候心思一直不定,整天就在琢磨创业想法、思路,和别人交流等,就这样研一在“颓废”中度过了。研一暑假,机会巧合,和几个校内同学一起创业,做了半年,主要方向是“新媒体广告技术”,还算比较幸运,半年内大概做了70万的单子,但是因为年少无知,城市的套路太深,被两个合伙人狠狠的坑了一把,最终几乎净身出户,博主一度身陷沮丧之中数月,因为我对此注入了太多心血和感情,到17年5月才算刚算走出来,具体的故事细节以后有时间再专门写个文章出来,相信一定会有不少人对此感兴趣的,不论是创业的艰辛还是被坑的无奈一直到最后的撕逼,绝对精彩。到17年2月退出后,经过半年创业体验后,我体会到了要大企业学习的必要性,所以就打算找暑期实习了。但是,因为之前耽误了一年半,所以专业方面我基本什么都不会,会的也忘的差不多了,怎么办?从头学呗:《统计学习方法》、《西瓜书》、《机器学习实践》、《数据挖掘导论》等经典书籍先看一遍,然后看了一些视频资料。三个月来磕磕碰碰,被各种面试官鄙视到怀疑人生,但是好在功夫不负有心人,天无绝人之路,最后在5月份有两家公司收留了我,最后选择了这一家,目前实习了两个月,在做广告投放策略的应用和研究。。。
好累,终于把自己的情况说的差不多了,下面切入正题:
--------------------------------------------- 分割线2 --------------------------------------------
正文:
两周前,通过邮件内推投递了京东的广告数据部的算法工程师,大概三天后收到面试通知,让我在12号早上9点去面试(what?9点?顿时感觉京东好拼啊),地点是北辰世纪中心,挺高大上的就在鸟巢旁边。哦,对了,忘记说了,这是我人生第一次现场的算法面试
因为很久没有面试,基础知识也都忘的差不多了,所以我提前三天开始复习,在找实习的时候我知道我最薄弱的是数据结构算法(之前一直说要刷leetcode到现在也没有刷,哎 ...拖延症啊)所以,我从9号的时候就开始看算法,当然主要是晚上下班后,因为时间比较紧张,所以我主要是把“链表”“数组”“树”“图”的基本算法大概过了一遍,这么做的原因是:先把基本的算法搞定,即使那些“动态规划”等高级点的算法写不出来,也不会遭到太大的鄙视吧,毕竟基础最重要!到了11号总算把那些算法算过了一遍,但是机器学习的各种算法还没看呢!怎么办,加班熬夜看啊,面试机会不容易,我们要珍惜啊。11号我下班从地铁上到回家的路上都在看之前整理的东西,然后大概熬夜看到凌晨4点,实在受不了了就去睡觉了,中间看了LR(推导)、SVM(推导)、树模型、提升模型、cnn、rnn、lstm(6个公式)以及一些数据处理技巧,因为之前实习的时候看了很多遍,知道重点在哪,所以看的比较快,但是因为困的太厉害了,所以就没有把之前的项目再看一遍。
定了7点的闹铃,结果8点20才听到,卧槽还有40分钟到面试时间??我赶紧去洗个澡穿了衣服就出发了,一出门发现下雨了!心想做地铁怎么也要一个多小时,而且下了地铁也不知道怎么走,打车吧,没想到帝都的周六一样堵,直到10点才到了京东的北辰世纪中心办公大楼,中间给hr联系过一次,说堵车大概迟到一个小时,hr说ok。到了之后发现,已经有大概30个人在等候面试了。就这样我一直等到11点才开始面试(一直没吃饭),因为是周末很多人不上班,所以大楼里面也没开灯,很暗。。。。
一面:基础面
一面是一个差不多26、7岁的小哥,面相较好,拿着笔记本,在过道里找了一个桌子就开始面试了,首先自我介绍,面试小哥快速浏览了一下简历(看的比较细,还寒暄了一下学校专业什么的),开始提问:
- 目前实习主要是做什么?简单介绍下,主要就是介绍,中间并没有提问细节什么的。
- 用过spark吗?使用场景是什么?
- 用过hive吗?使用过join操作吗?知道join的实现技术吗?(最后一个问题不会)
- 如果给你几张表,想得到一些数据,用spark怎么处理?
- 使用过hadoop吗?(答:没怎么用过)
- 怎么解决内存不足的情况下使用python处理大规模数据?
- 如何做分布式计算?
- 说一下c++里面的const和define区别?
- 说一下java、c++和python之间的不同?
- 写个程序吧:有序字符串如“12334556”如何变成“1234535”。(两分钟写好。。)
- 写个程序吧:字符串“abcdadc”输出最长递增子串的长度。(刚开始写了一个n^2复杂度的,怎么降低时间复杂度?又写了一个n^2logn的。然后面试官提示我可以用hash set,是否可以降低时间负责度?我没想出来,经过面试官提示,最后又写了一下。
一面结束。大概35分钟,面试小哥问的都是很基础的东西和数据处理的东西,也没有很为难我,但是机器学习的东西一点没问,我当时有点疑问,问了一下他们的业务。然后让我等待二面。面试中间,面试小哥不断用电脑打字,应该是记录我的面试表现吧。。。
二面:项目面
二面是个30多岁的男士,该面试官拿着几张纸就来了(没带电脑),说等我一下我去个卫生间。开始面试了,该面试官翘个二郎腿,拿着我的简历,一边看一边说:自我介绍一下吧,介绍完以后,问我你这是第一面还是第二面(excuse me?这个问我??)然后问我第一面问的什么,然后说:从你简历你挑一个项目聊聊吧。(难道面试官都不用和其他面试官交流或者看一下已经面试过的面试官的评价吗?)
我讲了一个我参加阿里比赛时的项目。刚说了大概两分钟,面试官说,你不要这么说,你可以按照***思路说,这样我比较好理解一点,我说没问题。讲的过程中,被打断了很多次,主要问的是一些实现细节问题,比如:数据处理、特征工程等,令我惊讶的是:在中间的面试过程中,这位面试官竟然把鞋脱了,盘腿坐到了椅子上。
下面截取部门面试对话:
- 面试官:异常值检测你怎么做的?答:我当时是用plot画图看的。面试官诧异,一脸嫌弃:你就用手画的??我说:因为异常数据比较少,而且偏离幅度都比较大,所以画图比较方便。然后我又补上,当然还可以使用其他异常检测方法,比如高斯异常检测,随机森林等。面试官:随机森林?随机森林怎么做?答:可以统一样本点位于决策树叶节点的个数。面试官诧异:这个怎么做?第一听说。我解释了一下,该这么做,但是因为我只知道这么一个方法,但是并没有很了解,所以回答的不太好,接着面试官又逼问了一下,我说我记不太清了有点。此时面试官表情失望,对我有点怀疑,无奈的说:下一个问题吧。这个问题,我后来调研了一下:具体要用相似度矩阵。
- 面试官:如果让你现在来做这个项目,你觉得你可以改进什么地方?我说:可以用xgboost模型试一下,因为当时研一,不了解这个模型。面试官无奈:难道你这两年就仅仅学会了一个模型?我有些慌,连忙说到:在数据处理方面也可以改进,比如根据具体的场景问题提取更多的数据特征,我说了一种提取时间序列提取邻域信息的方法。面试官说:这不就是多增加了一种特征吗?我说:但是用这种方法做特征会更有效一点。面试官有些不太满意,可能也是因为我解释的不太好吧。。。我说:数据处理也可以改进一下,比如异常检测方法,将特征粒度再细一点。面试官:如果不考虑数据和特征,你觉模型上有什么改进的么?此时我有点蒙蔽,不知道面试官再问什么,不考虑数据也不能换模型,我该怎么回答呢。
- 面试官一脸惆怅,说:我提示一下吧,比如你怎么评价模型的好坏?我回答:我当时用的是交叉验证。面试官不满意,又说:那你怎么改变模型的参数?我回答:我说参数可以用优化方法求解,超参数可以通过每次手动选取,然后根据结果再去调。面试官一脸惊讶:就手动吗?我说:也可以用机器学习模型来做,把参数和结果丢到模型里。面试官:具体怎么做,你是想做特征增强还是想改变损失函数?我:比如可以用演化计算或者神经网络来弄。面试官不说话,我此时已经蒙逼,不知道该怎么回答了。面试官:我再提示一下吧,就是如果从方法论的角度来看你怎么做?我:方法论???黑人问好脸。哼哧哼哧了一会,没回答出来。面试官:这个问题你回去想一下吧。然后我以为他会接着问,没想到他说:今天就面到这吧,后续有问题会联系你。听到这里,我知道京东提前批我提前结束了。
回来的路上心中一定充满不满啊,一方面我下雨天大老远跑过来面试,熬夜到凌晨4点,还没吃饭,就这么结束了。想问一下大家在面试的过程中也是这样的吗?
面试后反思
虽然心中充满不满,但是回去后还是反思了一下并和师兄做了沟通了:
存在问题:
- 数据结构算法虽然都写出来了,但是部分细节处理的不好
- 二面被面试官带节奏了,或者说抗压能力不够(也想问一下,大家遇到这种事情这么处理的)
- 项目介绍准备不够,主要是实现细节和项目的改进。
技术问题:
- 超参处理:可以用演化计算或者神经网络方法,后者使用meta方法,面试官使用的方法我不太清楚了。
- 最后一个问题:师兄说面试官想问的我可能是你对模型的理解,比如你在建模的时候很多假设可能是不对,现在怎么改进?或者模型的的时间负责度方面怎么提升?这个问题我还需要再整理一下,如果大家有什么想法欢迎留言,交流一下。谢谢
后记
第一次写博,水平欠佳,如果你能读到这里,万分感谢,占用了您宝贵的时间来听我吐槽。但是,我觉得在找工作或者科研的过程中,多交流是有很大的促进作用的,所以,欢迎大家留言或者私信,多多交流。什么主题都行:工作、机器学习、算法、创业、生活 and so on。
关于写作风格建议什么的也可以提,找工作路上很辛苦,希望此篇文章对您有益!谢谢
最后,晚上回去后,做了几个菜,以缓解不高兴的心情,都是第一次做,是不是特别有天赋,哈哈哈哈。
end
2017.7.13
--------------------------------------------- 分割线 --------------------------------------------
先占个坑,回来写。 想吐槽二面面试官,被血虐。现在还是懵的……