面试大厂的避坑指南,你还在盲目刷题吗?(附学习路线)

你以为走的是捷径,其实走的是弯路

备战大厂8个月,选择将自己完整的心路历程、思考与收获记录下来,希望对和我有相似经历的人,能起到一点点的借鉴;希望对像我一样迷茫的朋友,有一点点的启发。

面试情况

  • 字节2次,一面挂
  • 阿里3次,1次一面挂,2次是hr面挂
  • 美团1次,hr面挂
  • 京东1次:拿offer,但裁员影响停止了招聘
  • 小米1次:拿offer
  • 网易1次:拿offer

面的岗位都是技术砖家岗,说技术砖家并不是为了凸显自己的技术怎么样

是因为大厂有隐形的年龄限制,30岁再去面普通开发岗,可能面试的机会都不会给,认为此人“成长性不足”

不同年限的不同要求

黄金期:1-3年
青铜期:5年以上

注:这里年限指的是毕业年限,比如一个人前端干了2年,但毕业5年,大概率只能去面砖家岗了

权重比

1-3年:70%的基础知识+30%的项目经验

5年左右:20%基础知识+80%的项目经验

我身边所有进大厂的朋友,几乎都是3年内进的大厂,超过3年难度不知要上升多少倍

前3年容易进大厂,还有一个非常重要的原因,就是高学历

5年左右,学历也很重要,但比重在下降,更看重的是你的项目经验,解决问题的能力

所以前3年的黄金期,一定要把握住,切不可 亡羊补牢 为时已晚

抱歉,没有捷径

我以为找到了捷径,其实是一个“死胡同”

拒绝盲目刷题

我曾经以为多刷一些面试题,多看一些别人的面试文章,就找到了成功的捷径。其实这是非常错误的想法,白白浪费了大把时间

刷题得到的是问题的表,得不到问题的里,缺失了自我学习能力,缺少对问题的探究与分析能力

盲目刷题,面试时,也根本架不住面试官刨根问底的问

面试官问一个问题,大概率会引出更多的问题,想了解你的深度或广度

说一个我遇到的尴尬情况:

  • 面试官: 从输入url到页面加载发生了什么?
  • 我:
    1)浏览器查找当前URL是否存在缓存,并比较缓存是否过期
    2)DNS解析URL对应的IP
    3)根据IP建立TCP连接
    4)5) ……
  • 面试官接着问:缓存有哪些?协商缓存请求的流程?如何利用缓存?缓存的请求头有哪些标识?etag比last-modified哪个优先级更高?当同时存在Expires 和 max-age时,哪个优先级高?

第一问我很流畅就回答上来了,第二问就卡壳了

面试官说的很直接:看来这个问题你刷过了,也只是刷过而已……

拒绝盲目加群

我曾经有一段时间,疯狂加群,各种打听有没有备战大厂的大佬,希望大佬带带我

其实也是找捷径的想法,结果自然是没有

学习是长期的事情,别人在关键时刻能给你指导就已经很感激了

你需要找到适合自己的路

项目经验

为什么5年左右,项目经验要占到80%的比重?

因为面试官需要从项目经验中看到你的优势

如果学历、能力、经验都一般,也没有发表有质量的文章或做过开源项目时,你做过的项目可能就是最能挖掘你优势的地方

小伙伴:我做的项目都很普通,没啥亮点……

确实,大多数项目都是这样,但平常的项目里也有很多可以挖掘的地方

下面几个问题和你探讨一下

  • 你对当前项目的架构非常了解吗,其中的技术难点都吃透了吗?
  • 项目用到了哪些插件,这些插件的作用是什么?
  • 了解你的页面性能吗?如果让你优化它,你觉得有哪些方面可以去优化的
  • 项目打包后的体积有多少?如何让体积变得更小,如何让页面加载的更快?
  • 看过项目里其他人的代码吗?他们有哪些难点或写的好的地方
  • 如果觉得你的项目没有难点,让你成为项目的负责人,你能做的更好吗?

世界上最好的项目,就是现在在做的项目

所以,建议简历第一条,就写个人优势,这是面试官最想看到,也是最能吸引眼球的东西

写技能?我会vue、会react、会webpack
写做过多少个项目?pc、h5、小程序、跨端的混合开发都做过
抱歉,这些大家都会……

系统性学习

direct.png

特别是转行做前端的朋友,可以解决大片的知识盲区

  • 可以同时满足知识深度与广度的要求
  • 钻研能力,是从深挖一个个小的知识点积累起来的
  • 学以致用,提高解决实际问题的能力
  • 做好笔记,自己总结的才是最好的

