四年努力,梦归阿里,和你们聊聊成长感悟

原文地址https://www.cnblogs.com/xrq730/p/9159586.html,原文做者博客园----五月的仓颉,转载请注明出处,谢谢html

 

前言前端

阿里面试成功已通过去一个月了,入职也已通过去十多天了,趁着周末写点东西和你们进行一下分享,本文会写到如下的内容:程序员

  • 我的一路走来的经历
  • 将来的一些思考
  • 我本身理解五年这个时间节点一名优秀程序员应当具有的技术素质
  • 小广告时间

那此次加入的BU是菜鸟,一个很是有发展前景的公司。面试

 

从校园出发,走向阿里算法

工做五年,标题倒是"四年努力",实际上确实是这样,2013年从母校杭州师范大学毕业以后,我和不少刚毕业的同窗同样,会没有目标、找不到方向、不知道将来到底要作什么,因此大约有一年的时间是很迷茫的,工做也就那样吧,得过且过。数据库

大约一年事后,也就14年样子,那个时候公司还在西湖科技园,也许是本身的上进心做祟、也许是母校学长马云情怀做祟,有一段时间天天沿着石祥路回家,就想着这辈子我必定要凭借着本身的努力进入阿里,并且这种想法天天天天愈来愈强烈。设计模式

就像我公众号里面写的,4年前其实并无如今这么多面试经或者程序员成长经,虽然有心,可是并不知道朝哪一个方向去努力。因而想了一个办法:花了一个礼拜时间,把51job、猎聘这些那时候比较有名的招聘网站里面的Java岗位统统看了一遍,把每一个岗位描述都写下来,并进行整理和总结,列了一份比较大的提纲,做为本身的学习目标。跨域

在这以后,开启了算是比较疯狂的2015年吧,那一全年只有一个关键字----学习。一全年除了几个极重要的人,几乎没有和同事、朋友出去玩过,八九点下了班回去就开始学习到十一二点、工做中比较空余的时间学习、双休日学习、各类大小长假学习,反正各类能利用到的时间都用来学习了,各类JDK源码、多线程、Java虚拟机这些都看了个遍,前先后后看过的书不下10本,像虚拟机这本书我好像有说过几回,PDF+实体书看了不下五遍,这个博客也是从15年开始写的。数组

学习是寂寞、枯燥的,这段时间里其实有太屡次想要放弃,但每次也都熬了过来,能够分享给你们一个感悟:花一年本身逼本身一下,让一切优异的品质成为你的习惯。像我如今,就感受努力、上进、钻研、好奇心这些已是骨子里的东西了,研究一个技术点,不整理成一篇博文,我都不认为本身掌握了这个技术点。缓存

至于工做,通过15年这一年的学习,因为我的水平的长进,16年到18年间,在工做中领导也愿意给我机会,会写一些底层的东西、会作一些系统性的设计、也有机会带几我的的小团队,在这一过程当中,慢慢发现基本功并不能说明全部问题,由于必然会遇到没碰到过的东西、会遇到一些更复杂的问题,而后经过查资料、研究、寻找解决方案、解决问题进一步提高本身的能力。

我的技术成长,工做中成长(实际解决问题能力)必定是缺一不可的,就像前几天咱们大部门老大分享的:什么是好的技术,能解决实际问题的技术就是好的技术。

18年年中,对的时间遇到一个对的部门、对的领导、对的团队,梦想照进现实

但愿我分享的我的成长经历,能对看到的人有一些鼓励、有一些感触,若是让我总结一下,那么但愿告诉你们两点:

  • 相信你本身,我这样学校通常又不聪明的人都能走到今天这一步,那么大多数人必定都能走到我这一步,并且能走得比我更远、更好
  • 世界上没有什么是努力办不到的,若是有,那么就更努力一些吧

 

五年以后,何去何从

在以前写过的一篇文章《面试感悟----一名3年工做经验的程序员应该具有的技能》一文中,有一段专门写了对程序员的几个阶段的理解,当时是工做三年写的,一转眼两年过去了,我本身也差很少工做五年了,在这个节点上,结合本身的认识,说一下第五年开始,一个程序员应该朝哪一个方向努力。

