关于数据分析师的一个面试题。

2024-05-10 09:21

1. 关于数据分析师的一个面试题。

是选19次,每次一个数字,数字是可以重复的,那么你的答案是对的
可能是对题目本身的理解你和考官不一致

关于数据分析师的一个面试题。

2. 常见的数据分析师笔试题目及答案

 常见的数据分析师笔试题目及答案
                         导读:探索性数据分析侧重于在数据之中发现新的特征,而验证性数据分析则侧重于已有假设的证实或证伪。以下是由我J.L为您整理推荐的实用的应聘笔试题目和经验,欢迎参考阅读。
    
          1、海量日志数据,提取出某日访问百度次数最多的那个IP。 
         首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方 法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率 最大的几个)及相应的频率。然后再在这1000个最大的IP中,找出那个频率最大的IP,即为所求。
         或者如下阐述:
         算法思想:分而治之+Hash
         1.IP地址最多有2^32=4G种取值情况,所以不能完全加载到内存中处理;
         2.可以考虑采用“分而治之”的思想,按照IP地址的Hash(IP)24值,把海量IP日志分别存储到1024个小文件中。这样,每个小文件最多包含4MB个IP地址;
         3.对于每一个小文件,可以构建一个IP为key,出现次数为value的Hash map,同时记录当前出现次数最多的那个IP地址;
         4.可以得到1024个小文件中的出现次数最多的IP,再依据常规的排序算法得到总体上出现次数最多的'IP;
          2、搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。 
         假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。),请你统计最热门的10个查询串,要求使用的内存不能超过1G。
         典型的Top K算法,还是在这篇文章里头有所阐述,
         文中,给出的最终算法是:
         第一步、先对这批海量数据预处理,在O(N)的时间内用Hash表完成统计(之前写成了排序,特此订正。July、2011.04.27);
         第二步、借助堆这个数据结构,找出Top K,时间复杂度为N‘logK。
         即,借助堆结构,我们可以在log量级的时间内查找和调整/移动。因此,维护一个K(该题目中是10)大小的小根堆,然后遍历300万的 Query, 分别和根元素进行对比所以,我们最终的时间复杂度是:O(N) + N’*O(logK),(N为1000万,N’为300万)。ok,更多,详情,请参考原文。
         或者:采用trie树,关键字域存该查询串出现的次数,没有出现为0。最后用10个元素的最小推来对出现频率进行排序。
          3、有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。 
         方案:顺序读文件中,对于每个词x,取hash(x)P00,然后按照该值存到5000个小文件(记为x0,x1,…x4999)中。这样每个文件大概是200k左右。
         如果其中的有的文件超过了1M大小,还可以按照类似的方法继续往下分,直到分解得到的小文件的大小都不超过1M。
         对每个小文件,统计每个文件中出现的词以及相应的频率(可以采用trie树/hash_map等),并取出出现频率最大的100个词(可以用含 100 个结点的最小堆),并把100个词及相应的频率存入文件,这样又得到了5000个文件。下一步就是把这5000个文件进行归并(类似与归并排序) 的过程了。
          4、有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复。要求你按照query的频度排序。 
         还是典型的TOP K算法,解决方案如下:
         方案1:
         顺序读取10个文件,按照hash(query)的结果将query写入到另外10个文件(记为)中。这样新生成的文件每个的大小大约也1G(假设hash函数是随机的)。
         找一台内存在2G左右的机器,依次对用hash_map(query, query_count)来统计每个query出现的次数。利用快速/堆/归并排序按照出现次数进行排序。将排序好的query和对应的 query_cout输出到文件中。这样得到了10个排好序的文件(记为)。
         对这10个文件进行归并排序(内排序与外排序相结合)。
         方案2:
         一般query的总量是有限的,只是重复的次数比较多而已,可能对于所有的query,一次性就可以加入到内存了。这样,我们就可以采用trie树/hash_map等直接来统计每个query出现的次数,然后按出现次数做快速/堆/归并排序就可以了。
         方案3:
         与方案1类似,但在做完hash,分成多个文件后,可以交给多个文件来处理,采用分布式的架构来处理(比如MapReduce),最后再进行合并。
          5、 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 
         方案1:可以估计每个文件安的大小为5G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。
         遍历文件a,对每个url求取hash(url)00,然后根据所取得的值将url分别存储到1000个小文件(记为a0,a1,…,a999)中。这样每个小文件的大约为300M。
         遍历文件b,采取和a相同的方式将url分别存储到1000小文件(记为b0,b1,…,b999)。这样处理后,所有可能相同的url都在对应的小 文件(a0vsb0,a1vsb1,…,a999vsb999)中,不对应的小文件不可能有相同的url。然后我们只要求出1000对小文件中相同的 url即可。
         求每对小文件中相同的url时,可以把其中一个小文件的url存储到hash_set中。然后遍历另一个小文件的每个url,看其是否在刚才构建的hash_set中,如果是,那么就是共同的url,存到文件里面就可以了。
         方案2:如果允许有一定的错误率,可以使用Bloom filter,4G内存大概可以表示340亿bit。将其中一个文件中的url使用 Bloom filter映射为这340亿bit,然后挨个读取另外一个文件的url,检查是否与Bloom filter,如果是,那么该url应该是共同的url(注意会有一定的错误率)。
         Bloom filter日后会在本BLOG内详细阐述。
          6、在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数。 
         方案1:采用2-Bitmap(每个数分配2bit,00表示不存在,01表示出现一次,10表示多次,11无意义)进行,共需内存 2^32 * 2 bit=1 GB内存,还可以接受。然后扫描这2.5亿个整数,查看Bitmap中相对应位,如果是00变01,01变10,10保持不变。所描完事后,查看 bitmap,把对应位是01的整数输出即可。
         方案2:也可采用与第1题类似的方法,进行划分小文件的方法。然后在小文件中找出不重复的整数,并排序。然后再进行归并,注意去除重复的元素。
          7、腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中? 
         与上第6题类似,我的第一反应时快速排序+二分查找。以下是其它更好的方法:
         方案1:oo,申请512M的内存,一个bit位代表一个unsigned int值。读入40亿个数,设置相应的bit位,读入要查询的数,查看相应bit位是否为1,为1表示存在,为0表示不存在。
         方案2:这个问题在《编程珠玑》里有很好的描述,大家可以参考下面的思路,探讨一下:
         又因为2^32为40亿多,所以给定一个数可能在,也可能不在其中;
         这里我们把40亿个数中的每一个用32位的二进制来表示
         假设这40亿个数开始放在一个文件中。
    ;

