@zhengyuhong
2016-03-12T03:34:59.000000Z
字数 2348
阅读 1967
面试 百度
师兄内推百度数据挖掘部门,简单写了个简历,就投过去了。过了几天收到电话安排时间电话面试。
约好了今天晚上6点半面试,他还真的是六点半准时打来,是深圳百度来的电话。第一次电话面试前,我这几天浸了好几本书,《Effective C++》、《深度探索C++对象模型》、《统计学习方法》与《王道程序员求职宝典》,还顺便在markdown做了笔记,确实有用,特别是《Effective C++》、《深度探索C++对象模型》与《统计学习方法》,问的比较多,关于《深度探索C++对象模型》,这本书比较晦涩,不一定需要全部读懂,看前面几章,这一次看不懂下一次准备面试再看,每一次都会有新的理解,这个还真的是看理解,光记住容易忘记,明白了C++设计原理就会知道编译器实现的时候考虑了效率与空间等等要素。
电话面试主要是以下几个方面:
1. 自我介绍
2. 我的研究方向的介绍
3. 编程基础(C++、算法、系统、大数据处理算法)
4. 数据挖掘与机器学习方法
5. 在线编码(做了两道题目,第一道可能我理解错了,跪了)
自我介绍,我就简单几句介绍了一下我的教育背景,其他没有什么好说的,然后就直接切入我的研究方向以及近期工作。我就费了好多口水才给他讲清楚我的idea模型,在这过程中,他对我的模型提出了很多看法,说我的模型还有很多漏洞,最后说有一点新意。然后开始提问了,他说“我问你一个问题”,面试的C++问题大多数是出自上述几本C++书籍,面试必备。
编程基础提问环节:
malloc与new的区别,我就简单说了一下,前者是简单申请一块内存,返回一块未经处理的内存,类型是void*,而new则是在分配内存之后还调用了构造函数对内存块进行初始化操作,返回一个由类型的指针。#pragma pack(n),n=1,2,4,8,16还有一些问题,我忘记了
机器学习与数据挖掘算法
好像没了,很多在交流我的研究工作时涉及到了
在线编码
第一道好像是,有一个范围是0~N是整型数组a,长度为N+1,判断是否有重复元素(我理解错题意了,原来数组元素有范围的),解法应该使用异或。
找链表倒数第n个,注意非法输入,使用双指针的方法,让其中一个先走n个结点。
最后我问了一下他们部门需要什么工程技术能力,他介绍了一下知识图谱。
一面过后的第二天收到了二面的通知,约了二面时间。后来面试官临时有事,二面在安排在十一假期之后。
这一次总体来说,问的问题比较深,比较偏向大规模数据处理。
问了一下我的项目经验之后,我介绍了我在项目里面的工作,然后就是数据结构与算法问题了,C++问题可能因为之前考察过了,这一次没有多问,就问了一个虚函数的理解,面试官主要是看着我简历来提问的。
1、现在服务器有数据集,每一行是QQ号、登录时间、退出时间,找出当天每秒QQ在线数目。(线段树,之前我在《编程艺术》也看到这个数据结构,不过想不起来)
2、有M台机器,每一台机器上有大量的32位整型,找出这所有整型中的中位数。一开始的思路是找出每一个机器上面的中位数median,然后求得M个中位数的最小值min,最大值max,总体中位数范围是在min~max之间,把每一台机器上面min~max之间的数取出来,汇总为一个新的数据集,以及每一台机器上小于min的个数L与大于max的个数R,然后根据L,R转化为在新的数据集上找第K个数的问题。面试官给出的答案是,每一个机器使用哈希表或者位图,统计每一个整型出现的个数,然后M个统计表汇总成为一个统计表,再遍历统计表就行了。面试官的思路要求任何一个整型个数不能超过unsigned int,如果超了这个统计表占内存不是一般大。
3、介绍聚类方法,我说了k-means,LDA
4、很大的一个键集,在字典中查找对应的值,字典与键集太大,都放不入内存。还是用哈希映射,再规约的思想。然后再深入问我在MapReduce上面如何设计map,reduce,这里细节说得不太好。
5、linux shell编程,以及常用linux命令,由于linux不常用,说得不好。
6、问了我本科统计学对计算机有什么帮助。
面试官说,别紧张,慢慢想清楚再表述。没有问脚本语言,应该是知道上次面试中我说了不会脚本语言。
在线编码问题就是写了一个二分查找,值得注意的是非法输入,以及求mid时小心溢出。
40分钟过去了,面试官说,我没有什么问题要问了,有消息同事会通知你的。
觉得差不多告一段落了。第一次面试权当锻炼吧
