校招 未知部门 / 数据 / 一面
[面试日期] 2023-03-21 [面试时长] 未知
[学校背景] 北京邮电大学 | 211 [学历背景] 未知
[发布人] 面试之星官方收录
<h2>日常实习面经:滴滴-数据科学</h2>
<p><strong>TimeLine</strong><span>:一面</span>20211109</p><p><strong>当时的BG</strong><span>:北邮本硕,管理类专业,一段实习经历:美团商业分析师</span></p><p><strong>写在前面的话</strong><span>:该文档记录</span><strong>日常实习</strong><span>面试的相关问题,面试时间为</span><strong>2021年</strong><span>。以下问题的答案可能存在错误,敬请读者批评指正</span></p><p><span></span></p><h1><span>一面</span></h1><p><strong>1. 数据库种类有哪些?分别举例说明一下?</strong></p><p><span>1)关系型数据库:</span><em>Oracle</em><span>,</span><em>Microsoft SQL Server</em><span>,</span><em>MySQL</em></p><p><span>2)非关系型数据库:</span><em>HBase</em></p><p><strong>2. 简要介绍一下</strong><strong><em>Hive</em></strong></p><p><span>先介绍</span><em>Hadoop</em><span>,</span><em>Hadoop</em><span>是一整套大数据生态系统,主要包括:</span></p><p><span>1)</span><em>HDFS</em><span>:海量数据的存储</span></p><p><span>2)</span><em>MapReduce</em><span>:海量数据的分析和计算</span></p><p><span>3)</span><em>Yarn</em><span>:资源管理和作业调度</span></p><p><span>其中,</span><em>MapReduce</em><span>本质上是一类分布式计算框架,底层由</span><em>Java</em><span>写成,在实现海量数据的分析和计算上具有一定的开发难度,</span><em>Hive</em><span>应运而生。</span><em>Hive</em><span>是基于</span><em>Hadoop</em><span>的数据仓库工具,可以将结构化的数据文件映射成一张类似关系型数据库的数据表,提供了类似</span><em>SQL</em><span>(通常称其为</span><em>HQL</em><span>)的查询功能,简言之,</span><strong><em>Hive</em></strong><strong>是一个将</strong><strong><em>SQL任务</em></strong><strong>转换为</strong><strong><em>MR</em></strong><strong>任务的工具</strong></p><p><strong>3. SQL中的join有几种?</strong></p><p><strong></strong><img src="https://uploadfiles.nowcoder.com/images/20230321/639963375_1679400178348/D2B5CA33BD970F64A6301FA75AE2EB22"></p><p><strong>4. SQL中如何实现分组排序?</strong></p><pre>
row_number() over(partition by ... order by ...)
rank() over(partition by ... order by ...)
dense_rank() over(partition by ... order by ...)
</pre><p><strong>5. SQL考察</strong></p><p>数据表:用户表user_profile,字段有:user_id<span> '用户id',</span>login_date<span> 登陆时间'</span></p><p><strong>找出连续登录时间最长的用户</strong></p><pre>
with a as
(
select user_id, login_date,
row_number() over(partition by user_id order by login_date ASC) as rn
from user_profile
),
with b as
(
select user_id, date_sub(login_date, rn) as login_start
from a
),
with c as
(
select user_id, login_start, count(login_start)as continuous_days
from b
group by user_id, login_start
)
select user_id
from c
group by user_id
having continuous_days = max(continuous_days)
</pre><p><strong>6. 缺失值处理的方式?</strong></p><p>1)缺失比例过高直接舍弃</p><p>2)均值/众数/中位数填充</p><p>3)插值法填充(e.g.牛顿插值法)</p><p>4)机器学习算法填充(以想要填充的列为<em>label</em>,其他数据列为<em>features</em>)</p><p><strong>7. 离散化特征转为连续性特征的方法?</strong></p><p>1)顺序型特征有先后顺序,直接作数值变换</p><p>2)名义型特征没先后顺序,作<em>one-hot</em>或<em>dummy</em>变换</p><p><strong>8. 数据集不均衡的解决方法?</strong></p><p><span>1)采用</span><em>ROC</em><span>曲线下</span><em>AUC</em><span>作为分类判定标准,该指标不会受到样本集分布不均衡的影响</span></p><p>2)过采样和欠采样(基于数据的方法)</p><p>过采样,即增加少数类样本集的样本量,如<em>SMOTE</em>算法、<em>Tomek Links</em>算法等</p><p>欠采样,即减少多数类样本集的样本量,如<em>Easy Ensemble</em>算法、<em>NearMiss</em>算法等</p><p>3)调整正负样本的权重惩罚(基于算法的方法)</p><p>改变模型训练时的目标函数,对少数类样本分类赋高权重,多数类样本分类赋低权重</p><p>4)转化为单类学习、异常检测(基于算法的方法)</p><p><span>注:从第9题开始,其后问题的答案均可在《百面机器学习》这本书中得到,十分推荐大家阅读一下这本书</span></p><p><strong>9. 是否了解集成学习?简要介绍一下思想?</strong></p><p><span>注:回答围绕</span><em>bagging</em><span>和</span><em>boosting</em><span>即可,并举例说明</span></p><p>1)<em>bagging</em>:随机森林<em>RF</em></p><p>2)<em>boosting</em>:<em>GBDT</em>/<em>XGBOOST</em>/<em>LightGBM</em></p><p><strong>10. 偏差和方差的概念?和</strong><strong><em>bagging、boosting</em></strong><strong>有什么关系?</strong></p><p>1)偏差<em>bias</em>:模型输出值与真实结果的偏离程度,<em>boosting</em>能有效改善这一点</p><p>2)方差<em>variance</em>:模型输出值与模型输出值均值的平方差,<em>bagging</em>能有效改善这一点</p><p><strong>此处有追问:为什么</strong><strong><em>bagging</em></strong><strong>能够改善方差?</strong><strong><em>boosting</em></strong><strong>能够改善偏差?</strong></p><p><strong>针对“为什么</strong><strong><em>bagging</em></strong><strong>能够改善方差?”</strong></p><p><em>bagging</em>是对样本集做重采样,对重采样后的样本集训练模型,对多个模型的输出取平均。由于重采样后子样本集的相似性,所以各模型具有相似的偏差和方差,因此不会显著降低偏差。下面详细讲解<em>bagging</em>能改善方差的原因:</p><p>假设各模型间相互独立,则有</p><p><img src="https://uploadfiles.nowcoder.com/images/20230321/639963375_1679400787965/D2B5CA33BD970F64A6301FA75AE2EB22"></p><p>若各模型完全相同,则有</p><p><img src="https://uploadfiles.nowcoder.com/images/20230321/639963375_1679400806322/D2B5CA33BD970F64A6301FA75AE2EB22"></p><p><em>bagging</em>方法得到的各模型间是有相关性的,因此模型输出均值的方差区间为</p><p><img src="https://uploadfiles.nowcoder.com/images/20230321/639963375_1679400894158/D2B5CA33BD970F64A6301FA75AE2EB22"></p><p><strong>针对“</strong><strong><em>boosting</em></strong><strong>能够改善偏差?”</strong></p><p><em>boosting</em>本质上是前向加法模型,从优化角度来看,就是不断通过迭代的方式最小化损失函数</p><p><img src="https://uploadfiles.nowcoder.com/images/20230321/639963375_1679400946039/D2B5CA33BD970F64A6301FA75AE2EB22"></p><p>其偏差自然是下降的。但这种sequential、adptive的策略使得模型之间的相关性很强,所以<em>boosting</em>本质上不会降低方差</p><a>#日常实习#</a><a>#数据分析#</a><a>#滴滴#</a>
AI 推荐面试题
