10 篇校招 / 社招面经请你查收~
目前各大公司的校招已经启动,相信很多小伙伴有和我当年一样的困扰。国内高校开辟大数据相关专业正好一个毕业季过去了,那么作为一个科班出身的学生,该怎么准备校招呢?
本文是在和读者交流的过程中,在网络上搜集到的一些面试资源,只要自己掌握方法并且准备充分,其实很容易在面试中脱颖而出。
其实当时的我也非常发愁,觉得自己什么都不会,又不知道该准备些什么,走了不少弯路。在收集面试资源的同时,也发现同样作为 95 后,现在的学生面试的眼界和能力都比 2-3 年前强出很多,但是基础知识会稍微差一些。大概也是因为网上太多的这个实战、那个实战内容太多了,反而基础知识准备不充分。
小米/字节/阿里
Hadoop
1.介绍下 Hadoop(字节.好未来)
2.mapreduce 处理流程/shuffle 过程(阿里.好未来.网易)
3.Yarn 是怎么工作的(小米)
4.mapreduce 和 hdfs 是一体的吗,有什么关系(阿里)
5.数据倾斜是如何产生的及解决方案(阿里.字节.小米.网易.好未来)
6.mapreduce 有几种 join(字节)
7.Hadoop 的 HA
Hive
1.内部表和外部表的区别(字节.好未来)
2.数据仓库的分层(小米.好未来.网易)
3.星型模型和雪花模型的选择(字节.好未来)
4.数据仓库和传统数据库的区别(好多都问了)
5.接上问,维度冗余及三范式(字节.好未来)
6.hive 数据存储格式.压缩格式,区别(好未来)
7.HQL 执行慢是怎么解决的(字节.阿里.小米)
Spark
1.job.stage.task 的关系(小米)
2.spark 任务提交过程(阿里.小米)
3.spark 常见算子(小米)
4.spark shuffle 和 mr shuffle 的区别及优化
5.spark 容错机制(阿里)
6.sparkSQL 的几种 join 实现
7.介绍下 sparkstreaming
8.spark RDD 的理解
Flink
1.spark streaming 和 flink 的比较(小米)
2.flink 的状态(小米)
3.flink 的容错机制.状态一致性(阿里)
4.讲述一致性检查点的实现——分布式快照(阿里)
5.flink 的 watermark.窗口机制.时间(小米)
6.flink 的运行构架
Mysql
1.索引相关,b+tree(阿里)
2.建立索引的考虑因素(使用频率.联合索引.索引顺序)
3.聚簇索引.覆盖索引与回表查询
4.索引失效的情况,如何知道索引是否被用到
5.什么是事务,事务并发带来的问题(脏读.不可重复读.幻读)
6.ACID.隔离级别
Kafka
1.kafka 的文件存储机制
2.kafka 的可靠性保障 1)生产者往 broker 发送消息(副本数据同步策略.ISR.ACK) 2)topic 分区副本 3)leader 选举
3.kafka 一致性保障
4.如何保障数据有序性
5.kafka 和传统消息队列的区别
Redis
1.redis 的优缺点
2.redis 的数据类型
3.为什么 redis 效率高
4.redis 主从复制过程
5.AOF.RDB 的优缺点.适用场景
6.redis 的过期淘汰策略
7.缓存雪崩.缓存击穿及如何解决
Flink CDC我吃定了耶稣也留不住他!| Flink CDC线上问题小盘点
Java 基础
这个写起来就太多了,基本包含了 Java 的基础知识、JVM、多线程等等。
开放型问题
1.谈谈对大数据处理思想的理解(可以围绕分而治之、计算向数据移动展开)
2.谈谈对大数据体系演变的理解(阿里)
3.你觉得未来大数据体系的变化可能是怎样的(阿里)
4.如果你的抖音突然卡住了,会是因为什么(字节)
算法
笔者不是算法大神,剑指 offer 刷过两遍,整体回顾过四五次,建议每次面试前将 j 剑指 offer 链表、二叉树、栈和队列、动态规划、递归及回溯 的题目都分块回顾一次,链表的题一般用虚拟头结点、步长差解决。
二叉树的题目一般要么和遍历有关,借助栈和队列,比如镜像和对称二叉树、求深度、之字形打印...都相当于在遍历中加入判断条件;要么用递归及回溯思想解决,比如树的子结构,最低公共祖先、和为某值的路径等题目。
动态规划思想我认为是维护一个状态,关注点就在目前状态和新进来的数据上面,然后进行比较和状态更新,需要多练习找感觉。
另外排序算法也要熟悉,冒泡啥的不说了,快速排序、归并排序也要可以直接写出来。算法练习过程中注意思考多种方法解题,字节面试中有遇到追问第二种方法解决问题。
字节
一面
维度建模 :确认主题、确认粒度、确认度量、确认事实表、确认维度表
Hive shuffle 和 spark shuffle 的区别
Spark 为什么快?Spark 任务是怎么执行的
转化率如何计算
缓慢变化维怎么处理
Flink 状态
Flink 窗口
Flink 广播流
二面
Hive count(distinct)有几个 reduce 海量数据会有什么问题
Spark 优化
Flink 精确一致怎么保证
Flink 实时 topN
Flink 写入 redis 怎么保证精确一致
Spark hive 用过的解决数据倾斜的方案
事实表分类
累积型快照事实表做法
三面
Hdfs 读数据流程 源码级别(要回答出来 rpc)
Hdfs 写数据流程 源码级别(要回答出来 rpc)
Mapreduce shffule 原理 源码级别(要回答出来锁 多线程 以及缓存写磁盘交换)
数仓为什么要分层
实时比起来离线 要注意啥
特征挖掘是怎么做的?怎么管理的
Shopee
一面
自我介绍(要求重点介绍项目)
怼项目(重点在于 Hadoop 相关部分)
Hadoop 相关问题的延伸(HDFS 写数据流程,要求越详细越好)
如果要实现一个 HashMap 怎么做,算法复杂度多少
手撸快排。(有思路没撸出来)
面试要求尽可能的说出细节,但是我只能大概说出来一些设计原则
由于实习的时候用过 clickhouse(其实就当关系数据库存储了一下数据),所以面试官让我讲讲 clickhouse,我给小姐姐说明我只是当数据库用的之后,她就只让我说了 clickhouse 有哪些特点?
对 java 熟悉吧?JVM 的内存结构?
volatile 关键字的作用?
说说 MySQL 的索引?b 树与 b+树的区别?
Redis 的应用场景有哪些?Redis 支持的数据结构?
40 亿条数据,内存只有 10G,如何确定一个数是否存在于这 40 亿的数字里面?
Spark 的作业运行流程是怎么样的?
Spark 处理数据倾斜的方法?
Kafka 作为消息队列,它可解决什么样的问题?
Hive 的文件存储格式都有哪些?
HQL:行转列、列转行
HQL:一张表字段有 id,name,date,其中 id 有重复,问如何拿到最新的 date 对应的 id 的 name?
ZooKeeper 如何实现分布式锁?
了解 Linux 吧?如何查看占用 CPU 最高的进程?
算法题:用栈实现一个队列,提供入队、出队方法?
二面
namenode 的主要职责,元数据的形式
介绍 namenode 宕机的恢复过程
namenode 启动时 datanode 向 namenode 的心跳报告内容
block 划分的原因
HDFS 写数据流程
一个多线程代码,判断是否会跳出线程。(主要考察线程中对类静态成员变量的访问)
linux bash,一行命令,输出文件中某关键字的出现的行数
三面
一个线程生成 key-value 对,另外一个线程合并相同的 key 对 value 求和
SQL 语句,合并表里相同人姓名的成绩求和
最后 linux bash 脚本求去除表头后第二列值的和
sql:用户连续登录问题
sql:求平均成绩大于 80,且 0001 课程分数高于 0002 课程分数的学生 id
数据倾斜问题
jvm 内存中,堆和栈的区别?
Objects 类中的通用方法?其中 hashCode 方法的返回值是什么?
如何创建一个线程?使用线程设置堆大小?
jvm 垃圾回收机制?
算法:二叉树的镜像
内存只有 256M,有两个 10G 的文件,从这两个文件中找出相同的数字?(只说思路)
大概就是这些啦,后边要是想起来其他的,会来更。
腾讯
一面
自我介绍
在工作中负责的内容
数仓分层
Spark 任务遇见过哪些问题?怎么解决的
维表和事实表
事实表有哪些种类
项目组有哪些人,什么指责
有多少张表,是怎么管理的
sql 题
join 时 on 和 where 语法
用户连续打卡天数
二面
主题是怎么划分的,从那一层开始,为什么
维表和事实表
事实表有哪些种类
数据质量是怎么保证的,有哪些方法保证
怎么衡量数仓的数据质量,有哪些指标
离线任务遇见过哪些问题,怎么处理的,如数据迟到、数据重复
怎么保证数据的一致性
数据仓库和数据中台区别
数据仓库中有哪几类数据建模
对于缓慢变化的数据,在数据仓库中是如何处理的
如何建立用户画像指标的,如何维护
如何实施数据清洗的?从哪些方面着手
如若提供出去的指标有问题,如何解决和定位
美团
一面
1 自我介绍
2 介绍一下数学建模竞赛,做了什么、遇到什么问题、怎么解决的
3 做了几道 SQL 题
4 常用的操作系统命令
5 io 占用很高怎么解决
6 MySQL 索引
7 mapreduce 原理
8 说说 shuffle
9 数据倾斜了解吗,怎么优化
10 项目相关,数据为什么存到 mongodb
11 hive 了解吗
面试官人很好,建议我找点数据跑一下
二面
1 项目说说你具体做了什么
2 Java 实现一个 word count
3 改进一下写的代码
4 聊聊 spark,spark 你做过什么
5 项目里 spark streaming 用哪一个层面的接口,RDD,dataframe,dataset
6 说一下 spark 的 DAG
7 spark 的懒加载机制
8 hive 常见的调优方法
9 分区分桶的逻辑
9 网络七层协议,通过每一层解决什么问题
10 Linux 常见命令
11 shell 写过什么东西
12 shell 中管道的概念怎么理解
13 常见数据结构有哪些,怎么理解 B 树和 B+树
14 MYSQL 插入一条数据,索引的变化
15 敲键盘,屏幕显示对应的数据,这个过程计算机做了什么
16 字符集编码解码的原理
17 六个人围成一个圆桌就餐有多少种就坐方式?每个人点一道菜,一共有四种菜系,有多少种点法
三面
1 自我介绍
2 本科研究生学过什么计算机的知识
3 操作系统文件系统介绍一下
4 说说你擅长的吧,展开说说 Hadoop,hive,hbase
5 Hadoop 你搭建过吗,怎么搭建的详细说说
6 zookeeper 搭建要配置什么
7 最近做过大数据的相关东西吗,说说你的项目
8 详细说说你建的什么表,rowkey 是怎么设计的
9 HBASE 适合解决什么问题
10 MySQL 适合做什么,你对 MySQL 了解多少,说说建过的表
11 为什么项目里不把 MySQL 存的数据不存到 HBASE
12 你用 MySQL 解决过什么实际问题
13 讲讲 Java 关键的语法特性
14 hashmap 的 key 和 value 对于存储的实例有什么要求
15 用原始的数据类型实现一个 list
网易
一面
1.自我介绍(3 分钟)
2.介绍 ETL 开发项目(15 分钟)
3.为什么数据存入 hdfs 还要再倒入 NoSql,为什么 hdfs 对 olap 支持不友好。
4.spark 任务执行全过程。
5.mapReduce 对比 spark
6.linux 操作命令(没答上来,表示没用到过)
7.统计学中 p 值的意义,中位数的意义,和均值对比,使用场景
8.业务题:1.网易云课堂突然订阅量下降,怎么定位分析原因 2.在各个平台投放简历,怎么评估效果。
二面
1.自我介绍(3 分钟)
2.介绍 ETL 开发项目(15 分钟)
3.介绍数据仓库开发,数据迁移项目(10 分钟)
4.介绍机器学习项目,怎么和大数据开发做的结合(5 分钟)
5.kafka 结构,怎样防止脑裂,为什么最新版本不用 zookeeper 来维护 offset
6.手撕代码,找出数组中第二大的数。
三面
1.自我介绍(3 分钟)
2.介绍 ETL 开发项目(15 分钟)
3.手撕代码:知道二叉树前中序遍历,怎么得到后续遍历,限时 5 分钟
4.业务题: 1.开发统计某 app 用户各功能使用时长,整个流程怎么实现,怎么优化,怎么横向拓展。2.统计评估各个网页的重要性,采取的算法思路,spark 代码实现。(实际就是 Google page rank 算法)
四面
实习做的事
实习公司的技术整体架构
前后端,数据中心算法团队的协同配合
百度
一面
1.项目介绍
2.join 的 left join , inner join, cross join
3.MR
4.冒泡排序
5.维度建模三种模型
6.Awk
7.动态分区静态分区
8.数据倾斜
9.Join 大小表
二面
1.项目介绍(深度挖掘,问到自闭)
2.Sql 取 A、B 两个表的交集,A 表减交集,B 表减交集
3.Sql 成绩排名前三的学生的情况
4.Sql 左连接的情况
5.二叉树查找
6.两个有序链表合并
7.Shell、linux 常用的语句
8.工厂模式
9.mysql 中 myIsam,Innodb 各自区别和使用场景
三面
1.手撕代码:两个有序数组的交集(写的有点错误)
2.动态分区
3.Linux 常用命令
4.Spark 数据倾斜、Spark 血缘等
4万字长文 | ClickHouse基础&实践&调优全视角解析
你好,我是王知无,一个大数据领域的硬核原创作者。
做过后端架构、数据中间件、数据平台 &架构、算法工程化。
专注大数据领域实时动态 &技术提升 &个人成长 &职场进阶,欢迎关注。
版权声明: 本文为 InfoQ 作者【王知无】的原创文章。
原文链接:【http://xie.infoq.cn/article/18df6d1bc421971c9f48d41a4】。文章转载请联系作者。
评论