有点迷茫,应届毕业怎么提升?

2018-08-06 12:02:24 +08:00
 backfrw
应届毕业,大学期间家里发生了很多事,延期了一年,比同届同学不足,比同级同学又有余,现在刚工作,做后台,用 Java,在成都,试用期加上餐补什么的能有 5k 多点,因为不到一个月,不知道会不会扣什么,到手就不好说了

进公司入职培训还没完,第二天就直接跟项目,一个税务改造,据说很急,跟组连续加班半个月,没有周末,基本每晚都是赶末班地铁,偶尔几天三四点下班,我觉得还好,但一起入职的另一个应届直接辞职了,之后项目也正常上线,但是感觉这样的加班强度也没有学到什么东西

一直听说应届生出来要做两个项目才能成长,这也算小半个了,没吃出一点味,所以问题出在什么地方了?麻烦大佬们指点一下,谢谢啦
2877 次点击
所在节点    问与答
15 条回复
ppyybb
2018-08-06 14:00:10 +08:00
不是大佬
我认为问题在于两点:
1 是否有时间来反思写过的代码?一般来说 code review 对自己提升还比较大的,无论是别人还是自己 review

2 是否对用到的技术进行加深了解?比如用到 mysql,是否对 mysql 事物级别,mvcc,各种锁的机制了解?是否了解索引对应在磁盘上的数据结构?
用到 java,是否对 jdk 集合的原理有所了解?对多线程的各种坑,线程池,future 等原理有所了解?

如果只是简单的外包+加班,能够直接获益的可能不多,考虑下班有时间自己学习,争取去一些有较大数据量和一定并发量的公司写业务。
backfrw
2018-08-06 16:14:43 +08:00
@ppyybb 感谢前辈,知道应该再学习什么了,之前一直觉得应该往框架上努力,但是有新情况了…😂😂😂
coderluan
2018-08-06 17:04:33 +08:00
所以问题出在什么地方了?
文章信息太少,所以看不出来哪出了问题,但是信息太少本身就是问题,说明你不知道自己对项目的整体把握不够,不知道自己在项目中起到什么作用,所以只能说自己加了多少班。做两个项目能成长起来这个说法没问题,但是项目来说没有 0.5 约等于 1,或者 0.5 加 0.5 等于 1 的说法,0.5 基本是 0,只有 1 才是 1,所以只有你对项目整体足够了解,也就是只要时间够,自己就能独立完成的情况下,这种才算一个项目。

难道不是录用什么职位就做什么吗?
双方协商一致才能转,但是你没过试用期,所以没啥协商的资本......

想问下这种情况怎么办啊?
一般来说应该走人了,开发给你转运维,明显是不承认你的能力,做运维更不会让你得到提升......
ppyybb
2018-08-06 18:15:26 +08:00
@backfrw 往框架上努力没有问题,但是这个时候最重要的其实是形成一套自己的知识体系,这是你在某个领域的核心竞争力。要达到这个目的第一基础必须很扎实,第二必须在一个有一定难度的项目里面长时间的参与开发,同时尽可能扩展业务边界线,涉及核心的技术。

你要做到 2 就必须做到 1,否则面试就过不了,更不要说去个不错项目了。而做到 2 最忌讳的就是一个项目做三个月然后就又换一个,这样你的知识体系会很零碎,没什么机会把理论和实践结合起来,总是在和一些琐碎的表层知识和新的业务做斗争,很难成长。

