数据挖掘工程师的面试问题与答题思路

一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。

  • 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  • :类是一个模板,它描述一类对象的行为和状态。
  • 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
  • 实例变量:每个对象都有独特的实例变量,对象机器学习、大数据相关岗位根据业务的不同,岗位职责大概分为:

1、平台搭建类
  数据计算平台搭建,基础算法实现,当然,要求支持大样本量、高维度数据,所以可能还需要底层开发、并行计算、分布式计算等方面的知识;

2、算法研究类
  - 文本挖掘,如领域知识图谱构建、垃圾短信过滤等;
  - 推荐,广告推荐、APP 推荐、题目推荐、新闻推荐等;
  - 排序,搜索结果排序、广告排序等;
  - 广告投放效果分析;
  - 互联网信用评价;
  - 图像识别、理解。

3、数据挖掘类
  - 商业智能,如统计报表;
  - 用户体验分析,预测流失用户。
  以上是根据求职季有限的接触所做的总结。有的应用方向比较成熟,业界有足够的技术积累,比如搜索、推荐,也有的方向还有很多开放性问题等待探索,比如互联网金融、互联网教育。在面试的过程中,一方面要尽力向企业展现自己的能力,另一方面也是在增进对行业发展现状与未来趋势的理解,特别是可以从一些刚起步的企业和团队那里,了解到一些有价值的一手问题。

  
以下首先介绍面试中遇到的一些真实问题,然后谈一谈答题和面试准备上的建议。

面试问题
  1、你在研究/项目/实习经历中主要用过哪些机器学习/数据挖掘的算法?
  2、你熟悉的机器学习/数据挖掘算法主要有哪些?
  3、你用过哪些机器学习/数据挖掘工具或框架?
  4、基础知识
1)无监督和有监督算法的区别?
2)SVM 的推导,特性?多分类怎么处理?
3)LR 的推导,特性?
4)决策树的特性?
5)SVM、LR、决策树的对比?
6)GBDT 和 决策森林 的区别?
7)如何判断函数凸或非凸?
8)解释对偶的概念。
9)如何进行特征选择?
10)为什么会产生过拟合,有哪些方法可以预防或克服过拟合?
11)介绍卷积神经网络,和 DBN 有什么区别?
12)采用 EM 算法求解的模型有哪些,为什么不用牛顿法或梯度下降法?
13)用 EM 算法推导解释 Kmeans。
14)用过哪些聚类算法,解释密度聚类算法。
15)聚类算法中的距离度量有哪些?
16)如何进行实体识别?
17)解释贝叶斯公式和朴素贝叶斯分类。
18)写一个 Hadoop 版本的 wordcount。
……
  5、开放问题
1)给你公司内部群组的聊天记录,怎样区分出主管和员工?
2)如何评估网站内容的真实性(针对代刷、作弊类)?
3)深度学习在推荐系统上可能有怎样的发挥?
4)路段平均车速反映了路况,在道路上布控采集车辆速度,如何对路况做出合理估计?采集数据中的异常值如何处理?
5)如何根据语料计算两个词词义的相似度?
6)在百度贴吧里发布 APP 广告,问推荐策略?
7)如何判断自己实现的 LR、Kmeans 算法是否正确?
8)100亿数字,怎么统计前100大的?
……

答题思路
1、用过什么算法?
  最好是在项目/实习的大数据场景里用过,比如推荐里用过 CF、LR,分类里用过 SVM、GBDT;
  一般用法是什么,是不是自己实现的,有什么比较知名的实现,使用过程中踩过哪些坑;
优缺点分析。

2、熟悉的算法有哪些?
  基础算法要多说,其它算法要挑熟悉程度高的说,不光列举算法,也适当说说应用场合;
  面试官和你的研究方向可能不匹配,不过在基础算法上你们还是有很多共同语言的,你说得太高大上可能效果并不好,一方面面试官还是要问基础的,另一方面一旦面试官突发奇想让你给他讲解高大上的内容,而你只是泛泛的了解,那就傻叉了。

3、用过哪些框架/算法包?
  主流的分布式框架如 Hadoop,Spark,Graphlab,Parameter Server 等择一或多使用了解;
  通用算法包,如 mahout,scikit,weka 等;
  专用算法包,如 opencv,theano,torch7,ICTCLAS 等。

4、基础知识
  个人感觉高频话题是 SVM、LR、决策树(决策森林)和聚类算法,要重点准备;
  算法要从以下几个方面来掌握:
