大数据专业校招准备

开篇词

1个人背景

  • **学校:**西安科技大学(本科)
  • **专业:**信息与计算科学专业
  • **个人背景:**有一些科班基础(C、Java、数据结构与算法、计网、操作系统、计组、数据库等),而大数据相关的部分则是通过自学完成的。

2 求职经历

公司 一面 二面 三面 offer
京东
百度
字节跳动
小米
哔哩哔哩
新网银行
微盟JAVA
58同城
水滴筹
美团
科大讯飞
猫眼提前批
去哪儿
大华
Shopee
步步高
伴鱼
蔚来汽车
众安保险
美菜
信也科技
闻泰科技
烽火星空
同程旅行

2.1经历总结:

  • **第一点,关于简历的投递:**在求职经历部分列出的仅是进入面试的部分,而在简历阶段被刷的大概有30+,笔试挂的有15+,投递后没消息的有20+,而在整个秋招中投递流程时间比较长,过程会比较辛苦,在校招中最重要的就是不要轻易放弃,保持着自己的节奏,多投递,因为每个公司开启校招的时间点并不是相同的,在整个校招时间线中,会不停的有企业开启校招,所以说愈挫愈勇,积极复盘在校招中是很重要的。
  • **第二点,关于投递顺序:**在秋招中,从 6 月就会有提前批陆陆续续的开始了,所以说我建议大家在校招投递的时候根据自己的情况提前制定好适合自己的策略,因为有时候太早投递可能会因为实力不足而被刷(提前批挂了会有面试记录,会影响后面的面试),而太晚投递则可能会遇到hc不足而导致无缘大厂,所以如何制定自己的投递策略是很重要的,而关于这部分的内容会在第四章的如何投递简历中详细分享。
  • 第三点,关于投递方向:在校招中首先拿到一个保底offer是比较稳的,而且因为我们是在有一定JAVA基础之后进行的大数据学习,所以在校招中侧重投递的当然是大数据开发的相关岗位(实时开发、离线开发、数据仓库、大数据基础架构研发等)、也可以投递JAVA开发、客户端开发这些岗位。

2.2 行业分析

关于大数据行业的一些理解:

  • **为什么选择大数据:**大数据作为国家战略持续加速推进,未来随着5G、物联网、云计算等技术的不断完善、进一步的推动,以及国家政策的大力扶持,该行业迎来了新的发展机遇,市场规模正在不断扩大,而且目前大数据领域的人才缺口比较大,所以从就业的角度来说,当前学习大数据相关知识是个很不错的选择,而我选择大数据行业则也是看中了大数据行业的未来发展前途。
  • **适合哪些同学:**大数据相关的知识适合有一定编程语言基础的同学去进行学习,如就我而言,在学习大数据之前首先是系统的学习了JAVA的相关知识,然后才对大数据的相关知识进行了学习,所以说建议零基础想入门大数据开发的同学首先去学习一门编程语言(建议是JAVA),之后再去对大数据进行学习,详细的学习路线会在后边的章节进行介绍。
  • **学习周期:**大数据相关部分的知识入门学习大概需要2到3个月的时间进行系统学习,之后则是自己不断的对各个框架的进行详细的深挖学习,而再加上系统学习JAVA所花费的时间,整个学习的流程所需要的时间较久,所以不建议大家在秋招前突击学习,秋招很重要,对意向求职的应届毕业生来说我们能经历一次秋招,提前准备,提前规划才能在秋招中获得满意的offer。

3 本刊后续内容

本刊的后续内容会详细的介绍如何学习大数据以及如何准备校招

大数据专业校招准备_第1张图片

  • **总结:**建议大家在学习JAVA基础的时候可以同时找一些简单的程序问题来解决或者是刷一些简单的算法题,**而且在平时记得多总结!打好基础!把重要的东西都记录下来,API 文档放在自己可以看到的地方,以备自己可以随时查阅,而在学习大数据相关部分的时候,一定要自己动手去搭建集群框架!!!而且一些重要的操作命令必须要熟练掌握,各个框架的作用以及彼此之间的关系也都必须熟练掌握,**具体的学习路线会在后续的章节中进行详细介绍。

校招主要是企业针对于应届毕业生而举行的招聘,主要可以分为暑期实习生招聘(大三下,研二下),秋招(大四上,研三上),秋招补录(秋招当年11月-12月),次年春招(大四下,研三下)。

**校招很重要,应届生的身份很珍贵!!!**在校招的时候与我们竞争的大部分都是没有工作经验的学生(少部分有实习经验),而且校招企业对学生的包容度高,一般对企业来说,社招更看重实际工作经验,而校招更愿意“培养人”(人才储备),校招招的是有基础,愿意学习的应届生;社招招的是有经验,可以直接上手的员工,相比较下来说,应届生更容易在校招中拿到优质offer。

一定要抓住校招的机会,不要高估自己的社会竞争力,对应届生来说,大部分好工作都是校招中签的,错过了校招总体感觉是每况愈下,好工作越来越难找。

2.求职规划

2.1.了解校招

2.1.1校招详情

  • 校招流程

    • **暑期实习生招聘:**在每年的3-4月,是针对于大三下以及研二下的暑期实习生招聘,对大三下及研二下同学来说,如果是基础不错的同学,则建议是去参加此次招聘:

      第一点则是因为实习生的招聘难度较低(相较于秋招),且通过实习转正进大厂的难度小于在秋招时直接面进大厂的难度;

      第二点则是就算无法通过实习转正,此次实习经历也是可以写在简历上的,而一段好的实习经历对简历甚至是面试的通过率都是有帮助的。而且如果在公司实习期间表现较好的话,会有十分大的几率可以拿到一个SP的offer的;

      第三点则是就算最后拿不到暑期实习的offer,那些面试经验也会让我们对自己的学习状态以及该如何提升自己有十分清楚的认识。

  • **秋招提前批:**以21届秋招来说,提前批是在5月中-7月这段时间,一般来说提前批是公司为了提前抢到人才所设置,所以可以说是“神仙打架”了,各种大佬云集,竞争激烈,但是提前批也有提前批的好处,首先就是一般公司为了提前批的效率是没有笔试的(适合一些算法较弱的大佬),只要简历通过筛选,整个面试流程特别快,而且大部分公司如果在提前批挂了的话在正式秋招是可以再次投递的(投递是注意看招聘页面是否注明影响正式秋招),但是还是建议大家准备好了再进行投递(有一定基础),因为提前批挂了会有面试记录的;其次就是在正式秋招前就可以拿到一个offer岂不是可以大大的提高我们的自信心了嘛。

  • **秋招:**正式秋招是针对于大四上以及研三上的同学,秋招的持续时间是整个校招流程中最长的,通常为7月-11月,建议所有的同学们一定要参加秋招,包括正在实习的同学(多给自己准备几条路),把握好秋招,秋招是HC最多的时候,大家一定要多投简历,通过各种渠道多投,而因为秋招的持续时间长,对大部分同学来说,都会是一路被刷到底的,保持好心态以及自己的学习节奏,不断的通过面试总结复盘提升自己,不断的去面试,都会拿到offer的,建议大家可以多拿几个offer(如果实力允许),毕竟有得选总比没得选强嘛。

  • **秋招补录:**是针对秋招的补招,一般于秋招同年11月-12月,相比于秋招来说竞争比较小,是面向秋招没有拿到满意offer以及因考研或其他原因错过秋招的同学,hc较少。

  • **春招:**春招一般发生在每年的3月-4月(针对大四下,研三下),相较于秋招来说,春招的hc较少且招聘周期较短,是应届生毕业前的最后一次校园招聘,主要是考研结束后的同学、错过秋招或者秋招没有拿到满意offer的同学竞争,相较于秋招来说大神可能少了一些,但是会有很多经历过秋招经验丰富的同学,所以大家一定要好好准备春招,这是毕业前的最后一次校招,错过了春招,社招的难度是大于秋招的。

  • 校招的形式

    • 以大数据开发的岗位来说,秋招的流程是:

      • **网申(内推):**各大公司的招聘官网、牛客网上的秋招时间线发布贴、师兄师姐内推、牛客网讨论区内推、牛客校招日历、海投网等。
      • 笔试:算法题(重中之重)+计算机基础选择题+大数据相关的知识点+Java(C,C++等)+数据库相关知识点。
      • **面试:**大部分的公司技术面试有2到3轮,每一轮的大概时间在40 到 70分钟之间,主要是根据你的简历所写来提问,涉及简历所写的项目、大数据技术框架、编程语言(如Java、C++等)、计算机基础知识(计网、计组、数据结构、操作系统等)、数据库(MySql、Redis)、设计模式、手撕算法以及SQL题等。

      我在秋招面试的公司中,大数据开发的面试都是与面试官一对一进行的技术面,群面很少。

  • 岗位情况

    • **岗位HC:**相比较于后端、前端、客户端、测试开发这些岗位来说,大数据开发岗位的HC较少,且在当下大数据这个概念比较火,所以整体来说大数据开发岗位的竞争比较激烈。
    • **公司选择:**大数据开发这个岗位只有在一些比较大的公司才会进行招聘,所以可以在进行公司选择时尽量考虑一下公司的体量,因为只有较大的公司才会有足够的数据量以及对校招生来说更加完善的培训体系。
  • 个人职业发展:

    大数据是一个值得深耕的行业,而且在国家的大力推动下,在未来的一段时间内,大数据都会是一个比较火的概念,而如果想要入门大数据开发,我觉得需要掌握技能树中所提到的技术,而如果想要在大数据行业进行深耕,则需要自己不断的关注一些大数据相关新技术的出现,以及需要多关注一些比较火的大数据社区(如阿里云栖社区)。保持不断的学习才能更好的提高我们的核心竞争力。

  • 心态建议

    大部分人的秋招会是一路被刷到底的,而我想说的是大家不要被那些失败所影响,因为秋招是一场持久战,不到最后都还是有机会的,对大家来说更重要的是在每一次面试的复盘与继续学习,从而找到最适合自己的学习方法以及提高自己的学习能力,这会对自己有很大的帮助,不要害怕失败,坚持下去一定可以拿到想要的offer的!!!保持心态,积极复盘。