3. 数据分析师面试常见问题有哪些?

1、如何理解过拟合?
过拟合和欠拟合一样,都是数据挖掘的基本概念。过拟合指的就是数据训练得太好,在实际的测试环境中可能会产生错误,所以适当的剪枝对数据挖掘算法来说也是很重要的。
欠拟合则是指机器学习得不充分,数据样本太少,不足以让机器形成自我认知。
2、为什么说朴素贝叶斯是“朴素”的?
朴素贝叶斯是一种简单但极为强大的预测建模算法。之所以称为朴素贝叶斯,是因为它假设每个输入变量是独立的。这是一个强硬的假设,实际情况并不一定,但是这项技术对于绝大部分的复杂问题仍然非常有效。
3、SVM 最重要的思想是什么?
SVM 计算的过程就是帮我们找到超平面的过程,它有个核心的概念叫:分类间隔。SVM 的目标就是找出所有分类间隔中最大的那个值对应的超平面。在数学上,这是一个凸优化问题。同样我们根据数据是否线性可分,把 SVM 分成硬间隔 SVM、软间隔 SVM 和非线性 SVM。
4、K-Means 和 KNN 算法的区别是什么?
首先,这两个算法解决的是数据挖掘中的两类问题。K-Means 是聚类算法,KNN 是分类算法。其次,这两个算法分别是两种不同的学习方式。K-Means 是非监督学习,也就是不需要事先给出分类标签,而 KNN 是有监督学习,需要我们给出训练数据的分类标识。最后,K 值的含义不同。K-Means 中的 K 值代表 K 类。KNN 中的 K 值代表 K 个最接近的邻居。

数据分析师面试常见问题有哪些?

