一点资讯的面试
做了一点资讯的笔试,都快忘完了,终于打电话叫去北京面试,问了一下报销车费吗?HR说了不报销,就说不去了(温饱都不能解决了),HR以后找技术部门商量下,后面有时间远程面。以为就此没戏了,过了几天打电话过来问第二天有没有时间参加远程面试,然后要了qq和微信,面试官最后加了qq(开的语音进行面试)。
1、自我介绍
2、说一个比较熟悉的项目或者比赛,然后说了一个最近的一个天池比赛。说完后,面试官问了一些里面的基础,问的比较详细怎么做的,然后问了采用了什么什么算法,说了一下xgboost,比较了下GBDT和xgboost的区别,比较了优缺点,一句话带过了RF。问了一下了解其他的算法嘛,说了一些常用的算法。问了一下可以现写代码吗?问了对什么语言熟悉,我直接回答了个SQL,然后面试官可能有点失望没有得到满意的答案,继续问常用什么语言,我回答了python,面试官便说写个代码,在一个文件中读取数据,然后选出其中某一列中满足条件的数据,当时不在采用手机面试的,就回答了不在电脑前不能写代码(主要前面也没通知要写代码,本来是先确定好的时间,由于面试官临时开会,推迟了,结果出去没多久就发QQ叫有时间面试,然后没考虑就回复了可以),面试官又说写到纸上,由于当时只拿了个手机,没有可以写的,就是说了在外面手边没有写的,就口头把python的代码说了一遍。面试官可能不太清楚python,解释了一遍pandas。说完又换了一个题,查找两个链表的公共节点,说了在非循环链表的情况和一个暴力的循环链表的情况,可能面试官并不太满意,继续追问循环链表是否还存在更好的解决方法,我犯病的快速回复了一句想不到了,事后想了一下还有其他方法。
3、问我还有其他的问题,然后聊了一些自己想了解的
本以为结束了,结果面试官给了第二次面试,挺感谢这机会的。。。
二面(加了面试官的qq,说需要在有网络的,明显要写代码)
1、自我介绍
2、最了解的比赛或者项目,又说了最近的一个比赛,说的比较详细。面试官也问得比较细。问得差不多了就用qq发了一个网址,进行代码的编写阶段。
3、给一个递增的数组,将后面的数组中的一部分旋转到前面,然后给个k,查找k是否存在数组中,当时想暴力一下也就是O(n),但是可能就是得考虑,然后采用了二分的思想,找到最大值,将数组分成两部分,判断是否k是否在两部分中,如果在,暴力访问那部分。分析了下时间复杂度,如果数组的长度未知,需要知道数组的长度,则O(n),如果数组的长度已知,则时间复杂度小于暴力的时间复杂度。说了一下自己想到的第二种思路,将数组中的值存入到一个哈希表中,然后查询哈希表中是否存在k,其时间复杂度建表为O(n),查询需要O(1),则最终的时间复杂度为O(n);第三种思路,采用快速排序的思想,找k是否存在相应的index。第二个编程是叫写一棵二叉树的根到节点的路径,相当于一个DFS搜索根到叶子节点的路径问题,搜索到叶子节点便输出路径结果(具体代码可以参考剑指offer上的一个路径),我自己采用递归写的(当时忘了剑指offer上的代码怎么实现,便按照自己的实现思路进行了编写)。时间也差不多了,就结束了代码。
4、问我还有其他的问题吗?有脑抽来了句没有了,但是突然冒出来了一些问题,有问了一些,一点资讯平台编码采用什么语言,平台采用现有的还是自己搭建的,算法工程师进去做些什么。