java工作一年,方向渺茫该怎么办?
java 工作一年了,流行的框架都会了,前台不算精通也算熟练了.遇到瓶颈,如何突破?
我记得我大学毕业简历上写的是精通java,工作5年后写的是熟悉java,现在10年+后写的是了解java。如果你现在才工作一年。。。
作为过来人我经历过感觉什么都懂,不知道何去何从的阶段。现在想想其实根本是似懂非懂。后面恶补基础,多简单的例子都亲自测试,思考实现原理,查看对应的jdk代码,半年后感觉到质的变化,才觉得java真有意思!
了解得越多,发现自己不懂的越多,这句话绝对是真理!
大胆讲一句,现在你工作一年,很大可能连wait,notify怎么样用都不懂?不服?用wait,notify写一个blockqueue试试?
补充一些有用的信息,说一下我是怎么样学习的,就说一点数据结构的:
一开始我们就学习list和map。先说list,最基本有Arraylist和LinkedList,就以他们两为例分析,看他们的父类和实现的接口。ArrayList继承AbstractList,LinkedList继承AbstractSequentialList,AbstractSequentialList继承AbstractList,查看代码AbstractSequentialList没有新增方法,那么Arraylist和LinkedList都继承AbstractList,可以把他们当成有相同的特性。
接下来查看AbstractList,他实现了List接口,没有新增方法,那么重点查看List的方法即可。每一个方法都要看一遍API说明,用一遍测试一遍。add,remove这些没有什么好看的,重点留意你不熟悉的方法。
接下来看他们实现的接口,相同的Cloneable, Serializable看一下有哪些方法即可,重点看不同的,Arraylist实现了RandomAccess(其实里面啥方法也没有,应该说是只是一个标志),LinkedList实现了Deque。在看每一个接口的说明,RandomAccess说明可以用get方法访问,性能很快,你如果是一个LinkedList用get你就会发现慢的吓人;Deque说明实现了双向队列,在查看Dueue的各个方法了解他所有的特性。
接下来看构造函数的参数,可以看出ArrayList有个int类型的initialCapacity参数,LinkedList没有,思考一下为什么。接下来你会发现有数组的数据结构的构造函数都有一个容量的参数(如HashMap),你会发现他的用处,再深究下去会发现ArrayList会存在扩容这个概念。。。
到了这步你应该有自己的总结:
a。ArrayList是用数组实现的,需要初始化容量,容量不够的时候会扩容,扩容会把数组copy一遍比较耗费性能,大数据量的时应该尽量避免。
b。ArrayList可以用get方法随机访问,性能还能很快,LinkedList用get方法会比较慢,大数据量应该避免。
c。LinkedList实现了双向队列,可以非常方便的在头尾增加和删除数据。
d。一边遍历一边修改的时候需要使用listIterator,不要傻傻的搞2个List。
到了这步算是入门了,我才敢说自己入门了。
想要朝这方面发展或者真心有兴趣的。可以找我要一些基础的学习视频,Q号码:5,这个是免费的,希望同学找我要的时候不要有理所应当的态度,毕竟都是我的心血,希望你是真的有一颗想要学好java的心,我也会尽所能的去帮助你成为一名优秀的程序员。
加我Q有以下几个要求,不达标的勿扰:
1、大学学习的是Java相关专业,毕业后面试受挫,找不到对口工作可以
2、在公司待久了,现在过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的
3、参加过线下培训后,知识点掌握不够深刻,就业困难,想继续深造
4、已经在Java相关部门上班的在职人员,对自身职业规划不清晰,混日子的
5、有一定的C语言基础,接触过java开发,想转行的
小号勿扰,不喜勿加
然后分享一个思维导图,这个阶段是对于1年的工作经验比较适合的学习规划图:
我有时候面试会问,list怎么样删除指定的数据了?如,存放数字的list,把偶数删除掉。很简单对吧,你写代码试试?你要是知道List接口有个可以修改的listIterator,你就会知道这么常见的场景应该用这个迭代器解决。
面试的时候最讨厌有点人自以为是:“这个我不清楚,但我上网查一下就知道了!”Are you kidding?你都不知道有这个东西,你会去查?
说这么多,只是希望大家记住,最简单的基础才是最重要的,我不希望我接下来在面试的时候,问map有哪些map,只能回答出我大学毕业的时候就知道的hashmap和hashtable。。。
作者:晓风轻