2.2校招规划

2.2.1岗位选择

对于招聘前的准备,首先需要明确自己想要从事的工程师岗位,再确定所从事工程师岗位的技术栈,不断聚焦去学习,学太多没用的东西既浪费时间也消耗精力。

  • **大数据开发:**是大数据中最普遍的一个方向,包括实时数据开发、离线数据开发、数据研发等,主要是做对海量数据的采集、清洗、入库、分析等工作,参与数据平台的研究,发掘数据的商业价值,提供实时数据计算,打造企业的数据模型等,一般对于应届生来说,我觉得需要掌握技能树中所提到的技术,是大数据行业中hc较多的一个岗位。

  • **数据仓库开发:**包括实时数仓开发、离线数仓开发等,主要是做对公司的一些相关业务所产生数据的数据仓库的开发与优化,构建数据模型,etl实施,etl性能优化以及相关技术问题,面向业务的olap,报表,数据提取工具等开发工作,主要是需要掌握Java、大数据相关框架、精通SQL、数据仓库实施方法论、了解数仓体系、如何从0到1搭建数据仓库,岗位相较于大数据开发来说hc较少一些。

  • **大数据算法:**该岗位要求较高(硕士起),因为涉及到算法,所以薪资也是大数据行业中最高的,主要是负责公司数据中台用户画像标签建设、优化用户画像标签模型和算法、推动用户画像数据不断向通用化、平台化方向发展、从数据中发现现有系统和算法的不足,提出改进算法并推动实现,该岗位需要掌握数据挖掘、机器学习、深度学习算法模型,掌握Java/Python,掌握部分大数据框架(如Hadoop),该岗位在校招中hc较少,主要是面向社招,要求较高。

2.2.2 校招准备

  • **暑期实习生:**如果是准备参加暑期实习生招聘通过实习转正的同学,那么需要在大三上(甚至更早)就开始准备,因为暑期实习招聘的难度较低是相较于正式秋招来说的,想要进大厂也没有那么容易,需要同学们好好准备的。

  • **秋招:**而对于基础不太好而未春招(暑期实习生)或错过春招的同学来说,**重中之重就是准备接下来的秋招,**以笔者本身来说,早早的就确定了期待的岗位是大数据开发工程师,可以给大家分享一下笔者准备秋招的时间线:

    • 3-5月,因为对大数据相关知识的准备不充分,错过了春招,而这段时间笔者则根据自己所做的思维导图,来学习大数据的相应的框架,对初学者来说建议的还是视频+书+博客,不建议初学者直接抱着书啃,入门太慢而且无基础看书效果不好。
    • 5-6月,准备大数据相关的项目,最好是准备两个相关的项目,然后自己动手细细的做一遍,吃透项目的每一个细节,具体的项目推荐可以参考一下第三章的3.2节。
    • 6-7月,开始准备算法题,首先是刷剑指offer(牛客网可免费刷,大神题解),刷的时候一定要多思考,多看几种解题方式,其次救是刷一些经典高频算法题**(推荐牛客题霸),总共刷了300多道算法题(需熟练掌握**),刷的时候尽量不要使用工具来写,因为我在面试中遇到的手撕算法题大部分的都是使用共享文档来直接手撕,其次是在这段时间可以开始计划着时间面向进行简历复习,抓住关键知识点,不断深究原理。
    • 7-11月,整个秋招的持续流程,此时我们应该开始关注求职相关平台进行海投,当然同时应该重点关注我们心水公司的招聘信息,不断的面试积累经验,不断的复盘积累经验,要真正掌握简历上所写的每一个点,同时可以多在牛客网的讨论区多看看大家发的同岗位或者即将面试公司的面经,然后对比进行自我检查,对自己所掌握的知识点进行查漏补缺。
  • **秋招补录:**11-12月,没有在秋招拿到满意offer的同学或者没有拿到offer的同学,在这段时间内也可以积极准备,每年在秋招补录上岸的同学也有不少,虽然hc较少,但是竞争的人数相较于秋招也有所减少。

  • 春招:对于考研或者错过秋招的同学来说,应该利用12月-次年春招开启前的这段时间规划自己的学习重点,积极准备,因为相比于秋招来说,次年春招不论是招聘的公司或者是岗位的hc都更少一些。

2.3学习规划

2.3.1 校招岗位技能树

简单介绍一下校招大数据开发需要掌握的基本技术栈,每一部分的重点以及如何去学习将在第三章详细介绍

大数据专业校招准备_第2张图片

2.3.2 学习方法及资源

  • Java:

    对于刚刚入门的同学来说,最好的方式还是通过看视频来学习Java,也不建议初学者直接去看源码写项目。

安利一下牛客网的Java基础课,然后在看视频学习的时候搭配着《Head First Java》(比较有趣的一本书)进行理解学习,Java的细碎知识点比较多,在学习面向对象思想、JVM等的时候重在理解,而在学习集合、反射、常用类等的时候则重在动手,理解Java与C++的区别。
大数据专业校招准备_第3张图片

《Java 核心技术卷 1+卷2》是两本很好的工具书,介绍的的比较深入和全面,建议是在有一定的Java基础后进行阅读学习(也可用于视频学习后进行知识点的巩固与提升),也可以用来巩固知识点或者当做工具书参考,是两本适合放在自己身边的好书。
大数据专业校招准备_第4张图片
大数据专业校招准备_第5张图片
《Java编程思想(第四版)》大部分人称之为Java领域的圣经,不适合初学者阅读,但是内容多且全,一般可以用作知识点加深巩固提高,亦可作为参考工具书。