4. 数据分析师常见的面试问题

 关于数据分析师常见的面试问题集锦
                      1、你处理过的最大的数据量?你是如何处理他们的?处理的结果。
    
    2、告诉我二个分析或者计算机科学相关项目?你是如何对其结果进行衡量的?
    3、什么是:提升值、关键绩效指标、强壮性、模型按合度、实验设计、2/8原则?
    4、什么是:协同过滤、n-grams, map reduce、余弦距离?
    5、如何让一个网络爬虫速度更快、抽取更好的信息以及更好总结数据从而得到一干净的数据库?
    6、如何设计一个解决抄袭的方案?
    7、如何检验一个个人支付账户都多个人使用?
    8、点击流数据应该是实时处理?为什么?哪部分应该实时处理?
    9、你认为哪个更好:是好的数据还是好模型?同时你是如何定义“好”?存在所有情况下通用的模型吗?有你没有知道一些模型的定义并不是那么好?
    10、什么是概率合并(aka模糊融合)?使用sql处理还是其它语言方便?对于处理半结构化的数据你会选择使用哪种语言?
    11、你是如何处理缺少数据的?你推荐使用什么样的处理技术?
    12、你最喜欢的编程语言是什么?为什么?
    13、对于你喜欢的统计软件告诉你喜欢的与不喜欢的3个理由。
    14、sas, r, python, perl语言的区别是?
    15、什么是大数据的诅咒?
    16、你参与过数据库与数据模型的设计吗?
    17、你是否参与过仪表盘的设计及指标选择?你对于商业智能和报表工具有什么想法?
    18、你喜欢td数据库的什么特征?
    19、如何你打算发100万的营销活动邮件。你怎么去优化发送?你怎么优化反应率?能把这二个优化份开吗?
    20、如果有几个客户查询oracle数据库的效率很低。为什么?你做什么可以提高速度10倍以上,同时可以更好处理大数量输出?
    21、如何把非结构化的数据转换成结构化的数据?这是否真的有必要做这样的转换?把数据存成平面文本文件是否比存成关系数据库更好?
    22、什么是哈希表碰撞攻击?怎么避免?发生的频率是多少?
    23、如何判别mapreduce过程有好的负载均衡?什么是负载均衡?
    24、请举例说明mapreduce是如何工作的?在什么应用场景下工作的很好?云的安全问题有哪些?
    25、(在内存满足的情况下)你认为是100个小的哈希表好还是一个大的哈希表,对于内在或者运行速度来说?对于数据库分析的评价?
    26、为什么朴素贝叶斯差?你如何使用朴素贝叶斯来改进爬虫检验算法?
    27、你处理过白名单吗?主要的规则?(在欺诈或者爬行检验的情况下)
    28、什么是星型模型?什么是查询表?
    29、你可以使用excel建立逻辑回归模型吗?如何可以,说明一下建立过程?
    30、在sql, perl, c++, python等编程过程上,待为了提升速度优化过相关代码或者算法吗?如何及提升多少?
    31、使用5天完成90%的精度的解决方案还是花10天完成100%的精度的解决方案?取决于什么内容?
    32、定义:qa(质量保障)、六西格玛、实验设计。好的与坏的实验设计能否举个案例?
    33、普通线性回归模型的缺陷是什么?你知道的其它回归模型吗?
    34、你认为叶数小于50的决策树是否比大的好?为什么?
    35、保险精算是否是统计学的一个分支?如果不是,为何如何?
    36、给出一个不符合高斯分布与不符合对数正态分布的数据案例。给出一个分布非常混乱的数案例。
    37、为什么说均方误差不是一个衡量模型的好指标?你建议用哪个指标替代?
    38、你如何证明你带来的算法改进是真的有效的与不做任何改变相比?你对a/b测试熟吗?
    39、什么是敏感性分析?拥有更低的敏感性(也就是说更好的强壮性)和低的预测能力还是正好相反好?你如何使用交叉验证?你对于在数据集中插入噪声数据从而来检验模型的.敏感性的想法如何看?
    40、对于一下逻辑回归、决策树、神经网络。在过去XX年中这些技术做了哪些大的改进?
    41、除了主成分分析外你还使用其它数据降维技术吗?你怎么想逐步回归?你熟悉的逐步回归技术有哪些?什么时候完整的数据要比降维的数据或者样本好?
    42、你如何建议一个非参数置信区间?
    43、你熟悉极值理论、蒙特卡罗逻辑或者其它数理统计方法以正确的评估一个稀疏事件的发生概率?
    44、什么是归因分析?如何识别归因与相关系数?举例。
    45、如何定义与衡量一个指标的预测能力?
    46、如何为欺诈检验得分技术发现最好的规则集?你如何处理规则冗余、规则发现和二者的本质问题?一个规则集的近似解决方案是否可行?如何寻找一个可行的近似方案?你如何决定这个解决方案足够好从而可以停止寻找另一个更好的?
    47、如何创建一个关键字分类?
    48、什么是僵尸网络?如何进行检测?
    49、你有使用过api接口的经验吗?什么样的api?是谷歌还是亚马逊还是软件即时服务?
    50、什么时候自己编号代码比使用数据科学者开发好的软件包更好?
    51、可视化使用什么工具?在作图方面,你如何评价tableau?r?sas?在一个图中有效展现五个维度?
    52、什么是概念验证?
    53、你主要与什么样的客户共事:内部、外部、销售部门/财务部门/市场部门/it部门的人?有咨询经验吗?与供应商打过交道,包括供应商选择与测试。
    54、你熟悉软件生命周期吗?及it项目的生命周期,从收入需求到项目维护?
    55、什么是cron任务?
    56、你是一个独身的编码人员?还是一个开发人员?或者是一个设计人员?
    57、是假阳性好还是假阴性好?
    58、你熟悉价格优化、价格弹性、存货管理、竞争智能吗?分别给案例。
    59、zillow’s算法是如何工作的?
    60、如何检验为了不好的目的还进行的虚假评论或者虚假的fb帐户?
    61、你如何创建一个新的匿名数字帐户?
    62、你有没有想过自己创业?是什么样的想法?
    63、你认为帐号与密码输入的登录框会消失吗?它将会被什么替代?
    64、你用过时间序列模型吗?时滞的相关性?相关图?光谱分析?信号处理与过滤技术?在什么样的场景下?
    65、哪位数据科学有你最佩服?从哪开始?
    66、你是怎么开始对数据科学感兴趣的?
    67、什么是效率曲线?他们的缺陷是什么,你如何克服这些缺陷?
    68、什么是推荐引擎?它是如何工作的?
    69、什么是精密测试?如何及什么时候模拟可以帮忙我们不使用精密测试?
    70、你认为怎么才能成为一个好的数据科学家?
    71、你认为数据科学家是一个艺术家还是科学家?
    72、什么是一个好的、快速的聚类算法的的计算复杂度?什么好的聚类算法?你怎么决定一个聚类的聚数?
    73、给出一些在数据科学中“最佳实践的案例”。
    74、什么让一个图形使人产生误解、很难去读懂或者解释?一个有用的图形的特征?
    75、你知道使用在统计或者计算科学中的“经验法则”吗?或者在商业分析中。
    76、你觉得下一个20年最好的5个预测方法是?
    77、你怎么马上就知道在一篇文章中(比如报纸)发表的统计数字是错误,或者是用作支撑作者的论点,而不是仅仅在罗列某个事物的信息?例如,对于每月官方定期在媒体公开发布的失业统计数据,你有什么感想?怎样可以让这些数据更加准确?
   ;