你目前公司太水了,让你搞东搞西的,你又根本没有话语权,你只能利用业余时间加班学习,争取做到扎实基础,业务用到的框架熟悉基本原理(至少看看网上的文章解析这种),然后造几个小轮子什么的。然后跑路。
CoderHugo
2018-08-06 18:27:59 +08:00
我也刚毕业,现在做 Java card 平台的测试开发,平时就是调整脚本,或者参考旧脚本写个新脚本。其实我更想去做 Java 后端开发,所以我的规划是在这边读 jvm 原理,读 spring 代码,尝试着重构他们,做一些自己理解的优化,然后跳槽:D
tianxingzhishang
2018-08-06 18:38:01 +08:00
同样成都刚毕业,不过我是 5 月份辞了快半年的实习( C#方向,公司也不是很好),现在准备回深圳广州找,就是基础太不扎实了,难受
backfrw
2018-08-06 20:59:28 +08:00
@CoderHugo 大佬见谅,信息太少有两个原因,首先是并没有技术求助的意思,其次是因为我握不住,坦白说,这个项目就是很多公司正在使用的税务系统一部分,我看不到全貌,也没胆量透露,只是改造的这部分备份出来就近 200Mb,我确实没这个实力半个月时间掌握它
而且大佬说的对,我其实不明白,应届进公司第二天就做这么紧急的项目,我能起到什么作用,但是项目经理分给我的那一部分弄完了,测试过了,转正式环境上线之后一点小问题也更正了,所以我觉得还是起了一点作用
开发转运维这部分,又更新了,不知道什么表情比较形象┑( ̄Д  ̄)┍
backfrw
2018-08-06 21:03:06 +08:00
@ppyybb @CoderHugo 还好先来吐槽了,不然行差踏错,想起一起入职那个应届生,差点想明天就去提离职的事
感谢大佬们提醒我
backfrw
2018-08-06 21:10:55 +08:00
@ppyybb 不好意思,不是很明白,怎么才算一套知识体系呢,可以理解为运用某一套技术栈的能力,比如 ssm 加 maven 加 easyIU 加 MySQL 这样,或者是解决某一种应用场景的能力,比如一个高并发的电商网站?

扩展业务边界线又该怎么理解啊,可以理解为横向扩展吗,比如关系型数据库能解决的需求,考虑到更高的访问和安全需要,而引入 Nosql 并进一步读写分离这样吗?

可能我会的比较少,前辈多担待
backfrw
2018-08-06 21:19:23 +08:00
@tianxingzhishang 这段时间应该还是应届生黄金期,加油
ppyybb
2018-08-06 22:07:58 +08:00
@backfrw 我也不是啥前辈,工作也才 1 年多,也是准备从成都往北京跳的。

我回答你的问题:
1 我定义的知识体系,就是你从事的这个领域,你能从头到尾的理解整个流程。能把各个层的东西融汇贯通并加以扩展。举个例子:做 web 后端开发(这里含领域知识,比如支付,直播,搜索),以浏览器为分界线,
http 层面要懂(各种 header,code 的意义和使用,以及遇到问题能否判定是这个层出了问题)
接着 tcp 要懂(遇到网络异常能否判定是不是传输层面出问题了,比如服务器 timewait 状态很多导致链接失败是怎么回事?),可以写个 io 多路复用的程序可以吗(比如用 netty 写个多线程异步调用的 client 去做某些业务能做到吗?)

负载均衡怎么做的?(了解 nginx 原理吗,具体怎么配置?需要自己写第三方的负载均衡模块吗?)

然后框架原理,比如你用某个框架,从它 parse 出 http 包开始,到你的 controller 层是怎么个情况,出 bug 了能定位问题吗?能直接看源码找到问题吗?

然后到框架的 orm 大概是什么原理,怎么映射到后端的数据库,如果需要支持某个 database 但是你这个框架又没有合适的开源组件,能自己搞定吗?数据库客户端的链接池特点是什么,对开发的影响。各种 filter/hook 是怎么实现的,怎么应用?出问题能定位吗?

然后到数据层面,先是缓存,redis 的基本原理要懂,如果有周期性的卡顿能通过日志分析出原因吗(这里还考验逻辑推理能力),主从有什么坑,集群原理,有什么坑。最关键的,怎么针对业务涉及一套合适的 cache 体系(这个挺难,没实战积累感觉和经验很难做到),还需要对各种命令的复杂度有所了解(这也附带要求理解内部数据结构)

然后到 db,这种一般源码太复杂了(比如 mysql innodb ),所以看看文章了解基本原理,比如 insert 并发怎么导致了一个死锁?(要求对 mysql 加锁机制非常熟悉,这个还需要去查资料) update 语句会锁哪些地方(反过来思考索引)查询怎么走索引( selectivity 怎么样?),排序 /分组怎么走索引(能利用索引的两种优化机制吗?)自带分区表能不能业务中用上,有哪些坑?应该怎么分表(冷热数据对缓存友好,但是有可能业务中不方便带分区参数) column 类型的选择,text/blob 的存储模型(影响取数据),int,mediumint,smallint,bigint 可以选哪个?各种参数(如果走阿里云一般默认的就很好了)主从,集群有什么坑?(这个我目前也不懂)出问题了怎么迅速恢复数据(至少恢复大致数据然后靠应用层逻辑校对)
你搞统计还得设计一手好 sql,数据量大了就要上各种大数据工具。

再有 cdn,具体的 api 熟悉吗,上传不同类型数据有什么坑(比如有些上传了不是马上见效),怎么加速?

还有应用内,项目用的什么 rpc,原理了解吗(网络,线程模型,编解码,重试,负载均衡),有哪些功能,需要自己 hack 能做到稳定可用吗?各种中间件( mq,log,proxy 了解吗?我也不了解哈哈)

语言,best practice 了解吗?(知道这样做的原因吗?,知道这样做的场景吗?)各种内置的数据结构原理了解吗?并发呢?(各种并发模型,这个我也不太懂)各种坑就不说了。调优也是有可能的。

然后就是算法和数据结构,这个往往涉及到一些比较复杂的业务(硬骨头)时候可能用到,比如让你做成给产品可配置化的界面,让它们设定任意树状结构的统计分类,你怎么弄?现在需求改了,你需要合并两颗树(相同路径合并,同时有复杂的业务条件限制),怎么弄?
数据量太大,能不能搞个 bitmap 代替 set ?放 redis 还是直接放内存里面( db 做持久化?)
有时候可能需要来个桶排序你能想到吗?如果需要在内存里面做可持久化的数据结构怎么弄?比如 bk 树,avl 树 /rb 树 /skiplist (现在有 redis 可以替代了),怎么序列化?(自带的序列化机制原理?慢吗?可以优化吗?开源的原理?性能够用吗?)
万一需要动态规划 /搜索算法来算个最优解(这个往往出现在游戏里面,或者一些调度问题)能想到吗?字符串匹配怎么做?能针对业务优化吗?(往往内存放不下)

最后也是很重要的领域知识,这个只有去对应的项目才能积累了(直播,支付,ai 底层平台开发,中间件开发等等)

还有系统架构能力,这个挺吃天赋和经验的,我也不懂,只能多反思自己的代码,多看看别人的设计,多想想能不能迁移 /抄袭这些设计。

逻辑思维能力,这个感觉比较难提升,但是通过熟悉业务和领域知识应该可以一定程度弥补

以上就是近几年(初级到中级)自己进步的思路,但是具体来做,肯定还是业务优先,先把业务搞熟悉,做到按时按质量交付,然后考虑怎么写更好,然后就有机会做更核心的,理论实践结合,下班可以花时间自己造轮子玩玩。
backfrw
2018-08-07 01:54:00 +08:00
@ppyybb 又是临时改东西,才下班,一看回复,比我先工作的都是前辈,没毛病,实在太困了,只看了前面几条,本科学的网络工程,面试的时候也看了一些框架原理方面的博客,mysql 看过底层数据结构,也看过几篇悲观锁,乐观锁的文章,但是没想过各种锁和索引关系,负载均衡会一点点,Io 多路复用就大眼瞪小眼了,白天我再仔细看看(这下得学几个月了吧),跪谢前辈
aLazarus
2018-08-07 08:44:02 +08:00
同是应届毕业生,现在成都工作,我的水平就是那种楼上说的大部分都接触过或者用过,但仅仅只是在表面了解,完全不懂这些框架的优势和理论,感觉要学的太多太多了
backfrw
2018-08-07 10:21:20 +08:00
@aLazarus 路漫漫啊~同在成都,一起闭关吧,我们江湖再见
aLazarus
2018-08-07 10:57:47 +08:00
@backfrw 加油(ง •̀_•́)ง

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

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

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

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

© 2021 V2EX