写在前面
这不是一篇技术分享,更多的是本人从接触前端开始的一些历程,希望能给迷茫的同学一点引导,哪怕只有一点作用,我也是十分开心的。
自我介绍
首先自我介绍下,本人19届本科,坐标天津,末流211,5月来京北漂。总的来说这是一份毫无亮点的履历。
前端之路
大学前期
和大多数同学一样,我的大学也过得浑浑噩噩,也未曾有过读研的打算(英语能力太差),大一大二终日游戏人生(少年不知愁滋味?)。直到去年4、5月份,看着其他同学准备考研的考研,准备工作的开始实习。终于幡然醒悟(迫于找不到实习工作的压力),开始了自己的求职探索。
初识前端
最初接触前端,仅仅是因为看到好友凭借学了几周的基础找到了实习工作,于是自己也跟着学了起来。学习的资源也无非是菜鸟教程之类的api类型文档,在实习申报结束前几日也算找到了一份实习工作,那时候自己的知识储备量也仅仅是对html、css、js有一个简单的认识。
实习期间
直言不讳的说,我的实习工作还算清闲(毕竟国企...)。在实习的半年内,我读了很多大佬的文章以及看了一本书《javascript高级程序设计》,很推荐小白去读这本书,我前前后后读了好几遍,每次读都对js有些新的认识。我推荐的读书方式是先去全篇通读,对书的内容有个大概把握,不理解的地方可以先记录下来,然后在工作中肯定会或多或少的遇到一些语言方面的疑问,然后可以在书中对应章节找到解答,这样可以加深自己的理解和记忆。看文章的话比较推荐全面的去看,以js为例,你需要知道原型链、事件循环、类型转换、异步处理、es6+特性等等,了解的知识越多越有助于将各个部分逐渐串到一起,形成体系。其实看似零散的知识到最后都会串联到一起,形成知识网络。如果你觉得知识太零散,那就是学习的广度还不够。
毕业将至
王兴在2018年结束的时候说“2019年或许是过去十年中最坏的一年,但可能是未来十年最好的一年”
大四后半年,比起其他同学“毕设靠买”,我决定自己做一个以javascript为技术栈的项目,凭着实习学到的vue知识以及实战经验,自己搭了一个vue+koa+mysql的管理系统,从学习koa到完成毕设前前后后花了一个月时间,站点主要做了登录注册逻辑、token验证、登录过期检验以及一些业务逻辑,颇有收获。
在找工作的时候,又不幸赶上了互联网寒冬,求职变得异常艰难(可能也是自己太菜了...),我面了很多家企业,虽然最后都没有拿到offer,但是对于自身的查漏补缺帮助很大。所以推荐同学们多去面试,因为面试一方面可以对自己有一个客观的认识,另一方面还可以查漏补缺。所幸我运气好,最后找了一份还不错的工作。
工作以后
在工作之余,我又在自学,准备面试,半年左右时间我看了大概2、3百篇技术文章,读了《Effective Javascript(中文版)》、《你不知道的JavaScript》和一部分《HTTP权威指南》,也刷了很多面经。11月份开始进行求职面试。
求职之路
面试基本都是来自hr的邀约,本来准备明年三月开始的投简历的,既然现在有人邀请,索性就试了试,大大小小面了5、6家,拿到了跟谁学、字节跳动等几个offer,最终选择了字节。
为什么会收到hr的邀约?
我在boss直聘上留了一份简历,然后就陆陆续续收到了一些投递简历和面试的邀约,抽空参加面试。
字节面经(干货?)
大概说下面试流程吧,首先做了一份笔试题,用在了一面上,然后二三面就是聊天式问答。由于时间过了很久,记住的题目不多...
- 笔试:CDN作用以及设计原理,js运行代码问题(事件循环,隐式转换等),手写函数调度器(每次只能同时执行最多两个fn,一个完成后边的开始执行),手写版本比较插件(类似1.0.beta > 1.0.alpha),手写二叉树深度优先搜索
- 一面
- 详细问了下CDN方面的知识
- 强缓存、协商缓存
- css3(这个是我自己介绍的时候说的,所以特地问了下)
- http和https(get会加密参数吗?)
- CORS相关(简单请求,预检请求)
- webpack相关(编译过程,用过的loader和plugin)
- 二面(基本都是对答如流的,所以没记住...)
- 算法(字符串解码类似)
- 词法分析(简单来说就是实现Array[-1]的直接取值,通过Babel编译。我回答的是原型链解决)
- 三面(也没记住多少...)
- SSR相关
- node中间层都可以做什么
- 微前端是什么意思
- 如何渲染一个虚拟DOM,类似render函数(递归渲染)
- 服务调服务为什么不会跨域,是否有必要将前后端分别部署
- pm2有什么作用(守护进程等)
- 负载均衡,简单实现
- 提问环节
- 基本上我都会问下面试官关于技术积累方面应该怎么做,推荐哪种学习方式,在他毕业两年内他如何做技术积累的,如何看待前沿技术之类的。我希望能够听取不同的意见并以此来引导自己今后的学习工作,经过几场面试之后还挺有收获的吧(仅供参考)。
- 我一般不会问面试官觉得自己的表现如何之类的,我觉得自己表现如何自己面完已经知道的十有八九的。如果问别人,可能让人觉得你没有自信,也没有一个对自己正确的认识。
学习方法
其实这个也不用过多解释,每个人的学习方法都是不一样的,不必刻意跟别人对齐,自己有行之有效的方法即可。我一般都会去看书,看文档,然后自己去多实践,做笔记。如果有面试打算的话多刷一刷面经,推荐多看看前端面试,涵盖的很全面。算法的话可以看看这个,算法这个东西还是靠积累,多刷leetcode,刷多了自然有一些自己对于某些算法的感悟和总结。
其实作为FE,不单单要掌握一些前端的知识,网络、操作系统和服务器的知识也挺重要的(小体系是前端知识体系,大体系是web开发知识体系)。
废话码了一大篇,其实最重要的还是自驱力和兴趣。拿我来讲,最开始接触前端的时候为什么能学的下去,关键因素还是自驱力——我不想毕业即失业,所以我在不断的学习,期望通过学习找到一份满意的工作,并且自己对前端也很感兴趣。到后面准备求职的时候是因为我对自己目前的工作现状不满意,所以才自己驱动自己刷面经、刷算法。
对2020的展望
希望自己能在字节有一个好的发展,积累更多技术实战经验。同时也能够完成自己的pwa应用的开发(服务器买完就开始吃灰了)。
最后
希望大家在2020也能够实现自己的愿望,拿到满意的offer,钱多活少(手动狗头)~