1 个人情况介绍
首先介绍一下基本情况,本科211非科班,硕士985计算机,参加21届秋招,拿到百度和美团offer。
我从大三开始决定转计算机,先学Python,然后是Java SE,大四学了算法和数据结构以及机器学习。当时主要是看书和慕课视频,有很多不足。首先只是入门,没有深入学习,也没有做项目,导致印象不够深刻。其次是学习算法和数据结构只是看书,没有刷题,很多算法在找工作基本用不到(比如图的几个算法),不刷题就对它们的使用和变化理解不深。
研究生2年,研一上半年做了一百道leetcode,下半年2020年4月开始准备,受到@TALKDATA视频启发,决定做大数据,学了四个月,8月拿到百度offer,9月拿到美团offer。
先看《Hadoop权威指南》,时间不够就放弃了,接着开始看尚硅谷视频,学习各个框架,只跟着做了一些重点。然后做项目,挑了有很多项目,最后确定两个项目,模仿着做出来,将项目进行总结。后面开始背面经,我买了@TALKDATA的《大数据面试开发面试点总结》,从同学那里借了他的Java面试总结,看了一些,有的部分比较偏底层,我没时间看,只看了一些简单的问题,后面主要看尚硅谷文档。
7月开始投简历,有些公司的提前批已经结束了,提前批可能会免笔试,而正常流程是先笔试后面试。刚开始面试表现一般,后面不断总结就越来越好。面试题基本都重复,被问了没见过的问题,会在面试后搜一下,下一次很可能考到。我面试被问到的重点是Spark以及JVM和JUC。
2 笔面试过程介绍
2.1 简历
简历说明你的基本情况,重点在于专业技能(熟悉,了解),实习和项目情况。面试官根据这几个方面来问,在实习和项目的介绍里面,可以进一步突出亮点。
2.2 笔试
笔试时间一般是一个半小时到两个小时,有些只考算法题,平均半小时一道,有些也会考选择、填空、问答等。另外,很多公司都有测评,一方面是心理的,另一方面是智力题那种。
2.3 面试
我面试的所有公司都问过实习,我由于时间关系没实习过,但可以看出实习比较重要;接下来是问项目,主要是项目中用到的一些技术,特别是写的亮点;然后问基础;最后是算法题,难度比较低,但是时间较短,比较紧张,最好熟练一下,在网页上(一般是牛客)写,尽量0 bug通过。前面是技术面试,最后是HR面,HR面就是问你一些个人的基本情况。
3 给大家的建议
3.1 刷题
3.1.1 算法题
笔试一般是leetcode的原题或者改编;面试题简单点,一般可以看剑指offer,当然面试题也可能很难。零基础可以看尚硅谷的Java数据结构和算法,不要看scala的,一般不用scala刷题;想看一些算法刷题模板可以去@labuladong 里面获取<<labuladong 的算法小抄>>。另外,尽量按类别来做题。
3.1.2 SQL题
SQL题也可能会出,如果不懂,可以看下尚硅谷的入门,不用搭环境,熟悉SQL语句就好,然后去leetcode或者牛客刷题。
3.1.3 大数据简单问题
比如求top-10和wordcount等。
3.2 面试基础
分为两部分,一方面是Java基础和计算机基础(比如网络、数据库、操作系统等);另一方面是Linux和Hadoop、ZooKeeper、Hive、Flume、Kafka、HBase、Spark 、 Flink以及其他的一些大数据框架。TALKDATA的两本笔记对应这两方面,每个笔记大概有一百个问题及回答,有些问题的回答较为深入和底层,比如HDFS源码解析,我没怎么看,要看懂底层需要时间,如果零基础或者时间不充裕不建议看。这里主要还是尚硅谷系列,先看视频,后面结合文档,不用全学。学完了可以根据需要看牛客网上的面试题,我也整理了一些,可以自己获取。每个人被问的重点都不一样,可以重点准备下自己想被问(熟悉)的框架。
3.2.1 看视频
主要是Java零基础入门,MySQL基础,Java数据结构与算法;大数据的包括Linux(Shell可以跳过)、Hadoop、ZooKeeper、Kafka、Spark、Flink等,主要是项目里面用到什么框架,就重点掌握,其他的了解一些基础就行。
3.2.2 看书
并不是必须的,校招主要是基础,如果更深入可以看点书,入门不建议看书。
3.3 常考重点
Java:Java基础知识、集合类、JVM和JUC等。
Hadoop:组成、mapreduce流程、shuffle和高可用等。
Spark:RDD、共享变量、数据倾斜、整体流程、shuffle和容错机制等。
Hive:架构、与数据库的区别、分区、分桶、排序和开窗函数等。
HBase:架构、读写流程、rowkey设置等。
Kafka:架构、消息有序性、spark streaming和kafka连接、消息丢失和重复、生产者和消费者相关问题等。
3.4 项目
一般要两个或更多项目,尽量不选只用到的Hadoop项目,最好选Spark或Flink的项目,如果找数仓岗主要是Hive的项目。我的两个项目都是Spark的,没有学Flink。
3.5 实习
有一定基础就可以去实习了,不要觉得自己不行,毕竟不可能等掌握所有知识再去找工作。实习最大的好处是可以转正,即使没有转正去其他公司面试,问到实习会占用一些时间,问基础的时间会更少。
下面是我的公众号,Java与大数据进阶,分享大数据笔面试干货,欢迎关注