那我就代表女生来说说感受 在编程的世界很难遇到好看的帅哥
记得当年15年7月4号是我实习生入职的日子,因为是校企合作,所以没有面试、老师推荐、直接入职。刚来北京第一个感觉就是人多,还有就是热。刚到公司第一天,部门经理安排了我的mentor,他也是我的项目经理,安排座位之后给他我发了一些项目文档,让我先熟悉一下项目,然后给我发了几个常用工具的安装包,最重要的就是IDEA,之前在学校一直用MyEclipse,用了IDEA 之后感觉确实不错,界面很漂亮。
当时才去实习几天就是熟悉项目,给我的感觉就是大。公司项目的spring配置文件就有10来个,一个文件里就有几十个bean,全是xml配置文件。我想,现在都流行注解的啊?然后我翻了翻其它java文件,注释上写着日期,2006年、2009年、2012年。嗯……我明白了。
几个月基本上就是项目经理让我干什么就干什么,都是改一些小的功能,比较简单,但记得当时做起来很费劲,因为确实不会,需要各种百度,查文档,CSDN,甚至Stack Overflow。也不了解业务什么的,根本也没那个概念。
每天回家贼累,到家就吃外卖,看视频,偶尔会看些书,但是不多。就这样过了大概3、4个月。
第一个月工资到手的心情还是不一样的,毕竟没有体验过这种感觉。实习合同写的是4500/月,到手3800/月。(劳务合同20% 的税)
可能是因为嫌钱少,我就开始偷偷的写简历了,并试着投了几家,因为在学校做个几个小项目,都是自己从头做到尾的,所有还是有信心的。但是,面试邀请却寥寥无几。最后终于有了一家面试邀请,是一家做国土测绘的上市公司,我去了。先是HR面试,问了些HR都会问的问题,然后就是技术面试,是个35岁左右的男子。上来就说给我讲讲spring,我就蒙了,就下扯淡ioc,aop什么的,然后问我讲讲HTML的块元素和行内元素,讲真,都没听过。然后就GG了。
回去之后想了想,终归是功夫不到家,所以回去就开始定了学习计划,也买了很多书。
看过《深入理解Java虚拟机》、《图解HTTP》、《大型网站技术架构》、《深入理解Java Web技术内幕》、《Java并发编程的艺术》、《Java并发编程实战》、《Effctive Java》等等。其中我觉得《深入理解Java虚拟机》这本书很紧凑,很出色。但是要多读几遍,第一遍基本就是混个眼熟。《大型网站技术架构》真的是就像是PC界中的surface book一样,一股清流,循序渐进,娓娓道来。推荐大家去阅读。
在北京照的
一个月之后去了去哪儿网——十一贝面试,面试未通过。(面试官的问题回答上来了,但面试官不满意。)
先是一道笔试题,考察的内容是文件的读取,集合类,排序算法。
然后面试官来了,看我简历上写了 《了解、看过 jdk源码》。
问:看过哪些源码?
答:HashMap?
问:为什么看HashMap?
答:最常用,最重要。
问:List不重要?
答:也重要……。
答:HashMap的底层数据结构是……bucketIndex……碰撞……,有加载因子,初始容量……,在xxx情况下扩容……。
问:你这也不像是看过源码啊?百度一搜有比你这写的更清楚的
答:额……
在面试之前 学习了MySQL高级部分,redis,看了一位大佬给了的Linux 教学视频。受益匪浅。(掌握80%)
16年学习Java并发部分的知识,但我知道,这仅仅是打好基础,想要实战应用的话,目前的公司是达不到这个用户量的,也没有这个需求。当时还有一周就要回学校了,准备毕业设计,毕业答辩,论文之类的了。幸好可以用公司的项目和文档,省去了很多劳动力,改动部分即可,可以省出很多时间来学习 spring boot/spring cloud。
毕业之后前两天去和部门经理谈了毕业转正的事宜。结论,可以转正,工资不保证最高,但机会比也别的地方多。算上补助&绩效,税前年薪能有个12W,对一个二本非计算机专业,也还行。(也有同学去到网易的,15K一个月)
想去大厂,还得继续学啊……
16年7月 完成了入职手续,各种填表、拍照、体检、办卡之类的。(终于有了门禁卡、之前上个厕所都得管别人借)
基本没事,因为pc还没发下来,尽管自己带着我的surface book2,但是连不了内网,所以上不了SVN。只能逛一逛CSDN、或者学习新知识了。
当时由于工资太低就离职了
离职的时候胸怀大志的认为,只要潜心学习、准备一个月,就能找到更好的工作。就这样,我跟部门经理提出了离职,手续什么的办的也很快。第一天说离职,第二天上午就办完手续走了。
到家第一件事,当然打两盘LOL了。好吃的好喝的先上来。总之就是歇两天。
然后就是开始仔细的准备复习计划,先从Java基础开始,String,List,ArrayList,Set,Map,HashMap,HashSet,线程基础,反射,算法(冒泡,快排,二分查找),设计模式,。
高级一点就是JVM(垃圾回收算法,垃圾回收器,运行时数据区,GC Roots……), MySQL索引优化,主从复制,读写分离,Redis 持久化(AOF,RDB),主从复制。
主要是心路历程,从刚开始的踌躇满志,到后来的身心俱疲,让我明白了一个道理,尽可能不要裸辞。真的很累。
当时跳槽共计面试11家公司。
最后选择了一家西门子旗下的,做 项目管理 软件的公司。薪水涨幅9K。
离职的经历比较艰辛,但也是收获颇丰,也想清楚了好多事情。结局也是令我满意的。
工作方面,除了自己负责的模块在9月和10月上线比较忙,会加班到10点,其余时间还好。
学习方面,说实话这一年没学什么新的知识点,一直处于拖延状态,而且自己特别容易满足现状,这很不好。
这一年倒是读了很多书《万历十五年》、《解忧杂货铺》、《今日简史》、《少有人走的路》、《刻意练习》……
过去的一年个月去了国内的很多个城市,4月份杭州,6月份上海,9月份成都,11月份南京。本来打算2020年3月末去日本看樱花,无奈这疫情挡住了我的脚步(机票,酒店已经都看好了,攻略做的无比的全)。但是国内情况已经好转很多了,所以决定今年5月末和朋友去成都(他没去过,再去一趟吧)。我很喜欢在路上的感觉。(下午依次为杭州西湖,上海外滩,南京中山陵)
这是我整理的Java学习路线希望能对想学习Java女生起到帮助:
1. 整体规划
Java 企业级开发涉及到的技能点实际上非常多,我将其大致归为以下五类(文末可以获取思维导图):
在这个技术栈的基础上,你可以继续选择走全栈道路或者走大数据方向。
有的小伙伴可能会纠结于要全面还是要精通某一方面,其实这个无所谓好坏,关键是要看你自己。你是想去大厂做一个某一领域的技术专家,还是想自己独当一面,自己喜欢的才是最好的。话说回来,即使你想钻研某一方面,也不是说这些东西就不用学了,即使精通某一方面,也必然是先广泛涉猎,再慢慢确定自己的方向。
接下来,这里五大块拆分开来分别给大家介绍。
2. JavaSE
avaSE 这块其实没啥值得说的,基础的东西很多年都没有变化。 很多公司,用的 Java8/9/10,实际上还是写的 JDK1.5 的代码,但是这并不意味着我们就不用学习了。Java8/9/10/11 中的一些新特性还是有必要去学习下,特别是现在 WebFlux 逐渐被人们重视,一些从 Java8 就开始萌芽的理念与技术还是很有必要掌握一下的。
这套视频教程 是我根据市场技术栈需求录制的,非常系统完整,相信可以快速带你走进Java编程的世界。
资料:https://pan.baidu.com/s/1y4mc-gJYKrtQOXOoDBuymg
实战项目练习:https://pan.baidu.com/s/11cPUv8iK--mtNdZz8HF4Dg
有些链接可能已经失效。如有需要的可以评论, 我这边上传到百度云发给你
作为一名 Java 工程师,数据库的重要性不言而喻,这算是基本功,我们不能老指望着 DBA,毕竟配有 DBA 的公司只是极少数。有句话叫做“SQL 写得好,下班下得早”。当然数据库也有很多优化方面的问题,但是在大家刚刚开始学习的时候,我其实是不建议去学习数据库优化、主从、集群、读写分离这些东西的,这些可以等到后面学习微服务的时候再去学习比较合适,在刚学习 Java 没多久的情况下,就去学习数据库优化,极有可能让你对开发这条路打退堂鼓。
4. Web 基础
学习是给自己学的,不能偷懒,所以你看我这里列出来的知识点比较多,甚至又一些看起来好像过时的技术。
有人会纠结 EasyUI 要不要学,这个有点古老。我的意见是,如果你是在校大学生,那就学,反正有时间;如果你已经工作了,现在查漏补缺,那可以结合公司的技术栈决定要不要学。其实 EasyUI 也不能算是边缘化的东西,如果你前端不用 Vue、React 或者 Angular,EasyUI 绝对是一个无法忽视的存在,学习一下 EasyUI ,也能让我们理解整个前端的一个发展过程。一般来说,Web 基础学完其实是可以自己做一些简单的项目的巩固一下知识点,这块网上也有很多开源项目,这里也给大家推荐一个https://github.com/lenve/CoolMeeting
至于这里列出来的其他技术点,都是常规技术。
5. 经典框架
先来看我画的思维导图(文末可以获取思维导图):
这里涉及到的东西就比较多了,也是学起来最最漫长的一部分。
这里我主要说说关注的几个问题。
1、SSH 还要学吗
我们说的 SSH 一般是指 Spring、Struts2 以及 Hibernate。这三个里边,可以确认不用学习的 Struts2,如果你大学刚毕业,进入到一家公司,用 Struts2 做开发,你进去干了三年,Struts2 用的滚瓜烂熟,出来跳槽却发现没有任何优势,所以我不建议大家在 Struts2 上花时间。
至于 Hibernate ,这个我持保留态度。为什么这么说呢?因为 Hibernate 和 Jpa 之间有着千丝万缕的联系,Spring Data Jpa 结合 Spring Boot,还是有很多公司在用,而如果你掌握了 Hibernate,在后面使用 Jpa 的时候上手很快。
2、消息中间件学哪个?
就我目前了解到的情况,JavaEE 项目中,RabbitMQ 和 RocketMQ 使用较多,大数据中 Kafka 用的较多,传统的满足 JMS 规范的 ActiveMQ 使用较少。因此小伙伴们可以结合这样一个实际情况选择合适的消息中间件学习顺序。
这个阶段的知识点都搞定了,做个毕设肯定是绰绰有余了,出了学校校门找个实习肯定也够用了。
6. 分布式/微服务相关
这一块,Spring Boot 和 Spring Cloud 是重点,这两个又分别涉及到诸多知识点:
学习 Spring Boot 的基础依然是 SSM,不建议跳过 SSM 直接学 Spring Boot,Spring
Boot 学完之后,也可以做个项目巩固一下,推荐两个开源项目:
· https://github.com/lenve/vhr
· https://github.com/lenve/VBlog
当你搞定了 SSM、搞定了 Redis、搞定了中间件,你再去学习 Spring Boot 就会发现他是如此简单!
至于 Spring Cloud,虽然 Netflix 公司的几个组件已经不打算继续开源了,但是对于大家而言,我觉得还是有必要去学习一下的,毕竟也不难,花不了多少时间,而且学习这些组件可以帮助大家快速建立一个 Spring Cloud 知识体系。出了这两大块之外,剩下的就不用我多说了。MySQL 的进阶我是建议放在这个阶段学习的,像数据优化、主从搭建、读写分离等,我建议放在这个阶段。
7. 小结
上面的都学完之后,你已经可以站在一个比较高的角度来看待 JavaEE 开发了。
这个时候,可以考虑自己是想走 “专” 的道路,当一个技术专家呢,还是想走全栈的道路,以后自己搞个工作室之类的,抑或是想往大数据的方向发展都是可以的。