大数据专业校招准备_第6张图片

《深入理解 Java 虚拟机(第三版)》必看书籍,无论是面试还是在Java领域深入的研究,都离不开这本书籍,建议大家要多看几遍,都是干货,而且里面很多实战内容自己最好动手实践一遍。
大数据专业校招准备_第7张图片

《Java并发编程之美》非常适合来学习Java多线程的,讲解的通俗易懂,书中的内容基本都是结合代码来讲解的,建议大家在视频学习到Java多线程部分的时候可以搭配着学习该本书。

大数据专业校招准备_第8张图片

《Effective java》必看书籍,可以说是一本Java领域国宝级别的书,非常经典,这本书主要介绍了在 Java 编程中很多极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。这篇文章能够非常实际地帮助你写出更加清晰、健壮和高效的代码。本书中的每条规则都以简短、独立的小文章形式出现,并通过例子代码加以进一步说明。

大数据专业校招准备_第9张图片

框架部分的学习也是建议通过视频+自己动手实践来学习,建议是跟着视频做几个项目来巩固自己所学习到的知识点。

记得多总结!!!打好基础!!!!把重要的知识点都记录下来。 API 文档放在自己可以看到的地方,以备自己可以随时查阅。

  • 计算机基础知识:

    • 操作系统

      操作系统这方面我觉得掌握基础知识和 Linux 的常用命令就行以及一些重要概念就行了

      关于操作系统也是不建议初学者直接抱着书去啃,太难而且效率不高。因为操作系统比较枯燥的原因,建议这部分可以看视频学习比较好一点,推荐一个 Github 上开源的哈工大《操作系统》课程:https://github.com/hoverwinter/HIT-OSLab 。而书籍方面的话可以推荐一下《深入理解计算机系统(原书第三版)》,这本书不建议大家直接抱着啃,对初学者来说太难太难!!可以搭配着视频来对一些重点知识进行巩固提升,等大家成为大佬之后可以细细研读学习。
      大数据专业校招准备_第10张图片
      对于 Linux 我们要掌握基本的使用即可,需要我们对一些常用命令非常熟悉比如:目录切换命令、目录操作命令、文件的操作命令、压缩或者解压文件的命令等等。推荐一个 Github 上学习 Linux 的开源文档:《Java 程序员眼中的 Linux》:https://github.com/judasn/Linux-Tutorial

      《鸟哥的Linux-基础篇》讲解Linux基础比较详细的一本书籍,也是不建议初学者直接全本阅读,可以先挑一些对于Linxu比较重要的知识点进行学习理解,在学习的时候多做总结,多思考。

      大数据专业校招准备_第11张图片

    • 计算机网络方面:

      面试八股文(考察的知识点高频且重复),必问知识点,在面试中对这方面的知识点要求不高,掌握基本的知识点就可以了(专门做网络方面的除外哈),给大家推荐《网络是怎样连接的》 、《图解 HTTP》,这两本书都属于比较有趣易懂的书籍,也适合没有基础的同学进行学习(准备面试时可以多看面经掌握一些高频的考点)。

      大数据专业校招准备_第12张图片
      大数据专业校招准备_第13张图片

  • 数据结构与算法:

    在秋招中算法给我的体会就是太太太太重要了,笔试算法不行基本通过率就很低了,面试也是,如果手撕算法撕不出来也基本是宣告凉凉了。

    建议大家在学习完Java基础后,就每天抽出一些时间来学习算法和数据结构,提高自己的编程能力,需要 自己坚持不断的刷题(牛客题库、LeetCode),以目前的面试来说,手撕算法已经成为必备技能了。

    给大家推荐两本比较好理解的书来帮助大家理解数据结构与算法《大话数据结构》、《漫画算法:小灰的算法之旅》,适合没有基础的初学者进行学习,然后是建议大家在有一定基础后就可以搭配着书以及算法题来进行学习。《剑指offer》是必刷的,可以在牛客网上找到免费的(有许多大神的多种解题方式)。
    大数据专业校招准备_第14张图片
    大数据专业校招准备_第15张图片
    算法很重要!!!大家要多刷多练(刷算法时建议不要使用IDEA等工具)。

    • 数据库:

    数据库也是必须要掌握的,数据库相关的知识点也是校招考察的重点。

    首先给大家推荐《SQL 基础教程(第 2 版)》来作为初学者的入门使用,在学习的同时对书中所涉及到的SQL语句一定要自己动手多练,因为对大数据开发的面试来说,在面试中所遇到的手撕SQL题的概率基本上可以和手撕算法一样,所以熟练掌握SQL的编写是十分重要的。
    大数据专业校招准备_第16张图片
    《高性能 MySQL : 第 3 版》可以帮助大家在有一定基础之后进行进阶修炼,但是全书阅读较难,建议大家可以针对性的学习某些知识,比如索引、优化、存储引擎等。
    大数据专业校招准备_第17张图片
    Redis也是需要掌握的,给大家推荐一下《Redis设计与实现》,比较经典的书籍且易学,同学们在学习的时候可以安装一个Redis数据库来进行实际操作学习,有助于同学们更快的学习与理解。
    大数据专业校招准备_第18张图片
    最重要的是熟练的编写SQL语句!!!在面试中会高频的出现手撕SQL题(牛客网上有练习题)。

  • 大数据框架:

    大数据框架部分是推荐大家使用视频来进行学习的,推荐尚硅谷大数据视频(较全且较易获取),大家可以参考我的学习顺序:Hadoop ZooKeeper Hive HBase Sqoop Flume Kafka Scala Spark Flink 建议学习时最好跟着视频自己动手在虚拟机上搭建集群框架,然后练习常用命令。

初学者在学习视频时可以搭配着书籍进行补充学习,推荐一下《HADOOP权威指南 第4版 》(Hadoop是整个大数据的基石)、《Hive编程指南》(一般做数仓都用Hive),除此之外,大家在入门时也需阅读一些大数据基础书来了解大数据的意义(《大数据技术基础》、《大数据Hadoop 3.X 分布式处理实战》),在学习时重要的还是动手去做,注意每天学习之后一定要做总结,并且进行思考理解。

大数据专业校招准备_第19张图片
大数据专业校招准备_第20张图片

大数据的项目都会是多个框架搭配使用的,所以建议大家在学习完成多个框架之后,通过学习对应的项目来加深对技术的理解,以及大数据技术的实际应用。

  • 数据仓库:

    对于初学者入门数仓的,一个学习路线是,学习数仓建模各种理论,不求能深入理解,但至少有基本认识,然后加入到实际项目中,结合理论去学习项目中的模型,来更好的理解数仓建模。

《大数据之路:阿里巴巴大数据实践》 ,从阿里巴巴大数据架构出发来介绍数据仓库(包括数据采集、数据同步、数据挖掘等),是结合实战来讲的一本书籍。
大数据专业校招准备_第21张图片

学习数仓建模推荐一本经典书籍Kimball的《数据仓库工具箱:维度建模权威指南》,该书通过多个方面来讲解维度建模,学习该本书有一定基础后,可以做一些数据仓库项目(项目资源会在3.2节进行推荐),有助更好的理解数仓建模的知识。
大数据专业校招准备_第22张图片

  • 相关面经总结:可以直接去牛客网讨论区搜索大数据开发面经,有特别多同学分享的面经(强推)。

3.求职技能准备与提升

专业技能准备与提升

