作为一只 Java 老鸟,依旧感觉很迷茫。

2018-04-14 01:40:36 +08:00
 ob
今天看到 /t/446353 这位小兄弟的帖子,颇为感慨。
他 96 年的,就已经有这种意识,经过各位大佬的指点,相信他后面的方向会更加正确。
而我,已经 30 出头,每天的工作,依旧还是敲各种业务代码,渐渐的成为了大家口中那种熟练的弱鸡。

这么多年,换过好几份工作,每家公司用的技术栈都略有差异,从 Servlet,Struts1,Struts2,Spring,Hibernate,iBatis,Jersey,JBPM,DWR,ExtJS,Redis,Freemarker,Velocity,ActiveMQ 等等,到现在的 SpringMVC,SpringBoot,Mybatis,Shiro,Memcache,Dubbo,Zookeeper,Hadoop,Hive,Spark,Flume,Hbase 等等(没有列全)。
各种前后端的框架一直在发展更新变化,虽然这些框架在工作中,用的都很溜,遇到问题,也都能找到办法解决。
以前说几大框架,看看源码,弄懂底层的原理,这都能理解。
但是经过这么多年的经验,用到某个框架,需要解决什么问题,通过官网,网上找资料,基本上都能搞定,更加注重的是使用,以及要达到的结果。如果要像各位大佬说的,要把这些东西的原理,细节研究的很透,基本上是做不到。
而且主要的问题是,像前面部分的技术,换份工作,就已经废弃,就算你之前踩过的坑,积累了很多经验(对各种出现过的问题记笔记),对新工作的帮助可以说忽略不计。所以这种没用的工作经验,不但不能成为加分项,因为工龄的增长,更可能会变成减分项。

所以针对工作中出现的那些框架,我现在的更关注的是会用,熟练的用,知道怎么用,变的不会去深研究为什么这样用,这样用的原理是啥(大部分原理也都知道)
当然,针对 java 的其他技术,比如并发,多线程,JVM,设计模式,这类知识,那肯定是研究的越深越好。

但是,像我这种情况,在简历上面,都会写上工作中用到的哪些技术和框架,然后面试官看你写这框架,就会针对这框架问的很深入,很细,正常情况下,框架用不上的配置,我就不会去研究。
例 1:比如我们用 dubbo,只是拿来做简单的服务框架,但是面试会问到:
怎么用 dubbo 限流?
dubbo 底层的序列化,怎么实现自己的序列化?
服务是怎么提供的,原理是啥?
真要去看 Dubbo 架构设计详解
图: http://shiyanjuncn.b0.upaiyun.com/wp-content/uploads/2013/09/dubbo-architecture.png
感觉是一脸懞逼。

例 2:再比如 Zookeeper,服务器上面的安装部署,都是相关人员处理,如果不是自己负责,正常就没有去了解它底层的原理,以及选举领导人的机制等等。但是,面试时,这类问题也会被问到,然后要是没看过别人的文章,基本上也是答不上来。

例 3:面试会问,Struts1 和 Struts2 有什么区别,优点和缺点?
例 4:Struts2 和 SpringMVC 有什么区别,优点和缺点?
例 5:SpringMVC 和 SpringBoot 有什么区别,优点和缺点?
说实话,上面这些例子,我以前都被问过,对于我这种一开始只管使用的人来说,根本就不懂这些区别,只知道哪个更好用,开发效率更高,都是怎么用的。只有面试过后,我才会去网上找资料看下,哦原来 Struts2 是类级别的拦截,SpringMVC 是方法级别的拦截,SpringMVC 的入口是 servlet,而 Struts2 是 filter 等等。而这些也仅仅是从别人的文章里面得到的结论,根本就不是我自己去看源码研究出的结果,这样对有我意义吗?想知道,这类的面试问题,是不是真能反映出面试者的水平?
各位大佬针对这类面试问题,是自己研究源码得出的结论,还是看网上别人的文章呢?

本人在工作中,各种疑难杂症,复杂的问题都能解决,自认为学习能力挺强,解决问题的能力和思路也都有。但是面试时,往往因为问各种框架类的理论( Java 工种,其他工种不知道是不是一样?),搞的很尴尬,以前找工作面试时,要是不做理论准备,基本上都要被问倒。就像大家说的,面试面的是造航母。

所以我的这种状况,工作中使用的这类技能,让我感觉很迷茫,对各种框架的掌握根本不能为自己提供相应有效的积累。
最后,请教各位大佬,像我这种 Java 老鸟还有得救吗?应该往什么方向(技术类)前进呢?
[顺便说下,现公司开发人员 150+(前后端,UE,美工等都算在内),负责框架架构的就五六个,大部分人都是参与各个系统的业务开发。]