首先,前五年,若是一个程序员大体能作到一下几点(后面还会详谈):

  • 具备扎实的基本功
  • 能快速完成领导交给你的代码开发任务
  • 能在遇到问题的时候有正确的解决思路
  • 能对公司的新人进行必定辅导,包括但不限于技术点分享、代码评审、需求分析、表结构设计等

那么,从第五年开始,我认为能够、也应当朝更高的层次进行迈进,前一个层次若是更可能是偏重我的,那么这个层次我认为更多应该偏重团队,简单罗列一下大体上应该有:

  • 系统设计能力,或许在以前给一个功能,能从DB设计-->服务端开发-->前端开发一栈把事情都作好,那么以后,在领导给出具体一块大业务,好比想作一个淘宝商场的会员模块,能充分分析出整个功能并把功能拆分红一个一个的点、能对每个点之间的交互画出交互图、能梳理清楚数据库的ER关系图、能把工做合理分配给同事进行开发
  • 带领团队能力,大体就是把控总体开发节奏,保证在约定时间点前进行交付,不出现延期的状况
  • 大而博不如小而美,会10门技术、每门技术掌握到6分,不如会5门技术、2门技术掌握到8分,我感受整个行业什么都会一点的人比较多,把一门技术进行深刻研究的比较少,毕竟掌握也许只须要1星期,深耕或许须要1个月甚至更久。在五年这个节点,我认为选择一到两个本身感兴趣的方向进行深刻研究会是一个比较好的选择

这是我本身的思考,也是我在第五年开始对本身的要求,但愿这一些思考也能给你们带来一些启发。

 

五年节点,我理解的优秀程序员应当具有的技术素质

网上有不少所谓的Java程序员面试经,其实看下来的感受就是没多大用,面试是没有套路的,每个面试官问的东西也都不同,若是根据那些面试问题去学习和准备,那真的是只见树木不见森林,对我的提高没有太大提升。

那么,在五年这个阶段,一个优秀的程序员应当具有怎样的技术素质呢?按照我我的的理解,主要就是基本功+项目

为何以前说针对面试题进行学习和准备做用不大,由于我认为咱们关注的不该当是题,而是题背后的一个一个的方向,这也就是我认为的基本功。那从基本功的角度来讲,罗列一下我能想到的,包括但不限于如下内容:

  • 工做相关使用到的JDK类及其相关源码、机制
  • 设计模式,设计模式在工做中用到了哪些,具体使用场景
  • 并发类的相关知识,线程安全、锁机制、信号量、闭锁、栅栏、线程池等
  • 框架相关,Spring相关机制、Spring MVC相关机制、MyBatis相关机制、使用的细节点、框架实现原理等
  • JVM,内存布局、垃圾识别算法、垃圾回收算法、垃圾收集器、类加载机制、内存模型、出现内存问题时定位问题的方法等
  • 数据库的基本数据类型、索引机制、各引擎区别、锁机制、慢SQL定位及优化等
  • 缓存机制,这里的机制指的是缓存加载、缓存击穿、缓存雪崩这些机制及其相关应对方案,用过Redis、MemCache的最好理解一下它们的原理或者缓存提供的一些高级功能,集群如何实现
  • 分布式的一些知识,好比CAP理论、数据一致性的几种解决方案、分布式事务如何处理、分库分表怎么作、现有的相关解决方案等
  • NIO的做用,epoll模型是否知道一些,Netty的相关机制、Netty相比原生NIO的优势、半包拆包、断线重连解决方案等
  • Web相关,Get与Post的区别、转发与重定向的区别、跨域问题如何解决、如何保证接口幂等性等
  • 网络层相关,三次握手和四次握手、全链接队列和半链接队列、负载均衡算法等
  • 其余中间件,MQ做用和使用场景、服务化治理框架的做用和使用场景、配置中心的做用和使用场景等
  • 数据结构,数组、链表、栈、队列、树等优缺点,在什么场景下使用什么数据结构
  • Linux相关知识,基本命令的使用,排查日志、定位问题,项目或者第三方组件的基本运维等

坦白讲,以上的这些东西全都掌握也不可能,哪怕面试官确定也有不少不会的,但这就是基本功,能多掌握一点多掌握一点,技多不压身,至于别人如何评价你,就留给别人去评价吧,作好本身能作好的就好了。我在以前写过的文章中反复强调深度+广度,深度优先、广度次之,有了深度+广度,在开发过程当中咱们能够尽快完成需求,在遇到问题状况下咱们能够第一时间找到应对方案。