对大数据开发岗专业技能的准备主要可以分为三类:

  • **Java部分:**提前规划好自己的学习路线,然后坚持每天学习且做笔记总结每天的重点知识。建议学习时可以视频+书籍+小项目练手(安利一下牛客网上的项目实战)的方式来学习Java部分。

  • **大数据部分:**建议在对Java部分学习完成之后再进行大数据部分的学习,一定要自己动手搭建集群框架,而且大数据部分关于每一个框架的细碎知识点都比较多,建议是在每学习一个框架的同时多去看看博客以及GitHub上一些对应的分享,把大量细碎的知识点理解并记忆(在笔试中会遇到这些细碎知识点)。

  • **计算机基础部分:**这部分理论及概念较多,且在笔试及面试中出现频率较高,对于该部分的学习建议就是多花费些时间理解并记忆,可以将一些关键的知识点存于云文档中,则可利用空余时间进行理解记忆。

3.1 JAVA基础

3.1.1 基础语法

关于Java的基础语法问题,范围比较广,毕竟以后是走大数据开发这条路嘛,所以对于大家来说这些“基本功”还是要熟练掌握的,这部分的内容比较偏向于理解,初学者建议是使用观看视频的方式进行入门,同时搭配着《Head First Java》来完善自己的知识体系。

其次基础语法涉及到的概念比较多,诸如 Java语言的特性、JVM JDK JRE的理解与比较、Java和C++的区别、Java程序主类的理解、字符型常量和字符串常量、常用的关键字、标识符、流程控制语句的使用、自增自减运算符、泛型与类型擦除、基本数据类型、方法、重写与重载、面向对象特征、对象与类的区别、构造方法的作用等都需要熟练掌握,而且这些知识点也都是笔试面试中的常客,也属于Java的入门基础知识点,对于这部分的知识点来说是重在理解、重在思考的,大家在搭配视频学习时最好是多读几本关于Java基础的书(《Java 核心技术卷 1+卷 2》 《Java 编程思想 (第 4 版)》),然后通过自己的深入学习思考并进行总结理解,真正理解Java的基本思想。

在学习的同时一定不要忘记自己动手多敲代码,多敲多练对于我们的学习之路至关重要!

3.1.2 核心概念

**集合:**在笔试面试中都是考察的重点,常用的一些集合诸如HashMap、ConcurrentHashMap、ArrayList、LinkedList都是建议大家仔细研究一下源码和底层数据结构的,在面试过程中会被挖的比较深,除此之外,需要熟练的掌握各类集合的区别以及在不同场景下的应用,熟练使用各类集合API以及Collections工具类。

**反射:**需要熟练掌握反射机制的使用、静态编译和动态编译的区别、反射机制的优缺点、反射的应用场景,而且建议大家手撕一下反射的基本使用。

**JVM:**特别重要!!!无论在面试中还是对自身技术的提升上来讲都是特别重要的一个技术点,需要大家熟练掌握JVM内存模型(面试必问,需要详细深挖各个细节)、直接内存定义、类加载机制详解、双亲委派模型、JVM垃圾回收(必问)、类加载器、常用的GC调优策略、Java文件是如何运行的、内存的分配过程等,该部分知识点也是重在理解,重在思考的(安利下《深入理解Java虚拟机(第3版)》)。要对这部分内容有自己的理解,把书中的知识转化为自己的知识。

**并发与多线程:**该部分的内容可能会比较难以理解和上手,在前期可以先简单的了解一下基础,等到之后边学习边进行理解,主要需要掌握的知识点有 进程与线程的关系、区别及优缺点、并发与并行、线程生命周期和状态、线程死锁、多线程的优缺点、线程池原理理解(ThreadPoolExecutor类)、synchronized 关键字及JDK1.6对其底层的优化、volatile关键字原理、Java内存模型(JMM)、ThreadLocal原理、乐观锁与悲观锁等,推荐大家仔细阅读《Java 并发编程之美》这本书,该部分的学习在锁(synchronized)、线程池、volatile关键字的部分建议挖的深一些,建议看一下源码,理解底层结构,面试中如果可以讲的比较深一些的话是一个很好的加分项(如被提问锁时可以讲到锁优化、锁升级、锁的底层数据结构等),其余部分则需要进行理解记忆学习(基于实际应用进行学习理解),可以精读《深入浅出 Java 多线程》),对我们自身的提高十分有帮助。

**其他部分:**常用的设计模式一定要会,如单例模式的几种实现及应用场景(也是面试中的手撕代码常客)、z适配器模式、工厂模式、观察者模式、代理模式,以及框架部分(Spring、SpringMVC、Mybatis、SpringBoot等),是一个加分项,如果不是主动提及的话,在面试中一般不会被问到。

学习重点导图总结(面试重点)

大数据专业校招准备_第23张图片

3.2 计算机基础知识

**计算机网络:**计算机网络部分的内容,可以首先掌握一些基础的知识,随后再慢慢的进行深入研究,因为一般如果不是专业做网络方面的,在面试中对这方面的要求不高,推荐学习《网络是怎样连接的》 、《图解 HTTP》,对其中的诸如七层/四层网络模型、TCP与UDP协议区别、三次握手四次挥手、HTTP与HTTPS区别、输入网址到展示页面的背后流程 等在理解的前提上进行记忆,在面试中可以通过自己的话总结回答出来就足够了(面试中多以概念问答方式考察)。

操作系统: 这方面我觉得掌握操作系统的基础知识和 Linux 的常用命令以及一些重要概念就行,如操作系统的概念、什么是虚拟内存、什么是进程与进程表、多线程的好处、死锁出现的四个条件、进程间通信方式、调度算法、什么是僵尸进程、内存管理、CPU寻址等,操作系统的相关书籍比较枯燥,大家可以搭配在第二章推荐的网课以及《深入理解计算机系统》搭配起来进行学习,对提及到的重点知识也是需要大家在理解的基础上进行记忆,面试及笔试中也多是以概念理解的方式进行考察。

**数据结构与算法:**首先掌握基本的集中排序选择算法如 快速排序、归并排序、堆排序、冒泡排序、插入排序、选择排序等,其次没得说,就是多刷多练多总结,可以先看一下《大话数据结构》后进行算法刷题,安利一下《剑指offer》(牛客免费刷)、牛客题霸,每一道题都建议大家多看题解,从多种角度多种方法来理解学习每一道算法题,从时间复杂度、空间复杂度、算法执行是否最优等方面进行分析学习总结,也建议刷题的时候不要使用IDEA等工具,因为现在公司在面试中对算法题的考察基本都是手撕代码,基本功很重要。

**数据库:**MySQL的相关知识是必问必考的,如存储引擎、MyISAM和InnoDB的区别、索引的使用及底层数据结构、查询缓存、事务、事务四大特性、事务隔离级别、MySQL默认隔离级别、读写锁、视图、MVCC、SQL语句执行流程、数据库三大范式、MySQL行锁与表锁区别、SQL语句优化等,其次大数据开发岗位,对SQL语句的编写有较高的要求,所以熟练的编写SQL语句十分重要(大家可以在牛客网上进行练习),而且面试中经常会要求手撕SQL语句,推荐大家阅读《SQL 基础教程(第 2 版)》(入门级)、《高性能 MySQL : 第 3 版》(进阶)、《MySQL 必知必会》进行学习,当然在学习的同时一定要动手练习!!!

除此之外,Redis也是一个比较高频的知识点,需要大家掌握Redis作用、为什么要使用Redis、Redis的基本数据结构、Redis内存淘汰策略、Key的过期策略、缓存雪崩、穿透、击穿等,推荐大家学习《Redis设计与实现》,当然在学习的同时也是建议大家实际操作,联系实际来思考Redis出现的原因及作用。

**常用工具:**熟练的掌握IDEA、Git、Docker、Maven等工具的使用。

学习重点导图总结(面试重点)

大数据专业校招准备_第24张图片

3.3 大数据与数据仓库

