公司 | 一面 | 二面 | 三面 | offer |
---|---|---|---|---|
京东 | √ | |||
百度 | √ | |||
字节跳动 | √ | |||
小米 | √ | |||
哔哩哔哩 | √ | |||
新网银行 | √ | |||
微盟JAVA | √ | |||
58同城 | √ | |||
水滴筹 | √ | |||
美团 | √ | |||
科大讯飞 | √ | |||
猫眼提前批 | √ | |||
去哪儿 | √ | |||
大华 | √ | |||
Shopee | √ | |||
步步高 | √ | |||
伴鱼 | √ | |||
蔚来汽车 | √ | |||
众安保险 | √ | |||
美菜 | √ | |||
信也科技 | √ | |||
闻泰科技 | √ | |||
烽火星空 | √ | |||
同程旅行 | √ |
关于大数据行业的一些理解:
本刊的后续内容会详细的介绍如何学习大数据以及如何准备校招
校招主要是企业针对于应届毕业生而举行的招聘,主要可以分为暑期实习生招聘(大三下,研二下),秋招(大四上,研三上),秋招补录(秋招当年11月-12月),次年春招(大四下,研三下)。
**校招很重要,应届生的身份很珍贵!!!**在校招的时候与我们竞争的大部分都是没有工作经验的学生(少部分有实习经验),而且校招企业对学生的包容度高,一般对企业来说,社招更看重实际工作经验,而校招更愿意“培养人”(人才储备),校招招的是有基础,愿意学习的应届生;社招招的是有经验,可以直接上手的员工,相比较下来说,应届生更容易在校招中拿到优质offer。
一定要抓住校招的机会,不要高估自己的社会竞争力,对应届生来说,大部分好工作都是校招中签的,错过了校招总体感觉是每况愈下,好工作越来越难找。
校招流程
**暑期实习生招聘:**在每年的3-4月,是针对于大三下以及研二下的暑期实习生招聘,对大三下及研二下同学来说,如果是基础不错的同学,则建议是去参加此次招聘:
第一点则是因为实习生的招聘难度较低(相较于秋招),且通过实习转正进大厂的难度小于在秋招时直接面进大厂的难度;
第二点则是就算无法通过实习转正,此次实习经历也是可以写在简历上的,而一段好的实习经历对简历甚至是面试的通过率都是有帮助的。而且如果在公司实习期间表现较好的话,会有十分大的几率可以拿到一个SP的offer的;
第三点则是就算最后拿不到暑期实习的offer,那些面试经验也会让我们对自己的学习状态以及该如何提升自己有十分清楚的认识。
**秋招提前批:**以21届秋招来说,提前批是在5月中-7月这段时间,一般来说提前批是公司为了提前抢到人才所设置,所以可以说是“神仙打架”了,各种大佬云集,竞争激烈,但是提前批也有提前批的好处,首先就是一般公司为了提前批的效率是没有笔试的(适合一些算法较弱的大佬),只要简历通过筛选,整个面试流程特别快,而且大部分公司如果在提前批挂了的话在正式秋招是可以再次投递的(投递是注意看招聘页面是否注明影响正式秋招),但是还是建议大家准备好了再进行投递(有一定基础),因为提前批挂了会有面试记录的;其次就是在正式秋招前就可以拿到一个offer岂不是可以大大的提高我们的自信心了嘛。
**秋招:**正式秋招是针对于大四上以及研三上的同学,秋招的持续时间是整个校招流程中最长的,通常为7月-11月,建议所有的同学们一定要参加秋招,包括正在实习的同学(多给自己准备几条路),把握好秋招,秋招是HC最多的时候,大家一定要多投简历,通过各种渠道多投,而因为秋招的持续时间长,对大部分同学来说,都会是一路被刷到底的,保持好心态以及自己的学习节奏,不断的通过面试总结复盘提升自己,不断的去面试,都会拿到offer的,建议大家可以多拿几个offer(如果实力允许),毕竟有得选总比没得选强嘛。
**秋招补录:**是针对秋招的补招,一般于秋招同年11月-12月,相比于秋招来说竞争比较小,是面向秋招没有拿到满意offer以及因考研或其他原因错过秋招的同学,hc较少。
**春招:**春招一般发生在每年的3月-4月(针对大四下,研三下),相较于秋招来说,春招的hc较少且招聘周期较短,是应届生毕业前的最后一次校园招聘,主要是考研结束后的同学、错过秋招或者秋招没有拿到满意offer的同学竞争,相较于秋招来说大神可能少了一些,但是会有很多经历过秋招经验丰富的同学,所以大家一定要好好准备春招,这是毕业前的最后一次校招,错过了春招,社招的难度是大于秋招的。
校招的形式
以大数据开发的岗位来说,秋招的流程是:
我在秋招面试的公司中,大数据开发的面试都是与面试官一对一进行的技术面,群面很少。
岗位情况
个人职业发展:
大数据是一个值得深耕的行业,而且在国家的大力推动下,在未来的一段时间内,大数据都会是一个比较火的概念,而如果想要入门大数据开发,我觉得需要掌握技能树中所提到的技术,而如果想要在大数据行业进行深耕,则需要自己不断的关注一些大数据相关新技术的出现,以及需要多关注一些比较火的大数据社区(如阿里云栖社区)。保持不断的学习才能更好的提高我们的核心竞争力。
心态建议
大部分人的秋招会是一路被刷到底的,而我想说的是大家不要被那些失败所影响,因为秋招是一场持久战,不到最后都还是有机会的,对大家来说更重要的是在每一次面试的复盘与继续学习,从而找到最适合自己的学习方法以及提高自己的学习能力,这会对自己有很大的帮助,不要害怕失败,坚持下去一定可以拿到想要的offer的!!!保持心态,积极复盘。
对于招聘前的准备,首先需要明确自己想要从事的工程师岗位,再确定所从事工程师岗位的技术栈,不断聚焦去学习,学太多没用的东西既浪费时间也消耗精力。
**大数据开发:**是大数据中最普遍的一个方向,包括实时数据开发、离线数据开发、数据研发等,主要是做对海量数据的采集、清洗、入库、分析等工作,参与数据平台的研究,发掘数据的商业价值,提供实时数据计算,打造企业的数据模型等,一般对于应届生来说,我觉得需要掌握技能树中所提到的技术,是大数据行业中hc较多的一个岗位。
**数据仓库开发:**包括实时数仓开发、离线数仓开发等,主要是做对公司的一些相关业务所产生数据的数据仓库的开发与优化,构建数据模型,etl实施,etl性能优化以及相关技术问题,面向业务的olap,报表,数据提取工具等开发工作,主要是需要掌握Java、大数据相关框架、精通SQL、数据仓库实施方法论、了解数仓体系、如何从0到1搭建数据仓库,岗位相较于大数据开发来说hc较少一些。
**大数据算法:**该岗位要求较高(硕士起),因为涉及到算法,所以薪资也是大数据行业中最高的,主要是负责公司数据中台用户画像标签建设、优化用户画像标签模型和算法、推动用户画像数据不断向通用化、平台化方向发展、从数据中发现现有系统和算法的不足,提出改进算法并推动实现,该岗位需要掌握数据挖掘、机器学习、深度学习算法模型,掌握Java/Python,掌握部分大数据框架(如Hadoop),该岗位在校招中hc较少,主要是面向社招,要求较高。
**暑期实习生:**如果是准备参加暑期实习生招聘通过实习转正的同学,那么需要在大三上(甚至更早)就开始准备,因为暑期实习招聘的难度较低是相较于正式秋招来说的,想要进大厂也没有那么容易,需要同学们好好准备的。
**秋招:**而对于基础不太好而未春招(暑期实习生)或错过春招的同学来说,**重中之重就是准备接下来的秋招,**以笔者本身来说,早早的就确定了期待的岗位是大数据开发工程师,可以给大家分享一下笔者准备秋招的时间线:
**秋招补录:**11-12月,没有在秋招拿到满意offer的同学或者没有拿到offer的同学,在这段时间内也可以积极准备,每年在秋招补录上岸的同学也有不少,虽然hc较少,但是竞争的人数相较于秋招也有所减少。
春招:对于考研或者错过秋招的同学来说,应该利用12月-次年春招开启前的这段时间规划自己的学习重点,积极准备,因为相比于秋招来说,次年春招不论是招聘的公司或者是岗位的hc都更少一些。
简单介绍一下校招大数据开发需要掌握的基本技术栈,每一部分的重点以及如何去学习将在第三章详细介绍
Java:
对于刚刚入门的同学来说,最好的方式还是通过看视频来学习Java,也不建议初学者直接去看源码写项目。
安利一下牛客网的Java基础课,然后在看视频学习的时候搭配着《Head First Java》(比较有趣的一本书)进行理解学习,Java的细碎知识点比较多,在学习面向对象思想、JVM等的时候重在理解,而在学习集合、反射、常用类等的时候则重在动手,理解Java与C++的区别。
《Java 核心技术卷 1+卷2》是两本很好的工具书,介绍的的比较深入和全面,建议是在有一定的Java基础后进行阅读学习(也可用于视频学习后进行知识点的巩固与提升),也可以用来巩固知识点或者当做工具书参考,是两本适合放在自己身边的好书。
《Java编程思想(第四版)》大部分人称之为Java领域的圣经,不适合初学者阅读,但是内容多且全,一般可以用作知识点加深巩固提高,亦可作为参考工具书。
《深入理解 Java 虚拟机(第三版)》必看书籍,无论是面试还是在Java领域深入的研究,都离不开这本书籍,建议大家要多看几遍,都是干货,而且里面很多实战内容自己最好动手实践一遍。
《Java并发编程之美》非常适合来学习Java多线程的,讲解的通俗易懂,书中的内容基本都是结合代码来讲解的,建议大家在视频学习到Java多线程部分的时候可以搭配着学习该本书。
《Effective java》必看书籍,可以说是一本Java领域国宝级别的书,非常经典,这本书主要介绍了在 Java 编程中很多极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。这篇文章能够非常实际地帮助你写出更加清晰、健壮和高效的代码。本书中的每条规则都以简短、独立的小文章形式出现,并通过例子代码加以进一步说明。
框架部分的学习也是建议通过视频+自己动手实践来学习,建议是跟着视频做几个项目来巩固自己所学习到的知识点。
记得多总结!!!打好基础!!!!把重要的知识点都记录下来。 API 文档放在自己可以看到的地方,以备自己可以随时查阅。
操作系统这方面我觉得掌握基础知识和 Linux 的常用命令就行以及一些重要概念就行了
关于操作系统也是不建议初学者直接抱着书去啃,太难而且效率不高。因为操作系统比较枯燥的原因,建议这部分可以看视频学习比较好一点,推荐一个 Github 上开源的哈工大《操作系统》课程:https://github.com/hoverwinter/HIT-OSLab 。而书籍方面的话可以推荐一下《深入理解计算机系统(原书第三版)》,这本书不建议大家直接抱着啃,对初学者来说太难太难!!可以搭配着视频来对一些重点知识进行巩固提升,等大家成为大佬之后可以细细研读学习。
对于 Linux 我们要掌握基本的使用即可,需要我们对一些常用命令非常熟悉比如:目录切换命令、目录操作命令、文件的操作命令、压缩或者解压文件的命令等等。推荐一个 Github 上学习 Linux 的开源文档:《Java 程序员眼中的 Linux》:https://github.com/judasn/Linux-Tutorial
《鸟哥的Linux-基础篇》讲解Linux基础比较详细的一本书籍,也是不建议初学者直接全本阅读,可以先挑一些对于Linxu比较重要的知识点进行学习理解,在学习的时候多做总结,多思考。
面试八股文(考察的知识点高频且重复),必问知识点,在面试中对这方面的知识点要求不高,掌握基本的知识点就可以了(专门做网络方面的除外哈),给大家推荐《网络是怎样连接的》 、《图解 HTTP》,这两本书都属于比较有趣易懂的书籍,也适合没有基础的同学进行学习(准备面试时可以多看面经掌握一些高频的考点)。
在秋招中算法给我的体会就是太太太太重要了,笔试算法不行基本通过率就很低了,面试也是,如果手撕算法撕不出来也基本是宣告凉凉了。
建议大家在学习完Java基础后,就每天抽出一些时间来学习算法和数据结构,提高自己的编程能力,需要 自己坚持不断的刷题(牛客题库、LeetCode),以目前的面试来说,手撕算法已经成为必备技能了。
给大家推荐两本比较好理解的书来帮助大家理解数据结构与算法《大话数据结构》、《漫画算法:小灰的算法之旅》,适合没有基础的初学者进行学习,然后是建议大家在有一定基础后就可以搭配着书以及算法题来进行学习。《剑指offer》是必刷的,可以在牛客网上找到免费的(有许多大神的多种解题方式)。
算法很重要!!!大家要多刷多练(刷算法时建议不要使用IDEA等工具)。
数据库也是必须要掌握的,数据库相关的知识点也是校招考察的重点。
首先给大家推荐《SQL 基础教程(第 2 版)》来作为初学者的入门使用,在学习的同时对书中所涉及到的SQL语句一定要自己动手多练,因为对大数据开发的面试来说,在面试中所遇到的手撕SQL题的概率基本上可以和手撕算法一样,所以熟练掌握SQL的编写是十分重要的。
《高性能 MySQL : 第 3 版》可以帮助大家在有一定基础之后进行进阶修炼,但是全书阅读较难,建议大家可以针对性的学习某些知识,比如索引、优化、存储引擎等。
Redis也是需要掌握的,给大家推荐一下《Redis设计与实现》,比较经典的书籍且易学,同学们在学习的时候可以安装一个Redis数据库来进行实际操作学习,有助于同学们更快的学习与理解。
最重要的是熟练的编写SQL语句!!!在面试中会高频的出现手撕SQL题(牛客网上有练习题)。
大数据框架部分是推荐大家使用视频来进行学习的,推荐尚硅谷大数据视频(较全且较易获取),大家可以参考我的学习顺序:Hadoop ZooKeeper Hive HBase Sqoop Flume Kafka Scala Spark Flink 建议学习时最好跟着视频自己动手在虚拟机上搭建集群框架,然后练习常用命令。
初学者在学习视频时可以搭配着书籍进行补充学习,推荐一下《HADOOP权威指南 第4版 》(Hadoop是整个大数据的基石)、《Hive编程指南》(一般做数仓都用Hive),除此之外,大家在入门时也需阅读一些大数据基础书来了解大数据的意义(《大数据技术基础》、《大数据Hadoop 3.X 分布式处理实战》),在学习时重要的还是动手去做,注意每天学习之后一定要做总结,并且进行思考理解。
大数据的项目都会是多个框架搭配使用的,所以建议大家在学习完成多个框架之后,通过学习对应的项目来加深对技术的理解,以及大数据技术的实际应用。
数据仓库:
对于初学者入门数仓的,一个学习路线是,学习数仓建模各种理论,不求能深入理解,但至少有基本认识,然后加入到实际项目中,结合理论去学习项目中的模型,来更好的理解数仓建模。
《大数据之路:阿里巴巴大数据实践》 ,从阿里巴巴大数据架构出发来介绍数据仓库(包括数据采集、数据同步、数据挖掘等),是结合实战来讲的一本书籍。
学习数仓建模推荐一本经典书籍Kimball的《数据仓库工具箱:维度建模权威指南》,该书通过多个方面来讲解维度建模,学习该本书有一定基础后,可以做一些数据仓库项目(项目资源会在3.2节进行推荐),有助更好的理解数仓建模的知识。
对大数据开发岗专业技能的准备主要可以分为三类:
**Java部分:**提前规划好自己的学习路线,然后坚持每天学习且做笔记总结每天的重点知识。建议学习时可以视频+书籍+小项目练手(安利一下牛客网上的项目实战)的方式来学习Java部分。
**大数据部分:**建议在对Java部分学习完成之后再进行大数据部分的学习,一定要自己动手搭建集群框架,而且大数据部分关于每一个框架的细碎知识点都比较多,建议是在每学习一个框架的同时多去看看博客以及GitHub上一些对应的分享,把大量细碎的知识点理解并记忆(在笔试中会遇到这些细碎知识点)。
**计算机基础部分:**这部分理论及概念较多,且在笔试及面试中出现频率较高,对于该部分的学习建议就是多花费些时间理解并记忆,可以将一些关键的知识点存于云文档中,则可利用空余时间进行理解记忆。
关于Java的基础语法问题,范围比较广,毕竟以后是走大数据开发这条路嘛,所以对于大家来说这些“基本功”还是要熟练掌握的,这部分的内容比较偏向于理解,初学者建议是使用观看视频的方式进行入门,同时搭配着《Head First Java》来完善自己的知识体系。
其次基础语法涉及到的概念比较多,诸如 Java语言的特性、JVM JDK JRE的理解与比较、Java和C++的区别、Java程序主类的理解、字符型常量和字符串常量、常用的关键字、标识符、流程控制语句的使用、自增自减运算符、泛型与类型擦除、基本数据类型、方法、重写与重载、面向对象特征、对象与类的区别、构造方法的作用等都需要熟练掌握,而且这些知识点也都是笔试面试中的常客,也属于Java的入门基础知识点,对于这部分的知识点来说是重在理解、重在思考的,大家在搭配视频学习时最好是多读几本关于Java基础的书(《Java 核心技术卷 1+卷 2》 《Java 编程思想 (第 4 版)》),然后通过自己的深入学习思考并进行总结理解,真正理解Java的基本思想。
在学习的同时一定不要忘记自己动手多敲代码,多敲多练对于我们的学习之路至关重要!
**集合:**在笔试面试中都是考察的重点,常用的一些集合诸如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等),是一个加分项,如果不是主动提及的话,在面试中一般不会被问到。
学习重点导图总结(面试重点)
**计算机网络:**计算机网络部分的内容,可以首先掌握一些基础的知识,随后再慢慢的进行深入研究,因为一般如果不是专业做网络方面的,在面试中对这方面的要求不高,推荐学习《网络是怎样连接的》 、《图解 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等工具的使用。
学习重点导图总结(面试重点)
大数据部分需要学习的知识点比较多,Hadoop(三大基本组件HDFS、MapReduce、Yarn)、Zookeeper、Hive、HBase、Kafka、Flume、Spark、Flink等,在学习的时候一定要自己在虚拟机上动手搭建框架集群,电脑配置需要达标(主要是内存),16G内存可以满足基本的集群搭建。
在学习相关框架的时候建议以视频+书籍+博客的方式进行学习,首先是跟着视频了解框架的基本原理,学习如何搭建框架以及一些基本的使用命令,其次以博客作为对框架知识的基本补充,然后以书籍做全面的补充,使我们对所学框架有更深的理解。大数据部分的细碎知识点比较多,所以建议大家在平时学习对应框架时,每天抽出一些时间对当天所学的知识进行总结复盘。
以学习方法来说,以Hadoop为例,笔者学习的时候,首先是去了解为什么会出现这个框架、这个框架的出现解决了什么问题、该框架包含哪些基本组件,其次是跟着视频去动手在虚拟机上搭建单节点框架、练习基本命令、理解所配置文件的原理,了解该框架是否可以搭建高可用集群并动手进行搭建,然后跟着视频学习框架原理与应用,同时会搭配着书籍与博客(安利GitHub上的三个大佬 大佬1、大佬2、大佬3)学习一些基本原理。每个框架的细碎知识点都会比较多,建议大家在学习的时候每天都对所学的知识点进行总结,有助于在准备面试的时候进行复习(可以在学习的同时多去牛客网讨论区搜索大数据面经对自己进行查漏补缺)。
在面试中面试官首先会让你介绍自己所掌握的技术栈,然后一般会让你自己挑选比较熟悉的框架进行深挖,但也可能是随便选一个你技术栈中所提到的框架进行提问,所以说每一个框架都需要掌握,但一定要有两三个特别熟的(如Spark、Flink、Kafka、Hive等)!!!
如果有实习经历且写在简历上的话,则在面试中一定会被提问到实习经历相关的问题,其中就有项目部分,是属于一定会被提问到的,需要大家好好准备。
公司一般不会让实习生负责项目中较核心的部分,通常是让实习生来做一些“造轮子”、写写SQL之类的简单工作,而这部分工作如果用来当作我们简历上的项目经历则是于我们无益的,我们简历上所写的项目至少应该涉及到此次公司项目开发的一到两个核心部分,而我们应该如何了解到这些较核心的部分呢?
首先当然是要做好公司分配给我们的本职工作(认真完成),在完成我们任务的基础上可以去向你的主管以及同事们多交流交流,可以以多学一些知识或者想更了解公司的项目为由,来了解所做项目核心部分的一些基本原理,然后可以自己通过思考以及查阅资料来了解一些具体的实现(可以在同事不忙时多请教请教,一般程序员们还是比较乐于分享知识的),最后把所了解的部分吃透之后就可以把它变成自己的项目(一定要搞清楚每一个细节,不要给自己挖坑)。
如果有实习机会就一定要去,在实习中所做的项目在面试中很好的讲出来,对面试是十分有帮助的。
因为没有去实习,所以我的项目是通过自己构思设计所完成的(大家可以直接查看链接:https://pan.baidu.com/s/1-wPOn-DgTtZwEAgWKIXLKw 提取码:nokc )。
**项目的选择:**需要基于实际的应用来选择项目,大概的几个方向分为:数据仓库、实时数仓、推荐系统、离线海量数据处理、实时日志分析等,而我选择的则是实时流日志分析,因为在当下的实时推荐、微博热搜、热点新闻展示等都是基于实时的统计分析用户的行为日志而做出的操作,所以我选择了这个方向来作为自己的秋招项目。
**项目的结果:**1、存储至HBase中的结果数据可以作为实时推荐、热搜、热点新闻等的数据支撑 2、可以实时的对存储至Redis中的数据进行可视化展示。
项目的技术难点:
**如何解决技术难点:**总的来说就是要对自己项目所涉及到的技术框架有深入的理解,只有对自己所选项目的技术框架有深入的理解才能设计出更高效更优的程序,除此之外,还可以通过网络搜索以及请教老师或者网络上的大数据大牛博主,一般关于各种常见的技术问题都可以比较容易找到的,善用Gooole、Stackoverflow、GitHub、Csdn可以解决我们所遇到的绝大部分问题。
**总结:**曾经在面试中,有一位面试官对我说,一般对于没有实习的学生来说,对项目的提问主要就是为了确认学生简历上所写的项目是否亲自做过,所以说我们一定要把自己写在简历上的项目的整体脉络、所设涉及到的技术点、项目的各个细节都要搞得十分清楚,最好自己动手做过项目,并且所做的项目要一定要具有实际的应用意义。
项目的选择需基于实际应用出发,建议同学们准备两个项目,一个是数仓方向的项目,另一个是实时开发、离线开发、推荐系统等方向的项目,而对于没有实习的同学来说,可以给大家推荐几个相关的项目:
GitHub上一个完整的推荐系统(有源代码与数据,缺点是没有视频讲解)
以上给大家推荐的几个项目方向,并不需要全部都做,因为都是比较完整比较大的项目,建议时间充足的同学可以选择一个数仓项目以及一个实时处理或推荐系统相关的项目去做,重要是自己动手做!!!把项目的所有细节以及所涉及到的知识点都吃透(深挖)!!!切忌不要只看一遍不自己动手做,这样只会给自己挖坑!!!
关于如何介绍自己的项目,给大家分享一个牛客大佬。
对大部分应届生来说没有实习经验或工作经验是硬伤,所以一定要把握好秋招和春招,一旦错过秋招和春招,之后就会有极大的可能面临社招,此时没有工作经验大概率是会四处碰壁,拿不到自己满意的offer。
投递简历之前首先需要制作简历,一份好的简历可以在投递以及面试过程中起到非常好的作用,在不夸大自己能力的情况下,写出一份好的简历是十分重要的。
**为什么说写好一份简历很重要?**HR经常一天会看几百份,甚至上千份简历,一份简历可能看10-30秒就会决定是邀约面试,还是PASS掉。另外,就算通过了简历筛选,在后面的面试中,面试官也会根据你的简历来判断你究竟是否值得他花费很多时间去面试,简历是我们求职路上的敲门砖,在我们的整个应聘流程中起着重要的作用。
其次,在开始制作简历之前,要明确的一点是:**不会的知识点就一定不要写在简历上,**因为在面试中所考察的绝大部分知识点都是你简历上所写的,深挖简历上所写的每一个知识点,**然后学会引导面试官,通过引导面试官提问来突出自己的技术亮点,**当然,自身的准备一定要足够充分。
写好一份简历十分重要,在接下来将会给大家讲解如何写好一份简历。
本节将从简历模板、格式排版、基本信息、专业技能、项目经历、自我评价六个角度来进行讲解。
模板的选用尽量简约一些就行,不用搞的太花哨,选一个简约的模板,调整好合适的字体就行(字体和标点符号要统一,不要出现中英文标点符号混用的现象),建议大家不要在word上自己搭线来做简历,最好是去找一些专业的简历模板网站即可。
推荐牛客简历助手 (个人中心 - 我的简历 ) 牛客的简历助手很强,一次填写好后所有在牛客网上进行招聘的企业都可以直接进行投递,也可以将简历进行导出使用,导出的简历直接为pdf版本的,十分方便。
我在秋招时使用牛客简历助手所做的简历(简历还可以上传附件,如获奖证书等):
简历中的标点符号,切忌不要混用中文标点符号和英文标点。
关于格式,在介绍专业技能以及项目的时候尽量精简语句,合理分段,不要出现大段连续的项目介绍。
简历最好做成pdf版本的(迅捷pdf转换器 免费),因为word版本可能在不同的环境下打开存在乱码现象。
一些技术名词不要弄错了大小写比如MySQL不要写成mysql,Java不要写成java。
**基本信息:**基本信息需要放在简历的最上边,需要包括 姓名、电话(重要)、电子邮箱(重要)、博客或GitHub(跳转链接,加分项)、年龄、学校、专业、四六级(对应届生)、求职意向,其实在基本信息这里,能够表达出我们的基本个人信息就足够了,可以给大家参考一下我的简历基本信息这一栏:
这个点算是简历中的核心点了,**因为在这里HR、面试官都会很关注这个点的,也是通过这个点来看出你是否和所需的岗位匹配,**因为一般HR可能不太懂技术,而大数据开发岗位所需的技术栈大部分都是大同小异的,所以HR可能就是通过你的专业技能所写来与公司的技术栈进行匹配来决定是否通过的。
**专业技能在写的时候,最好是有层次一些,**比如从Java基础,Linxu基础,数据库,然后到Java框架,最后到大数据相关的框架,这样写的好处是可以让面试官在根据简历进行提问考察的时候可以从浅到深进行比较全面的考察。
**熟练程度,一般分为:了解、熟悉、熟练掌握、精通几个等级,**在对一些比较心怡的公司进行重点投递前,首先可以花费时间去了解一下该岗位所需的技术栈,对公司需要而自己暂时不会的,则可以花几天时间学习一下,然后在简历上可以写上自己了解这个技能(建议不要大量出现了解),而对其他自己所掌握的技术,**建议大家把熟悉都突破为熟练掌握。**慎用精通!!!
大家可以根据以下标准判断一下自己掌握的知识水平:
最重要的一点就是,我们在专业技能所写的,一定要会,而且最好是可以进行深挖的,因为在面试中所考察的绝大部分都是根据你所写的技术进行考察的!!要注意简历的真实性,一定不要写自己不会的东西,或者是带有欺骗性的内容(这只能是我们给自己挖的坑!!)
**项目经历:**可以从项目描述,个人职责,相关技术,项目成果四个方面去介绍你的个人项目,条理比较清晰,可以让面试官第一时间了解你的项目。
项目一定要自己亲手动手做,吃透每一个细节,因为面试肯定会问你负责了啥,有啥难点,聊到对应的技术栈也不会放过你的,所以乱写就是在给自己挖坑。一定不要有任何形式的项目造假
常见项目问题:
**自我评价:**这一块写一些积极向上展示自己真实性格的就好啦,你就是你,是这条街最靓的仔。
其余:
本节主要会给大家介绍常见的简历投递途径以及简历投递策略。
常见的简历投递途径有:校园宣讲会、网申、内推
强烈建议大家在秋招时多多关注牛客网,不论是校招公司、内推、面经、笔试题练习、学习方法与资源的分享等都特别的多!!
建议大家是首先关注网申,因为在暑假的时候就会有大量公司开启了秋招,而校园宣讲会一般开启的时间都是在开学后,如果等到开学后还没有拿到offer,则可以在此时多多关注校园宣讲会,采用网申+校园宣讲会同时进行的策略,因为一般在校园宣讲会中面试的流程比较快而且面试的通过率较高。
**关于网申的投递策略:**正式秋招会从7月陆陆续续开始,而秋招提前批则会从6月初就开始了,在这里关于提前批与正式秋招的选择具有一定的策略,首先是如果知识储备充分就去参加提前批,如果没有那就等待正式秋招,因为提前批挂了会有面试记录,可能会影响后面的面试(但还是建议有准备的同学去参加提前批,可能不用笔试且简历通过率比较高的),另外就是不要急着的去面大厂(机会难得),可以先去小厂锻炼锻炼面试经验(只要有面试机会),因为很多大厂的面试批次较多,我们可以看好时间安排到每个大厂的第二三批,如果提前直接面大厂,很容易会因为面试经验不足被刷,而如果拖到最后的批次则 hc会比较少甚至直接没了,所以说先找一些小厂来进行面试经验的积累,然后把握住大(中)厂的中间批次进行投递面试。
整个秋招的持续时间比较长,在秋招开始前一定要根据自己的学习进度来制定属于自己的投递策略(对心水公司重点关注投递)。
笔试一般分为 性格测试、行测、专业笔试。
**性格测试:**这个没什么好说,认真写一下即可,毕竟大家都是健康向上的新时代乐观积极大学生~(只需要注意一下企业挖的一些小坑即可,例如企业会放置一些重复的题,然后前后出现的选项之间会发生变换,大家在做题的时候一定要注意相同的题前后的选项要相同、会有一些意思相近的题目,也是需要注意在作答的时候选的一定要相同)。
**行测:**通常的行测也不存在什么难度,认真答题即可通过,在这里给大家分享一下行测的基本题型:文章阅读理解答题、数学统计分析题、图形题、资料分析题等题型,大家认真的答题一般都可以通过。(安利一下牛客题库,大家可以提前练练行测题)。
**专业笔试:**大数据开发岗的笔试题一般分为选择题、SQL题、算法题
**算法题:**这算是笔试中的重中之重了,算法题做不出来的话,大概率是已经凉凉了。首先我认为算法题是重在积累的,不论是笔试中还是面试中的算法题,都是会有一个类型归属的,如动态规划、二叉树递归、贪心算法等,如果没有在之前做过类似的题目,则在笔试时大概率是很难直接做出来的。
**我们的目的是拿到更高的分数从而通过笔试,所以合理的利用规则也是可以的。**
首先明确一点,不论是笔试还是面试都是有章可循的,一定不要想着如何去应付面试,糊弄面试官,这样做终究是欺骗自己。
牛客网讨论区上有很多面经,推荐大家多看面经对自己查漏补缺,这是一种比较好地检验自己水平的方式。但是,一定不要过分寄希望于各种面经来去提高自己的综合能力。
**自我介绍:**自我介绍一般是你和面试官的第一次面对面正式交流,一个好的自我介绍应该包括:
建议大家准备两份自我介绍,一份对hr说的,主要讲能突出自己的经历,会的编程技术一语带过;另一份对技术面试官说的,主要讲自己会的技术细节和项目经验。
**技术方面:**首先要搞清技术面可能会被问哪些方向的问题,具体的可以参考第三章对专业技能介绍的思维导图,对技术的提问涉及到的特别广,基本是在第二章技能树中所写到的都可能会被问到,但是也可以分清主次关系,对于自己不熟悉的技术不要写在简历上,对于自己简单了解的技术不要说自己熟练掌握,然后把简历上所写到的技术彻底的搞懂!!!一定要深挖理解记忆。
**项目方面:**技术面中一般都会让你介绍一下自己的项目,所以说项目一定要搞熟(项目一定会被问到的,而且问的都会比较深)。你可以从这几个方面进行考虑:
**反问环节:**就技术面试而言,回答这个问题的时候,**只要你不是触碰到你所面试的公司的雷区,那么这对你能不能拿到最终offer来说影响确实是不大的,**大家可以从以下几个方面进行提问:
首先在每一次面试后一定要进行及时的复盘总结,对自己在面试中的表现仔细分析,对遇到的问题及时解决,因为这是我们在校招中提升自己最快的一种途径了!!大家可以分类进行文档总结,对遇到不同的问题进行不同的归纳总结,可以给大家分享一下我秋招时的复盘总结:
送给大家一段我很喜欢的话:
如果失败,不要灰心;如果通过,切勿狂喜。面试和工作实际上是两回事,可能很多面试未通过的人,工作能力比你强的多,反之亦然。面试像是一场全新的征程,失败和胜利都是平常之事。所以,劝大家不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,保持心态,继续加油!
本小节将给大家讲一些面试中需要注意的事项:
给大家分享一些牛客上的面经汇总:大佬、大佬、大佬,大家可以直接去牛客网讨论区搜索对应岗位的面经即可!
大家选择offer的时候一般有几个影响因素:薪资待遇、地域、岗位
**大家要慎重选择offer,第一份工作对我们的影响比较大!!!**如果是秋招拿到的不太满意的话,可以选择先签了保底,毕竟大部分学校都会给学生一次毁三方的机会的。但是还是要劝大家慎重,因为毁三方是很麻烦的,有的企业可能会拖到第二年的三四月份才会寄回三方,影响新的三方发放(新三方申请需要公司的正式解约函)以及春招签新的offer,所以还是要说明一下,签约要谨慎,最好不要毁。
在这一章中可以给大家分享一些在我在秋招中所遇到的一些具体的面试题以及我得出的一些关于面试的经验总结。
京东我秋招中经历了两次面试,第一次是秋招提前批(无笔试),面试的是京东物流下的一个关于物流优化部门,第二次是秋招正式批,面试的是广告数据部。
第一次面试
一面(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基础、计算机网络、数据库等亦需要熟练掌握,也就是在前面章节所提到的知识点,都是需要大家熟练掌握的。
对于大部分的同学来说,秋招可以说成是一个不断的打怪升级的过程,通过不断的面试,不断的积累,不断的总结,对于我来说,在秋招中最大的收获就是让我明确了自己的方向,找到了适合自己的学习方法,所以对大家来说,不要害怕一时的失败,也不要轻易的放弃,因为对于大部分同学来说,都是会遇到很多次的失败的,但是只要我们坚持下去,一定会有成功的那一次的!!!坚持复盘,坚持总结,努力学习!!