在三年的时间点,能掌握上述的知识点我认为已是很是很是优秀的了,但这两年的经历让我意识到的是,到了五年的时间点,若是只是具有这些硬性技能,仍是不够,这两年更多的应当是在项目上进行积累,也就是前面说的项目,大体上应该有:

  • 独立完成复杂业务,或者完成一个已有项目中的大功能点,这就须要有根据业务对功能进行分解、分析的能力
  • 独立排查复杂问题,在项目运行过程当中,必定不可能安然无事,除开业务性的问题,CPU 100%是否能独立排查、内存溢出是否能独立排查、应用死锁或者DB死锁可否独立排查、API调用时间长可否独立排查,以上问题排查完毕可否及时解决
  • 带领团队的能力,可能这时候带领的是1~2我的的小团队,即便一个小团队,也能考验带团队、任务合理分配的能力

可能上面的要求有点高,可能工做中未必有这样的机会,可是不要抱怨,机会永远留给有能力、有准备的人,咱们首先想的不该该是等待别人交给你一件有挑战性的事情,你在作这件事情的状况下去提高本身,而应当是先提高本身的素质,而后让别人放心把有挑战性的事情交给你来作。

回到我以前写的,为何16年到18年间,领导愿意给我机会去进行尝试,首先就是由于我的水平的提高。

 

广告时间

阿里内部有本身多个维度的评价标准,毫不是只有具有我上面写的那些技术素质才能进入阿里,所以没必要太过在乎上面写的这些,那只是根据我我的理解,提供给你们一个建议性的技术成长方向而已。

最后是简短的广告时间,我所在的菜鸟国际物流技术部门持续招人,若是你知足如下两个条件之一:

  • 有两年或者两年以上工做经验,对本身的技术有必定信心
  • 19届应届毕业生且是比较好的院校

那么,欢迎以如下三种方式跟我进行联系:

  • 加我我的微信LBJ_Mayday进行咨询
  • 发送简历到个人我的邮箱byebyeww@sina.com
  • 在个人博客文章(百度搜索五月的仓颉便可)下进行留言

经过我内推动行面试的,能够极大提高面试效率及第一时间得知面试结果。在个人部门中,你将会看到:

  • 把这点做为补充的第一点说,不要相信谣言,至少在咱们菜鸟的内部,工做根本就没有传闻的可怕,我不能透露咱们的具体做息时间,但我能保证是绝对的合理工做强度,且除开大促(通常大促安排人值班到2点左右,白天可晚到),没有熬夜、没有通宵,至多2周也会组织一次团队活动,认真工做,好好生活
  • 处于一家极具发展前景的公司中,中国互联网前10年看电商、后10年看物流,蚂蚁已经融资140亿美圆了,菜鸟还会远吗
  • 技术牛逼、带领团队经验及实战经验丰富的主管,为你的成长指引光明的道路
  • 又美丽、气质又好的各位HR姐姐
  • 轻松、热情的团队氛围,每个月至少一次的团队活动,工做生活两不误
  • 丰厚的福利待遇,目前经过社招进入的还能够享受到股权激励

最后,很是重要的一点:不要惧怕面试。经过面试才能发现不足,才能知道将来在技术道路上还须要在哪些方面进行提升,在面试的结尾,你也能够询问面试官本身有什么不足,面试官必定会给到你最诚恳的建议!

期待和每个优秀的你一块儿共事。

 

最后的最后

小广告打完,最后的最后,我想的是,不管进入了BAT仍是进入了FLAG,都毫不是技术道路的终点,不是能够高枕无忧地躺在过去的功劳簿上、无忧无虑过完下辈子的资本,相反,必须更努力,才能在一群一样优秀的人中脱颖而出。

博客和公众号还会尽可能更新,不过之后更多会在公司内部系统写一些文章,博客和公众号会写一些工做中遇到的比较有意思的、或者比较值得分享的问题,有问题也能够在我博客下面进行留言,老规矩,基本作到有问必回。

工做再忙,这点时间老是有的。

回答别人一个问题,对本身也是一种提升。