可乐的 2020 年度总结 | 掘金年度征文

·  阅读 2134

前言

大家好,先做个自我介绍,我叫可乐~一个本科毕业两年的前端工程师,之前在腾讯摸鱼,现在在字节摸鱼。

好久没写文章了,一方面是因为自己懒,当然最主要的原因是我目前没有比较好的灵感,我不想写一些我自己都觉得不 OK 的文章。乘着这个活动,我也来总结下我的 2020 年吧。

新的开始-跳槽

就在20年1月份的时候,我从腾讯跳槽到了字节,虽然损失了年终奖,不过我个人感觉总体还是不亏的,因为字节的氛围正是我喜欢的氛围。没有上下级关系,大家都不知道彼此的职级,因此也没有什么 title。而且字节大部分都是年轻人,所以都比较聊得开,我们组里不是在开车,就是在开车的路上(我还没上车呢,等等我呀

当然,希望大家吸取我的教训哈哈哈,一定不要跟钱过不去,如果可以的话,还是要拿完年终奖再跑路!
跳槽的时候,就面试了三家公司,shopee、微信和字节。很幸运都过了面试,我知道你们这个时候肯定要问面经,嘿嘿,其实我之前就已经写好了一年半前端跳槽面试经验(头条、微信、shopee)。看我多为你们着想,给我冲!

工作反思

感觉经过这一段时间的工作,我个人感觉作为一个工程师,最重要的素养有以下几个:

靠谱

作为跟你一起合作的人,他其实不关心你有多聪明,写代码有多么花里胡哨,他只希望你是一个靠谱的人,你写的代码不要给我报错,你提供的接口别老是出什么幺蛾子(比如明明制定了接口协议,可是你返回的结果又不按照接口协议的来)。
当然,代码报错是一方面,还有更重要的一方面就是按照需求文档来开发,遇到有疑惑的地方要及时同步,不要带着疑问开发,不然万一出现了问题,就会很大的影响你在产品、开发同学的形象。

善于沟通

沟通能力真的是一个很重要的品质。在与同事相处的过程中,要善于去沟通,比如发现项目中有一些不合理的地方,要先去跟身边的同事沟通一下,看下这个是不是有什么历史背景,能不能一起去推动优化这些不合理的地方,而不要自己埋头苦干,最后发现这个东西是有历史原因的。

学习

持续学习是一个必不可少的能力,因为前端这个领域,技术在飞速的发展,如果你不持续学习,你很快就会发现怎么现在用的技术都跟我之前的完全不一样了。

去年的学习方向

React

之前一直想了解下 React 内部的原理,去年意外发现了卡老师的 react 教程。跟着学习了下,感觉还是对 react 有了比较深刻的了解,并且也对团队内做了一些 React 的分享,收获的反响还不错。

了解了 V8 架构的调整以及原因

调整前

V8 之前是在运行的时候,通过编译器直接将源代码编译为机器码的方式来执行。
存在的问题:机器码本身就会比源代码体积大上十几倍,而这些编译后的机器码是保存在内存中的。这对于 PC端 来说还好,可是对于移动端场景的话,就是个硬伤,因为手机本身内存就小。

调整后

V8先将源代码编译为字节码,之后在通过引入一个解释器来动态的解释执行这些字节码。由于生成的字节码的大小会远远小于机器码的大小,因此就比较好的解决了这个问题。而解释器执行结合 JIT 的技术,也可以保障执行速度不会比直接执行机器码的速度慢太多。

Vscode

今年也在一个基友的推荐下,一起看了下 vscode 的基本架构和实现原理,并且顺手为 vscode 修复了一些 bug 和提供了一些 feature,成为了 vscode 前100贡献者.

Vscode 我感觉比较有趣的地方有几点:

  1. 实现依赖注入的方式。(通过装饰器的方式来声明依赖,并在实例化的时候,根据当前实例的依赖列表注入对应的依赖项)
  2. 提出了 LSP(Language Service Protocol) 协议 和 DAP(Debug Adapter Protocol),有了规范后,语言服务提供者就不需要为每一个编辑器重新实现一遍逻辑,我只需要按照规范来实现一遍,就可以在所有支持该协议的编辑器下使用。

LSP DAP
3. 文件目录规范。Vscode 每一个文件目录都有严格的规范,详细的可以直接查看vscode 官方链接

Typescript

之前一直觉得 Typescript 很神秘,很好奇他是怎么实现的,上个月也鼓起勇气看了下 Typescript 的一些代码,并帮忙修复了两个 bug,以及提供了一个 feature。两个 bug 已经合进去了,那个 feature 还在 CR 中,如果合进去了的话,感觉我也可以混到 Typescript 前100贡献者哈哈哈。

Typescipt 执行过程

这一块我目前看的还是比较浅的,只能简单说下我目前看到的整体流程。可能不一定对,仅供参考。

词法解析(scanner.ts) => 语法解析(parser.ts) => 生成 symbols(binder.ts) => 语法和语义检测(checker.ts) => 生成代码 (emitter.ts)

TS 与其他的js编译器的区别就在于,TS不仅会做语法检测,还会做语义检测。而语义检测则是基于 symbols 来的,因此他会比他们多生成 symbols 的过程

理财

其实从毕业就开始慢慢理财了,不过去年算是找到了一点感觉,不过还是踩了几个大坑,有了以下几个教训

  1. 不要追高,不要低抛。(诺安半导体)
  2. 不要做盘前的交易(昨晚的B站)
  3. 如果在高位的话,要记得取消定投:黄金

规划

一不小心就说了这么多,那就说下明年的规划吧。感谢各位观众大老爷们阅读!

  1. 搞钱搞钱搞钱!学习理财知识
  2. 继续学习

掘金年度征文 | 2020 与我的技术之路 征文活动正在进行中......

分类:
阅读
标签:
分类:
阅读
标签: