第 2 章 面试说明
2.1 笔试
1) 试题量:一般两页纸,多的有 3 页纸
2) 考题类型:选择和简答,简答居多
选择题:基础知识类型的选择题(编程语言,数据库,操作系统,大数据要点知识,网络, 计算机组成原理等)
简答题:
a. 知识点的详细解释类,比如,MapReduce 的 Shuffle 详细过程
b. 对比之类,Hive 内部表和外部表的区别,MapReduce 和 Spark 的异同?
编程题:算法题(考察逻辑思维,考察解答问题的方式方法等) 数据库类型的 SQL 编写题目(MySQL 或者 Hive)这是必出 题,也是分必拿题。否则就全盘覆 没了。
SQL 题:必有(Hive 和 MySQL)
场景题: 给你假定一种场景,让你给出解决方案,面试问的最多的也是这种 遇到了问题(集群节点宕机,任务运行出错,数据 丢失等),该如何解决?
简单脚本题: 写出一个简单的数据处理脚本,或者运维脚本(会的就自己写,不会的就百度搜,或者求救 于小伙伴)
2.2 面试
2.2.1 人事面试
聊基本情况,聊工作经历,聊人生价值观,聊对工作的态度,聊方方面面,就是不聊技术
请事先准备好针对你个人基本情况的面试题
1、比如你原来在上海,为何 10 月份来北京找工作?
2、比如工作经历中,有 4 个月是不上班的,怎么解释? ..... 更多请咨询专业的就业老师。
2.2.2 手写代码
也就是做题 当然技术面试过程中,也有可能会出现手写代码的问题
经典手写代码:
快速排序和归并排序,冒泡排序(优先级由高到低)
一个设计模式的实现:比如单例,比如代理,比如装饰器
多线程相关,比如两个线程交替执行
java,mapreduce,scala,spark 的 wordcount
画出你的项目的架构图 或者 数据处理流程架构图
2.2.3 技术经理面试
基本只聊技术。
基本套路:
先自我介绍
然后介绍项目
从项目入手
先聊业务
再切入到技术点
问如何实现、项目结构、数据处理流程
问遇到过什么难题,怎么解决的,怎么发现的和怎么避免
问相类似的场景,如何做技术选型
问相类似的突发情况,应该怎么决策快速解决问题
考察广度的同时,也会考察深度
通俗的说,也就是会在不同的方向,不同的领域问各种问题,然后针对你能回答的问题,就 深入探讨,以此得知你对这门技术的掌握程度
所以:
考察广度,就是看你的技术领域分布
考察深度,就是看你你对这个技术掌握程度如何
总体来说:
聊业务
聊技术
聊问题
聊解决方案
....
2.2.4 CTO/技术架构师等面试(如果过了技术经理面试)
到了这种级别的面试,一般考察技术的就少了。
更多的是考察发展,眼光更长远的,考察你的职业生涯规划, 考察你的价值观,考察你是否 符合公司的长期发展战略
能了解公司更多信息,就切合公司实际去描述
如果不了解公司的,那就尽量按照通用套路说
2.3 机试
少数场景会有的。但是不要慌。按照自己的本事来。
有些是现场的,这种很少。有些是给出需求之后让你回来之后自己做。
2.4 面试考察方式
2.4.1 知识广度
编程语言方向
java 是重点(重中之重),其次:scala、python java 中的重点考察方向:
集合(优缺点,底层实现,更好的替代方案,如何根据场景选择和使用)
并发(锁,JMM,各种关键字(volite),技术点,线程池,......)
面向对象
数据库方向
mysql 是重点,其次是 hbase,redis sql 语句的编写和优化就不说了,没有不考查的
Hadoop 体系/Spark 体系
架构原理
工作机制
典型的常见流程
某个功能的详细分析
问题和运维难点
集群规模/集群规划
任务多少
任务运行总时长
每天数据量
总数据量
多少条记录
每条记录多大
每条记录多少个字段 hive 的总表数等等
其他知识:
ElasticSearch
Flink
机器学习
架构
优化
源码
数据结构
算法
2.4.2 知识深度
追根究底的问各种你答的上来的东西的底层实现细节,直到你答不上来为止,或者到他满意 为止
关于 HashMap 的问题:
什么是 HashMap,能否自己实现一个?
什么时候使用 HashMap,有没有替代品?有没有什么好的 hasmap 使用经验?
HashMap 和 HashTable 的区别?优缺点?如何选择在那种场景使用?有没有更好的 map 实现类?
你知道 HashMap 的内部数据结构么?/ put 和 get 操作的原理么?
HashMap 的初始长度和扩容策略是怎样的?(什么时候触发扩容,扩大到多少,扩容的 时候要考虑什么问题?)
HashMap 初始化传入的容量参数的值就是 HashMap 实际分配的空间么?
HashMap 解决 hash 冲突的策略是什么?
HashMap 能同步/线程安全么?怎么做?
了解 HashMap 的条件竞争么?
JDK7 和 JDK8 的 hashmap 一样么?
HashMap 的 key 的 hash 计算规则是怎样的?
HashMap 的 key 有什么要求?为什么最好是 String 或者 Integer 这种类型呢?为什么不要是自定义对象呢?
了解 Hash 攻击么?
了解 ConcurrentHashMap 么?了解他的工作原理么?和 HashMap 相比较,优势在哪里?
2.5 面试过程最关键的是什么?
1) 不是你说了什么,而是你怎么说
2) 大大方方的聊,放松
2.6 面试要点
1) 乐观开朗,不让要人觉得跟你很难交流,要善于交流,善于倾听 别人说的合理的给予赞同和钦佩 别人说的你不赞同的你不要反对,你可以用另外一种方式表现出你的看法和意见,这是讨论 和交流,不是针锋相对
2) 积极向上,所有人都希望融入团队的新人都能给团队增添活力,带给团队乐趣,大家轻松工 作,愉快生活
3) 上进好学,不是说别人一说到不会的,你就说我会去学的,而是要表现出我曾经就是这么学 过来的
4) 有礼貌有情商有智商,不要看起来傻傻的没见过世面一样的,不妄自菲薄,但是也要谦卑, 要表现出我有货,但是知道自己不够,自己正在努力
5) 面试要注意引导。尽量把面试官往你擅长的领域去引导。
6) 关于回答问题,记住,如果不懂这个问题,可以让面试官再叙述一遍的。如果是真回答不上 来,就真诚的回答说不知道,不了解,不太清楚。如果你发现你回答的某些问题的答案,面试官在质 疑你,你也不要质疑自己。就一口咬死就是这样的。当然不能是离谱的答案还要坚持。
7) 总之一切随机应变
2.7 面试技巧
2.7.1 六个常见问题
1) 你的优点是什么? 大胆的说出自己各个方面的优势和特长 不要写消遣类的爱好,比如爬上,唱歌看电影
2) 你的缺点是什么? 不要谈自己真实问题;用“缺点”衬托自己的优点
3) 你的离职原因是什么? 不说前东家坏话,哪怕被伤过 合情合理合法 不要说超过 1 个以上的原因
4) 您对薪资的期望是多少? 非终面不深谈薪资 只说区间,不说具体数字 底线是不低于当前薪资 非要具体数字,区间取中间值,或者当前薪资的+20%
5) 您还有什么想问的问题? 这是体现个人眼界和层次的问题 问题本身不在于面试官想得到什么样的答案,而在于你跟别的应聘者的对比 标准答案: 公司希望我入职后的 3-6 个月内,给公司解决什么样的问题 公司(或者对这个部门)未来的战略规划是什么样子的?
6) 您最快多长时间能入职? 一周左右,如果公司需要,可以适当提前
2.7.2 两个注意事项
1) 职业化的语言
2) 职业化的形象
2.7.3 自我介绍(控制在 4 分半以内,不超过 5 分钟)
1) 个人基本信息
2) 工作履历 时间、公司名称、任职岗位、主要工作内容、工作业绩、离职原因
3) 深度沟通(也叫压力面试) 刨根问底下沉式追问(注意是下沉式,而不是发散式的)
基本技巧:往自己熟悉的方向说