看了那位小兄弟的帖子,由感而发,码了挺久的字,排版不是很好,如果各位看到这,道声辛苦了。
希望各位大佬能帮忙指点指点,各种批评也都能虚心接受。
主要是想能更好的了解下自己,从不同旁观者的角度审视我身上存在的这些问题。
谢谢大家。
8134 次点击
所在节点    职场话题
37 条回复
esolve
2018-04-14 01:53:56 +08:00
不说这些框架
问 mysql java redis 通用的吧

1 redis 为何单进程单线程也比较快?
2 mysql 中使用 in 和 exist 性能如何比较?
3 java 中,并发中构造方法的 this 逃逸是怎么回事?如何解决?
4 mysql 幻读是怎么回事? RR 事务为何能解决幻读?
dan2001go
2018-04-14 07:33:54 +08:00
其实很多都是背书的…
你没有什么错…
年轻人记忆力永远比你好…
原理永远看不完…
面试靠得是两个人眼神对得住…
你真要深入就随便买几本书背背…
开发中大部分用不上很容易忘…
所以要多背背…
30 出头了,要面临很多的事情吧…
不能像年轻人那样了吧…
程序发展一直在变…
年轻人的包袱永远比你少一点…
所以你还是要多背背…
最牛逼的就是把 Jdk 的源代码理解一遍…
当然这是不可能的…
咋办呢…
其实程序分成业务流和技术流…
想想自己的优势在哪里…
30 多了一定要扬长避短…
否则你拿什么去竞争别人…
还有就是选择…
选择比技术更重要…
如果公司稳的话就潜心发展自己对公司业务的掌握力度,就别想着走了。
原理其实是互联网行业的一种丛林法则。你现在是一头家养的小鹿…你现在想让自己和野生的小鹿去对比…
另外就是积累一下人脉,看看有没有什么突破口…
有的时候,朋友的一句话一个介绍,可以让你省去一大堆原理…
假设 30 多岁的你现在原理都精通了,那个 96 年的也都精通,面试的时候你们发挥都一样,公司会选哪个呢?
其实也没有很标准的答案,照我说就是现在的公司站稳脚,不是公司不行的话别想着出去竞争。自己网上多看看文章拓展一下知识面。朋友多认识几个。原理的话…可以积累一下基本功这种万变不离其宗的东西,比如算法。另外也可以拓展一下自己程序以外的技能点。你要用程序去硬碰硬的话…难度还是挺大的,要有心理预期,毕竟你起跑线和别人不一样了,你也不是纯的技术流派吧,如果是的话,也不会来问这个问题了。
6XP6VGRYAruv2n7v
2018-04-14 08:36:48 +08:00
所以作为菜鸟到底是深度重要还是广度重要呢_(:з」∠)_
jethroWush
2018-04-14 09:51:07 +08:00
找准自己现阶段的定位很关键
dan2001go
2018-04-14 10:07:24 +08:00
@DarkMario 技术流和业务流就像是『笑傲江湖』里面的华山派的剑宗和气宗一样。道理都是一个道理,也没有谁比谁更屌的。方向发展不一样,但是目的都是一样的。

气宗最后大获全胜,但是剑宗也有风清扬这种高手。

主要看你最擅长什么。如果你这个人很闷,不擅长和人打交道,兴趣也不太广泛,对代码也很喜欢,那技术流最合适,因为你沉得下心来。反之你想法很多,脑子很活,见人说人话见鬼说鬼话的那种,善于交际,对代码没有说爱到死去活来的,也不妨试试主业务。

70%的工作,技术流和业务流都能胜任。差距就在那 30%,而为了这 30%你要花的时间是成倍的。所以你得搞清楚你自己喜欢的和想做的和擅长的,和自己的实际能力相匹配,然后放手一搏。而不是今天想这个,明天被几个人说了几句又去想那个。

当然了,说到武功,『葵花宝典』最厉害,就是要付出那么一点点代价。只要舍得付出,那就天下无敌了。

不过这仍然有个悖论,就是江湖上的人都去练『葵花宝典』了,那会是个什么格局呢?
micean
2018-04-14 10:44:36 +08:00
序列化其实很容易理解,你实现一遍 java.io.Externalizable 就明白了
虽然像 spring 这种源码我也是懒得啃的,但是了解下实现下那些“卖点”也花不了多少时间
如果技术上做不到思考,那就只能往业务上靠了
maddot
2018-04-14 11:03:27 +08:00
年轻的时候意气用事
现在回头看看
对于一般人,如果老板不错,公司发展不错
还是安心待在一家公司慢慢往管理层上走是最理想的选择
HuHui
2018-04-14 11:57:41 +08:00
@dan2001go 真的可以开个专栏之类的写写 XX 二三事 了
sagaxu
2018-04-14 12:46:40 +08:00
简历里不要写这么多框架和库,也不要写超过 3 种编程语言,那样给人第一印象就是博而不精。面试官也会忍不住验证“杂而不精”这个人设。

