校招 未知部门 / 算法 / 一面/二面

[面试日期] 2023-08-15 [面试时长] 未知
[学校背景] 中国科学院大学 | 双非 [学历背景] 未知
[发布人] 面试之星官方收录
<h2>滴滴-提前批-自动驾驶-机器学习平台工程师一二面凉经</h2> <p>Timeline: 8.1投递,8.9打了个电话说明天空出个面试名额让我一次面完。基本上是面完十分钟出结果,二面算法题没做出来秒挂,只能说效率真的高。</p><h1>8.10一面</h1><ul><li>自我介绍</li><li>选择一个项目去介绍</li><li>项目拷打</li><li>出于什么考虑去选择日志系统,有没有什么其他的方案,为什么不选择其他的方案</li><li>选型后做了哪些优化</li><li>grafana+loki原理</li><blockquote><li>日志收集器promtail原理 以守护进程方式运行在每个node上监听指定目录下的文件创建和删除对活跃的日志文件,分配打标签后推送给loki</li><li>loki架构:Distributor分发器,Ingrester接收器,Querier查询器,读写分离分发器</li><li>Distributor原理 根据元数据和一致性哈希算法,将日志分批并行发送到多个ingrester接收器上接收器</li><li>Ingrester原理 Ingrester是一个有状态的组件,负责构建和刷新chunk,当chunk达到一定的数量或时间后刷新到存储中去。loki以chunk的方式压缩并存储日志,并使用对应的Index索引将chunk存储在数据库中</li><li>Querier原理:可以从数据库中查看index索引,确定哪些chunk块匹配,也可以直接从ingrester中获取chunk </li></blockquote><li>数据库索引的底层结构</li></ul><blockquote><p> 在mysql中,索引是使用B+树实现的。B+树是一种多路平衡树,它只在叶子节点存放数据,在非叶子节点存放索引,因此它的搜索效率是比较稳定的,相对来说也可以更加矮胖,减少I/O次数。B+树的叶子节点中存在双向链表,有利于范围查询。此外,B+树中的非叶子节点中存在着许多冗余节点,这能让B+树在插入删除时保证结构稳定,效率更高</p></blockquote><ul><li>聚簇索引和非聚簇索引</li><blockquote><li>聚簇索引也就是主键索引,它的叶子节点存放数据,通过索引能够直接获得所有的数据。非聚簇索引也就是二级索引,它的叶子结点上存放着主键索引,需要通过回表根据主键索引再次查询才能获得数据。</li></blockquote><li>索引的优缺点,建立和使用索引的规则</li><blockquote><li>索引的优点是,它可以加快数据的查询速度,其缺点是创建和维护索引需要耗费时间,保存索引也需要耗费空间,且使用索引时,需要根据一定的规则去建立使用,否则查询没有走索引的时候,会造成查询速度减慢。</li><li>在建立索引的时候,一般最好在频繁使用where,order by,group by查询的列上建立索引,且这些列上不能用NULL值,也最好不要在频繁变动的字段上建立索引。建立索引的时候,最好建立覆盖索引,减少回表次数,对多字段的查询最好能建立联合索引,字符串类的索引最好建立前缀索引。</li><li>在使用索引的时候,要注意查询的时候符合最左匹配原则,比如模糊查询不要模糊最左的字段,不在索引列上进行计算、函数等操作,查询条件使用or时两个列都要用到索引。</li></blockquote><li>项目里提到了k8s,介绍一下k8s</li><blockquote><li>k8s是一个开源的容器编排平台,可以自动完成部署、管理和拓展容器化应用。使用k8s可以跨主机编排容器,更充分利用硬件资源,控制和自动化应用的部署和更新并且动态拓展应用与资源。</li></blockquote><li>算法题:二叉树的最近公共祖先</li></ul><h1>面完半小时后 二面</h1><ul><li>自我介绍,面试官介绍部门业务介绍了十分钟</li><li>项目介绍,相同的拷打方式,问是怎么优化,怎么debug的</li><li>算法</li><li>斜向打印数组,比如</li></ul><pre> [1,2,3,4] [5,6,7,8] [9,10,11,12] 打印成 [1] [2,5] [3,4,9] [4,7,10] [8,11] [12] </pre><ul><li>寻找谷值(寻找峰值的变体,二分法,做法忘记了没做出来)</li></ul>
AI 推荐面试题