大数据部分需要学习的知识点比较多,Hadoop(三大基本组件HDFS、MapReduce、Yarn)、Zookeeper、Hive、HBase、Kafka、Flume、Spark、Flink等,在学习的时候一定要自己在虚拟机上动手搭建框架集群,电脑配置需要达标(主要是内存),16G内存可以满足基本的集群搭建。

在学习相关框架的时候建议以视频+书籍+博客的方式进行学习,首先是跟着视频了解框架的基本原理,学习如何搭建框架以及一些基本的使用命令,其次以博客作为对框架知识的基本补充,然后以书籍做全面的补充,使我们对所学框架有更深的理解。大数据部分的细碎知识点比较多,所以建议大家在平时学习对应框架时,每天抽出一些时间对当天所学的知识进行总结复盘。

以学习方法来说,以Hadoop为例,笔者学习的时候,首先是去了解为什么会出现这个框架、这个框架的出现解决了什么问题、该框架包含哪些基本组件,其次是跟着视频去动手在虚拟机上搭建单节点框架、练习基本命令、理解所配置文件的原理,了解该框架是否可以搭建高可用集群并动手进行搭建,然后跟着视频学习框架原理与应用,同时会搭配着书籍与博客(安利GitHub上的三个大佬 大佬1、大佬2、大佬3)学习一些基本原理。每个框架的细碎知识点都会比较多,建议大家在学习的时候每天都对所学的知识点进行总结,有助于在准备面试的时候进行复习(可以在学习的同时多去牛客网讨论区搜索大数据面经对自己进行查漏补缺)。

在面试中面试官首先会让你介绍自己所掌握的技术栈,然后一般会让你自己挑选比较熟悉的框架进行深挖,但也可能是随便选一个你技术栈中所提到的框架进行提问,所以说每一个框架都需要掌握,但一定要有两三个特别熟的(如Spark、Flink、Kafka、Hive等)!!!

学习重点导图总结(面试重点)
大数据专业校招准备_第25张图片

项目经历准备与提升

1 有实习

如果有实习经历且写在简历上的话,则在面试中一定会被提问到实习经历相关的问题,其中就有项目部分,是属于一定会被提问到的,需要大家好好准备。

公司一般不会让实习生负责项目中较核心的部分,通常是让实习生来做一些“造轮子”、写写SQL之类的简单工作,而这部分工作如果用来当作我们简历上的项目经历则是于我们无益的,我们简历上所写的项目至少应该涉及到此次公司项目开发的一到两个核心部分,而我们应该如何了解到这些较核心的部分呢?

首先当然是要做好公司分配给我们的本职工作(认真完成),在完成我们任务的基础上可以去向你的主管以及同事们多交流交流,可以以多学一些知识或者想更了解公司的项目为由,来了解所做项目核心部分的一些基本原理,然后可以自己通过思考以及查阅资料来了解一些具体的实现(可以在同事不忙时多请教请教,一般程序员们还是比较乐于分享知识的),最后把所了解的部分吃透之后就可以把它变成自己的项目(一定要搞清楚每一个细节,不要给自己挖坑)。

如果有实习机会就一定要去,在实习中所做的项目在面试中很好的讲出来,对面试是十分有帮助的。

2 没有实习

