半年前端路

758 阅读7分钟

写在前面

不是一篇技术分享,更多的是本人从接触前端开始的一些历程,希望能给迷茫的同学一点引导,哪怕只有一点作用,我也是十分开心的。

自我介绍

首先自我介绍下,本人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,钱多活少(手动狗头)~