大3、研二的秋招备战路线(Java、大数据)



1、写做背景
2、秋招的意义
3、不一样水平的同窗备战秋招的策略(案例)
4、部分面试题整理
5、准备过程当中的注意事项
6、针对简历复习


1、写做背景
1.分享经验。从去年五月份到今年五月份,我面试了n家公司,也收了(n/2+10)家的offer,经历了两个春招一个秋招,其中有腾讯、今日头条、京东等offer。经过这篇文章分享一些经验,让后面的同窗少走弯路。

2.解决问题。我有本身的学习群和知识星球,秋招快到了,避免不了被问关于秋招备战的问题。经过这篇文章把我本身能想到的路线和方法系统化先输出出来,以便于精细化提问,也为我本身节省时间。


2、秋招的意义
1.秋招对于大企业是一场人才储备的战役,只有相对较大的企业才有秋招这个概念,它们有资本和资源花费大量精力进行宣传面试,能够提早发offer,坐等你毕业来上班。

2.对于学生来讲,秋招是一场大型的招聘会,多是这辈子离大厂最近的,机会最多的,也是惟一一次有精力面对这么多大厂的面试。

3.秋招offer在手,毕业时间我有。秋招拿了offer以后,对于你后面的面试也好,玩也好,都是起到很是关键的做用。至少心理负担不会那么大,面试起来也会更上手一次,不急不躁,玩起来也嗨,没有就业压力,毕业以前的时间随意安排。


3、不一样的同窗备战秋招的策略
想要在秋招拿到offer,记住如下三点,接下去的案例都围绕这三点:node

1.拿到足够多的面试机会, 别让本身的才华无处施展。
2.根据本身的简历造成系统性的知识,在面试中占据主动地位。
3.成不骄,败不馁。不断地从面试中总结经验,补本身的知识盲区。

案例1面试

有小公司Java实习经验,参与过两个项目的开发,算法不太行,基础通常,有大数据基础,本身作了个大数据项目。算法

目标:秋招想收到大数据offer,最好大厂。数据库

分析:项目是长板,算法是短板,其余正常。因此要用最短期把项目补扎实,成为优点,算法逐渐拉上来,其余时间扑理论基础上。编程

学习路线:
1.先把本身手头上的Java分布式项目弄明白,对其中的技术栈以及业务进行深刻了解,并本身整理项目中的难点和亮点,最终能漂漂亮亮的写在简历上。先熟悉手头项目,一方面项目是面试的敲门砖,没有项目的简历会显得空洞,有项目能够避免项目经验不足被刷。另外一方面,项目在面试中也占着很大比重,面试官比较喜欢从项目场景切入到理论知识。数组

2.天天安排时间刷算法,剑指offer、牛客leetcode148题,容易的先刷,刷一题整理一题到博客,先懂思路后懂代码,一天至少1题,争取重复刷几遍到会手写。大厂必问算法,并且大都剑指offer或者leetcode原题或变形题,有些只问思路。因此算法必刷,先刷思路,要整理起来,避免刷过即忘。安全

3.补Java集合源码、JVM、多线程。不看书,直接去网上搜面试题,最后把高频的整理了下来,直接刚面试题,借助博客辅助理解。一样,懂一题整理一题到博客。(整理的面经我学习群公告有)大数据岗位也要求Java知识,就算到时大数据面不上,面大厂Java仍是妥妥的,会大数据知识能够加分。微信

4.熟悉大数据项目里的技术栈和流程,理解并整理常见大数据面试题。网络

5.对数据库、操做系统、计算机网络常见面试题进行熟悉。由于这些在面试中不会占很大比例,并且问来问去也是那几题,因此放到最后。数据结构

6.有时间再看相关书籍,系统梳理。由于准备时间有限,而个人目的又是经过秋招面试,因此都是从面试题开始刷起,零散整理,最后有时间再经过看书系统梳理。

7.投递小厂练手。当准备差很少的时候我就开始投递简历面试小公司,经过这样去补缺补漏。

案例2

目前正在公司实习,但已经肯定不留在这家公司,打算秋招前夕辞职全身心备战。

目标:大厂的Java或者大数据offer

路线:
1.针对目前还在公司实习或者即将去公司实习的同窗,若是已经肯定不留在该公司,那么能够「面向简历实习」。面向简历实习,顾名思义,简历上须要什么就学什么。公司能够提供的资源就是项目,有文档给你看,不懂的还有老员工能够帮你讲解。你须要快速地了解项目所用的技术栈,以及应用的业务场景,尽量多地去搜集相关资料和看源码。多听听老员工在探讨什么技术难点,以及解决方案是怎么实施的,不懂的就多问。

2.在实习期间估计也只有精力学习项目了,在职期间去刷算法或者补理论基础不太现实。当把你实习的项目有目的性地吃透以后,就能够全身而退,开始刷算法和补基础。

3.若是要找大数据相关,能够经过基础视频入门,本身作一两个项目,把简历写好。其他的能够参考案例1的学习路线


案例3

懂点Java基础,有学校课设的管理系统项目,懂基本的数据结构。