因为没有去实习,所以我的项目是通过自己构思设计所完成的(大家可以直接查看链接:https://pan.baidu.com/s/1-wPOn-DgTtZwEAgWKIXLKw 提取码:nokc )。

  • **项目的选择:**需要基于实际的应用来选择项目,大概的几个方向分为:数据仓库、实时数仓、推荐系统、离线海量数据处理、实时日志分析等,而我选择的则是实时流日志分析,因为在当下的实时推荐、微博热搜、热点新闻展示等都是基于实时的统计分析用户的行为日志而做出的操作,所以我选择了这个方向来作为自己的秋招项目。

  • 项目技能树:
    大数据专业校招准备_第26张图片

  • **项目的结果:**1、存储至HBase中的结果数据可以作为实时推荐、热搜、热点新闻等的数据支撑 2、可以实时的对存储至Redis中的数据进行可视化展示。

  • 项目的技术难点:

    • 如何使用 Kafka高效的缓存从 Flume 传输过来的用户行为数据;
    • 如何使用 SparkStreaming 消费 Kafka 中的数据时达到数据去重的目的;
    • 如何使用SparkStreaming达到 exactly-once 目的;
    • 如何选择对大对象的共享以提高程序性能。
  • **如何解决技术难点:**总的来说就是要对自己项目所涉及到的技术框架有深入的理解,只有对自己所选项目的技术框架有深入的理解才能设计出更高效更优的程序,除此之外,还可以通过网络搜索以及请教老师或者网络上的大数据大牛博主,一般关于各种常见的技术问题都可以比较容易找到的,善用Gooole、Stackoverflow、GitHub、Csdn可以解决我们所遇到的绝大部分问题。

  • **总结:**曾经在面试中,有一位面试官对我说,一般对于没有实习的学生来说,对项目的提问主要就是为了确认学生简历上所写的项目是否亲自做过,所以说我们一定要把自己写在简历上的项目的整体脉络、所设涉及到的技术点、项目的各个细节都要搞得十分清楚,最好自己动手做过项目,并且所做的项目要一定要具有实际的应用意义。

项目的选择需基于实际应用出发,建议同学们准备两个项目,一个是数仓方向的项目,另一个是实时开发、离线开发、推荐系统等方向的项目,而对于没有实习的同学来说,可以给大家推荐几个相关的项目:

GitHub上一个完整的推荐系统(有源代码与数据,缺点是没有视频讲解)

以上给大家推荐的几个项目方向,并不需要全部都做,因为都是比较完整比较大的项目,建议时间充足的同学可以选择一个数仓项目以及一个实时处理或推荐系统相关的项目去做,重要是自己动手做!!!把项目的所有细节以及所涉及到的知识点都吃透(深挖)!!!切忌不要只看一遍不自己动手做,这样只会给自己挖坑!!!

关于如何介绍自己的项目,给大家分享一个牛客大佬。

制作与投递简历

对大部分应届生来说没有实习经验或工作经验是硬伤,所以一定要把握好秋招和春招,一旦错过秋招和春招,之后就会有极大的可能面临社招,此时没有工作经验大概率是会四处碰壁,拿不到自己满意的offer。

投递简历之前首先需要制作简历,一份好的简历可以在投递以及面试过程中起到非常好的作用,在不夸大自己能力的情况下,写出一份好的简历是十分重要的。

**为什么说写好一份简历很重要?**HR经常一天会看几百份,甚至上千份简历,一份简历可能看10-30秒就会决定是邀约面试,还是PASS掉。另外,就算通过了简历筛选,在后面的面试中,面试官也会根据你的简历来判断你究竟是否值得他花费很多时间去面试,简历是我们求职路上的敲门砖,在我们的整个应聘流程中起着重要的作用。

其次,在开始制作简历之前,要明确的一点是:**不会的知识点就一定不要写在简历上,**因为在面试中所考察的绝大部分知识点都是你简历上所写的,深挖简历上所写的每一个知识点,**然后学会引导面试官,通过引导面试官提问来突出自己的技术亮点,**当然,自身的准备一定要足够充分。

写好一份简历十分重要,在接下来将会给大家讲解如何写好一份简历。

1 如何制作一份简历

本节将从简历模板、格式排版、基本信息、专业技能、项目经历、自我评价六个角度来进行讲解。

1.1 简历模板

模板的选用尽量简约一些就行,不用搞的太花哨,选一个简约的模板,调整好合适的字体就行(字体和标点符号要统一,不要出现中英文标点符号混用的现象),建议大家不要在word上自己搭线来做简历,最好是去找一些专业的简历模板网站即可。

推荐牛客简历助手 (个人中心 - 我的简历 ) 牛客的简历助手很强,一次填写好后所有在牛客网上进行招聘的企业都可以直接进行投递,也可以将简历进行导出使用,导出的简历直接为pdf版本的,十分方便。

我在秋招时使用牛客简历助手所做的简历(简历还可以上传附件,如获奖证书等):

大数据专业校招准备_第27张图片

1.2 格式排版

  • 简历中的标点符号,切忌不要混用中文标点符号和英文标点。

  • 关于格式,在介绍专业技能以及项目的时候尽量精简语句,合理分段,不要出现大段连续的项目介绍。

  • 简历最好做成pdf版本的(迅捷pdf转换器 免费),因为word版本可能在不同的环境下打开存在乱码现象。

  • 一些技术名词不要弄错了大小写比如MySQL不要写成mysql,Java不要写成java。

  • **基本信息:**基本信息需要放在简历的最上边,需要包括 姓名、电话(重要)、电子邮箱(重要)、博客或GitHub(跳转链接,加分项)、年龄、学校、专业、四六级(对应届生)、求职意向,其实在基本信息这里,能够表达出我们的基本个人信息就足够了,可以给大家参考一下我的简历基本信息这一栏:
    大数据专业校招准备_第28张图片

1.3专业技能

  • 这个点算是简历中的核心点了,**因为在这里HR、面试官都会很关注这个点的,也是通过这个点来看出你是否和所需的岗位匹配,**因为一般HR可能不太懂技术,而大数据开发岗位所需的技术栈大部分都是大同小异的,所以HR可能就是通过你的专业技能所写来与公司的技术栈进行匹配来决定是否通过的。

  • **专业技能在写的时候,最好是有层次一些,**比如从Java基础,Linxu基础,数据库,然后到Java框架,最后到大数据相关的框架,这样写的好处是可以让面试官在根据简历进行提问考察的时候可以从浅到深进行比较全面的考察。

  • **熟练程度,一般分为:了解、熟悉、熟练掌握、精通几个等级,**在对一些比较心怡的公司进行重点投递前,首先可以花费时间去了解一下该岗位所需的技术栈,对公司需要而自己暂时不会的,则可以花几天时间学习一下,然后在简历上可以写上自己了解这个技能(建议不要大量出现了解),而对其他自己所掌握的技术,**建议大家把熟悉都突破为熟练掌握。**慎用精通!!!

  • 大家可以根据以下标准判断一下自己掌握的知识水平:

    • **了解:**对该技术所需的知识有基本认识,简单的来说就是谈及到该技术时,能够意识到自己知道该技术是什么;
    • **熟悉:**对该技术有系统性的认识,知道该技术的部分基本原理,且可以使用该技术完成实际应用问题;
    • **熟练掌握:**对该技术有全局性的认识,可以认清该技术的知识网络,知道该技术的大部分基本原理,可以在实际工作中对该技术运用自如;
    • **精通:**对该技术可以做到融会贯通,不仅对该技术的知识网络有清晰的认识,而且能够将其与其他相关的技术相融合,能够在灵活运用知识的同时不断创新。
  • 最重要的一点就是,我们在专业技能所写的,一定要会,而且最好是可以进行深挖的,因为在面试中所考察的绝大部分都是根据你所写的技术进行考察的!!要注意简历的真实性,一定不要写自己不会的东西,或者是带有欺骗性的内容(这只能是我们给自己挖的坑!!)

1.4项目经历及补充

  • **项目经历:**可以从项目描述,个人职责,相关技术,项目成果四个方面去介绍你的个人项目,条理比较清晰,可以让面试官第一时间了解你的项目。

    • **项目描述:**用较为简短的话语介绍项目,让面试官和HR一看就知道这大概是个什么项目,是数仓项目还是推荐系统什么的。
    • **个人职责:**可以使用简洁的语句写出你在这个项目中所负责的部分,比如说是你负责使用Spark对数据进行处理存储。
    • **相关技术:**可以把项目中的亮点技术栈都枚举出来,如果能跟招聘要求大部分匹配上,那这就又是一个隐藏的加分点,但是要注意,所写的技术你一定要会(千万不要给自己挖坑)。
    • **项目成果:项目成果应该写对某件事解决的程度,**例如实时流日志分析可以写分析了多少数据,以及这些数据的可视化效果如何之类的。

    项目一定要自己亲手动手做,吃透每一个细节,因为面试肯定会问你负责了啥,有啥难点,聊到对应的技术栈也不会放过你的,所以乱写就是在给自己挖坑。一定不要有任何形式的项目造假

    常见项目问题:

    • 对项目整体设计的一个感受
    • 在这个项目中你负责了什么、做了什么、担任了什么角色?
    • 你在做项目的时候遇到了哪些问题?
    • 项目的难点痛点是什么?你们怎么解决的?
    • 你使用XX技术栈的时候有没有什么坑,你们怎么解决的?
    • 项目中遇到过什么印象比较深的Bug?
    • 从这个项目中你学会了哪些东西,使用到了哪些技术,学会了哪些新技术的使用
  • **自我评价:**这一块写一些积极向上展示自己真实性格的就好啦,你就是你,是这条街最靓的仔。

  • 其余:

    • 如果有比较厉害的奖项或者证书之类的一定要记得写上去,绝对的加分项。
    • 如果内容过多的话,不需要非把内容压缩到一页,保持排版干净整洁就可以了。
    • 校园经历如果和你应聘的岗位没有多大关系的话还是建议不要写上去了。
    • GPA如果不是特别高也是不建议大家写上去的。
    • 简历最后最好能加上:“感谢您花时间阅读我的简历,期待能有机会和您共事。”这句话,会显的你很有礼貌。

2 如何投递简历

本节主要会给大家介绍常见的简历投递途径以及简历投递策略。

2.1 投递途径

常见的简历投递途径有:校园宣讲会、网申、内推

  • **网申or内推:**提前批开始的比较早(21届秋招提前批在6月初开始),建议大家在秋招(春招)前提前关注一些招聘途径,如:
    • 牛客网:牛客网的内推资源特别多!!(讨论区大牛内推特别多)!每年春招秋招会有官方运营发布的校招公司内推汇总,而且是实时更新的,建议大家也可以在牛客网上完善简历,完善之后所有在牛客网上进行招聘的公司都是可以一键投递的(公司特别多)。
    • **各大公司招聘公众号:**各大公司都会有自己公司的校园招聘公众号,会第一时间发布校招相关信息,微信直接搜对应公司校招即可(笔者秋招时关注上百个公司招聘公众号)。

强烈建议大家在秋招时多多关注牛客网,不论是校招公司、内推、面经、笔试题练习、学习方法与资源的分享等都特别的多!!

  • **校园宣讲会:**校园宣讲会一般都是线下直接笔试,笔试完公司会根据笔试情况进行电话邀约面试。关于校园宣讲会的获取途径,就是关注你所在地区的顶尖大学的就业信息网如 百度直接搜xxxx大学就业信息网,或者是微信公众号搜 xxxx大学就业推荐,就可以直接获取到公众号信息,而在这些大学的就业信息网会每天更新最近的校园宣讲会的信息的。

2.2 投递策略

  • 建议大家是首先关注网申,因为在暑假的时候就会有大量公司开启了秋招,而校园宣讲会一般开启的时间都是在开学后,如果等到开学后还没有拿到offer,则可以在此时多多关注校园宣讲会,采用网申+校园宣讲会同时进行的策略,因为一般在校园宣讲会中面试的流程比较快而且面试的通过率较高。

  • **关于网申的投递策略:**正式秋招会从7月陆陆续续开始,而秋招提前批则会从6月初就开始了,在这里关于提前批与正式秋招的选择具有一定的策略,首先是如果知识储备充分就去参加提前批,如果没有那就等待正式秋招,因为提前批挂了会有面试记录,可能会影响后面的面试(但还是建议有准备的同学去参加提前批,可能不用笔试且简历通过率比较高的),另外就是不要急着的去面大厂(机会难得),可以先去小厂锻炼锻炼面试经验(只要有面试机会),因为很多大厂的面试批次较多,我们可以看好时间安排到每个大厂的第二三批,如果提前直接面大厂,很容易会因为面试经验不足被刷,而如果拖到最后的批次则 hc会比较少甚至直接没了,所以说先找一些小厂来进行面试经验的积累,然后把握住大(中)厂的中间批次进行投递面试。

整个秋招的持续时间比较长,在秋招开始前一定要根据自己的学习进度来制定属于自己的投递策略(对心水公司重点关注投递)。

3通过笔试面试offer筛选

1 如何通过笔试

笔试一般分为 性格测试、行测、专业笔试。

  • **性格测试:**这个没什么好说,认真写一下即可,毕竟大家都是健康向上的新时代乐观积极大学生~(只需要注意一下企业挖的一些小坑即可,例如企业会放置一些重复的题,然后前后出现的选项之间会发生变换,大家在做题的时候一定要注意相同的题前后的选项要相同、会有一些意思相近的题目,也是需要注意在作答的时候选的一定要相同)。

  • **行测:**通常的行测也不存在什么难度,认真答题即可通过,在这里给大家分享一下行测的基本题型:文章阅读理解答题、数学统计分析题、图形题、资料分析题等题型,大家认真的答题一般都可以通过。(安利一下牛客题库,大家可以提前练练行测题)。

  • **专业笔试:**大数据开发岗的笔试题一般分为选择题、SQL题、算法题

    • **选择题:**涉及到的知识点特别多,Java基础、数据库、网络、C、大数据框架知识点等,给大家的建议就是平时学的时候多理解遇到的知识点,以及多刷题(强烈安利牛客网题库,可以选择性的刷Java、计算机网络、数据库、大数据相关等知识点,而且很多企业的选择题都是直接用的牛客网题库的!!!!大家平时一定要多刷题)。
    • **SQL题:**熟能生巧,只看概念是没有用的,也是建议大家动手刷题(1、牛客网SQL编程区 大佬答案解析 ),大家在刷题的时候一定要多思考一下语句逻辑以及SQL语句的执行顺序。
  • **算法题:**这算是笔试中的重中之重了,算法题做不出来的话,大概率是已经凉凉了。首先我认为算法题是重在积累的,不论是笔试中还是面试中的算法题,都是会有一个类型归属的,如动态规划、二叉树递归、贪心算法等,如果没有在之前做过类似的题目,则在笔试时大概率是很难直接做出来的。

    • 第一点,先挑会的题做,把能拿到的分全部拿到,算法题会有case通过率,也是通过这个通过率来得分的,如果题目所给的案例可以通过而case通过率较低时,则需要仔细阅读代码,检查数组是否越界、是否存在大数越界问题、时间(空间)复杂度过高、返回数据类型不匹配等问题,尽量完善所写代码,提高case通过率。
    • 第二点,对于完全不会的题目,则可以通过直接输出题目中所给的case来骗一点点case通过率。
    • 第三点,前边说了算法题重在积累,且笔试中算法题的归属类别不会改变,所i建议大家提前积累,多刷一些高频算法题(重要的是理解学习对某一类题型的解题方法)。推荐牛客题霸(高频算法题)、力扣(剑指offer),多刷题,多看大神题解,理解不同方法的不同好处,分析每一道题解的时间复杂度以及是否存在优化的可能**(重在积累)**。
**我们的目的是拿到更高的分数从而通过笔试,所以合理的利用规则也是可以的。**

2 如何通过面试

首先明确一点,不论是笔试还是面试都是有章可循的,一定不要想着如何去应付面试,糊弄面试官,这样做终究是欺骗自己。

牛客网讨论区上有很多面经,推荐大家多看面经对自己查漏补缺,这是一种比较好地检验自己水平的方式。但是,一定不要过分寄希望于各种面经来去提高自己的综合能力。

2.1 面试前的准备

  • **自我介绍:**自我介绍一般是你和面试官的第一次面对面正式交流,一个好的自我介绍应该包括:

    • 用简单的话说清楚自己主要的技术栈以及擅长的领域;
    • 把重点放在自己技术亮点以及自己的优势之处;
    • 重点突出自己的一些能力(如学习/自学能力等)。

    建议大家准备两份自我介绍,一份对hr说的,主要讲能突出自己的经历,会的编程技术一语带过;另一份对技术面试官说的,主要讲自己会的技术细节和项目经验。

  • **技术方面:**首先要搞清技术面可能会被问哪些方向的问题,具体的可以参考第三章对专业技能介绍的思维导图,对技术的提问涉及到的特别广,基本是在第二章技能树中所写到的都可能会被问到,但是也可以分清主次关系,对于自己不熟悉的技术不要写在简历上,对于自己简单了解的技术不要说自己熟练掌握,然后把简历上所写到的技术彻底的搞懂!!!一定要深挖理解记忆。

  • **项目方面:**技术面中一般都会让你介绍一下自己的项目,所以说项目一定要搞熟(项目一定会被问到的,而且问的都会比较深)。你可以从这几个方面进行考虑:

    • 对项目整体设计的一个感受(面试官可能会让讲一下系统的整体架构);
    • 在这个项目中你负责了什么、做了什么、担任了什么角色;
    • 项目的技术难点;
    • 可以在项目上提一些技术难点来让面试官进行提问。
  • **反问环节:**就技术面试而言,回答这个问题的时候,**只要你不是触碰到你所面试的公司的雷区,那么这对你能不能拿到最终offer来说影响确实是不大的,**大家可以从以下几个方面进行提问:

    • 部门的主要人员分配以及对应的主要工作能简单介绍一下吗?
    • 公司对新入职的员工的培养机制是什么样的?
    • 可以了解一下所面试岗位的主要技术栈吗?
    • 大概什么时候能给我回复呢? (终面的时候,如果面试官没有说的话,可以问一下)

2.2 面试后的复盘

首先在每一次面试后一定要进行及时的复盘总结,对自己在面试中的表现仔细分析,对遇到的问题及时解决,因为这是我们在校招中提升自己最快的一种途径了!!大家可以分类进行文档总结,对遇到不同的问题进行不同的归纳总结,可以给大家分享一下我秋招时的复盘总结:

大数据专业校招准备_第29张图片

送给大家一段我很喜欢的话:

如果失败,不要灰心;如果通过,切勿狂喜。面试和工作实际上是两回事,可能很多面试未通过的人,工作能力比你强的多,反之亦然。面试像是一场全新的征程,失败和胜利都是平常之事。所以,劝大家不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,保持心态,继续加油!

2.3 面试注意事项

本小节将给大家讲一些面试中需要注意的事项:

  • 第一点,也是最重要的一点,在面试中不要有任何行式的作弊行为!!!!
  • 第二点,面试中有可能会有智力题,而智力题如果不是提前了解过的话,要在面试中直接解出的难度较大,给大家分享一个牛客大佬的面试常见智力题总结;
  • 第三点,大数据开发岗的面试中,会出现海量数据处理的问题,对于这部分问题也是如果没有提前了解的话,在面试中直接解出的难度较大,分享一个大佬的总结;
  • 第四点,面试中建议对整个面试过程进行录音,在之后进行复盘总结的时候有助于我们更直观的了解到在面试中自身的不足;
  • 第五点,自我介绍一定要提前准备好,如果在面试中自我介绍时结结巴巴的话会很影响给面试官的印象的;
  • 第六点,利用好牛客网,牛客网上的内推、资源分享、简历修改(热心大佬)、面经分享、笔试题练习等各种资源都十分的丰富。

给大家分享一些牛客上的面经汇总:大佬、大佬、大佬,大家可以直接去牛客网讨论区搜索对应岗位的面经即可!

3. offer选择与比较

大家选择offer的时候一般有几个影响因素:薪资待遇、地域、岗位

  • **地域:**主要是对个人base的考虑,因为会涉及到以后的发展,买房定居之类的,当然在北京定居比较难,更多的还是像笔者(位于西安)这样先选择去北京发展几年,之后再选择返回日后定居城市,建议大家仔细考虑,因为大数据开发这个岗位还是在大城市有比较好的前景。
  • **薪资待遇:**没得说,面向薪资编程嘛,大家在沟通offer时一定要问清楚的有:工资构成、五险、住房公积金是按工资足额缴纳还是按照基本工资缴纳(有些公司的工资由多部分构成!!一定要问清楚)、公积金缴纳比例、薪资普调提升等。
  • **岗位:**在前边说过,大数据开发岗的同学可以投递Java、客户端这些岗位,大家可以从地域、薪资等方面进行比较,笔者自身的话比较喜欢大数据开发(也看好大数据的前景),所以在秋招的时候是一门心思盯着大数据去的。

**大家要慎重选择offer,第一份工作对我们的影响比较大!!!**如果是秋招拿到的不太满意的话,可以选择先签了保底,毕竟大部分学校都会给学生一次毁三方的机会的。但是还是要劝大家慎重,因为毁三方是很麻烦的,有的企业可能会拖到第二年的三四月份才会寄回三方,影响新的三方发放(新三方申请需要公司的正式解约函)以及春招签新的offer,所以还是要说明一下,签约要谨慎,最好不要毁。

4.面试经历分享

在这一章中可以给大家分享一些在我在秋招中所遇到的一些具体的面试题以及我得出的一些关于面试的经验总结。

京东

京东我秋招中经历了两次面试,第一次是秋招提前批(无笔试),面试的是京东物流下的一个关于物流优化部门,第二次是秋招正式批,面试的是广告数据部。

第一次面试

一面(40分钟)

1、JVM内存模型、双亲委派模型

2、hashmap了解吗,把你知道的讲一下

3、java的锁机制的应用

4、介绍一下二叉排序树、红黑树等你了解的树结构

5、介绍一下Kafka

6、场景题:kafka如何保证多次修改一个商品的价格的顺序

7、介绍一下ZooKeeper

8、ZooKeeper的应用场景

9、介绍一下Hadoop的架构

10、说一下namenode和datanode的作用

二面(45分钟)

1、用Spark手撕一个WordCount的代码并且分析时间复杂度

2、手撕二分查找并分析时间复杂度

3、手撕快排并分析时间复杂度

4、关于排序算法的稳定性分析

5、讲一下Spark中的累加器与广播变量

6、有遇到过Hive中的数据倾斜问题吗,你是怎么解决的

7、讲一下Hive中的分区表与分桶表、内部表与外部表的区别

8、讲一下Spark与Flink的区别

9、Kafka如何保证数据不丢失

第二次面试

一面(60分钟)

1、讲一下Spark是什么,Spark的几种执行模式

2、讲一下Spark的宽窄依赖及Spark中的数据倾斜

3、讲一下Spark与Hadoop的区别

4、有接触到大数据中的海量小文件问题吗,可以讲一下

5、讲一下RDD、DataFrame、DataSet是什么

6、Hive与传统数据库的区别

7、ZooKeeper是如何保证数据一致性的

8、Yarn中的资源调度器有哪些

9、算法题:合并K个排序链表

二面(50分钟)

1、讲一下synchronized关键字

2、讲一下类加载机制

3、讲一下HashMap以及ConcurrentHashMap的底层结构

4、讲一下数据库的隔离级别

5、讲一下你所知道的MySQL存储引擎

6、讲一下MySQL中的视图以及MVCC

7、讲一下Spark中的stage、job、task的划分

8、Kafka具有高吞吐量的底层原理

9、ZooKeeper中的ZAB协议

10、讲一下一条SQL语句的执行流程

11、算法题:判断一棵树是否为完全二叉树

美团

美团的面试比较注重细节,就比如我在讲JVM堆的时候谈到了几乎所有的对象都在堆中创建实例,而面试官就提问到那有哪些对象不在堆中创建实例呢。

大家在平时学习时一定要注重细节。

一面(50分钟)

1、详细的讲一下JVM的内存模型

2、讲一下Volatile关键字的作用

3、讲一下MySQL中的隔离级别以及不可重复读与幻读的区别

4、讲一下MySQL中的视图及MVCC

5、HBase中的Rowkye设计原则

6、MapReduce的详细工作流程

7、HDFS的读写流程

8、Yarn的作用及常用的资源调度器

9、场景题:2.5亿个整数中找出不重复的整数的个数,内存空间不足以容纳这2.5亿个整数

10、算法题:二叉树的最近公共祖先

二面(50分钟)

1、Spark的组件有哪些

2、Hadoop的架构

3、Hadoop与Spark区别

4、Hadoop作业提交到Yarn流程

5、SparkStreaming连接Kafka的两种方式及区别

6、Kafka中消费者组是怎么回事?为什么Kafka要设有消费者组?作用是什么

7、Kafka中的幂等性原理及Kfka如何做到消息的顺序消费

8、Redis的内存淘汰策略

9、Redis中缓存雪崩、缓存穿透、缓存击穿

10、算法题:最长公共前缀

美菜网

一面(50分钟)

1、讲一下七层与五层网络模型,每一层的干什么的,TCP/UDP是哪一层 ,HTTP是哪一层 ,IP是哪一层

2、TCP与UDP的区别

3、进程与线程的区别

4、线程池的内部原理和多个线程池应用场景,线程池的缺陷

5、说说你所了解的java中有哪些锁

6、mysql底层原理及索引优化

7、TCP的三次握手与四次挥手过程

8、ZooKeeper的选举机制

9、讲一下Hadoop的架构

10、算法题:收集快排并分析时间复杂度

二面(80分钟)

1、Java ArrayList 和 LinkedList区别

2、谈谈你所了解的GC

3、乐观锁与悲观锁区别

4、详细讲一下Synchronized的底层实现原理

5、你是如何理解线程安全的,ConcurrentHashMap的线程安全是如何实现的

6、MySQL索引可用哪些数据结构实现?各有哪些应用场景?

7、讲一下死锁及死锁产生的四个条件

8、讲一下Spark的内存模型

9、讲一下Spark中shuffle

10、Spark的repartiton底层原理,它与coalesce的区别

11、Spark中reduceByKey与groupByKey的区别

12、Spark中的OOM问题

13、Spark的容错机制

14、Hive常用的存储格式有哪些

15、ZooKeeper的leader选举过程

16、Kafka的高吞吐量的底层原理

17、算法题:反转链表

大家应该可以从以上的面试题分享中看出,对于大数据开发这个岗位来说,除了掌握大数据的相关之外,对Java基础、计算机网络、数据库等亦需要熟练掌握,也就是在前面章节所提到的知识点,都是需要大家熟练掌握的。

对于大部分的同学来说,秋招可以说成是一个不断的打怪升级的过程,通过不断的面试,不断的积累,不断的总结,对于我来说,在秋招中最大的收获就是让我明确了自己的方向,找到了适合自己的学习方法,所以对大家来说,不要害怕一时的失败,也不要轻易的放弃,因为对于大部分同学来说,都是会遇到很多次的失败的,但是只要我们坚持下去,一定会有成功的那一次的!!!坚持复盘,坚持总结,努力学习!!

你可能感兴趣的:(大数据就业,hadoop,spark,zookeeper)