LZ从Java Web转大数据,并且成功拿到上市公司Offer,工资直接涨了9K+

Before

本文的目的是为你(有一定编程基础的同学仔)提供一些想打算转大数据的参考;

如果你是大数据工程师,不太适合你进行进阶学习;

如果你是零编程基础同学仔,你可以参考我之前写的blog,建议先把基础打牢,再去学习大数据;

如果你不是攻城狮,那么你可以当做一个故事即可。

大家好,我是Hongten

今天我要给大家分享一下我的个人经历,我从Java Web转大数据,并且成功拿到上市公司Offer,工资直接涨了9K+

我大二的时候,就开始接触Java,之前也接触了一些Android的知识,但是最终还是觉得自己更擅长Java Web。所以就这样一直朝着Web方向发展。

工作一段时间后,从刚开始接触的Servlet/JSP,JPA,Web Service到后来的Struts,Hibernate,Spring(SSH),再到后来的Spring boot,Spring Data,CXF,Quartz等,用着用着,你会有一种感觉,就是他们有太多的相似之处,总逃不过MVC,我更喜欢把它理解为三个部分:

  1. 我们看到的UI
  2. 我们编写的处理逻辑
  3. 数据存储

对于我自己来说 ,我更擅长编写处理逻辑,即我们所说的后端程序。也经常与数据库打交道。在数据库方面,多数情况下使用mysql或者是oracle。

数据的更改:数据从UI流入我们的逻辑处理(通常情况下,我们使用框架来实现,如Spring),经过处理的数据保存到数据库。

数据的查询:通过查询条件从数据库中过滤后,得到我们想要的数据,经过我们的逻辑处理,最后在UI上面呈现,有些是以report的方式呈现,但是不管用什么方式,最终,我们要看到我们想要的数据即可手工。

所以,做着做着,我感觉遇到了瓶颈!

我从一下几个方面进行对我自我剖析:

第一:Java基础掌握程度

第二:框架掌握程度

第三:数据库掌握程度

第四:数据结构与算法

若有不正之处,还请多多谅解,并希望批评指正。

请尊重作者劳动成果,转发请标明blog地址

https://www.cnblogs.com/hongten/p/10635627.html

第一:Java基础掌握程度

在Java基础方面,集合LZ的面试经验,LZ大致分为一下几个方面

1.集合

比较List和Set?我想多数人都觉得easy

比较ArrayList,LinkedList, Vector?

比较HashSet,TreeSet,LinkedSet?

比较HashMap,HashTable,TreeTable,LinkedHashMap?

当你都能够回答以上问题以后,那么接下来,面试官会想,这小子还不错哦,至少对集合还是有一定认识的!!! 那么给你来一点难度:

HashMap的工作原理是什么?

HashMap冲突很厉害,性能差,你会怎样解决?(很多人估计回想HashMap有冲突???我咋第一次听到呢?还性能差,还要解决???)

当你解决了HashMap的冲突,那么接下来,面试官就会想,这小子还有两把刷子啊,我再给你来两个进阶Questions!!!

比较HashMap,HashTable,ConcurrentHashMap?(看到这里,我想也有一堆人一脸懵逼,好像看过,但是有说不出来.....)

2.IO/NIO

比较IO和NIO?

当你刷刷刷,说完,哈哈哈,不要以为你NB,这时候面试官会给你来一些更猛的:

在NIO里面,说说Buffer的原理?

说说Selector的原理?

我们作为面试者,不要慌,不要认怂。把你能想到的,一条一条的讲出来。面试官会肯定你的。

3.线程

我觉得java里面的线程和接下来的JVM是比较难的。

线程是啥?进程是啥?

线程的创建过程?线程的状态?

线程的常用方法:Thread.sleep(), Thread.yield(), t.join(), t.wait(), t.notify(), t.notifyAll() 他们的特点是啥?怎么用?在哪里用?

面试官常用三连炮:what, where, how.

如果你准备,那么上面的问题还是easy

