※ 引述《empireisme (empireisme)》之铭言:
: 文章可能很长,先说一下
: 一 个人背景和工作内容
: 我个人的背景是年资一年的Java后端工程师,目前在电信业服务(非中华电信),学历为清
: 交商管硕士(非资管)
: 年薪大概65-75万(因为是年终占比太高所以不确定,月薪不到45K)
: 我的工作内容主要是Spring Boot开发,使用的技术框架主要是
: swagger,hibernate,jdbc template,spring security等等
: 部署方面就是打包成war档案,然后丢到linux主机的tomcat资料夹里面而已....
: 后来公司导入jenkins之后,大概也不需要管部署
: 我的工作内容真的主要就是CRUD,而且还是给内部业务的的CRUD
: 我自己有感受到,我是那种要工作中有用到,才会体会比较深的类型
: 比如说我学生时代一直不太会用left join 现在终于比较熟
: 不知道sql指令要命中index,要下explain去检查
: 以前不知道学生时代那些继承的动物例子有什么用,后来工作后看到前辈去用basedao
: 里面包了很多常见的功能像是paging之类的,才发现继承的好用
: 我清楚意识到,因为我做的只有CRUD而且还不是给很多使用者的CRUD所以
: 非常害怕落入所谓的工作十年可是可能技能跟工作两年的人一样的状况
: 版上的大大才多次提到类似的概念
: 原文问错问题了,不管你学什么,学多少技术种类,都不会影响你的薪水。学到什么程度
: ,找什么工作,才会影响薪水。
: 之前看了Drtech大的文章
: https://reurl.cc/Yvx344
: 所以我的问题如下:
: 1. Java Backend要学多深 ?
: 之前看了本版的系列文章,
: https://www.ptt.cc/bbs/Soft_Job/M.1527864627.A.626.html
: 还有几篇 java 后端的面试心得
: 都会问到 jvm 调优,或是redis kafka相关的问题
: 但是我目前的公司应该是不会用到
: 2. 要找什么产业,哪些公司 ?
: 为了避免这篇文章太像伸手牌,所以下面会放入我觉得可能可以的产业和我自己的网络上
: 发现的观察
: # 二 做过的努力
: 1.
: 想说即使公司没有大流量场景来训练,然后大流量场景可能又和多执行绪有关
: 所以就想说去udemy上买相关课程
: ![](https://i.imgur.com/YaBiwGy.png)
: 目前大概看了三分之一,但还是有点雾煞煞@@
: 做过的事情是找了几个网络上的范例,比较有开多执行绪跟没开多执行绪
: 统计资料夹大小的速度差别
: 2. 基本的资料结构
: 去geekforgeek还有买书练习java资料结构,主要以leetcode explore为主
: 书我目前是看 数据结构与算法之美 是简体书,好处是书中的code都是用java还不错
: 目前大概是排序算法 练过快速排序,合并排序
: linkedlist知道基本的时间复杂度,还有删改操作
: 还有一些经典题目,例如反转Linkedlist 合并两个linkedlist,环的检测等等
: 目前是感觉对于code的掌握度有变高,脑袋也有变灵活点,但可能因为我的工作性质,所
: 以还没感受到资料结构的威力,我目前的工作性质大概只会用到两种资料结构ArrayList
: 还有HashMap
: 3. 看对岸的面试题
: 对岸有很多JAVA面试题的影片,就是诸葛老师他们,睡前会看个一两集,
: 蛮喜欢看一些像是mysql优化的
: ![](https://i.imgur.com/Cf0uon0.png)
: 或是对岸的图零学院,他有一系列的刷题套路可以看
: # 三 觉得还不错的产业 电商产业和租车产业
: 看了电商产业的职位,有的会和金流有关
: 有的和物流有关
: 有的则是订单相关
: 订单部分好像又可以很复杂
: 之前看到有版友提过
: - 订单快照功能,保留当时的商品资讯 e.g. 价钱,规格等
: - 是否需要跨商店结帐?
: - 出货时需不需要做到分批出货?
: - 退款时需不需要做到只退款部分商品?
: - 出报表支援商业决策,譬如说过去一个月,哪间商店营业额最高? 哪些商品最热卖?
: 像我就对这些问题的数据库设计没什么想法,我可能就停留在有一对多,多对多,然后要
: 做正规化而已
: ,比如说要知道过去一个月哪间商店营业额最高,应该就是直接下sql指令就好了吧?
: 当然这是我最初浅的想法
: 然后电商产业好像会有一些双十一的的高流量场景?
: 国内JAVA为主的电商,我知道的有
: momo 跟远传friday,但后者好像有大裁员,而且cakeresume上面显示的薪水,好像也是
: 45K到70K的样子,另外momo虽然非常赚钱,但是网络上查到的java工程师薪水好像也普普
: 另外我最近看到格上租车的职缺描述,里面提到会设计高流量后端服务,还有微服务设计
: ![](https://i.imgur.com/bwjDkfo.png)
: 但是其实我没有接触过租车产业,不确定是不是如同cakeresume上面说的那样
: # 四 台湾系统厂
: 之前看台湾系统厂的中位数薪资,其实也不低,当然是比半导体低,但是也有一定水准
: 但是我实际去找 asus 或是 acer的JAVA工程师薪水,好像也是普普
: ![](https://i.imgur.com/VW1hS1o.png)
: # 五 外商
: ![](https://i.imgur.com/Up3x6gP.png)
: 之前看到太阳鸟在征才,也不太确定是要学到什么程度才能拿到比较高的薪水
: # 六 我的学习困境
: 透过专案的训练,开始学会用swag方便测试API,开始学会Spring Security懂得如何基于
: 脚色给予适当的URL保护,原本没学过jdbc template,也慢慢学会了
: 但是外界常用的redis kafka 或是多执行绪技术我们公司目前应该是不会用到
: # 七 结论
: 上面好像写得有点太发散,所以我应该找什么产业的什么部门?
: 电商吗,还是一些乙方,因为乙方我看过有些公司好像也有月薪七八万
: Java 后端应该要能学到什么程度,能解决什么样的问题? 才能有一百万左右的薪水?
: 我自己的想法可能是leetcode要能够解掉easy
: mysql 优化要能够说出除了index命中以外
: 然后是不是要自己想办法学会Spring cloud 这种微服务框架?
: 甚至还要会负载均衡 ?
springboot自带tomcat,
build成jar自己可以直接启动成一个微服务,
打包成war再放进tomcat里这是以前jsp servlet那个石器时代的作法,
你们用springboot却这样部署,
很大机率你们可能没有真正了解springboot究竟要解决怎样的问题
你现在看了前辈的code觉得继承好用
但是你不明白继承不是一个好的pattern
很容易让专案过度复杂
用compose的方式往往会更好
golang就没有Class没有继承只保留interface
你有探讨过这中间的原因吗
jdbc template只是spring提供的一种template
jpaRepository也可以做一样的事
假设只学会使用这些而没有真正明白和数据库沟通时需要注意的细节
(比如在循环中去query或insert/update是一种糟糕的作法)
那么你的实力并没有变强
碰到数据库瓶颈你很可能也找不到问题点
你没有multithreading的实战经验
很多高薪的公司的业务场景你无法handle
你也无法理解golang为何能够更好的解决高并发问题
我相信你也不了解jvm的细节
或是spring底层的实作
这些都是成为厉害java工程师必经的路
高薪要看产业看公司没错
但那不代表你在高薪产业就不需要扎实的能力
我的观察是
你的能力还很浅
眼睛却一直盯着钱
这样你永远无法成为真正厉害的工程师
我共事过的一些很强的工程师
光看multithreading code就可以看出可能的问题
碰到没有清楚的error message的瓶颈时
也能够短时间找到问题点
pm给出大的需求
能够清楚拆分成小的ticket分给下面工程师去做
时程估计合理
架构设计可靠
程式码优雅高效
你需要做的是看看好公司都开出怎样的需求
自学后去面试
被打枪再学再面试
想办法进到这些公司去实战这些技术
是金子到哪都会发光
你是大神别人只会捧著钞票来求你