个人学习路线

内容时间
前端知识体系前后花了3个月,读了超过300篇文章
练习手写js半个月时间
算法2个月时间

前端知识体系

2021年前端面试必读文章【超三百篇文章/赠复习导图】[1]
写给初中级前端的高级进阶指南[2]

练习手写js

一个合格的中级前端工程师需要掌握的 28 个 JavaScript 技巧[3]
最全的手写JS面试题[4]

算法必不可少

算法题 95% 的算法都是基于这 6 种算法思想[5]
前端该如何准备数据结构和算法?[6]
目前我看到的最系统的算法题库[7]

算法是我最痛苦,也是最纠结的地方。花费时间长,效果还很差
但是在两个月的算法练习中,我第一次体会到:编程不仅仅是技术,还是艺术

收获

通过系统性的学习,到最后会发现那些大厂的面试题,你整理的笔记上几乎都有(这是我写了10w字笔记后最大的感触)

借助外力克服惰性

物理惰性是指:人体由静止到运动必须克服惯性

外力让你从静止开始动起来

为什么要借助外力?

说说我的经历,刚开始备战大厂的时候,我老想着找个备战大厂的群,找几个大佬带带我

结果自然是找不到,最后没办法,硬着头皮自己建了群,当了群主……

不出意外的话,意外很快就来了,很快这个群就变成了聊天群,再然后就死掉了

有心栽花花不发 无心插柳柳成荫

但是这个群却意外成为了我的外力,每每学不动的时候,就打开这个群看几眼,咬咬牙,继续造

如果自己都不做到,又怎么要求别人做到

特别是刚起步的时候,一定要找到自己的外力,逼自己坚持下去

做自己不敢做的事

  • 比如建一个学历群,成为群主
  • 比如成为一个项目或小团队的负责人,带领大家学习
  • 比如坚持写学习笔记
  • 比如发一篇技术文章
  • 比如给大家做一次技术分享

把自己抛出去,丢人的事我来,有压力的事我抗住,做自己不敢做的事

让这些“丢人”的事,变成自己的外力,逼自己前进

你不妨大胆一些,再大胆一些

从工作中谋求成长

并不是学的东西越多,成长越快

所学的东西,要能落地,运用到实际项目中才是最关键的

举几个我学到,并用到项目中的小知识点

  • 看了webworker的文章知道前端可以开启多线程,解决了项目中前端10w条数据的运算问题
  • 看了如何分析页面的内存,通过分析JS Heap图去优化代码,解决了客户电脑配置低,页面经常崩溃的问题
  • 通过React Fiber才知道了 requestIdleCallback 这个api,在做前端监控项目时,可以利用在浏览器空闲的时候上报性能数据

后面的路

还是选择工作中可能会用到的方向,或者说可以落地的方向去研究

提供几个方向,作为参考:

工程化,是个人最感兴趣,也是相对容易上手的方向

打造自己的组件库?自定义脚手架?前端监控?前端性能与内存分析与优化方案?

自定义loader、plugin、babel或npm插件?代码检查规范eslint?全局埋点等等

低代码,公司有自研的代码平台,但是性能与扩展性较差

  • 市面的低代码有哪些,为啥大厂都在自己的低代码发力?
  • 如何基于公司的业务,打造自己的低代码平台?
  • 看看阿里开源的LowCodeEngine低代码引擎和成熟的画布插件?
  • 其中的性能问题如何解决,如何让后端渲染?

可视化,echarts、d3.js、canvas

还没有做过可视化的东西,还是个黑盒,目前组件库有个需求,要搞个关系图谱,玩一玩d3?

源码解读,暂时还是vue为主,react为辅

中小型公司大多是vue为主,react为辅;而大厂都是react为主,vue为辅,好气……

建议:react和vue要对比的去看,去学习,没有谁好谁坏之分

结语

一句话:多写,多练习

看十篇讲webpack的文章,可能不如跟着手写一个简易的webpack来的透彻

以上所有观点仅是我个人的一些经验之谈,仅供参考。

最后

觉得本文有用的小伙伴,可以帮忙点个“在看”,让更多的朋友看到咱们的文章。

最后,再给“前端面试题宝典”的辅导服务打下广告,目前有面试全流程辅导简历指导模拟面试的增值服务,如果有感兴趣的伙伴,可以联系小助手(微信号:interview-fe)了解详情哦~


原文:https://juejin.cn/post/7140207926975266830

原文作者:海阔_天空