这是就会迁出下面的问题:

你们的项目里面有用过线程池啥的吗?

如果你做了一段时间的java开发,线程池都没有用过,面试官估计当场就要在他内心里面打人!!!

线程池任务缓存排队策略是啥?

线程池任务拒绝策略是啥?

线程池创建都用哪些方法?

一连串的炮轰下来,面试官想要的结果就是,我是面试官,我是最NB的!!!没把你面倒,是他的责任啊!!!

4.JVM

JVM在面试的时候一定会有的,所以,建议大家看看比较好

类加载过程是啥?

类加载层级结构是啥?双亲委派机制你知道吗?优势在哪里?

Java内存模型原理?特征?

Synchronized和Volatile的区别?

内存屏障/栅栏原理?

哪些内存需要GC?怎样判断?

内存回收算法?

经常Full GC,该怎样处理?

垃圾回收器比较?

在这里,我建议大家多看书,多总结。毕竟作为一个Java开发人员,知道JVM也是一种工作态度吧!!!

第二:框架掌握程度

对于框架,我想Hibernate和Spring是非常不错的,特别是他们里面的一些代码设计思想,确实值得我们借鉴。

框架是给我们使用的,你说你会使用,不要觉得你听NB的,一个零基础的Java开发人员可以在一个月里面,把Hibernate和Spring用的很6

真正NB的人,绝不会停留在只会使用它们,他们更注重源框架里面的或者底层的东西。

1.Hibernate

多看源码

Hibernate的原理?

一级缓存,二级缓存?

Hibernate里面的几种状态?

Hibernate支持的缓存策略?

2.Spring

多看源码

Spring工作原理?

IOC原理?

总之,框架是给我们使用的,是用的,是用的,是用的。

多练习,你可以使用的很6;

多看源码,人们会觉得你技术很6

第三:数据库掌握程度

在面试的过程中,数据库这块也会被提到的,如果没有数据库,那么你数据存哪里呀?是吧

MySQL引擎有哪些,特点?

事务是啥?

存储过程有听说过吗?优缺点?

锁的原理?

索引是啥?优缺点?原理?

视图原理?

SQl优化?

面试官在面试这些的时候,多数会联系你的项目经验来提问。

始终要清楚:what, where, how

第四:数据结构与算法

数据结构与算法我想作为程序猿或攻城狮的你,应该说必须要掌握的呀。

1.排序算法

插入排序

快速排序

归并排序

冒泡排序

堆排序

我们需要知道他们的原理,并且能够随意转换为代码实现

2.BFS与DFS

广度优先搜索与深度优先搜索(对于有些同学仔,看见这个可能会懵逼,这是啥?)

3.Tree

遍历树

先序遍历

中序遍历

后序遍历

动态创建树

树的高度

树的最大值

树的最小值

4.动态规划

动态规划需要大家理解并掌握,思想很重要

5.LZ给你出的算法题

/**
 * 算法题:
 * 给出一个有序的非空数组a,数字target和k,里面涉及到的数都是int类型。
 * 需求:把target插入到数组a里面去,然后求出与target相邻的k个数。如果离target的距离相等,那么取小值(如下面6和10,取值6)。
 * 
 * 举例:
 * 输入:
 * int[] a = {-3, -2, 1, 2, 4, 5, 6, 7, 9, 10, 13, 15, 18, 20, 34};
 * int target = 8;
 * int k = 3;
 * 
 * 输出:
 * 6, 7, 9
 */
View Code

大家可以到https://leetcode.com/ 上面去刷题,提高自己的算法能力。

当你觉得上面的问题都easy,并且在面试的时候有条理的说出来,我想你在web开发面试中薪水要求高一些没毛病。

若有不正之处,还请多多谅解,并希望批评指正。

请尊重作者劳动成果,转发请标明blog地址

https://www.cnblogs.com/hongten/p/10635627.html

转战大数据

可能会有同学仔会问,LZ粉丝超过2000,博客园排名在100左右,技术啥的,应该不错,干嘛还要转大数据方向呢?

