大纲:
一、春招的意义
二、备战春招的注意事项
三、春招的人群
四、针对特定人群备战春招的策略(案例)
五、技能总结
六、常见大数据面试题
七、高频算法题
八、针对简历复习
一、春招的意义
1.春招是学生生涯最后一场校园招聘,换句话来说,就是企业愿意培养你的最后一次机会。以学生身份去应聘,企业对你的包容性最强。特别是对于非科班来说,毕业前夕转行,成本是最低的。
2.春招很可能成为一个人对一个行业最后的挣扎。在计算机行业,很多人选择转型到别的行业都是在毕业前夕,春招相当于他们最后的希望。找的到就入行,找不到可能为了生计先找份销售,或被家里安排进体制内,但工作若干年之后又后悔不已,没有坚持走计算机这条路。
二、备战春招的误区
1.不要集中在3,4月份才开始投。3,4月份应该是所有的信息都公开的时间段,但是年前这一个多月,以及春节过后的这一个月何尝不是一个窗口期。
一些企业年末开发任务很急,人手不够,这时可能会额外需要一些人手,这时招聘的要求也不会特别高。而春节过后的一小段时间,如果公司岗位的人不是缺的特别多,有可能不会特意去开放这个岗位作为春招补招岗,这时需要我们主动去把握这些机会。
拿头条来说,头条HR前几天跟我说他们大量招大数据开发工程师岗位,无论是应届还是社招。很多岗位并不是通过官方渠道公布出来,可以上拉勾、Boss直聘多投多问,牛客人网多留意,比别人更先一步去得到消息,早就是优势。
2.对于一些中小型企业、外企、国企等,他们没有所谓春招的概念,只要你的能力符合他们需求,就可以。
3.不要等全部准备完才开始投简历,等你全部准备完,黄花菜都凉了。准备的差不多,有机会就上,边面边复习,会有意外惊喜。
4.培训需谨慎。因为培训的周期一般要半年左右,到那时已经临近毕业或已经毕业,完美地错过春招,到那时也没啥学生红利了。最好是自己先能突击一段时间,实在不行再去培训,因为只要错过春招,一个月和3个月区别都不大的,都走社招。
5.前面提到的,把握年前这段时间,尽量争取一些面试机会,能及时发现自己的不足,这样就可以在假期针对性补缺补漏。
6.春招压力是最大的,心态一定要放稳,只要能力到位,工作都会有的,而只要坚持,能力都能到位,所以心态一定不能崩。
三、春招的人群
1.秋招没找到工作的,但有一定的面试经验。
2.秋招已经签约的,春招想找更好的。
3.在实习中,需要毕业才签合同的。
4.由于培训,错过秋招的。
5.考研失败的。
6.零基础。
四、针对特定人群备战春招的策略
想要在春招拿到offer,记住以下三点,接下去的案例都围绕这三点:
1.拿到足够多的面试机会, 别让自己的才华无处施展。
2.根据自己的简历形成系统性的知识,在面试中占据主动地位。
3.成不骄,败不馁。不断地从面试中总结经验,补自己的知识盲区。
案例1
情况:机器学习方向的同学,院校背景都还不错,但秋招算法岗神仙打架,再加上行情不好导致没找到心仪的工作。
目标:春招找到大厂的算法岗或其他岗位。
分析:
1.今年算法岗是众所周知的不好找,很多同学为了进大厂不惜转测试、开发、运维。
2.如果还是坚持找算法岗的话,要做好长期战斗的准备,秋招岗位都那么少,春招肯定更少,就算最后拿到offer,也有可能是小公司,所以这边要权衡好。
3.如果觉得其他方向也可以,可以考虑大数据开发、Java开发等岗位。这些岗位HC相对比算法多一些,更考验工程能力,对于大数据开发,后期也可以结合算法,转型推荐系统或数据挖掘。
4.一般做算法方向的,背景都不会,退一步做开发的话能更好地发挥院校优势。但前提是项目以及计算机基础得赶上。
案例2
情况:开发方向的同学,秋招没找到工作,有一定的面试经验。
目标:春招能上岸,最好是大厂。
分析:
1.春招要进大厂,除了实力之外,也要靠一些运气了,即使你实力到位,也要有适合你的岗位。
2.春招的第一优先级应该先拿到保底offer,这样不至于失业,也能有更多的筹码。无论是心态、与HR谈薪、挑选公司等等。
3.如果秋招有面试经验的话,其实你应该能发现自己的不足,就是如何更高效地去学习而已。这方面最好能请教一些已经拿到好offer的同学,或者一些面试经验丰富的前辈。
案例3
情况:已经签了一家公司,春招想看看更好的。
目标:主要比当前的更好就可以。
分析:
1.很多同学秋招先签了一个保底的offer,然后等春招看看更好的。这个思路是对的,但也不用怕后面毁约麻烦,或者重新找麻烦。如果能找到一份更为合适的,毁约赔偿一点钱也是值的,因为好的公司及岗位带给你的远远不止这些,更何况是第一份工作。
2.既然已经有签约的offer,那就证明一般能力是没问题,要往更好的公司冲击的话,可以补补算法,项目深度,以及对计算机基础的掌握程度。
3.与没拿到offer的同学对比,你们完全可以等有合适的机会再出击,可以准备的更充分,你们应该更需要去挖掘潜在的一些招聘机会。
4.可以往你喜爱的岗位去尝试。如果你在秋招签的是前端,但实际你更倾向后台,那么春招就可以大胆去尝试。假如你秋招签的是Java,但你想冲击一下大数据,针对性准备一段时间,然后去尝试一下,何尝不可。
案例4
情况:目前正在公司实习,但需要等毕业才能签合同。
目标:希望春招能做些什么,以便于最后能获得一份好工作。
分析:
1.实习期间好好表现的话,有可能可以在毕业的时候签合同。但也有很多实习期间被劝退的,即使公司在实习之前已经跟你口头承诺可以留下来。
2.最好别裸辞,如果实习的是大公司,可以提前问问组里的HC够不够,如果是小公司,最好能抽点时间多面几家。
3.除非实习不忙,不然边实习边面试不太现实,但也可以抽点时间选择性地面几家公司。实习期间就算不面试,也别懈怠,保持刷一些算法以及复习好理论基础。没签合同之前都是不稳的,如果你具备时刻面试的能力,那么就算你最后没留下来,也不用很慌。
案例5
情况:秋招在培训,准备春招。
目标:春招能找到工作,最好是大厂。
分析:
1.用最快时间拿下第一份offer,无论大小。
2.尽量多地去面试,刚培训出来,无论是简历还是知识体系肯定有很多漏洞,多投多面试就能发现问题。
3.在有offer的前提下,去补计算机基础以及算法,可以尝试地冲击大一点的厂子。一般来说只要培训机构别太坑,用项目去征服一些小公司是没问题的。
案例6
情况:考研失败。
目标:春招找份工作。
分析:
1.考研的同学一般都缺少项目经验,这时候应该针对性去补充几个项目,无论是网上买,或者同学指导等等,用最快的时间把项目补充起来。
2.考研的同学一般都具备基本的计算机基础,网络、操作系统、数据结构这些。但同时也缺乏面试经验,缺乏对市场需求的感知。所以可以先尝试去面试几个,接受社会的毒打,能让你们更好地适应这个节奏。
案例7
情况:零基础。
目标:春招找份开发工作。
分析:
1.项目是第一优先级,掌握了项目,至少能保底小公司。
2.除了项目之外还得掌握开发必备的计算机基础,这个可以去记常见面试题即可。
3.多面,不虚,就是刚。
五、技能总结
1.春招 = 项目 + 语言基础 + 计算机基础 + 算法 + 软实力 + 发掘机会能力 + 魄力
2.争取在项目中有:
微服务:SpringCloud、SpringBoot、Dubbo等
分布式服务框架:Zookeeper等
消息队列:Kafka、RabbitMQ、RocketMQ等
内存数据库:Memcached、Redis等
分布式搜索引擎:Solr、Lucene、ES等
大数据框架:Hadoop、Hive、Spark等
3. 语言基础:Javase、集合源码、JVM、多线程、IO等
4.计算机基础:数据库、计算机网络、操作系统
5.算法:基本的排序和选择算法、剑指offer、牛客148题Leetcode等。
六、常见大数据面试题
Java:
Java散列表,树对应的容器类,hashmap如何解决冲突
Java实现生产者和消费者的三种方法
init方法与clinit方法的区别
Java中的引用
Java对象的创建过程
Java中创建子类实例时会创建父类实例?
Java的类加载机制 为什么会出现锁机制?
抽象类和接口的区别
双亲委派模型:启动加载器、扩展加载器、应用程序加载器
重载与重写
Java的类型擦除
简述Java Object类中的方法有哪些
char可以存储汉字嘛?
抽象类和接口的区别
静态分派与动态分派
HashMap与HashTable的区别
什么时候使用HashMap?它有什么特点?
HashMap的基本原理及内部数据结构
HashMap的put和get操作
简述Java中的深拷贝与浅拷贝,C++中的浅拷贝和深拷贝
解释一下static块和static变量的执行顺序
equals()的重写规则
Java中如何创建线程?
JDK1.8新特性
JVM:
JVM内存布局
JVM垃圾回收机制
JVM垃圾回收算法
哪些对象在老年代?
从年轻代到老年代执行的时间以及发生转移的场景
为什么存在GC?
简单可达性分析
Minor GC安全检查
垃圾回收器
引用记数法和可达性算法
类加载机制过程
双亲委派模型
双亲委派机制
Java集合:
排序算法比较
Hashmap是线程安全的吗?为什么?
ArrayList与LinkedList区别
HashMap、LinkedHashMap和TreeMap
冒泡排序的优化以及快排过程及优化
红黑树
JDK7与JDK8中hashmap的区别
hashmap的初始容量为什么设置为16?
平衡二叉树的插入删除操作
并发编程:
锁分段技术、ConcurrentHashMap、扩容
Java同步线程有哪些方式?
volatile 和 synchronized的区别
讲一下同步异步(进程和IO)
synchronized和volatile的区别?
线程安全
对象的内存布局
哪些是线程安全的容器?
ConcurrentHashMap介绍
线程启动start和run
HashMap为什么线程不安全?
简述Java内存模型的happen before原则
volatile的原理和实现机制 || volatile到底如何保证可见性和禁止指令重排序的?
volatile关键字的两层语义 || 可见性
volatile保证原子性吗?
volatile能保证有序性吗?
Zookeeper:
Dubbo简介及以Zookeeper为注册中心
Zookeeper的leader选举过程
2PC and 3PC
简述Zookeeper。。。watcher
简介ZAB
简述paxos算法
Zookeeper如何保证数据的一致性?
叙述ZAB集群数据同步的过程
Zookeeper中的ACL
Zookeeper底层实现数据一致性
Zookeeper在yarn框架中如何实现避免脑裂的?
大数据:
Kylin:
简介Kylin
Kylin的工作原理
Kylin的技术框架
Cube、Cuboid 和 Cube Segment
Kylin 对维度表的的要求
Cube的构建过程
全量构建和增量构建的区别
流式构建原理
Hive:
Hive内部表与外部表的区别
Hive与传统数据库的区别
Hiverc文件
Hive分区
Hive分区过多有何坏处以及分区时的注意事项
Hive中复杂数据类型的使用好处与坏处
hive分桶?
Hive元数据库是用来做什么的,存储哪些信息?
为何不使用Derby作为元数据库?
Hive什么情况下可以避免进行mapreduce?
Hive连接?
Hive MapJoin?
Hive的sort by, order by, distribute by, cluster by区别?
Hadoop计算框架特性
Hive优化常用手段
数据倾斜整理(转)
使用Hive如何进行抽样查询?
Storm:
Storm的可靠性如何实现?包括spout和bolt两部分
怎么提高Storm的并发度?
Storm如何处理反压机制?
Storm中的Stream grouping有哪几种方式?
Storm的组件介绍
Storm怎么完成对单词的计数?
简述Strom的计算结构
Spark:
Spark的运行模式
RDD是如何容错的?
Spark和MapReduce的区别
说一下Spark的RDD
自己实现一个RDD,需要实现哪些函数或者部分?
MapReduce和Spark的区别
Spark的Stage是怎么划分的?如何优化?
宽依赖与窄依赖区别
Spark性能调优
Flink、Storm与Spark Stream的区别
说下spark中的transform和action
RDD、DataFrame和DataSet的区别
Spark执行任务流程(standalone、yarn)
Spark的数据容错机制
Spark技术栈有哪些组件,每个组件都有什么功能,适合什么应用场景?
Spark master使用zookeeper进行HA的,有哪些元数据保存在Zookeeper?以及要注意的地方
driver的功能是什么?
spark端口
RDD有哪几种创建方式
map和flatmap的区别
Spark的基本工作流程
Hadoop:
MR的Shuffle过程
Yarn的工作机制,以及MR Job提交运行过程
MapReduce1的工作机制和过程
HDFS写入过程
Fsimage 与 EditLog定义及合并过程
HDFS读过程
HDFS简介
在向HDFS中写数据的时候,当写某一副本时出错怎么处理?
namenode的HA实现
简述联邦HDFS
HDFS源码解读--create()
NameNode高可用中editlog同步的过程
HDFS写入过程客户端奔溃怎么处理?(租约恢复)
kafka:
kafka介绍
Kafka与传统消息队列的区别?
kafka的零拷贝
kafka消息持久化和顺序读写?
网络:
简述TCP和UDP的区别
七层协议每一层的任务及作用
简述http状态码
简述http协议与https协议
简述SSL协议
解析DNS过程
三次握手,四次挥手的过程??为什么三握??
七、高频算法题
字符串转换成整数
链表中倒数第K个结点
二维数组中的查找
替换空格
从尾到头打印链表
重建二叉树
用两个栈实现队列
斐波那契数列及变形题
二进制中1的个数
在O(1)时间删除链表结点
调整数组顺序使奇数位于偶数前面
反转链表
合并两个排序的链表
树的子结构
二叉树的镜像
顺时针打印矩阵
栈的压入、弹出序列
二叉搜索树的后序遍历序列
二叉树中和为某一值的路径
数组中出现次数超过一半的数字
最小的k个数
连续子数组的最大和
第一个只出现一次的字符
两个链表的第一个公共结点
链表中环的入口结点
二叉树的镜像
跳台阶
变态跳台阶
矩形覆盖
从上往下打印二叉树
二叉搜索树的第K个结点
八、针对简历复习
一直强调把简历写好,那么怎么针对简历去复习?
1.面试前夕,打开简历,拿一张白纸,把自己当成面试官,手撸思维导图。从自我介绍开始,然后就是项目介绍,其次就是自己负责的部分以及项目难点。
2.技术面试正常两个部分,一个基础,另一个项目技术栈。基础就是网络,数据结构,算法这些,这些是无论你简历上写不写都问的。其次就是你简历描述的技术栈。
3.正常面试官会问你在项目中做了什么,然后以这个为点切入进去。
举个例子:我在项目中用了多线程,提高了读取效率。那么项目官肯定接着,你如何创建多线程的?我回答:线程池。那你知道创建线程有哪些方法吗?有哪些线程池吗?怎么保证线程安全呢?等等。
如果你项目中的问题会把自己问死,也就是挖坑,那我建议你换个。这部分写的好就是给自己开路,弄不好就自己填坑了。
4.项目技术栈来不及复习怎么办?打开谷歌搜索一下对应技术栈常问面试题,或者平时多刷牛客网,你就知道哪些题目是高频的。
5.扬长避短。对于不熟的框架,尽量不写简历上,如果写了并且被面试官问到就直接跟他说这个正在学,用的比较少。正常面试官也有数,你负责的部分用到的技术栈他会问的深一些,这块自己掂量一下。
7.针对基础,平时多积累。多整理博客也是为了临时突击,像网络,数据库,操作系统,问来问去也是那几题。多看面经几十遍,不懂原理也能吟。
8.针对技术框架,除了基本原理之外,也要准备应用场景。这块对应届生来说要求不会很高,社招的话要整理每个原理的应用场景,相对来说会细一点,源码加分。
9.针对算法。算法是贯彻在日常学习的,我刷算法的策略就是理论先上,其次代码,最后优化。是把所有的算法先刷一遍理论,第二遍再回头代码哦,也都有整理思路的。当然,也要准备常用算法,快排,冒泡的手撸代码。
大部分还是吹吹思路就可以了,所以我先前面提到了先刷实现思路。
10.公司面试题优先。去牛客、看准或拉钩查对应公司的面试题,这个命中概率比较大。
11.公司产品业务准备,最好也看看竞品,让面试官刮目相看。之前面了一家腾讯系的,从它的融资开始讲。
12.面试官正常从上到下看简历,记得布好局。自己面试自己的时候多想想怎么把上面的知识点不经意的串到你熟悉的知识点。
为什么说不经意呢?要是你直接跟面试官说,我这个框架不熟,对***比较熟,有点尴尬的。所以要不经意的。
当面试官问你hashmap原理的时候,比如说你多线程比较熟,你最后一句提一下它是线程不安全的。又或者你数据结构比较厉害,那就说它是红黑树。又或者你对Lambda,JDK1.8一些特性比较熟,那就可以说它是在JDK1.8优化的。
平时还是得多整理,面试之前复习一手博客,一手面经,一手面试的思维导图。
最后说一句:抓住学生红利期,无论机会还是精力都有可能在巅峰时期。
--end--
推荐阅读:
扫描下方二维码
添加好友,备注【交流群】
拉你到学习路线和资源丰富的交流群