目标:秋招能进一个知名的大厂作Java。

规划路线:
1.先用一些时间补1到2个项目,技术栈要相对好一些,这样能保证有面试大公司的机会和进小公司的机会。

2.当你能把相对较好的项目写在简历上,而且懂一部分技术栈的原理,那么先暂停对项目的学习,转战Java。先从Javase开始,到JVM,最后并发编程。se和JVM理论较多,先记住能理解的,再就是理解性的背,面试前才机械性记忆。并发编程能够从常见的多线程实现开始熟悉,本身敲敲常见的多线程实现demo,以及经常使用的几个线程池,再去比较每一个实现方法的优缺点,参数。再由此切入到线程安全,并发锁等等。记得整理!

3.因为数据结构算法基础不是很扎实,能够先从常见的7大选择,8大排序开始熟悉,尽可能能手写代码。再就是刷剑指offer,统一先刷实现思路,遇到能理解的代码实现也能够记住,否则只记思路也能够。天天刷,记得整理!

4.回过头深刻理解项目的技术栈,常见的技术栈面试题,项目的业务场景怎么样,技术栈怎么和业务关联,能够找出哪些实现难点,有哪些能够当亮点。

5.投递小公司,收到面试通知以后刷数据库、操做系统等面试题。

案例4
**
非科班零基础。

目标:秋招尽可能找份开发工做。

先看看Java基础视频入门,而后补项目、适当地补点Java基础,懂一些基本的JVM和多线程,数据结构和算法只看基本的排序和选择。当达到案例二的水平以后能够走它的学习路线进行进阶。

案例5

大三或研究生,机器学习或者其余方向,技术栈主要是Python,算法基础还行,有个Python小项目。因为机器学习竞争激烈,但本身又没核心竞争力,走Python后台或者爬虫岗位需求少。

目标:秋招找份大厂大数据开发或者后台开发

学习路线:
1.因为已经会Python语言了,因此学Java会比较快。能够快速地过一遍Java基础。

2.根据想走的方向针对性去准备1至2个项目,而后熟悉。能够参考案例1的学习路线去准备算法和基础。

3.把你的Python项目也写上,作大数据或者Java会Python也是加分的。

总结

秋招 = 项目 + 语言基础 + 计算机基础 + 算法 + 软实力

争取在项目中有:
微服务:SpringCloud、SpringBoot、Dubbo等

分布式服务框架:Zookeeper等

消息队列:Kafka、RabbitMQ、RocketMQ等

内存数据库:Memcached、Redis等

分布式搜索引擎:Solr、Lucene、ES等

大数据框架:Hadoop、Hive、Spark等

语言基础:
Javase、集合源码、JVM、多线程、IO等

计算机基础:
数据库、计算机网络、操做系统

算法:
基本的排序和选择算法、剑指offer、牛客148题Leetcode等


4、部分面试题整理

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过程
三次握手,四次挥手的过程??为何三握??

剑指offer常问:
字符串转换成整数
链表中倒数第K个结点
二维数组中的查找
替换空格
从尾到头打印链表
重建二叉树
用两个栈实现队列
斐波那契数列及变形题
二进制中1的个数
在O(1)时间删除链表结点
调整数组顺序使奇数位于偶数前面
反转链表
合并两个排序的链表
树的子结构
二叉树的镜像
顺时针打印矩阵
栈的压入、弹出序列
二叉搜索树的后序遍历序列
 二叉树中和为某一值的路径
数组中出现次数超过一半的数字
最小的k个数
连续子数组的最大和
第一个只出现一次的字符
两个链表的第一个公共结点
链表中环的入口结点
二叉树的镜像
跳台阶
变态跳台阶
矩形覆盖
从上往下打印二叉树
二叉搜索树的第K个结点


5、准备过程当中的注意事项
1.心理压力大。怕面试,面试怕被怼,一直逃避。面试是一个会上瘾的东西,刚开始几场会比较难受,但不用怕,一个优秀的面试官会让你有一个温馨的面试体验,并且面试是一个检验本身水平的过程。刚开始能够选择小公司,即便面的很差也没事,面上了也不必定去,放轻松。

2.沉迷学习,没法自拔。秋招已经开始了,本身总想着还没准备好,想把全部的东西都学完以后再去投。参考过秋招的人都知道,知识是永远学不完的,永远没有准备好的那一刻,当你能把简历写出来的时候就开始投吧。面试不是你很厉害就必定能过的,也有运气成分在里面,并且边面试边总结会成长很快的。

3.不管学习理论,项目,仍是算法,必定要边学边总结。光输入看似都会了,输出才是王道,否则脑子依然人心涣散,东拼西凑。面试以前这些平时总结的内容就是你的杀手锏。

4.怕理论懂太多,实操太少。经过以上内容,你会发现我一直强调理论性的东西,不管是项目的学习或者是语言。在校生原本就是以理论分高低,你们都知道面试问这些,但为何总有人回答不上来。实操的话本身在学校敲的跟公司比起来都是小儿科,都得从新学,重要的是先拿到offer。学会把面试和平常学习区分开。