其实主要有一下几个因素:

  1. LZ感觉在web方面遇到了瓶颈
  2. LZ觉得大数据是一种趋势
  3. LZ喜欢学习新的事物

1.LZ感觉在web方面遇到了瓶颈

LZ在工作了一段时间后,感觉在web方面遇到了瓶颈,正如前文所讲。这种瓶颈导致LZ有一些迷茫,感觉看不到前方的路。

站在技术层面上来讲,技术是可以通过我们后天努力达到的。我们只要不断的练习,总结,我们的技术就会在短时间内得到飞速提高。

LZ在过去的一段时间里面做了很多政府网站的开发和维护工作。在此期间也积累了很多实战经验。所以,遇到web方面的问题,基本都能拿下。

但是,当我们做很多事情的时候,都是用同一的方法,每日重复着相同的动作,做着做着,你会开始怀疑你自己,开始怀疑人生。

干嘛要这样做?有什么意义?我的目的何在?

2.LZ觉得大数据是一种趋势

大数据在几年前就开始火起来,并且迅速升温。

现在是大数据时代了,大数据是一种趋势。

我们应该赶上大数据这班车才行,否则,是否被淘汰?

3.LZ喜欢学习新的事物

或许也有一些人想转入大数据,但是不知道从哪方面入手。如果有人给你指出一条路,那么你成功转入大数据,就变的相对容易了。

第一步:你需要有编程基础(LZ具备了)

第二步:你需要有Linux的基础(知道啥是Linux,基本的命令会敲吧,LZ具备了)

第三步:你需要具备学习新的编程语言的能力(比如Python,Scala,LZ很久之前就学习了Python,所以很容易上手-主要针对机器学习,Scala也差不多-主要针对Spark。Scala很好学的,LZ也是在学Spark之前,学习Scala的)

第四步:接下来,才是学习大数据。学习Hadoop以及Hadoop的生态圈(Hive,Hbase(Redis),Yarn,Zookeeper,Flume,Kafka)

第五步:学习Spark,Spark-SQL,Spark-Streaming,Storm

这是LZ自己的学习路线。LZ是从第三步开始的,如果你没有第一步和第二步作为基础,你最终还是会返回来从第一步开始。所以不要走捷径。

那么,学那么多的东西,到低有啥用呢?

  1. 技术上,这是你比web开发人员懂得多的地方,即你的知识门槛就高一些
  2. 薪资上,你的知识门槛高了,那么自然你的薪资就会高,LZ花了4个多月的时间完成了第三步到第五步,成功拿到offer的时候,薪资涨了9k+,LZ认为这样的时间投入和汇报还是不错的

如果你也想成为像LZ这样,在技术上面门槛高一点,薪水多一些

你可以通过扫描上面的二维码拿资料,或者加LZ的wx:hongtenzone (备注:big data)

如果你也想在大数据方面发展的话,那么是你行动的时候了

如果你也想在工资上面有所改善,那么是时候改变你自己了

12块软妹币,或许就改变不了你今天的生活,但是这些资料,或许会改变你的一生。

资料

12块软妹币,LZ可以提供的资料有哪些呢?

1.大数据的学习资料(包括Linux,Hadoop,Spark)一套,LZ就是使用这些资料的,你也可以在网上搜索到其他资料,但是很散。

2.LZ的技术总结(包括前面提到的Java基础技术总结和大数据知识总结,LZ通过这个技术总结,成功拿到上市公司offer,工资直接涨了9K+)

3.LZ提供学习过程中的技术指导(如果你在学习大数据的过程中,遇到什么问题,可以随时给LZ讲,LZ尽量第一时间回复你)

4.LZ也会分享一些面试经验给你,增加你面试的成功率,毕竟LZ是过来人

结束语

追求卓越,成功就会在不经意间追上你!

行动起来吧!!!少年!!!

猜你喜欢

转载自www.cnblogs.com/hongten/p/hongten_big_data_offer.html
LZ4