作者简介
蓝桥签约作者、大数据&Python领域优质创作者。维护多个大数据技术群,帮助大学生就业和初级程序员解决工作难题。
我的使命与愿景:持续稳定输出,赋能中国技术社区蓬勃发展!
目录
1、沟通技巧
1)引导式聊天
2)自信的表达
3)不要暴露缺点
2、充足且针对性的知识储备
1)技术框架部分
2)项目部分
3)算法部分
4)HR部分
3、真实面试案例
真实面试案例(一)
真实面试案例(二)
真实面试案例(三)
很多小伙伴问我说:你拿了那么多大厂的offer,有什么面试套路吗?
我想说的是,面试无非就两点:沟通技巧 充足且针对性的知识储备。
1、沟通技巧
1)引导式聊天
简单来说,就是从自我介绍开始,就蹦出一些技术名词,引导面试官对这些技术知识点进行提问,然后提前准备好答案,回答完上一个问题的时候,扯一嘴其他的技术知识点(很多面试官喜欢打破砂锅问到底,但往往中了你的圈套)。
在面试过程中有很多引导的机会,慢慢体会吧!
2)自信的表达
一个自信的表达,能让整体面试气氛轻松活跃,给面试官好的印象分,面试就像谈恋爱,看感觉的。
3)不要暴露缺点
很多小伙伴(包括当年的我),在面对不会的提问时,不断的去解释,反而会暴露更多问题。这个时候你完全可以说这个不太了解,然后继续后面的回答。相信我,放过几个不会的,不会影响面试结果,因为没有人什么都懂, 你要做的就是:尽可能多的呈现你会的,快速跳过不会的!
2、充足且针对性的知识储备
关于知识储备,我在技术群里咨询了一些大厂的小伙伴的面试经历,分享给大家。
针对这些问题的回答话术,小编会在近期啃下来,作为粉丝福利发布。
1)技术框架部分
(1)会根据面试者简历上的技能点进行考察。注意技能点描述用词,不要随便用熟悉,觉得特别熟的可以说熟练使用
(2)常用的大数据框架是肯定会问的,比如Hive、Spark、Kafka等。常见的如Kafka精准消费问题的多种解决办法对比,Spark的Task调度规则
(3)有些面试官会直接让讲了解的框架最底层实现
(4)Java,MySQL,Redis必问,JVM,Hashmap,JUC相关,MySQL的索引及优化,Redis数据结构、集群、缓存淘汰
(5)常见的协议会考,租约协议,quarum原理,Zookeeper选举,acid,acp,base等
2)项目部分
(1)一般会让你挑你最熟的一个项目讲。考察从项目背景到实现的把控
(2)重点是参与的部分,遇到的难点
(3)常见业务难题的解决和优化,层层递进,头条追求做到极致
(4)没有做过的项目、模块不要乱讲,容易被问懵逼或者被太简单被鄙视
3)算法部分
(1)数据结构必考,手写代码,每一面都会考。常见数组、链表、二叉树、跳表的题。有些部门会先笔试(电脑实际编码运行)再面试
(2)算法部分常见动态规划、概率题、二进制一类
(3)SQL题目,行列转换。分区函数,统计连续登陆天数这一类问题
(4)多刷Leetcode,题都是有套路的
4)HR部分
(1)想好跳槽理由,一般注重抗压能力和稳定性
(2)大厂会有明确的稳定性的要求,如:无连续2段不超过1年的工作经历,当然,一般安排面试的话,就说明稳定性和学历初筛通过了。
3、真实面试案例
真实面试案例(一)
1)技术部分
(1)WordCount的实现过程
(2)MR与Spark的区别
(3)Spark在Client与在集群运行的区别
(3)相同的SQL在HiveSql与SparkSQL的实现中,为什么Spark比Hadoop快
(4)自定义UDF
(5)设计HBase表需要注意的点
(6)HBase的hlog
(7)数据同样存在HDFS,为什么HBase支持在线查询
(8)数据从Hive中用SparkSql进行操作有遇到什么问题?类似兼容性的问题。
(9)SparkStream与Strom,Flink与什么区别
(10)有三个map,一个reduce来做top10,哪种方法最优。数据量特别大。
2)项目的架构
(1)数据仓库的模型设计
(2)数据仓库的数据清洗
(3)业务建模、数据分析方法。
(4)数据仓库是怎么设计的
(5)数仓规范设计哪些方面(字段、维度,存储压缩、数据保留机制)
(6)数仓质量怎么监控(数据质量管理系统,主键唯一、非空、数据波动)
(7)数仓主题分哪些(按照公司业务归类
(8)数仓拉链表的原理
(9)有没有遇到数据倾斜的问题(场景、解决方式)
(10)数仓重点调度任务的保障方式(调度系统优先级)
(11)数仓任务报错和监控(调度系统捕捉错误,电话短信告之值班人员)
真实面试案例(二)
1)笔试部分
(1)有一表名t_sh_mtt_netdisk_log,从表名可以看出该表是什么业务的,是什么周期粒度的表。
(2)怎么查看表结构,表创建语句?怎么查看表有哪些分区?怎么查看分区对应hdfs路径?怎么计算某个分区的数据量大小?怎么计算某个分区的文件总数?
(3)有一hive sql,怎么计算这个sql会产生多少个map数?
(4)怎么查看hive有什么自带函数?怎么查看函数的详细信息?
(5)Hive支持哪些基木数据类型?
(6)请指出下面两个语句读取分区ds数据的不同
Select * from t where ds=20150101 and province='gd' or province='ex'
Select x fromt where ds 20150101 and(province='gd' or province='ex')
(7)将字符串"keyl=valuel&key2=value2...keyn=valuen"进行分割放到一个字段里面,可以查出任意一个keyx对应的valuex值。请写出查询语句,并计算总共有多少个key值。
(8)用一个字符串比如"alblc"来测试某个函数比如split(用|分隔符将字符串进行分割)的语句
(9)a表和b表内连接,a表为小表,只有2000行记录
select a.*from a Join b on a.key=b.key
可以进行怎样的优化
(10)a表left join b表,b表为小衣,可以进行怎样优化?
scleet a.*from a left join Join b ona.key=b.key
如果a为小表,可以怎样优化?
(11)请指出下面sql语句的区别
select a.* from a left Join b on a.key = b.key and a.ds=xxx and b.ds=xxx
sclect a.* from a lef Join b on a.key = b.key and b.ds=xxx
select a.* from a lef Join b on a.key = b.key and b.ds=xxx where a.ds=xxx
Select a.* from a left Join b on a.key = b.key where a.ds=xxx and b.ds=xxx
(12)多表连按的写法:a,.b,c三个表内连接,连接字段都是key,怎样写连接语句?
(13)两大表连接,发生了数据倾斜,有几个reduce无法完成,怎么查找发生数据领斜的原因?应该怎样优化?
语句:select t1.*,nvl(t2.x,1) from t1 left join t2 on t1.guid=t2.guid
(14)两大表连接,发生了数据倾斜。有一个reduce无法完成,检直发现t1中guid="的记录有很多,其他guid都不重复,这条语句该怎样优化?
语句:select t1.*,nvl(t2.x,1) from t1 left join t2 on t1.guid = t2.guid
(15)如何用hive q!实现sqL中的exist/in 子句
mysql语句如下:
SEL ECT a* FROM a where a.key in(select dstinct key from b where key like ‘filter%’)
(16)sort by、distribute by、cluster by 和 order by 区别
注:可参考数据工厂的“帮助中心》集群hive》hive使用优化》hive使用注意事项”
真实面试案例(三)
1)技术部分
(1)我看你上面写了你会Spark,那你用Spark写一下刚刚那道题的代码,不能用Spark SQL
(2)我看你上面有写到熟悉Hive原理和优化,你说一下怎么优化
(3)优化有说到语句优化,然后又说回到pv和uv那个问题,假如说让你优化你怎么优化(我代码里面有count(distinct id) uv,)
(4)问了一些Kafka的,我只记得一点点,问我数据会不会重复消费,什么情况下会重复消费
(5)在Hive执行语句的时候如果很慢,什么原因造成
我有提到数据倾斜的问题,他又问怎么解决数据倾斜
2)项目部分
(1)让你挑一个比较有亮点的项目详细说
(2)你负责了什么,数仓中统计了哪些指标,
(3)刚刚听你说项目里面有提到分层,如果我要你求每天商品的pv,uv,从ods层到dm层它的具体流向,各层都统计了什么(后来让写求pv,uv的sql语句)
3)场景部分
(1)有一个分区表,表名T,字段qq,age,按天分区,让写出创建表的语句
(2)刚刚的分区表,求20200221这个分区中,年龄第N大的qq号列表
4)手写部分
(1)三个字段,timestamp,user_id,product_id,让求pv最大的商品,写了之后又叫用Scala代码写一遍,然后又问,假如说只让你求pv数大于100的top3呢,代码又怎么写