如果你简历里提到了 springcloud 或者 dubbo,被问到服务治理是大概率事件,就算不知道 dubbo 怎么限流,也该知道有哪些思路可以实现限流。

简历里不要写 Struts*,没人用了,就算目标公司在用,也不会因为你没用过而减分。如果我看到面试的人写 Struts*,我也会问一问,因为我没用过 Struts*,也完全不了解,只是处于好奇问问。答出来不加分,答不出来扣分。

除了算法和 OS 以及 DB 这些所有后端团队都会用到基础知识,Java 开发者额外的基础也就是 JVM 和 JDK 了,加上一些 Java 的并发知识点就齐全了。

无论怎么换工作,以上这些基础知识是不会废弃的,懂的越多,招聘方就越觉得你深入和熟悉底层。

Java 往上就是框架和库了,框架只需要一个 spring,库只需要一个 netty,把这两个搞透,胜过列举 100 个会用的。往集群扩展去,再加一个 springcloud 就行了,其它都忽略。

有一个原则,没看过源码的框架和库,不要写在简历里。有多个同类的,专攻最流行最常见的那个。
bucky
2018-04-14 13:28:37 +08:00
爱说底层的大多数都是吹牛,底层这么热门的知识,大家想学习一下,结果连一两篇好的文章都找不到,难道不奇怪吗?要不就让你去看源码,看某某书,这种话不懂编程的去豆瓣找找书都能给你推荐。现在最火的技术博客还是阮一峰的,所以有时候你仔细想想,就发现装逼的太多。
Devilker
2018-04-14 14:02:56 +08:00
赞同 2#的想法
身边都是 30-40 的码农,高管。10 个换公司有 7,8 个都是,朋友的一句话一个介绍,可以让你省去一大堆原理。
(那 XXX 厂的 XXX,你们那时候做的 XXX 项目吧?有几次吃饭听 XXX 说来着。我后来和 XXX 共过事儿,在 XXX 项目。)

顺便说一句:问原理的面试官,有一部分是在项目要招人的时候,临时去网上找了一道原理题,之前他也不知道。
carlclone
2018-04-14 14:18:58 +08:00
应用和举一反三的区别吧...
microget
2018-04-14 14:55:53 +08:00
情况和楼主大致相仿,个人感觉还是多相处几个朋友比较重要,毕竟一个城市的互联网圈子也就那么大。
今后不论跳槽还是创业,都非常有帮助(因为人际关系是需要时间积累的,这也是作为“老人”,比年轻人的优势)。
别的怎么说,各人的实际情况差别大,还是根据自身情况环境做判断。
ob
2018-04-14 16:14:26 +08:00
@esolve 感谢回答,redis 不算通用顺,1 不去看别人文章,还真答不出来,234 基本上能答出来。
ob
2018-04-14 16:32:49 +08:00
@dan2001go 说的很实在,基本上都戳到点了。
记忆力确实比不上年轻的时候了。
开发中不用真的就会忘,比如以前 hibernate 用的 HQL,onetoone,manytoone 现在让我再用,我全都得再查一遍文档。
"选择比技术更重要",这句话是深有体会,以前旧同事,安安心心在一家公司待着,年限到了,分点股权,解禁后股票变现比你出去外面混的这几年还多。
现在我的情况算是,比年轻些的,活能干的更好,效率也会更高。但是这些跟我的工龄不成正比,就像是,他们一年能进步个 100%,我只能进步 30%这样。
谢谢点评,其他的我会再认真思考几遍。
ob
2018-04-14 16:33:44 +08:00
@DarkMario 这个,我有话语权:深度深度深度!!!
ob
2018-04-14 16:50:54 +08:00
@sagaxu 谢谢,简历的内容,每次只会更新近期的履历,所有旧的工作都没去调整,这块后面适合更新下。
其他提的知识点,会继续学习。
3a3Mp112
2018-04-14 16:56:35 +08:00
其实你的技能栈有这一块 “ Hadoop,Hive,Spark,Flume,Hbase ” 完全可以找专门的大数据工作了
ob
2018-04-14 16:56:47 +08:00
@Devilker 哈哈,以前面试别人的时候,也是去网上找题来面,然后去面试,也是网上找题来回答。
ob
2018-04-14 17:03:56 +08:00
@3a3Mp112 这些也都是属于框架类,跟 spring 那些一样,大部分都仅限于会用。问原理,也是会懞,比如 Flume,基本上就简单的配置就能用了,但是面试会问你,为啥性能这么好? source,channel,sink 的细节,从真实的我来说,如果不是为了面试,我不会主动去学的那么深入,这就是我思维存在的问题吧,有时候知道的知识点,是因为面试而掌握的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/446696

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX