百度NLP电面总结(数据挖掘)
2015-08-02 13:03
211 查看
百度NLP电面总结(数据挖掘)
编程基础
C++
const虚函数:虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。
Python
常用的数据结构及应用场景(list,dict,tuple)统计知识
给定一个分类器p,它有0.5的概率输出1,0.5的概率输出0。Q1:如何生成一个分类器使该分类器输出1的概率为0.25,输出0的概率为0.75? Ans:连续进行两次分类,两次结果均为1则输出1,其余情况(10,01,00)均输出0。
Q2:如何生成一个分类器使该分类器输出1的概率为0.3,输出0的概率为0.7? Tip:小明正在做一道选择题,问题只有A、B和C三个选项,通过抛一个硬币来使选择3个选项的概率相同。小明只需抛连续抛两次硬币,结果正正为A,正负为B,负正为C,负负则重新抛硬币。
Ans:连续进行4次分类(2^4=16 > 10),结果前3种情况则输出1,结果接下来7种情况则输出0,其余情况重新进行分类。
工程应用问题
Q1:给定一个1T的单词文件,文件中每一行为一个单词,单词无序且有重复,当前有5台计算机。请问如何高效地利用5台计算机完成文件词频统计工作?Ans(有问题的):将1T文件切分为5份,分配给5台计算机。每台计算机进行词频统计工作,输出一个结果为{单词:频数}的字典结果文件。将5台计算机生成的5个结果文件合并。
Q2:每台计算机需要计算200G左右的文件,内存无法存放200G内容,那么如何统计这些文件的词频? Ans(不是最优):首先将文件排序,然后遍历利用list存储结果即可。(不能用字典,因为200G统计出来的结果会很大,没有那么大的内存存放字典。由于经过排序操作,遍历存储并不会使结果丢失,所以用list存储结果即可,每当一个list即将占满内存,则将其写入文件,然后清空list继续存储结果。)
Q3:如何将1T的文件均匀地分配给5台机器,且每台机器统计完词频生成的文件只需要拼接起来即可(即每台机器统计的单词不出现在其他机器中)
Ans1(不是很好):对1T文件中的单词进行抽样,获得其概率分布,遍历文件,然后根据首字母的概率均匀分配至5台计算机,如a到e的概率均为0.04, 0.04*5=0.2,则将所有以a-e的单词放入第1台计算机,若z的概率为0.2,则把所有以z开头的单词放入第5台计算机。缺点:不具有可扩展性,如果有100台计算机,那么可能就需要2个字母计算了,则程序就要改变。还有可能出现2台机器中有相同的单词。
Ans2(不是最优):遍历文件,对于每一个单词,获得单词中各字母的ASCII码值,然后将ASCII值之和取余。则每台机器中的单词必定是不一样。
总结
百度NLP部门电面考的基础很多,但是关于机器学习、数据挖掘方面的知识一个都没有问,坑爹啊!!!亏我准备了好久关于机器学习方面(特别是SVM,随机森林和AdaBoost)的东西!!!所以即使是投递机器学习、数据挖掘和自然语言处理相关的岗位,关于编程基础(C/C++)和算法还是得准备。相关文章推荐
- 多线程程序设计学习(12)Thread-soecific storage pattern
- 杭电2078复习时间
- maven 使用myeclipse建立maven项目
- springmvc 上传图片文件和创建图片虚拟路径读取图片
- Spark工作机制-应用执行机制
- Java读取excel工资单发送邮件
- IIS-IIS服务器,发布网站:出错版本问…
- 2.DataGridView 几个基本操作
- 1.数据操作类 SqlDBhelper
- 18.Android 程序退出,关闭所有的a…
- 17.GridView宫格的实现及其显示其…
- 16.GridView宫格的实现及其显示其…
- 2.JASP_DOM解析xml基本思路总结
- 1.jsp+servlet+mysql建站基本思路…
- 30.正则表达式(1)
- 4.xml 解析
- 3.利用jasp进行dom方式解析
- 2.xml入门
- 1.xml入门
- 3.JavaScript 基础知识学习