5.必定要注重简历上的项目。前面提到,简历没有相关项目去支撑你求职的岗位,即便简历写本身的理论多么强,基础多么扎实都是很苍白无力的。这点我在面阿里的时候吃过亏,前几天学习群的一个小兄弟也吃了这个亏。企业说注重理论基础是创建在有项目的基础上,而不是只有理论基础。

6.在简历的排版和内容上要好好作文章。正常的面试都是从自我介绍开始,而后面试从上到下浏览简历,因此你要把你的优势尽可能往前面放,而不是把兴趣爱好,我的技能这种比较虚的东西放第一第二模块,而实习经历,项目经验放最后。

7.实习经历是否影响秋招?理论上是的,有实习经历尤为是大厂实习都会在秋招中有优点的,但这种优点不是绝对性优点。实习的目的也是锻炼你的动手能力,提升你的工程能力,因此只要能把项目搞定,问题不是很大。可是建议你仍是多面试,项目经历能够补,面试经验补不了,终归要出去试试水的,因此要多面试。

8.为何零基础的人学完基础就立刻学习项目?我在校园招聘的时候,打印了10个简历,投了10家,全都拿了offer,固然都是小公司。面试问什么呢?面向对象的概念,Java的特色等等这些极其基础的,剩下的都是围绕着项目问。有些公司面试都没有直接说有项目那就好办了,接着问何时能上班,要现场给offer。案例1的人就是我,简历有两个分布式项目和一个大数据项目。因此我常常跟那些担忧找不到工做的同窗说,只要你把项目鼓捣明白,总有公司会要你的,就是大和小的问题。


6、针对简历复习
一直强调把简历写好,那么怎么针对简历去复习

1.面试前夕,打开简历,拿一张白纸,把本身当成面试官,手撸思惟导图。从自我介绍开始,而后就是项目介绍,其次就是本身负责的部分以及项目难点。

2.技术面试正常两个部分,一个基础,另外一个项目技术栈。基础就是网络,数据结构,算法这些,这些是不管你简历上写不写都问的。其次就是你简历描述的技术栈。

3.正常面试官会问你在项目中作了什么,而后以这个为点切入进去。

举个例子:我在项目中用了多线程,提升了读取效率。那么项目官确定接着,你如何建立多线程的?我回答:线程池。那你知道建立线程有哪些方法吗?有哪些线程池吗?怎么保证线程安全呢?等等。

若是你项目中的问题会把本身问死,也就是挖坑,那我建议你换个。这部分写的好就是给本身开路,弄很差就本身填坑了。

4.项目技术栈来不及复习怎么办?打开谷歌搜索一下对应技术栈常问面试题,或者平时多刷牛客网,你就知道哪些题目是高频的。

5.扬长避短。对于不熟的框架,尽可能不写简历上,若是写了而且被面试官问到就直接跟他说这个正在学,用的比较少。正常面试官也有数,你负责的部分用到的技术栈他会问的深一些,这块本身掂量一下。

7.针对基础,平时多积累。多整理博客也是为了临时突击,像网络,数据库,操做系统,问来问去也是那几题。多看面经几十遍,不懂原理也能吟。

8.针对技术框架,除了基本原理以外,也要准备应用场景。这块对应届生来讲要求不会很高,社招的话要整理每一个原理的应用场景,相对来讲会细一点,源码加分。

9.针对算法。算法是贯彻在平常学习的,我刷算法的策略就是理论先上,其次代码,最后优化。是把全部的算法先刷一遍理论,第二遍再回头代码哦,也都有整理思路的。固然,也要准备经常使用算法,快排,冒泡的手撸代码

大部分仍是吹吹思路就能够了,因此我先前面提到了先刷实现思路。

10.公司面试题优先。去牛客、看准或拉钩查对应公司的面试题,这个命中几率比较大。

11.公司产品业务准备,最好也看看竞品,让面试官另眼相看。以前面了一家腾讯系的,从它的融资开始讲。

12.面试官正常从上到下看简历,记得布好局。本身面试本身的时候多想一想怎么把上面的知识点不经意的串到你熟悉的知识点。

为何说不经意呢?要是你直接跟面试官说,我这个框架不熟,对***比较熟,有点尴尬的。因此要不经意的。

当面试官问你hashmap原理的时候,好比说你多线程比较熟,你最后一句提一下它是线程不安全的。又或者你数据结构比较厉害,那就说它是红黑树。又或者你对Lambda,JDK1.8一些特性比较熟,那就能够说它是在JDK1.8优化的。

平时仍是得多整理,面试以前复习一手博客,一手面经,一手面试的思惟导图。

最后说一句:抓住学生红利期,不管机会仍是精力都有可能在巅峰时期。


若是以上还不能解答你的疑惑,能够加我微信进行详谈。因为微信后台的百度网盘连接时常失效,须要我整理的面经及答案,项目或者更详细的学习路线能够加我微信得到。




置顶微信公众号,后续会继续推出具体的一系列大厂面经,敬请期待。

相关文章
相关标签/搜索