一面:
先自我介绍,然后看着简历问我,有用过哪些机器学习的算法做项目。比如说决策树用它做过什么项目没有?CNN用它做过什么项目没有? 我回答没有,因为现场编我也编不出来。就跟老师说我自己学习的。然后考官就让我介绍一下决策树。我就自己介绍(感觉自己介绍的很不专业),介绍之后就问了一句。决策树的类似有哪些?介绍了一下在天池参加比赛使用到的xgboost。具体介绍了一下这个比赛,以及自己是怎么做的。
面试官提问:
1,训练集有多大规模? 2,怎么度量模型的好坏? 3,最后的结果是怎么打分的?
————————————–算法没问太多东西,就问了15分钟。
然后进入写代码环节:
1,寻找字符串中是否含有某个子串,有的话返回所在位置,没有的话返回NULL,不能调用库函数。
(哎,这个去之前特意准备了的,结果。。。。还是做的不好。因为面试官给的数组是用指针来操作的,而不是熟悉的字符串和数组。PS:自己写了十分钟吧,还出了一点小错误,在考官的提示下改正了过来)
2,实现字符串的比较函数cmp(还是指针操作,犯了一个错误以为字符串出界之后是指向空的。。。)。
3,有一个文件,文件有三列,若想把中间的那一列拿出了放到其他的文件中,那么用python应该怎么做(这个真的是不会,不能用pandas库)?
这个回来之后特地查了一下,其实很简单,用python几行代码就能搞定的事,只是平时使用惯了pandas库才临时没想起来怎么使用。
二面:两个小时
面试官很客气,首先跟我解释了上一个面试官为什么问我关于算法原理的东西特别的少,其实主要原因还是由于对于社招生来说,主要还是考察项目的情况,而我的项目中并没有涉及机器学习的方面。
然后让我找一个工作中做过的一个项目,深入的说一下。然后我就自己找了一个项目说。是一个数据挖掘的项目,酒店用户数据信息挖掘。不得不说这个面试官很厉害,思维很清晰,我能感觉到他并不知道我所以的数据挖掘的算法,但是他却能够通过我对算法的描述来抓住那个算法的重点,然后反推我对算法的应用不够正确。并且跟我一起就我所应用的业务场景进行分析,然后纠正我算法的使用过程中思想上的不正确(~~~)。总之通过探讨我自己也觉得受益良多(一个项目讲了半小时)。
接着进入了写代码的时间了。
1,反转单链表:我自己用头插法的思想写了一个,空间复杂度是O(1)。然后面试官让只在原链表上操作,比较仁慈的是面试官告诉的算法思想,让我自己实现,(算法我实现了,但是实现的算法略显臃肿不够美观)。
2,问了我hash表的情况,有100万的数据,如何使用hash表存储?表述一下hash表的作用是什么,好处是什么?
3,问我会不会使用Linux?linux的grep会用吗? 我说不会。。。。。
4,分布式的东西会吗?spark,MapReduce? 我还是说不会。。。。
5,SQL语言。一张std表含有学生的信息,包括:id,name,weight,grade; 现在希望求出每个年级中体重最重的学生的信息。(忘记了max函数是怎么使用的了,没做出来。。。)
6,现在有一个文本,使用里面存储的是刚才std表的信息,每一行的信息使用‘\t’来分割信息。不能使用pandas如何获得所有学生的体重信息(没写出来,不用pandas就不会了~~~)。
7,思维训练题目:有25匹马,只有五条赛道因此每次赛马只有五匹马能跑。但是跑的时候不能计时。现在要知道前三匹跑的最快的马的编号,问最少的比赛多少场次?(这个我做出来了,看了我思维还可以啊。不过后来在面试官的提示下,题做的更快,更省力)
在面试即将结束的时候出了一个小插曲。面试官让写一下贝叶斯公式,然后我满怀信心的写下了如下公式:
写完之后正在心中窃喜自己之前有好好看周志华老师的机器学习书的时候,面试官大人跟我说,这公式是你背的吧,你看看有没有哪里写错?当时真的是一脸懵逼啊,心想周老师书上就是这么写的啊,而且后面还说了为了防止连乘的时候出现一个因子为0,结果全为0的情况而进行了正则化。
然后就说,没有错啊,面试大人指着那个连乘符号说这个是连乘吗?应该改成连加!
看着大人斩钉截铁的态度和不容置疑的口吻,我动摇了自己对周老师坚定的信念,默默点头肯定了面试官大人的说法。最后在面试官大人教育我对算法的认识要深入的,对编程的掌握要熟练的氛围中结束了今天的面试。
(回来之后我特意翻看了一下西瓜书和李航的统计学习方法,对于朴素贝叶斯分子的部分确实是应该是连乘的。而分的部分是通过全概率公式的连加来获取的。或许我俩讲的不是一个东西才会有那个插曲,当然也侧面反映我对算法的掌握不透彻)
面试官给的结果是待定。然后总结说,我对算法的掌握还不牢靠,并没有真正理解算法的精髓,要加强。因此在后面面试中着重了解我的代码编写能力,代码编写能力有一定的基本功,但是代码编写的不熟练。所以无论是看书还好还是做项目还好,加强算法的理解和应用(最后面试官给我安利了吴恩达老师在斯坦福的课)。
自我总结:这次面试总体来说收获还是很大,知道了自己有哪方面的不足,另一方面面试的感觉其实是强过自己的预期的,这增加了自己对以后面试的自信。自己对于算法的掌握大多停留在理论理解方面,这对于一个社招生是不够的,所以应该想办法把算法应用到实战中去。算法和代码的熟练程度都有进一步加强。另外Linux和spark、mapreduce也要有所掌握。
后记:快两周了还没收到消息,肯定是挂了,虽然在意料之中,但是心中还是不免有些可惜。倒不是觉得错过了滴滴而是觉得错过了一个很好的leader。真心觉得第二个面试官很nice,很会循循善诱,而且难得的是与之沟通很顺畅。
我本将心向明月,奈何明月照沟渠。还是怪自己水平不够、实力太弱啊,继续加油吧~
2017.09.24