5. 面试数据分析师的常见问题

面试数据分析师的常见问题。数据分析师指的是不同行业中,专门从事行业数据搜集、整理、分析,并依据数据做出行业研究、评估和预测的专业人员。那么在应聘数据分析师这一职位的求职者会面临哪些面试问题呢?
  
  1、告诉我二个分析或者计算机科学相关项目?你是如何对其结果进行衡量的?
  2、如何让一个网络爬虫速度更快、抽取更好的信息以及更好总结数据从而得到一干净的数据库?
  3、什么是:提升值、关键绩效指标、强壮性、模型按合度、实验设计、2/8原则?
  4、什么是:协同过滤、n-grams, map reduce、余弦距离?
  5、点击流数据应该是实时处理?为什么?哪部分应该实时处理?
  6、如何设计一个解决抄袭的方案?
  7、如何检验一个个人支付账户都多个人使用?
  8、什么是概率合并(AKA模糊融合)?使用SQL处理还是其它语言方便?对于处理半结构化的数据你会选择使用哪种语言?
  9、你认为哪个更好:是好的数据还是好模型?同时你是如何定义“好”?存在所有情况下通用的模型吗?有你没有知道一些模型的定义并不是那么好?
  10、你最喜欢的编程语言是什么?为什么?
  11、你是如何处理缺少数据的?你推荐使用什么样的处理技术?
  12、什么是大数据的诅咒?
  13、对于你喜欢的统计软件告诉你喜欢的与不喜欢的3个理由。
  14、SAS, R, Python, Perl语言的区别是?
  15、你喜欢TD数据库的什么特征?
  16、你参与过数据库与数据模型的设计吗?
  17、你是否参与过仪表盘的设计及指标选择?你对于商业智能和报表工具有什么想法?
  18、请举例说明mapreduce是如何工作的?在什么应用场景下工作的很好?云的安全问题有哪些?
  19、如何你打算发100万的营销活动邮件。你怎么去优化发送?你怎么优化反应率?能把这二个优化份开吗?
  20、如果有几个客户查询ORACLE数据库的效率很低。为什么?你做什么可以提高速度10倍以上,同时可以更好处理大数量输出?
  21、如何把非结构化的数据转换成结构化的数据?这是否真的有必要做这样的转换?把数据存成平面文本文件是否比存成关系数据库更好?
  22、什么是哈希表碰撞攻击?怎么避免?发生的频率是多少?
  23、如何判别mapreduce过程有好的负载均衡?什么是负载均衡?
  24、你处理过白名单吗?主要的规则?(在欺诈或者爬行检验的情况下)
  25、(在内存满足的情况下)你认为是100个小的哈希表好还是一个大的哈希表,对于内在或者运行速度来说?对于数据库分析的评价?
  26、为什么朴素贝叶斯差?你如何使用朴素贝叶斯来改进爬虫检验算法?
  27、普通线性回归模型的缺陷是什么?你知道的其它回归模型吗?
  28、什么是星型模型?什么是查询表?
  29、你可以使用excel建立逻辑回归模型吗?如何可以,说明一下建立过程?
  30、在SQL, Perl, C++, Python等编程过程上,待为了提升速度优化过相关代码或者算法吗?如何及提升多少?
  31、使用5天完成90%的精度的解决方案还是花10天完成100%的精度的解决方案?取决于什么内容?
  32、定义:QA(质量保障)、六西格玛、实验设计。好的与坏的实验设计能否举个案例?
  33、什么是敏感性分析?拥有更低的敏感性(也就是说更好的强壮性)和低的预测能力还是正好相反好?你如何使用交叉验证?你对于在数据集中插入噪声数据从而来检验模型的敏感性的想法如何看?
  34、你认为叶数小于50的决策树是否比大的好?为什么?
  35、保险精算是否是统计学的一个分支?如果不是,为何如何?
  36、给出一个不符合高斯分布与不符合对数正态分布的数据案例。给出一个分布非常混乱的数案例。
  37、你如何建议一个非参数置信区间?
  38、你如何证明你带来的算法改进是真的有效的与不做任何改变相比?你对A/B测试熟吗?
  39、为什么说均方误差不是一个衡量模型的好指标?你建议用哪个指标替代?
  40、对于一下逻辑回归、决策树、神经网络。在过去15年中这些技术做了哪些大的改进?
  41、除了主成分分析外你还使用其它数据降维技术吗?你怎么想逐步回归?你熟悉的逐步回归技术有哪些?什么时候完整的数据要比降维的数据或者样本好?
  42、如何创建一个关键字分类?
  43、你熟悉极值理论、蒙特卡罗逻辑或者其它数理统计方法以正确的评估一个稀疏事件的发生概率?
  44、什么是归因分析?如何识别归因与相关系数?举例。
  45、如何定义与衡量一个指标的预测能力?
  46、如何为欺诈检验得分技术发现最好的规则集?你如何处理规则冗余、规则发现和二者的本质问题?一个规则集的近似解决方案是否可行?如何寻找一个可行的近似方案?你如何决定这个解决方案足够好从而可以停止寻找另一个更好的?
  47、什么是概念验证?
  48、什么是僵尸网络?如何进行检测?
  49、你有使用过API接口的经验吗?什么样的API?是谷歌还是亚马逊还是软件即时服务?
  50、什么时候自己编号代码比使用数据科学者开发好的软件包更好?
  51、可视化使用什么工具?在作图方面,你如何评价Tableau?R?SAS?在一个图中有效展现五个维度?
  52、是假阳性好还是假阴性好?
  53、你主要与什么样的客户共事:内部、外部、销售部门/财务部门/市场部门/IT部门的人?有咨询经验吗?与供应商打过交道,包括供应商选择与测试。
  54、你熟悉软件生命周期吗?及IT项目的生命周期,从收入需求到项目维护?
  55、什么是cron任务?
  56、你是一个独身的编码人员?还是一个开发人员?或者是一个设计人员?
  57、什么让一个图形使人产生误解、很难去读懂或者解释?一个有用的图形的特征?
  58、你熟悉价格优化、价格弹性、存货管理、竞争智能吗?分别给案例。
  59、Zillow’s算法是如何工作的?
  60、如何检验为了不好的目的还进行的虚假评论或者虚假的FB帐户?
  61、你如何创建一个新的匿名数字帐户?
  62、你有没有想过自己创业?是什么样的想法?
  63、你认为帐号与密码输入的登录框会消失吗?它将会被什么替代?
  64、你用过时间序列模型吗?时滞的相关性?相关图?光谱分析?信号处理与过滤技术?在什么样的场景下?
  65、哪位数据科学有你最佩服?从哪开始?
  66、你是怎么开始对数据科学感兴趣的?
  67、你觉得下一个20年最好的5个预测方法是?
  68、什么是推荐引擎?它是如何工作的?
  69、什么是精密测试?如何及什么时候模拟可以帮忙我们不使用精密测试?
  70、你认为怎么才能成为一个好的数据科学家?
  71、你认为数据科学家是一个艺术家还是科学家?
  72、你怎么马上就知道在一篇文章中(比如报纸)发表的统计数字是错误,或者是用作支撑作者的论点,而不是仅仅在罗列某个事物的信息?例如,对于每月官方定期在媒体公开发布的失业统计数据,你有什么感想?怎样可以让这些数据更加准确?
  73、给出一些在数据科学中“最佳实践的案例”。
  74、什么是效率曲线?他们的缺陷是什么,你如何克服这些缺陷?
  75、你处理过的最大的数据量?你是如何处理他们的?处理的结果。
  76、什么是一个好的、快速的聚类算法的的计算复杂度?什么好的聚类算法?你怎么决定一个聚类的聚数?
  77、你知道使用在统计或者计算科学中的“经验法则”吗?或者在商业分析中。
   上述的这些问题在面试数据分析师的求职者中非常容易遇到的,有些的涉及到专业性的问题,因此在面试之前一定要做好充足的准备!

