来源:阿里巴巴中间件团队分享文章 更多请关注:MAYOU18
很尴尬的是,这个类型的文章其实以前笔者就写过,原文章里,笔者自称LZ(也就是楼主,有人说是老子的简写,笔者只想说,这位同窗你站出来,保证不打死你,-_-),原文章名称叫作《回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议》,首发于笔者的博客园博客,这里也郑重声明一下,全部内容相似文章均属转载或抄袭。
以前看过的朋友可能会有疑问,为何要再次捡起这篇文章,还把称谓改为了笔者这么高端的词汇。html
简单的解释一下,缘由有三个,第一个缘由,是说不得的缘由,请各位看官自行YY。第二个缘由,是两年过去了,笔者在阿里也呆了700+天的时间,因此对这篇文章,又有了一些新的理解和想法,想回过头来,再完善一下。最后一个缘由,是由于最近笔者常常刷某音,根据玩某音的经验,发两次会火,哈哈,-_-。前端
因此,这篇文章,能够说是以前那篇文章的进阶版,为了方便你们观看,本文会引入不少原文章的内容,避免没看过上一篇文章的同窗,还须要回过头去翻看。(好吧,我认可是为了偷懒,-_-)java
和以前同样,文章一上来,咱们先来谈谈阿里的社招面试都问什么,其实这个话题并非什么秘密,全部来阿里面试过的同窗,都能回答一二。两年前的时候,笔者在文章里是这么回答的。mysql
这个是让LZ最头疼的一个问题,也是群里的猿友们问的最多的一个问题。程序员
说实话,LZ只能隐约想起并发、JVM、分布式、TCP/IP协议这些个关键字,具体的问题真的是几乎都没记住。并且就算LZ记住了,也告诉你了,你也背会了,但LZ以为,在面试中,你被问到如出一辙问题的可能性依然很小。面试
甚至,就算你运气好被问到了,你也照着背下来了,也不必定就能对你的面试起到正面的做用,由于面试官万一多问一句,你可能就露馅了,那还不如干脆点说不会更好。redis
LZ参加的是阿里的社招面试,而社招不一样于校招,问题的范围实际上是很随机的。由于能参加一些比较知名的互联网公司社招的人,70%以上都会有个3-5年的经验。这倒不是说一两年经验的同窗没有机会进这些公司,而是由于这种公司,大部分状况下只招一些比较资深的开发和应届生,而不招那些处于中间阶段的人。而1-2年经验的同窗,每每就恰好处于这个尴尬的阶段。算法
对于能有3-5年经验的这部分人中,每一个人的经历又都不一样,所擅长的点也不同,所以这就会致使每一个人的问题和范围都不太同样。spring
不多说有哪一个知名的互联网公司,好比BAT、京东、360、搜狐、网易等这些公司,其社招面试还有固定的问题和模式,让你能够像应届生面试同样,在面试前靠临时抱佛脚度过这一关。sql
大部分公司在社招的时候,不光是阿里,其它公司也都同样(由于LZ在一年多前也参加过不少其它知名互联网公司的面试,详情见《记录2015年年初跳槽的经历!》),基本上都分为两个阶段的提问。
第一个阶段是主语言自己以及它的高级特性,第二个阶段是讲述本身的项目,并在中间穿插着问题。
因此,LZ不妨就这两个阶段,谈谈社招面试的准备,而不是去把阿里面试的过程背一遍。说实话,LZ也确实记不住,因此不要再问LZ阿里面试都会问哪些问题了,你看看上面那个链接里的文章,也会发现,LZ里面也基本上没有写具体的问题,缘由是同样的,真的记不住啊。(就是由于记忆力的问题,致使LZ从小偏科,文科成绩一直堪忧,-_-)
看到当时本身的回答,笔者有种在review几年前代码的错觉,不过好在,哪怕是如今来看,当时写的虽然多了些废话,但总体思路应该仍是没错的。
只不过在这里,笔者想要再补充下,若是把以上两个阶段再归纳化一下,其实获得的答案,就基本适用于全部面试,而并不是只是阿里的社招面试。
那就是,第一阶段是主语言,第二阶段是项目。
这点相信很多人在面试的过程当中,已经深有体会,大部分面试就是分这么两个阶段去问的,只不过针对不一样的公司和职位,每一个阶段面试的难易程度会不一样,所问的问题范围,天然也会有所不一样。
说到面试的难易程度,不得不八卦一下,据以前笔者在网上某地方看到的评论中说,就面试的技术难度而言,BAT之间的排列顺序是这样的,阿里>百度>腾讯。
对此,笔者实际的感觉却是和上面一致,由于笔者参加过百度和阿里的面试,就我的的感受而言,阿里的难度是高于百度的。
不过笔者说阿里的难度比百度高,其实也仅限于笔者那一次具体的面试,实际上,两家公司面试的具体难度,是不能这么简单对比的。
面试的难度,根据职位的不一样(好比低级工程师仍是高级),部门的不一样(好比业务部门仍是纯研发部门),用人需求的不一样(好比是急需仍是人才储备),面试官的喜爱(好比是装逼型仍是温和型)等等因素,就算是在同一家公司,难度也是会有差别的,因此不能简单的对比两家公司的面试难度。
到底难不难,只有来试了才知道!
因此,阿里中间件团队欢迎你!(咳咳,不要问我为啥加这句话,说不得,0-0)
这个话题相信是你们比较关心的话题,以前笔者其实已经详细谈论过了,就这一部份内容来讲,以前写的仍是比较详细的,因此索性偷个懒,把原文搬上来了。
LZ会分为四个部分来谈论这个问题,因为LZ自己是Java出身,所以关于主语言的问题,都是与Java相关,其它语言的同窗能够选择性忽略。此外,面试的时候通常面试官的问题都是环环相扣,逐渐深刻的,这点在下面你们能够更明显的感觉出来。一、主语言自己以及它的高级特性。
主语言固然就是你平日里拿来赚钱的家伙。不要告诉LZ你没有主语言,你会N多种语言,或者是你精通N多种语言,你要非这么说的话,你能够来杭州试试,LZ保证不打死你,最多打残。
LZ的主语言很显然是Java,那么对于Java来讲,它的语言自己以及它的高级特性,都有哪些比较容易在面试中问到呢?
通常状况下,主要有如下知识点很容易被问到。(PS:如下所列举的,都是一些Java相对而言比较高级一点的知识点,由于这里谈的是社招,而不是校招)
1)Java的数据结构相关的类实现原理,好比LinkedList,ArrayList,HashMap,TreeMap这一类的。如下简单模拟一个数据结构的连环炮。
好比,面试官先问你HashMap是否是有序的?
你确定回答说,不是有序的。那面试官就会继续问你,有没有有顺序的Map实现类?
你若是这个时候说不知道的话,那这个问题就到此结束了。若是你说有TreeMap和LinkedHashMap。
那么面试官接下来就可能会问你,TreeMap和LinkedHashMap是如何保证它的顺序的?
若是你回答不上来,那么到此为止。若是你依然回答上来了,那么面试官还会继续问你,你以为它们两个哪一个的有序实现比较好?
若是你依然能够回答的话,那么面试官会继续问你,你以为还有没有比它更好或者更高效的实现方式?
若是你还能说出来的话,那么就你所说的实现方式确定依然能够问你不少问题。
以上就是一个面试官一步一步提问的例子。因此,若是你了解的很少,千万不要敷衍,由于可能下一个问题你就暴露了,还不如直接说不会,把这个问题结束掉,赶忙切换到你熟悉的领域。
2)Java并发包当中的类,它们都有哪些做用,以及它们的实现原理,这些类就是java.concurrent包下面的。与上面同样,我们也简单的模拟一个并发包的连环炮。
好比面试官可能会先问你,若是想实现全部的线程一块儿等待某个事件的发生,当某个事件发生时,全部线程一块儿开始往下执行的话,有什么好的办法吗?
这个时候你可能会说能够用栅栏(Java的并发包中的CyclicBarrier),那么面试官就会继续问你,你知道它的实现原理吗?
若是你继续回答的话,面试官可能会继续问你,你还知道其它的实现方式吗?
若是你还能说出不少种实现方式的话,那么继续问你,你以为这些方式里哪一个方式更好?
若是你说出来某一个方式比较好的话,面试官依然能够继续问你,那若是让你来写的话,你以为还有比它更好的实现方式吗?
若是你这个时候依然能够说出来你本身更好的实现方式,那么面试官确定还会揪着这个继续问你。
为何说面试的时候要引导面试官,缘由就在这了。由于面试官的提问不少时候都是有迹可循的,你若是抓住了他的轨迹,可以猜到他下面极可能会问什么,那你在回答的时候就能够往你想要谈的方向去说。这样面试时就会显得更加从容,更加的游刃有余。
3)IO包和NIO包中的内容。这部分里面NIO会是重点,IO包大部分都会比较熟悉,所以可能会直接略过,直接问你NIO的内容。
IO包和NIO包的内容相对来讲不是不少,首先NIO模型要熟悉,特别是其中的selector必定要很是清楚它的职责和实现原理。其实NIO的核心是IO线程池,必定要记住这个关键点。有的时候,面试官可能也会问你IO包的设计模式(装饰器模式),为何要这样设计?
有的面试官还会问你有没有更好的设计,这个时候若是你不知道请果断说本身如今的水平有限,想不出来更好的设计,千万不要信口开河,随意YY。
4)Java的虚拟机的内容。这部分主要包括三部分,GC、类加载机制,以及内存。
一个GC部分简单的连环炮。
面试官能够先问你何时一个对象会被GC?
接着继续问你为何要在这种时候对象才会被GC?
接着继续问你GC策略都有哪些分类?
你若是说出来了,继续问你这些策略分别都有什么优劣势?都适用于什么场景?
你继续说出来了之后,给你举个实际的场景,让你选择一个GC策略?
你若是选出来了,继续问你,为何要选择这个策略?
下面是关于类加载机制的简单连环炮。
首先确定是先问你Java的类加载器都有哪些?
回答了这些之后,可能会问你每一个类加载器都加载哪些类?
说完之后,可能会问你这些类加载之间的父子关系是怎样的?
你在回答的时候可能会提到双亲委派模型,那么能够继续问你什么是双亲委派模型?
你解释完了之后,可能会继续问你,为何Java的类加载器要使用双亲委派模型?
你回答完之后,可能会继续问你如何自定义本身的类加载器,本身的类加载器和Java自带的类加载器关系如何处理?
再来一个关于内存的连环炮。
首先确定就是问你内存分为哪几部分,这些部分分别都存储哪些数据?
而后继续问你一个对象从建立到销毁都是怎么在这些部分里存活和转移的?
接着可能会问你,内存的哪些部分会参与GC的回收?
完事之后,可能还会问你Java的内存模型是怎么设计的?
你回答了之后,还会继续问你为何要这么设计?
问完之后,还可能会让你结合内存模型的设计谈谈volatile关键字的做用?
你在谈的时候,确定会提到可见性,那么接着可见性这三个字,还能够继续问你并发的内容。
基本上Java语言自己以及语言稍微高级点的内容就是以上部分,若是你能把以上四部分了解的很是透彻,那基本上Java这部分就没啥问题了,由于光以上的内容就够你跟面试官聊好久了。你聊这些聊得久了,天然问你其它问题的时间就会短点。
你从LZ写这些问题的过程也应该能感觉出来,不少时候,面试官都是顺着一条线一路问下去的,若是你以为这条线你不熟悉的话,就要及时拐弯,引导面试官去问其它方面的问题。千万不要一直往下深刻,直到本身跳不出来为止,那就尴了个尬了。
二、讲述本身的项目,并在中间穿插着问题
这一部分是面试过程当中必问,也是聊得最久的一个阶段。除非你前面的语言部分很是扎实,扎实到面试官问了一两个小时,依旧没有探出你对语言自己的了解到底有多深。不然的话,你必定逃不过本身的项目这一关,并且通常状况下聊得时间不会过短。
这一部份内容,通常的模式就是你本身去讲你作过的项目,而后面试官会冷不丁的让你去解释其中某一部分,好比让你解释当时为何要这么作,或者问你如今以为有没有更好的办法。而这些穿插的问题,大部分与你的项目所用到的技术有关。而你须要作的,就是充分、再充分的去总结本身作过的项目(尤为是最近的一两个项目),挖掘出一个甚至N个亮点,以备于到时候可让面试官产生眼前一亮的感受。若是你能达到这种效果的话,基本上离你成功就不远了。
这部份内容因为和每一个人本身的经历息息相关,所以这里也无法列举可能问到的问题。这篇文章《程序员面经:面试前到底该不应刷题以及面试前该如何准备》是LZ以前写的,里面大概讨论了下如何在面试前总结,有兴趣的能够去了解一下。
三、额外的加分项
上面两个阶段基本上是必问的,还有一些加分项。这些加分项中,有些内容面试官也会问你(好比TCP/IP协议、算法),但更多的是会先问你了解不了解,你了解的话再继续聊,不了解的话就直接略过了,不至于由于这种问题而直接把你打入地狱。
下面LZ列举一下这些加分项,若是能够的话,这些加分项仍是要争取一下的。
一、计算机系统原理。
二、网络通讯协议(TCP/IP,HTTP等)。
三、数据结构与算法。
四、著名开源项目的源码。
五、你本身有很棒的开源项目。
六、你的我的博客。
七、待评论区补充。
这几项当中,对于前1-3项,若是你以前就比较了解,只是因为时间问题忘记了的话,仍是能够临时抱佛脚一下的。至于后面4-6项,就须要你平常的积累了,不是一时半会儿能作到的。若是你平日里没有积累,那么后面这三个加分项只能抛弃了。
四、与你职位相关的内容
其实这最后一项是对前面三项的补充,你应该尽可能去主攻和你面试的职位相关的内容。好比你面试一个实时计算的职位,那么你的算法最好要厉害,对于著名的实时计算开源项目要熟悉,最好阅读过源码,并且还要对分布式系统有必定的看法。
所以,这个第4部分没有具体的内容,只是提醒你,若是你很明确本身的面试职位,最好在面试前准备的时候,尽可能朝职位的需求方向靠拢,这样成功的可能性更大。
看完之后,关于连环炮的部分,笔者这里仍是想简单再补充几句,上面之因此举了那么多连环炮的例子,其实并非想让你们背下来,而是想让各位看官体会一下社招面试的套路。
说到底,这些连环炮的例子,就是在考验你对某一个知识点理解的有多深。就笔者的亲身经历而言,其实上面所提到的这些连环炮,你并不须要每一个都理解的很深,只须要有那么一两个点比较深,甚至超过面试官的理解,就能够达到要求了。
不少时候,面试官并不须要你对每个知识点都很深刻,他只是在考察你的理解能力,以及平时有没有一些技术积累。
若是一个面试官,只由于一两个技术知识点而否决你的话,那么只有两种可能,第一种是这个点,可能确实是你所面试的职位中,很是重要的知识点,好比面试算法类岗位的话,算法很差是不行的,或者是面试偏运维类的技术岗位,Linux玩很差也是不行的。
第二种可能就是——他在装逼,-_-。
这一部分笔者上篇文章谈了不少,不过这一次,笔者在Java程序猿前面加了个限定词——野生。
笔者一贯自称是“野生”程序员,所谓的“野生”,笔者这里先简单下一个定义,就是在大学以前,历来没想过会走程序猿这条路,而是在进入社会以后,才逐渐走上程序猿这条路的人,笔者称之为“野生”程序猿。
“野生”程序猿有很多程序猿“正规军”所不具有的共性,其中最典型的一个共性,就是“野生”程序猿在进入社会以后,都会经历一个学习入门的阶段。
也正是所以,社会上出现了大量的培训机构,因此每每“野生”程序猿在入行初期,所面临的第一个问题就是,究竟是自学,仍是选择培训机构?
笔者就收到过无数这类的问题,其实这个问题没办法一律而论,要具体状况具体分析,但若是简单粗暴一些来讲的话,假设你家里不缺那个培训费,就去培训机构,反之就别去。
毕竟花了钱,总会多一些学习上的资源,最起码聊胜于无。
因此,这个问题通俗点说,就是有钱就去,没钱就自学。
就像那个经典的笑话同样,说本身买东西有选择恐惧症的同窗,不是真的有选择恐惧症,惟一的缘由就是——穷,呵呵哒。
除了上述的共性以外,“野生”程序员还有一个共性,就是学习曲线和程序员“正规军”会有所不一样,前者是从实践到理论,后者是从理论到实践,这就会致使“野生”程序员的基本功通常不怎么扎实,好比算法、计算机系统原理、计算机网络等。
私底下,无数同窗问过笔者一样的一个问题,到底算法重不重要?阿里面试考不考算法?
其实第一个问题,关于算法到底重不重要,笔者这里是有两个答案的,若是来问的同窗互相对质一下的话,可能会发现笔者给每一个人的答案会略有不一样。
若是是一个学生来问的话,笔者会告诉他,算法很是重要,必定要全力学习。
而若是是一个已经踏入职场多年的人来问的话,笔者通常会告诉他,按需学习便可,若是你作的工做和算法关系很大,那天然要好好学,好比你作算法工程师,你告诉我算法重不重要?
固然重要!
而若是你天天写的是增删改查,更注重业务,那仍是别花那个精力了,省省吧,有学算法这个精力,多研究研究业务,多思考思考技术与业务结合这种问题,可能比你学习算法收效更高。
至于第二个问题,阿里面试考不考算法,笔者清晰记得,面试官问了这样一个问题的,“你对算法的了解多不?”
而笔者当时的回答是,“很差意思,这个我不会。”
看到这里,可能有的同窗会有疑问了,“做者啊,你这样作不太好,你这不等于告诉你们,算法不重要,不学算法同样能够进阿里吗?”
有这种疑问的同窗,是没有想明白这么一件事,算法是否重要,和是否必定要花精力学习它,并无什么直接的卵关系。
更况且,不会算法能进阿里也很正常,难道你以为阿里万千工程师,都是熟悉算法的吗?我敢说,你敢信吗?
还有很多人有一个误区,那就是,“算法好的人,工资都高了很多。”
关于这个,笔者只想说,若是这我的自己就是搞算法类工做的,那无可厚非,可是若是他是搞增删改查的,笔者能够很肯定的说,他学算法这个时间去学点别的,工资可能会更高。
因此,不要被这个表象迷惑了,他高工资本质是由于他业余时间学习了才高,而不是由于学习了算法才高。
俗话说学以至用,不光花钱要花到刀刃上,学习也是要学到刀刃上的,由于时间比金钱更珍贵。
固然,以上所说对于算法要按需学习的论调,仅适合于毕业多年,已经进入职场的同窗,若是你是一个在校生,那么对于算法这个东西,就只有一个字——学!往死里学!
扯完了家常,我们聊点正事,“野生”程序员,如何度过本身的学习和职场生涯。
关于这个话题,笔者会引用一下上一篇文章中的内容,可是两年过去了,笔者会对其中再作一些补充。
接下来,咱们首先看一下以前笔者所写的前奏。
这一部分其实也算是今天的重点,这一部分用来回答不少群里的朋友所问过的问题,那就是LZ你是如何学习Java的,能不能给点建议?
今天LZ是打算来点干货,所以我们就不说一些学习方法和技巧了,直接来谈每一个阶段要学习的内容甚至是一些书籍。这一部分的内容,一样适用于一些但愿转行到Java的同窗。
在你们看以前,LZ要先声明两点。
一、因为LZ本人是Java后端开发出身,所以所推荐的学习内容是Java Web和Java后端开发的路线,非Java Web和Java后端开发的同窗请适当参考其学习思想便可,切勿照搬。
二、下面对于【第一部分】的推荐内容,目的是让你尽快成为一个能够参加工做的Java开发者,更适用于处于待业状态,准备转行Java的同窗。若是你是在校学生,务必要在学好基础(好比计算机系统、算法、编译原理等等)的前提下,再考虑去进行下面的学习。
其实这段前奏中,笔者第2点中所说的“处于待业状态,准备转行Java的同窗”,就是今天一直提到的“野生”程序员。
笔者这里专门提到这点,也是但愿看官们能够明白,本文全部内容,都是围绕着“野生”程序员展开的,若是你不属于其中的一员,那么必定要对文中提到的学习道路自行取舍。
哪怕是“野生”程序员,也不必定就非要彻底照搬文中的学习,也要有本身的思考。
这个阶段,其实就是上面笔者提到过的,是“野生”程序员学习入门的阶段。大部分人在这个阶段学习的时候,都是很是痛苦的,所谓万事开头难,是有必定道理的。
不过不要紧,谁让你运气好,看到了这篇文章呢(吹逼会不会遭雷劈?),你只须要保持学习的信念,而后按照下面的思路去学习就能够了。
强调一下,对于程序员来讲,心中那股信念很重要,你要问笔者这股信念是什么,笔者只能说只可意会不可言传,本身在职场生涯中慢慢体会吧。
1、Java基础
首先去找一个Java的基础教程学一下,这里能够推荐一个地址,或者你也能够参照这个地址上去找相应的视频,地址为http://www.runoob.com/java/java-tutorial.html。
学习Java基础的时候,应该尽可能多动手,不少时候,你想固然的事情,等你写出来运行一下,你就会发现不是这么回事儿,不信你就试试。
学完以上内容之后,你应该对Java有一个基本的了解了,你能够用Java语言写出一些简单的程序,而且你用的是最简单的编辑器,好比记事本。
这个时候,不要急于进入下一部分,留下几天好好写一些程序,尽量熟悉这些基础内容。
2、Web开发
等你写上几天程序之后,你每每会比较迷茫,由于你写的东西彷佛看起来毫无用处,好比实现一个简单的计算器,读取一个文件等。这个时候你就应该去学着写一些让你以为有意思的东西了,因此你应该学习更多的知识。
这些内容主要是Web开发相关的内容,包括HTML/CSS/JS(前端页面)、Servlet/JSP(J2EE)以及Mysql(数据库)相关的知识。
它们的学习顺序应该是从前到后,所以最早学习的应该是HTML/CSS/JS(前端页面),这部份内容你能够去上面的那个runoob网站上找。你能够试着本身写一些页面,固然,你能够尽你最大的努力让它变得最漂亮。这部份内容对于后端Java来讲,理论上不是特别重要,但至少要达到能够本身写出一些简单页面的水平。
接下来,你须要学习的是Servlet/JSP(J2EE)部分,这部分是Java后端开发必须很是精通的部分,所以这部分是这三部分中最须要花精力的,并且这个时候,你要学会使用开发工具,而不能再使用记事本了,能够选择eclipse。
当你下载安装好eclipse之后,请视频中的教程一步一步去学习,必定要多动手。关于Servlet/Jsp部分视频的选择,业界比较承认马士兵的视频,所以推荐给你们。固然了,LZ本人并无看过他的视频,因此很差说的太绝对,若是你们本身有更好的选择,能够坚持本身的,不要被LZ干扰。
本来LZ也是打算出教学视频的,可是因为时间问题,仍是决定放弃了。可是若是你看视频的过程当中遇到了问题,欢迎来LZ的交流群提问,或者去斗鱼观看LZ的直播提出你的问题,直播地址和群号都在LZ的我的博客左侧。
最后一步,你须要学会使用数据库,mysql是个不错的入门选择,并且Java领域里主流的关系型数据库就是mysql。这部分通常在你学习Servlet/Jsp的时候,就会接触到的,其中的JDBC部分就是数据库相关的部分。你不只要学会使用JDBC操做数据库,还要学会使用数据库客户端工具,好比navicat,sqlyog,二选一便可。
3、开发框架
当你学会以上内容之后,这个时候你还不足以参加工做,你还须要继续深造。公司里为了提升开发的效率,会使用一些Java Web框架,所以你还须要学习一些开发框架。
目前比较主流的是SSM框架,即spring、springmvc、mybatis。你须要学会这三个框架的搭建,并用它们作出一个简单的增删改查的Web项目。你能够不理解那些配置都是什么含义,以及为何要这么作,这些留着后面你去了解。但你必定要能够快速的利用它们三个搭建出一个Web框架,你能够记录下你第一次搭建的过程,相信我,你必定会用到的。
还要提一句的是,你在搭建SSM的过程当中,可能会常常接触到一个叫maven的工具。这个工具也是你之后工做当中几乎是必需要使用的工具,因此你在搭建SSM的过程当中,也能够顺便了解一下maven的知识。在你目前这个阶段,你只须要在网络上了解一下maven基本的使用方法便可,一些高端的用法随着你工做经验的增长,会逐渐接触到的。
关于学习SSM框架的地址给你们推荐一个,这里面有视频,你们能够去观看,地址是http://edu.51cto.com/lesson/id-76468.html。
4、找工做
当你完成开发框架的学习之后,你就该找工做了,在校的找实习,毕业的找全职。与此同时,在找工做的同时,你不该该停下你的学习,准确的说,是你在之后都不能停下学习。
上面这些内容你只是囫囵吞枣的学会了使用,你能够逐步尝试着去了解更多的东西,网络是你最重要的老师。
两年过去了,其实这个学习路线,并无什么太大的变化,惟一变化的点,就是spring-boot的普及,省去了以前不少框架整合的工做。
回想11年笔者培训那会儿,想要搭建一个SSH框架,还要本身梳理jar包,整合一大堆配置,一不当心就各类报错,并且那异常每每都不是简单的NPE,甭提多苦逼了。
因此,同窗们,珍惜你如今的生活吧,呵呵哒。
这个阶段是全部人都会经历的一个阶段,这个阶段的程序员,内心每每都是很是复杂的,刚找到工做,坐在明亮的办公室里,仿佛本身成为了电视剧中的主角,不免会感到意气风发,可是同时心中又难免会有些恐惧,生怕本身一个不当心,再次被打回原形。
若是你有这样的感受,不用紧张,这是全部人都要经历的,你要作的,就是让本身完全沉浸在工做和学习当中便可,缘由很简单,由于这个时候——你仍是单身狗,-_-。
恭喜你,这个时候,你已经拥有了一份Java的工做。这个阶段是你成长极快的阶段,并且你可能会常常加班。可是加班不表明你就能够松懈了,永远记得LZ说的那句话,从你入行那一刻起,你就要不停的学习。在这一年里,你至少须要看完《Java编程思想》这本书。这本书的内容是帮助你对于Java有一个更加深刻的了解,是Java基础的升级版。
这本书很厚,当初看这本书,LZ花了整整三个月。正常速度的话,应该能够在半年左右看完。LZ这里不要求太高,只要你在一年之内把这本书看完便可。固然了,LZ所说的看完,是充分吸取,而不是读一遍就完事了,所以有些内容你可能会看不止一遍。
总而言之,这个阶段的核心学习思想就是,在工做中实践,而且更加深刻的了解Java基础。
补充一下,看书的时候,不要只是看书,必定要常常思考,好比思考你所写的代码,和书中的内容是否有联系。
举个实际的例子,当你看到static这一部份内容的时候,你是否会去翻一下你如今开发的项目里,是否有地方使用static,它使用的目的是什么,它使用的方式是否正确。
只有这样看书,你才能真正的把书看进去,必定要注意,看书的最终目的是为了引起本身的思考,只看书不思考的话,那叫背书,不叫看书。
说到这里,有很多同窗问过笔者这样的一个问题,“我看书看不进去怎么办呢?有没有什么好的办法?”
笔者这里能够很负责的告诉你,哪有什么岁月静好,只是有人替你负重前行而已。
因此,不要指望有什么开开心心,快快乐乐就把书给看了的办法,你想的倒还挺美,呵呵哒。
这玩意儿没有什么好办法,就是靠着本身心里的一股信念,强迫本身去看,特别是刚开始的时候,是最困难的,熬过那一段时间,后面看起来相对来讲会顺畅不少。
万事开头难,用在看书学习上,也一样适用。
这个阶段的你通常已经作了一年的增删改查,与刚入职时的意气风发不一样,这个时候的你,会开始考虑你将来要走的路,但一般在这个时候,你很难看清前方的路,所以你或许会有些焦虑。
若是你存在这样的焦虑,没必要忧心,只需记得,在程序员的道路上,学习能使你变得更加充实,继续沉浸在学习的海洋中吧。
这部分时间段的同窗,已经对Java有了一个更加深刻的了解。可是对于面向对象的体会可能还不够深入,编程的时候还停留在完成功能的层次,不多会去考虑设计的问题。
因而这个时候,设计模式就来了。LZ当时看的是《大话设计模式》这本书,而且写了完整版的设计模式博客。所以,LZ要求你们,最多在你工做一年的时候,必须开始写博客,而设计模式就是你博客的开端。
请记住,LZ所提的基本都是最低要求,所以不要有任何松懈的心理,不然五年后,你不要去羡慕别人高于你的工资,也不要去羡慕别人进入了某公司。
这一年,你必须对于设计模式了如指掌,《大话设计模式》能够做为你的开端。固然了,你也能够去看LZ的我的博客去学习,地址是http://www.cnblogs.com/zuoxiaolong/p/pattern26.html。
此外,设计模式并非你这一年惟一的任务,你还须要看一些关于代码编写优化的书。好比《重构 改善既有代码的设计》,《effective java》。
总而言之,这个阶段,你的核心任务就是提升你的代码能力,要能写出一手优雅的代码。
这个阶段笔者所建议的三本书,其实都是在教你如何更好的编写和设计你的代码,除此以外,设计模式这个系列,也是在锻炼你对问题的抽象能力。
使用Java这种面向对象的语言,抽象能力是很是重要的一项能力,和上面同样,笔者建议,当你看完设计模式、重构和Effective Java这几本书后,必定要结合本身的项目,作深刻的思考。
不思考的人生是不完整的,只干活儿不动脑子的人,看似勤奋,实际就是台机器,既然是机器,那就迟早会被取代的。
只有不断思考,总结过往,指导将来的人,才最终会成为这个社会的主导者。
这个阶段,对于程序员来讲,是很是重要的一个阶段。在笔者的学习道路规划中,这个阶段学习的目的,是为了让你从初中级工程师迈入高级,实现质的提高,所以,这一部分的学习,难度会比以前两年的要高。
但既然你已经踏上了这条路,就没有回旋的余地,只能往前冲。
因此,作好心理准备,迎接挑战吧。
有的同窗在这个时候以为本身已经很牛逼了,因而忍不住开始慢慢松懈。请记住,你还嫩的多。
这个阶段,有一本书是你必须看的,它叫作《深刻理解Java虚拟机》。这本书绝对是Java开发者最重要的书,没有之一。在LZ眼里,这本书的重要性还要高于《Java编程思想》。
这本书的内容是帮助你全面的了解Java虚拟机,在这个阶段,你必定已经知道Java是运行在JVM之上的。因此,对于JVM,你没有任何理由不了解它。LZ以前有写过JVM系列的知识,能够去看一下,地址是http://www.cnblogs.com/zuoxiaolong/category/508918.html。
另外,在过去2年的工做当中,你确定或多或少接触过并发。这个时候,你应该去更加深刻的了解并发相关的知识,而这部份内容,LZ比较推荐《Java并发编程实战》这本书。只要你把这本书啃下来了,并发的部分基本已经了解了十之六七。
与此同时,这个阶段你要作的事情还远不止如此。这个时候,你应该对于你所使用的框架应该有了更深刻的了解,对于Java的类库也有了更深刻的了解。所以,你须要去看一些JDK中的类的源码,也包括你所使用的框架的源码。
这些源码能看懂的前提是,你必须对设计模式很是了解。不然的话,你看源码的过程当中,永远会有这样那样的疑问,这段代码为何要这么写?为何要定义这个接口,它看起来好像不少余?
由此也能够看出,这些学习的过程是环环相扣的,若是你任何一个阶段拉下来了,那么你就真的跟不上了,或者说是一步慢步步慢。并且LZ很负责的告诉你,LZ在这个阶段的时候,所学习的东西远多于这里所罗列出来的。所以千万不要以为你已经学的不少了,LZ所说的这些都只是最低要求,不光是LZ,不少人在这个时间段所学习的内容都远超本文的范围。
若是你不能跟上节奏的话,若干年后,若是不是程序猿市场还不错的话,你极可能不只仅是工资比别人低,公司没别人好,而是根本就找不到工做。
总而言之,这个阶段,你须要作的是深刻了解Java底层和Java类库(好比并发那本书就是Java并发包java.concurrent的内容),也就是JVM和JDK的相关内容。并且还要更深刻的去了解你所使用的框架,方式比较推荐看源码或者看官方文档。
另外,还有一种学习的方式,在2年这个阶段,也应该启用了,那就是造轮子。
不要听信那套“不要重复造轮子”的论调,那是公司为了节省时间成本编造出来的。重复造轮子或许对别人没有价值,由于你造的轮子可能早就有了,并且通常状况下你造出来的轮子尚未现存的好。可是对别人没有价值,不表明对你本身没有价值。
一个造轮子的过程,是一个从无到有的过程。这个过程能够对你进行系统的锻炼,它不只考察你的编码能力,还考察你的框架设计能力,你须要让你的轮子拥有足够好的扩展性、健壮性。
并且在造轮子的过程当中,你会遇到各类各样的难题,这些难题每每又是你学习的契机。当你把轮子造好的时候,你必定会发现,其实你本身收获了不少。
因此,这个阶段,除了上面提到的了解JVM、JDK和框架源码之外,也请你根据别人优秀的源码,去造一个任何你可以想象出来的轮子。
能够看到,这个阶段笔者列的任务很是之多,不只要了解JVM、并发、JDK类库,还要本身尝试造轮子。
若是你仔细阅读了本文的话,你会发现,阿里社招面试笔者所举的连环炮中,有一大部分都是这个阶段学习的,那些连环炮中,基本上都是JVM、并发和JDK一些类库的内容。
而比较巧的是,阿里大部分招聘要求的年限,都是3年或以上。
这意味着什么?
相信反应快的同窗已经明白了,你若是能够在3年内,完成笔者的学习计划的话,那么在你满3年的时候,恰好能够来阿里检验你的学习成果。
因此,阿里中间件欢迎你!(没有违和感的植入两次,今年我要3.75了,-_-)
这个阶段的同窗,不少已经碰到了天花板,在此以前,只要你循序渐进的学习,智商又没啥硬伤,90%以上的同窗(有人问,剩下的10%呢?笔者只想说,我怎么知道?/尴尬),在工做3年的时候,均可以达到年薪30W左右这个范围(仅指2015年或之后北上深一线城市)。
而若是你的年薪想要更上一层楼(通常10W为一档,好比40W、50W等),仅靠以前的积累是远远不够的,你须要打造你的核心竞争力,在以前的文章里,笔者把这个所谓的核心竞争力,称之为差别性,其实想表达的意思都是同样的。
具体如何在这个阶段学习,仍是先看看以前笔者是怎么建议的吧。
这个阶段的同窗,提高已是很难了,并且这个阶段的学习每每会比较多样化。由于在前3年的过程当中,你确定或多或少接触过一些其它的技术,好比大数据、分布式缓存、分布式消息服务、分布式计算、软负载均衡等等。这些技术,你能精通任何一项,都将是你将来面试时巨大的优点,所以若是你对某一项技术感兴趣的话,这个时候能够深刻去研究一下。这项技术不必定是你工做所用到的,但必定是相关的。
并且在研究一门新技术时,切忌朝秦暮楚。有的同窗今天去整整大数据,搞搞Hadoop、hbase一类的东西。过不了一段时间,就以为没意思,又去研究分布式缓存,好比redis。而后又过不了一段时间,又去研究分布式计算,好比整整Mapreduce或者storm。
结果到最后,搞得本身好像什么都会同样,在简历上大言不惭的写上大数据、分布式缓存、分布式计算都了解,其实任何一个都只是浮于表面。到时候面试官随便一问,就把你给识破了。
必定要记住,做为一个程序猿,平日里所接触的技术可能会不少,可是想要让一门技术成为你的优点,那么必定是你对这门技术的了解强过绝大多数人才行。
所以在这个阶段,你就不能再简单的去学习前3年的内容了,虽然前面的学习若是还不够深刻的话依旧要继续,但这个时候你应该更多的考虑创建你的优点,也能够称为差别性。
差别性相信不难理解,就是让你本身变得不同凡响。你前面三年的学习足够你成为一名基本合格的Java开发者,但你离成为一名优秀的Java开发者还有很大的距离。
所谓优秀,即能别人所不能。而你前三年所学习的内容,是不少作过几年的Java开发都可以掌握的。那么为了让本身有差别性,你就须要另辟蹊径,找一个方向深刻研究下去,以期在未来,你可以成为这个领域的专家,好比分布式计算领域的专家,大数据领域的专家,并发领域的专家等等。
此外,你除了创建你的差别性以外,还要去弥补你基础上的不足,直到如今,LZ都没有说起基础知识。缘由是基础是很枯燥无味的,学的太早不只容易懵逼,并且懵逼的同时还容易产生心理阴影,以致于之后再不想去研究这些基础。但基础又是你深刻研究一些领域时所必须掌握的,好比你去研究分布式计算,你不懂算法你玩个毛毛?好比你去作分布式缓存,你对计算机系统的内存不了解,你如何去作缓存?
若是你的基础原本就很是强,那么恭喜你,相信你在以前的工做中已经充分体会到了这些基础对你的帮助。但LZ相信大部分人的基础都很薄弱,哪怕是科班毕业的人,不少人也不敢说本身当初的基础学的多么强大,好比算法、计算机系统原理、编译原理这些。
可是每一个人时间都是有限的,并且这些基础的书籍每一本读下来,没个一年半载的,还真拿不下来,所以仍是要有所抉择的。虽然艺多不压身,但问题是艺可能是有代价的,是须要你付出时间和精力的,而LZ我的更同意在同等代价的状况下获取最大的收获。
首先,LZ比较推崇的基础书籍有三本,分别是《深刻理解计算机系统》,《tcp/ip详解 卷1、2、三》,《数据结构与算法》。其中TCP/IP有三本书,但咱们这里把这三本当作是一本大书。
这三本分别适合三种人,《深刻理解计算机系统》比较适合一直从事Java Web开发和APP后端开发工做的人群。《tcp/ip详解 卷1、2、三》比较适合作网络编程的人群,好比你使用netty去开发的话,那么就要对TCP/IP有更深刻的了解。而《数据结构与算法》这本书,则比较适合作计算研究工做的人,好比刚才提到的分布式计算。
另外,LZ要强调的是,这里所说的适合,并非其它两本对你就没有用。好比你作Java Web和APP后端开发,《tcp/ip详解 卷1、2、三》这本书对你的做用也是很大的。这里只是分出个主次关系而已,你要是时间足够的话,能把三本都精读那固然最好不过了。但若是时间有限的话,那么就先挑对你帮助最大的书去读。
理论上来说,这一年你能把这三本其中一本精读下来,就已经很是厉害了。有了基础,有了前面的工做经验,你就能够去开拓属于你的领域了。
在这一年里,必定要规划好本身的领域,创建好本身的优点,制造出差别性。若是你对本身的领域不够清晰的话,随着你工做的时间日益增多,你接触的技术会愈来愈多,这个时候,你很容易被淹死在技术的海洋里,看似接触的技术愈来愈多,会用的也愈来愈多,但你毫无优点。
有的同窗可能会问,“LZ,我也不知道个人领域是什么啊?怎么办呢?”
对于这种人,LZ只想说,“卧槽,这还问我?要不干脆我替你学习得了,好很差?”
能够看到,在这个阶段,笔者提到了三本基础书籍(操做系统原理、网络协议、算法),这三本书,会让你更加的接近底层。
若是你仔细品味本文所提到的学习路线,你会注意到,笔者一直在让你由浅入深的学习,也就是一直在让你提升知识的深度,而不是知识的广度。
这就回答了很多同窗问过笔者的那个问题,“究竟是先有广度后有深度好,仍是先有深度后有广度好?”
首先,不少人在思考这个问题的时候,有一个误区,那就是一直在纠结这个问题自己,有的说学习要先学深了,才好提高本身的广度,而有的却说,学习要先了解更多,开阔眼界,才能更好的提高本身的深度。
其实,这种讨论已经本末倒置了,回答这个问题很简单,看市场上须要哪一类,就是哪一个好。
因此,把上面那个问题换一下,你就很容易获得答案了,“若是让你来面试一个5年经验如下的程序员,你喜欢在某个领域研究很深的人,仍是每一个都懂点的人?”
答案是显而易见的,笔者相信大部分人,都会选择在某个领域有深度钻研的人,特别是一些一二线的互联网公司。
或许有的同窗在这个时候,会用“全栈工程师”这个概念来试图反驳,毕竟全栈工程师这个概念,有一段时间被炒得很热,不少公司的招聘上都加了这么一条——全栈工程师优先。
全栈工程师这个概念,实际上是小公司(或者是大公司的小部门)为了节省人力成本,想让程序员干杂活,却又很差意思直说,所以所编造出来得美丽的谎话,好笑可悲的是,一些不知全栈真正含义的程序员,还以本身是全栈为荣,以为本身跟上了潮流,真的是被人卖了还在帮人数钱。
笔者在这里能够很负责的说,初入职场的头几年,必定是以提升深度为主才是正道,像全栈工程师这种潮流,就如同最近一些采用很是规手段出名的网红通常,注定只是昙花一现,只有一技傍身,才是长久之计。
4到5年其实也是一个比较重要的阶段,我们先来看看,两年前,笔者是怎么来讨论这个阶段的。
通过前面一年的历练,相信你在本身所钻研的领域已经有了本身必定的看法,这个时候,技术上你应该已经遇到瓶颈了。
这个时候不要着急提升本身的技术,已是时候提升你的影响力了,你能够尝试去一些知名的公司去提升你的背景,你能够发表一些文章去影响更多的人。固然,你也能够去Github建立一个属于你的开源项目,去打造本身的产品。此次的开源项目不一样于以前的造轮子,你这个时候是真的要去尽可能尝试造出来真正对别人有价值的轮子。
技术学到这个阶段,很容易遇到瓶颈,并且每每达到必定程度后,你再深刻下去的收效就真的微乎其微了,除非你是专门搞学术研究的。然而很惋惜,大部分程序猿作不到这一步,那是科学家作的事情。
这个时候提升影响力不只仅是由于技术上容易遇到瓶颈,更多的是影响力能够给你创造更多的机会。程序猿在某种程度上和明星很像,一个好的电视剧和电影就能够成就一批明星,程序猿有的时候也是,一个好的项目就能够成就一群程序猿。
好比国内几个脍炙人口的项目,像淘宝、支付宝、QQ、百度、微信等等。这每个项目,都成就了一批程序猿。LZ敢说,这里面任何一个项目,若是你是它的核心开发,光是这样一个Title,就已是你很是大的优点。更况且还不止如此,Title说到底也是个名头,更重要的是,这种项目在作的时候,对你的历练必定也是很是给力的。
而你若是想要参与这样的项目,除了靠运气以外,影响力也是很重要的一个手段。好比你在分布式计算领域有必定的影响力,那么若是有什么好的关于分布式计算的项目,对方就极可能会邀请你。就算人家不邀请你,你本身主动去面试的时候,对方若是知道你在这个领域的影响力,也确定会起到很大的做用,而这个做用,甚至可能会超过你如今的技术能力。
因此,在这个阶段,你最大的任务是提升本身的影响力,为本身将来的十年工做生涯那一天作准备。若是你可以靠你的影响力和之前积累的技术,参与到一个伟大的项目当中,那么你后面的五年也就有着落了。
固然了,LZ如今满打满算,作程序猿也就4年半不到,所以关于4年到5年这一部分,LZ的看法不必定是对的,就算是对的,也不必定是适合任何人的。因此,但愿你们本身有的判断力,去决定到底该如何度过这一年。
从引文中最后一段能够看出,笔者当初写的时候,才工做不到4年半,因此当时笔者也是处于一个摸索的阶段。
现在两年过去了,其实如今来看,到了这个阶段,笔者已经很难再提出有效的建议了。
若是你仔细阅读了本文,会注意到,在前3年的时候,笔者建议的学习道路都是同样的,由于笔者没有给出任何选择的余地,就按照笔者所罗列的去学就能够了。
可是从第3年开始,也就是第3到4年的时候,笔者所给的建议当中,已经出现了选择,好比操做系统原理、网络协议、算法这三本书,再好比你准备钻研的领域,都是在让你本身选择,而不是笔者直接告诉你,应该看哪本书,钻研哪一个领域。
这实际上是符合常规的学习道路的,初中级工程师的时候,你们学的都同样,3年过去,进阶为高级工程师之后,天然每一个人会走向不一样的领域。
就和上学同样,小的时候学的都差很少,高中就开始分文理班了,大学就开始选专业了,到了研究生……
额,突然想起没上过研究生,不太清楚,但学习的道路确定更加细分了,对不对?
因此,在4到5年这个阶段,其实一样没有固定的道路可走,以前之因此建议你们提升“影响力”,其实如今笔者本身回想起来,其中深层次的缘由,是但愿你们去一些知名的公司,好比……咳咳…….你懂的(此次完美的暗示,感受要个4不过度)。
其实在第3-5年这段期间,最好的选择,就是一边提升本身的核心竞争力,一边着手开始进入一家能够“洗白”的公司,或者说是能够提升“影响力”的公司。
什么叫“洗白”?
做为一个“野生”程序员,你一般没有华丽的学历,你能仰仗的,只有本身的实力,这在你作程序员,包括作一些中低层技术管理者的时候,并不会特别阻碍你的发展。
可是当你想往上爬的时候,也就是作高层技术管理者的时候,你没有必定的背景,就算你实力再牛逼,也是无济于事的,这就是笔者所说的“影响力”,其实也能够叫“信服力”。
你据说过哪一个公司的CTO或者是技术总监,是没什么学历,也没进过任何大公司,一贫如洗的野书生吗?
可能有的人这个时候会举手发言了,“做者你说的不对啊,我见过这样的人啊!啥学历没有,啥大公司没进过,但人家就是CTO,老厉害了呢。”
这只有两种状况,第一种,你说的这我的太厉害,不在本文讨论范围内,呵呵哒,第二种,这个CTO,是一个披着项目经理的皮,管着十人二十人的假CTO,由于公司一共就这么点人,-_-。
总而言之,言而总之,说了这么多,“洗白”的意思就是,在学历不够亮眼的状况下,就想办法提升一下本身的公司背景吧。
最起码,若是哪一天,你真的坐上了CTO的位置,你的简介里能够加这么一句话,“曾就任于某著名XXXX公司,任XXX职位。”
是否是感受多了一些信服力呢?
因此,仍是那句话,阿里中间件欢迎你!5年了,同窗,你该回家了!(老板,今年我要5,-_-)
这一部分以前的文章是没有的,由于那时候笔者本身工做还不到5年。
对于这个阶段的同窗来讲,与5年前初入职场相比,除了工做上的不一样之外,最大的多是来自于生活上的变化。
因此,这个阶段,我们不谈工做,不谈学习道路,我们来谈谈生活。
5年前,你可能仍是单身狗,你自由,你拼搏,你各类跳槽,你四处流浪,可是5年过去了,你恐怕已经结婚,甚至孩子都有了,这个时候的你,不得不考虑一些现实问题。
买车?买房?落户?
这每一项,都像一座大山同样,压在奋斗在一线城市的上班族身上。
特别是买房这件事,哪怕你此时已经年薪50W,在一线城市,买房依旧是很是困难。
由于50W扣掉各类乱七八糟,估计得缩水15W,等因而到手只有35W左右了,再加上你的花销,一年能存20W算是很是不错了,而一线的一套房子,首付基本上最少的都要上百万(也就是总价300W,这已是一线的白菜价了),这都要存5年才够,更况且有多少人在这个时候,年薪还不到50W。
再者说,你敢保证这5年房价不涨?你敢保证这5年你一次都没有大的花销?
有的同窗可能要举手说话了,“我爸妈已经给我在北京2环买好房子了呀。”
那笔者只能说,“这位同窗,请你出去!呵呵哒……”
我们这里讨论的,主要是非二代同窗,关于二代同窗们,笔者给你的建议只有一个,吃好玩好就行,就别出来抢饭碗了,-_-。
好了,言归正传,买房其实只是第一大难关,其它城市笔者不知道,可是在北京,落户比买房还要困难,基本能够说是无路可走,虽然说最近出了个积分落户,但怎么看都是中看不中用。
固然,由于笔者早就逃离北京,因此对这个政策没有细研究,有兴趣的同窗能够自行去这个地址研究下,看你有没有落户的但愿,呵呵哒。
说到这里,笔者不得不提到以前写的一篇文章,题目叫作《程序员们,再不行动就来不及了!》,其实讲的就是程序员的安家之道。
具体的这里就再也不具体详述了,有兴趣的同窗能够自行去看,这里只是引用一下文中的一句话——一线城市奋斗攒钱,二线城市安居乐业。
一句话已经道出了程序员的最终归宿,而在二线城市中,目前最合适的,杭州就是其中之一。
杭州的互联网行业至关发达,工资不比一线的低多少,甚至还可能会更高,可是房子均价倒是一线的一半都不到,再加上杭州风景怡人,这样的城市,绝对是最适合在外拼搏的“野生”程序员,安居乐业的好地方。
而从一线转往杭州,总须要一个公司来过渡,那这个最合适的公司也自不用说,咳咳…….你懂的…….(毫无违和感的植入,-_-)
而其余知名互联网公司,大部分都在北上深,就算工资高些,可是从生活压力,和幸福感上来讲,相信和杭州这样的宜居城市,是没办法相提并论的。
5年了,5年的奋斗是为了什么?或许在你初入职场的时候,你意气风发,你要改变世界,可是当你结婚生子之后,你会发现,在你改变世界以前,你要先安居乐业,-_-。
因此,仍是那句话,咳咳……
阿里中间件欢迎你!
其实纵观笔者今天所讲的,就是“野生”Java程序员,如何经过学习和努力,进入阿里,而且在杭州买房落户的道路。
是的,这个学习道路的终点,不是帮助你成为技术大牛,而是教你安居乐业。
毕竟我们在外奋斗,不就是想在大城市扎根安家吗?
至于当初改变世界的梦想,等你把生活安顿好了之后,再去谈改变世界也不晚。
固然了,有一点要强调一下,关于学习的那一部分(也就是前4年),是相对来讲比较通用的,基本上全部的Java学习者,均可以适当参考一下笔者当时的学习路线,甚至在极端状况下,照搬也不无不可。(免责声明:学成啥样,做者概不负责,-_-)
可是,对于安家落户的这一部分(也就是4年后),可能并不适用于全部人,好比有的人老家就是深圳这种一线城市的,那天然没有必要来杭州了,毕竟深圳也有阿里中心嘛,-_-。
所以,在工做的前面几年,你能够按照笔者的学习道路去走,可是当你工做到3-4年这个阶段的时候(又或者是你讨到老婆的时候,-_-),一边工做学习,一边你也要规划一下,你将来要去哪一个城市安家,进哪家公司。
认准目标之后,你就要好好研究一下这个城市的房价、购房政策、落户政策等,也要研究一下这个公司面试,都倾向于哪方面(好比本文第一部分的内容,-_-),而后等钱存的差很少之后……
好了,之因此后面用省略号,是怕大家如今的老板看到之后,来杭州找我拼命,可是我相信大家看懂了,-_-。
写到如今,整篇文章算是完成了10%,虽然以前已经写了2W多字,但本文最重要的,是在末尾的这一小段文字。
那就是——广告!
咳咳……就是这么直接……为了弥补,最末尾准备了双彩蛋,-_-。
老板说了,评论或者转发数超过1W,今年直接打5,明年直接连升两级,-_-。
反正你是老板,你说啥都对咯,1W……呵呵哒……
咳……说正经的,前不久,笔者给咱们的产品开发了一个新功能,虽然说这个功能不大,可是它是有划时代意义的一个feature,意味着凡是基于SpringCloud或者ServiceMesh开发的应用,今后在任意一台机器上,均可以轻松的接入EDAS。
就由于这个feature,笔者还有幸成为了云栖大会的演讲嘉宾,上去狠狠的装了一把,/偷笑。
这个feature究竟是什么?
热烈欢迎你到这个地址来亲自体验一下,只须要几分钟噢,https://help.aliyun.com/document_detail/72618.html。
什么?你连EDAS都还没据说过?
你真的out了,-_-,EDAS(Enterprise Distributed Application Service)是阿里巴巴中间件团队研发的 PaaS 平台,专门为企业提供高可用和分布式的互联网架构解决方案,赶快到这个地址了解一下吧,https://www.aliyun.com/product/edas。