1)产生背景,适用场合(数据规模,特征维度,是否有 Online 算法,离散/连续特征处理等角度);
2)原理推导(最大间隔,软间隔,对偶);
3)求解方法(随机梯度下降、拟牛顿法等优化算法);
4)优缺点,相关改进;
5)和其他基本方法的对比;
6)不能停留在能看懂的程度,还要对知识进行结构化整理,比如撰写自己的 cheet sheet,我觉得面试是在有限时间内向面试官输出自己知识的过程,如果仅仅是在面试现场才开始调动知识、组织表达,总还是不如系统的梳理准备;
7)从面试官的角度多问自己一些问题,通过查找资料总结出全面的解答,比如如何预防或克服过拟合。

5、开放问题
  由于问题具有综合性和开放性,所以不仅仅考察对算法的了解,还需要足够的实战经验作基础;
  先不要考虑完善性或可实现性,调动你的一切知识储备和经验储备去设计,有多少说多少,想到什么说什么,方案都是在你和面试官讨论的过程里逐步完善的,不过面试官有两种风格:引导你思考考虑不周之处 or 指责你没有考虑到某些情况,遇到后者的话还请注意灵活调整答题策略;
  和同学朋友开展讨论,可以从上一节列出的问题开始。

准备建议
1、基础算法复习两条线
  材料阅读 包括经典教材(比如 PRML,模式分类)、网上系列博客(比如 研究者July的“结构之法,算法之道”),系统梳理基础算法知识;
  面试反馈 面试过程中会让你发现自己的薄弱环节和知识盲区,把这些问题记录下来,在下一次面试前搞懂搞透。

2、除算法知识,还应适当掌握一些系统架构方面的知识,可以从网上分享的阿里、京东、新浪微博等的架构介绍 PPT 入手,也可以从 Hadoop、Spark 等的设计实现切入。

3、如果真的是以就业为导向就要在平时注意实战经验的积累,在科研项目、实习、比赛(Kaggle,Netflix,天猫大数据竞赛等)中摸清算法特性、熟悉相关工具与模块的使用。

总结
如今,好多机器学习、数据挖掘的知识都逐渐成为常识,要想在竞争中脱颖而出,就必须做到:
 保持学习热情,关心热点;
 深入学习,会用,也要理解;
 在实战中历练总结;
 积极参加学术界、业界的讲座分享,向牛人学习,与他人讨论。

找好自己的定位:

1、数据分析师,主要技能SQL、Excel,从数据库里写SQL语句得到数据,然后在EXCEL里加工可视化后做成报表或者报告,利用你的商业敏感度,给出可靠的结论。听起来很简单是不是,但这其中需要的商业敏感度,确是最需要积累的。具体方向有3个:数据产品、决策支持、数据运营。其中,数据产品 PK需求把控&项目管控能力;决策支持 PK商业sense(例如做营销,360网址导航这种每月几百万的框架到底要不要签?);数据运营 PK提炼特征能力综上,你会发现在互联网公司,数据分析师要处理的问题,跟营销、产品、运营一样。

2、算法工程师,主要技能数学功底+统计功底+实打实的写代码能力+看论文读最新算法论文的能力。要求相当高。对应岗位推荐算法工程师、搜索算法工程师、文本挖掘、语音识别、图像处理这类算法工程师。比如阿里,做推荐的算法工程师基于访客、商品、商家的在线、离线信息等等数据库的数据,来得到一套推荐的逻辑,通俗点说,怎么给出个公司,给每个商品算个得分,排列出来给买家看到,买家会想要买更多的商品。而这背后的算法,其实市面上大部分机器学习的书都覆盖不到,是需要算法工程师基于算法基本功(数据结构、核心算法范式)+商业感觉(业务逻辑、综合行业运营、分析师的假设经验)+利用数据不断的实验迭代得到最好的结果、获得参数、还要担心本身样本不随机带来的系统偏差等等问题。

以上转自公众号:数据挖掘DW
  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【干货】java课程实战培训

开头 消息队列 RocketMQ 是阿里巴巴集团基于高可用分布式集群技术,自主研发的云正式商用的专业消息中间件,既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性,…

Java的几个特点

Java语言是简单的: Java语言的语法与C语言和C语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java丢弃了C中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地&#xff0c…

【干货】mysql建表语句注释

前言 难道程序员的职业生命线是青春饭?答案是的。 35岁考虑转行,然后35岁又成了一个新人,而外国可以做到60岁,啥也不说了,可能是觉得中年大叔油腻,不及小鲜肉便宜,唉,可叹市场更新…

软件测试知识整理