面试数据分析师的常见问题

6. 数据分析师—技术面试

数据分析师—技术面试
三月份开始找实习,到现在已经有半年的时间了,在这半年的时间中,该经历的基本上都已经经历,春招实习时候,拿到了7个offer,校招时候,成功的拿下一份心仪的工作,结束了我的秋招旅程。对于面试,技术层面即算法、软件等等,业务层面就是忽悠(毕竟没有做过完整的项目),但是也要有自己的逻辑和思考方式(这方面我也有很大的欠缺),下面将自己的面试经历梳理为技术层面和业务层面,来分享给大家。
技术面试
一、软件
 
1. R语言的文件读取:csv文件的读取方式(read.csv),txt文件的读取方式(read.table)
2. R语言中一些小函数的作用
①apply函数:1代表调用每一行的函数,0代表调用每一列的函数(注意其用法和Python的区别)
②runif函数:生成均匀分布的随机数
③sample(,return = TRUE):随机有放回的抽样
3. Python中list列表和元组的最大区别:元组的值不可以改变,但是列表的值是可以改变的。
4.数据库中表的连接方式
①内部连接:inner  join
②外部连接:outer  join
③左连接:left  join  
注:对于数据分析,建议大家无论是R,Python,sql都有自己一套流程化的体系,这一体系可以很好的帮助你解决实际中的问题。
二、算法
 
对于算法(分类,聚类,关联等),更是建议大家有一套流程化的体系,在面试算法的时候,是一个依次递进的过程,不要给自己挖坑,相反,更要将自己的优势发挥的淋漓尽致,把自己会的东西全部释放出来。
下面我将自己的所有面试串联起来,给大家分享一下,仅供参考。
面试官:小张同学,你好,看了你的简历,对相关算法还是略懂一些,下面开始我们的面试,有这么一个场景,在一个样本集中,其中有100个样本属于A,9900个样本属于B,我想用决策树算法来实现对AB样本进行区分,这时会遇到什么问题:
小张:欠拟合现象,因为在这个样本集中,AB样本属于严重失衡状态,在建立决策树算法的过程中,模型会更多的偏倚到B样本的性质,对A样本的性质训练较差,不能很好的反映样本集的特征。
面试官:看你决策树应该掌握的不错,你说一下自己对于决策树算法的理解?
小张:决策树算法,无论是哪种,其目的都是为了让模型的不确定性降低的越快越好,基于其评价指标的不同,主要是ID3算法,C4.5算法和CART算法,其中ID3算法的评价指标是信息增益,C4.5算法的评价指标是信息增益率,CART算法的评价指标是基尼系数。
面试官:信息增益,好的,这里面有一个信息论的概念,你应该知道的吧,叙述一下
小张:香农熵,随机变量不确定性的度量。利用ID3算法,每一次对决策树进行分叉选取属性的时候,我们会选取信息增益最高的属性来作为分裂属性,只有这样,决策树的不纯度才会降低的越快。
面试官:OK,你也知道,在决策树无限分叉的过程中,会出现一种现象,叫过拟合,和上面说过的欠拟合是不一样的,你说一下过拟合出现的原因以及我们用什么方法来防止过拟合的产生?
小张:对训练数据预测效果很好,但是测试数据预测效果较差,则称出现了过拟合现象。对于过拟合现象产生的原因,有以下几个方面,第一:在决策树构建的过程中,对决策树的生长没有进行合理的限制(剪枝);第二:在建模过程中使用了较多的输出变量,变量较多也容易产生过拟合;第三:样本中有一些噪声数据,噪声数据对决策树的构建的干扰很多,没有对噪声数据进行有效的剔除。对于过拟合现象的预防措施,有以下一些方法,第一:选择合理的参数进行剪枝,可以分为预剪枝后剪枝,我们一般用后剪枝的方法来做;第二:K-folds交叉验证,将训练集分为K份,然后进行K次的交叉验证,每次使用K-1份作为训练样本数据集,另外的一份作为测试集合;第三:减少特征,计算每一个特征和响应变量的相关性,常见的为皮尔逊相关系数,将相关性较小的变量剔除,当然还有一些其他的方法来进行特征筛选,比如基于决策树的特征筛选,通过正则化的方式来进行特征选取等。
面试官:你刚刚前面有提到预剪枝和后剪枝,当然预剪枝就是在决策树生成初期就已经设置了决策树的参数,后剪枝是在决策树完全建立之后再返回去对决策树进行剪枝,你能否说一下剪枝过程中可以参考的某些参数?
小张:剪枝分为预剪枝和后剪枝,参数有很多,在R和Python中都有专门的参数来进行设置,下面我以Python中的参数来进行叙述,max_depth(树的高度),min_samples_split(叶子结点的数目),max_leaf_nodes(最大叶子节点数),min_impurity_split(限制不纯度),当然R语言里面的rpart包也可以很好的处理这个问题。
面试官:对了,你刚刚还说到了用决策树来进行特征的筛选,现在我们就以ID3算法为例,来说一下决策树算法对特征的筛选?
小张:对于离散变量,计算每一个变量的信息增益,选择信息增益最大的属性来作为结点的分裂属性;对于连续变量,首先将变量的值进行升序排列,每对相邻值的中点作为可能的分离点,对于每一个划分,选择具有最小期望信息要求的点作为分裂点,来进行后续的决策数的分裂。
面试官:你刚刚还说到了正则化,确实可以对过拟合现象来进行很好的调整,基于你自己的理解,来说一下正则化?
小张:这一块的知识掌握的不是很好,我简单说一下自己对这一块的了解。以二维情况为例,在L1正则化中,惩罚项是绝对值之和,因此在坐标轴上会出现一个矩形,但是L2正则化的惩罚项是圆形,因此在L1正则化中增大了系数为0的机会,这样具有稀疏解的特性,在L2正则化中,由于系数为0的机率大大减小,因此不具有稀疏解的特性。但是L1没有选到的特性不代表不重要,因此L1和L2正则化要结合起来使用。
面试官:还可以吧!正则化就是在目标函数后面加上了惩罚项,你也可以将后面的惩罚项理解为范数。分类算法有很多,逻辑回归算法也是我们经常用到的算法,刚刚主要讨论的是决策树算法,现在我们简单聊一下不同分类算法之间的区别吧!讨论一下决策树算法和逻辑回归算法之间的区别?
小张:分为以下几个方面:第一,逻辑回归着眼于对整体数据的拟合,在整体结构上优于决策树;但是决策树采用分割的方法,深入到数据内部,对局部结构的分析是优于逻辑回归;第二,逻辑回归对线性问题把握较好,因此我们在建立分类算法的时候也是优先选择逻辑回归算法,决策树对非线性问题的把握较好;第三,从本质来考虑,决策树算法假设每一次决策边界都是和特征相互平行或垂直的,因此会将特征空间划分为矩形,因而决策树会产生复杂的方程式,这样会造成过拟合现象;逻辑回归只是一条平滑的边界曲线,不容易出现过拟合现象。
面试官: 下面呢我们来聊一下模型的评估,算法进行模型评估的过程中,常用的一些指标都有哪些,精度啊?召回率啊?ROC曲线啊?这些指标的具体含义是什么?
小张:精度(precision),精确性的度量,表示标记为正例的元组占实际为正例的比例;召回率(recall),完全性的度量,表示为实际为正例的元组被正确标记的比例;ROC 曲线的横坐标为假阳性,纵坐标为真阳性,值越大,表示分类效果越好。
(to be honest,这个问题第一次我跪了,虽然说是记忆一下肯定没问题,但是当时面试的那个时候大脑是一片空白)
面试官:聚类分析你懂得的吧!在我们一些分析中,它也是我们经常用到的一类算法,下面你介绍一下K-means算法吧!
小张:对于K-means算法,可以分为以下几个步骤:第一,从数据点中随机抽取K个数据点作为初始的聚类中心;第二:计算每个点到这K个中心点的距离,并把每个点分到距离其最近的中心中去;第三:求取各个类的均值,将这些均值作为新的类中心;第四:重复进行步骤二三过程,直至算法结束,算法结束有两种,一种是迭代的次数达到要求,一种是达到了某种精度。
后记
面试的水很深,在数据分析技术面的时候问到的东西当然远远不止这些,因此在我们的脑子里面一定要形成一个完整的体系,无论是对某一门编程语言,还是对数据挖掘算法,在工作中都需要形成你的闭环,在面试中更是需要你形成闭环,如何更完美的包装自己,自己好好总结吧!
附录
R语言数据处理体系:数据简单预处理个人总结
1、数据简单查看
⑴查看数据的维度:dim
⑵查看数据的属性:colnames
⑶查看数据类型:str
注:有一些算法,比如说组合算法,要求分类变量为因子型变量;层次聚类,要求是一个距离矩阵,可以通过str函数进行查看
⑷查看前几行数据:head
注:可以初步观察数据是不是有量纲的差异,会后续的分析做准备
⑸查看因子型变量的占比情况:table/prop.table
注:可以为后续数据抽样做准备,看是否产生类不平衡的问题
2、数据缺失值处理
⑴summary函数进行简单的查看
⑵利用mice和VIM包查看数据缺失值情况,代表性函数: md.pattern、aggr
⑶caret包中的preProcess函数,可以进行缺失值的插补工作,有knn、袋装、中位数方法
⑷missForest包中的missForest函数,可以用随机森林的方法进行插补
⑸可以用回归分析的方法完成缺失值插补工作
⑹如果样本量很多,缺失的数据很少,可以选择直接剔除的方法
3、数据异常值处理
⑴summary函数进行简单的查看,比如:最大值、最小值等
⑵boxplot函数绘制箱线图
4、数据抽样
⑴sample函数进行随机抽样
⑵caret包中的createDataPartition()函数对训练样本和测试样本进行等比例抽样
⑶caret包中的createFold函数根据某一个指标进行等比例抽样
⑷DMwR包中SMOTE函数可以解决处理不平衡分类问题
注:比如决策树算法中,如果样本严重不平衡,那么模型会出现欠拟合现象
5、变量的多重共线性处理
⑴结合业务,先删除那些和分析无关的指标
⑵corrgram包的corrgram函数查看相关系数矩阵
⑶caret包中的findCorrelation函数查看多重共线性
⑷如果相关性太大,可以考虑删除变量;如果变量比较重要,可以考虑主成分/因子分析进行降维处理