在一个测试计划汇总能包含哪些内容? 答:在一个测试计划中可以包含需要测试的产品的特点和主要功能模块,列出需要测试的功能点,并标明侧重点;测试的策略和记录(测试工具的确认,测试用例等文档模…

【干货】mysql查询重复数据sql

前言 本系列的目的是明明白白、彻彻底底的搞定日期/时间处理的几乎所有case。上篇文章铺设所有涉及到的概念解释,例如GMT、UTC、夏令时、时间戳等等,若你还没看过,不仅强烈建议而是强制建议你前往用花5分钟看一下,因为日期时间处…

【微信小程序】java最简单观察者模式

开头 对于一个Java程序员而言,能否熟练掌握并发编程是判断他优秀与否的重要标准之一。因为并发编程是Java语言中最为晦涩的知识点,它涉及操作系统、内存、CPU、编程语言等多方面的基础能力,更为考验一个程序员的内功。 那到底应该怎么学习并…

操作系统知识点整理

作业 用户在一次解题或一个事务处理过程中要求计算机系统所做工作的集合。它包括用户程序、所需要的数据及控制命令等。作业是由一系列有序的步骤组成的。 进程 一个程序在一个数据集合上的一次运行过程。所以一个程序在不同数据集合上运行,乃至一个程序在同样数…

【性能优化实战】java验证码识别训练

前言 今天刚好有空,跟大家聊聊如何学好算法进大厂。 前两天一个读者和我说,他坚持刷算法题2个月,薪资翻番去了他梦寐以求的大厂,期间面字节跳动还遇到了原题…其实据我所知目前国内的大厂和一些独角兽,已经越来越效仿…

计算机网络知识整理

OSI七层 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 物理层涉及信道上传输的比特流。 数据链路层的主要任务是加强物理层传输原始比特流的功能,是指对应的网路层显现为一条无错线路。发送包把数据封装在数据帧,按顺序传送出去并处…

吸水间最低动水位标高_体验长安逸动EV460:再也不用为电动车续驶里程焦虑了...

文| 车突突车图腾出品,未经许可,谢绝转载● ● ●人们都在期待碧水蓝天,而且越来越多的消费者也开始践行环保理念,在买车时关注起了纯电动汽车。不过遗憾的是,纯电动汽车目前还没能成为主流。一方面,是因为…

java开发工具包jdk包括哪些

害怕干不过SpringBoot?莫慌,我送你套神级pdf文档 随着 Spring Boot 使用越来越广泛,Spring Boot 已经成为 Java 程序员面试的知识点,很多同学对 Spring Boot 理解不是那么深刻,经常就会被几个连环追问就给干趴下了&am…

微信计步器怎么不计步_难以关闭的微信朋友圈广告

太难关掉了。”试图关闭朋友圈广告的小曾,在对照着腾讯视频上的一个长达6分钟的视频演示之后,通过14次操作才得以关闭。这14步操作具体如下:点击“我”—点击“设置”—点击“关于微信”—点击“微信隐私保护指引”—下拉两个屏幕的面积—点击…

java开发工具有哪些

前言 Netty 是一款基于 Java 的网络编程框架,能为应用程序管理复杂的网络编程、多线程处理以及并发。Netty 隐藏了样板和底层代码,让业务逻辑保持分离,更加易于复用。使用 Netty 可以得到一个易于使用的 API,让开发人员可以专注自…

经典冒泡排序及其优化

经典排序算法 - 冒泡排序Bubble sort 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似…

expdp导出 schema_记录一则expdp任务异常处理案例

在XTTS迁移测试阶段,遇到执行几个expdp的导出任务,迟迟没有返回任何信息,对应日志无任何输出。环境:AIX 6.1 Oracle 10.2.0.4现象:在XTTS迁移测试阶段,遇到执行几个expdp的导出任务,迟迟没有返…

java开发工具软件排行榜

前言: 都说学历是敲门砖,是一点都没错,即使是在重技术轻学历的互联网企业,面试官对于学历越高的程序员初印象会更好,面试也会更顺利,而大部分专科学历的程序员,除非有过硬的技术,否…

简单选择排序算法

简单选择排序思想:首先,找到数组中最小的元素,其次,将它和数组第一个元素交换位置;再次,在剩下的元素中找到最小的元素,将它与数组中的第二个元素交换。如此亡故,直到将整个数组排序…

java开发工程师工作内容怎么写

什么是分布式锁?在回答这个问题之前,我们先回答一下什么是锁。 普通的锁,即在单机多线程环境下,当多个线程需要访问同一个变量或代码片段时,被访问的变量或代码片段叫做临界区域,我们需要控制线程一个一个…

community 计算模块度_光模块深度:国内光模块企业快速崛起

一、核心观点二、发展追溯:技术是底蕴、创新是动力1 光通信发展:技术迭代加快,国产替代是前进的方向依据摩尔定律,光模块的小型化、低成本以及高速率是产品迭代的主要方向。2 竞争格局:市场集中度高,巨头地位稳固,国内厂商稳步崛起…

java开发工程师的自我评价

前言 京东到家订单中心系统业务中,无论是外部商家的订单生产,或是内部上下游系统的依赖,订单查询的调用量都非常大,造成了订单数据读多写少的情况。 我们把订单数据存储在MySQL中,但显然只通过DB来支撑大量的查询是不…