7. SQL数据分析面试题

 1、现有交易数据表user_goods_table,
                                           老板想知道每个用户购买的外卖品类偏好分布,并找出每个用户购买最多的外卖品类是哪个。
   2、现有交易数据表user_sales_table,
                                           老板想知道支付金额在前20%的用户。
   3、现有用户登录表user_login_table,
                                           老板想知道连续7天都登录平台的重要用户。
   4、给定一张用户签到表user_attendence,表中包含三个字段,分别是用户ID:【user_id】,日期:【date】,是否签到:【is_sign_in】,0否1是。
   4-1、计算截至当前(假设当前时间为2020-04-27),每个用户已经连续签到的天数:
   要求输出用户ID【user_id】和连续签到天数【recent_continuous_days】
   4-2、计算有史以来 用户最大连续签到天数 :
   要求输出用户ID【user_id】和最大连续签到天数

SQL数据分析面试题

8. 数据分析师面试经验

 数据分析师面试经验
                      经常被问到一个问题,数据分析师或者数据挖掘工程师面试都问什么问题啊?特别是以下几类人群:
    
    1、想转行做数据分析工作的朋友。
    2、之前在比较小的公司做数据分析师,去大公司面试。
    3、在校大学生。
    在回答这些问题之前,先谈我的一个面试经历,记得之前我在一家小公司做数据分析师的时候,有朋友推荐我去一家大公司去面试数据分析师。当时我也在想,在面试大公司的数据分析师一定会问:
    1、你做过哪些模型?
    2、用什么工具做的啊?
    3、你会或者知道哪些算法啊?
    4、数据量有多大?
    .......
    但是当我去沟通下来的时候,问关于数据挖掘模型算法原理、使用什么工具的东西不多。更多是问一些关于项目背景、怎么思考这些项目、如何使用这些模型结果、怎么推动业务方去使用数据结果。【坦白说当时觉得不可思议,怎么问这些问题呢?】
    所以大家在面试数据分析岗位的时候,基础知识是必须的。但是更多要关注数据实现数据价值,特别是从事一段时间数据分析同学,但如果仅仅是刚准备从事数据分析同学,基础的专业知识与技能肯定是面试必问的话题。如果这家公司希望未来培养或者招的真的做数据分析的,那就会像我面试碰到的,一定也会很关注面试之外的问题。
    回到具体面试的问题,PS:这里我仅仅谈谈我的几点看法和我面试中会问到的几个问题,以及我为什么会为这些问题。
    一、了解你面试岗位的工作性质
    1、你对于你面试岗位价值的理解。
    2、你觉得这个岗位大概的工作内容。
    3、对于公司的理解。
    二、沟通表达/逻辑思维
    1、说一下你过往做的一些项目/说说你以前的工作经历。
    2、你之前做过的一些专业分析。
    3、你之前做过的模型。
    4、之前是如何与业务方打交道的。
    三、对于数据与商业的理解
    1、如何理解数据敏感性?
    2、你觉得数据怎么体现其商业价值?能否举个例子。
    四、专业技能
    1、基础的统计学知识。
    2、数据挖掘基本的算法。
    3、怎么评估模型好坏。
    4、使用的工具。
    5、数据挖掘流程。
    6、怎么清洗变量【例如:指标定义、缺失值处理】。
    7、怎么解决建模中会碰到一些技术问题【例如:共线性、不同模型针对的.数据类型】。
    五、学习能力
    1、是怎么学习专业知识。
    2、怎么学习业务知识。
    六、职业发展
    1、未来3年的职业规划。
    2、要实现这些规划计划是怎么样。
    我把面试过程可以会问几类问题,不同的面试官可以侧重点不一样。我想和所有面试数据分析师的朋友说的:
    1、面试过程中大家是平等的。不要太弱势也不要太强势。
    2、把你之前的工作有条理的表达出来。
    3、面试一些问题的时候,可以想一想。我个人觉得,并不是所有的问题必须别人一问完,立即回答。
    4、把面试当作一种学习与经历。关键是从一些面试中你能发现自己不足。
    另外一些小tips:
    1、面试之前了解这个岗位。了解一下这个公司。花点时间在面试公司和岗位,了解了解人家公司是干什么,如果你对这家公司特别感兴趣,去网站上看看,去体验体验人家公司的产品和服务。会让面试的人感觉到尊重。当然太贵就算了。
    2、如果有认识的人或者通过一些渠道先了解一下你面试的公司,部门情况到底是怎么样的。到底要招什么样的人。
    3、很多企业的招聘与实际需要的人之间有很大的出入。
    4、投递简历前:花点时间在简历上:要看到一份没有错别字且能把之前工作写清楚在一张纸上真的很少。
    5、机会是留给有准备的人。你准备好了吗?每次面试结束看,看看自己的不足,然后一定立即去学起来。
    
  ;