最近我收到了很多咨询求职的消息,他们都是海投了N份简历,但是没有收到面试消息,就算是收到了,也在二面三面的时候被刷了下来,甚至还有的同学花2小时坐车去面试,不到5分钟后面试官就让他走了...
从年初开始找工作,现在都快年尾了,却迟迟没能收到合适的Offer,这让他们失去了信心,不断的自我否定,以至于焦虑到失眠。在聊的过程中,我发现他们都存在着这样的问题:
“平常套套模板还挺溜的,一到面试官提问就发慌,连问了几个问题都让我欲言又止,知道但是又很模糊,不知道如何表达。”
"平常对源码啃得比较少也很慢,面试官当场让我读了一段,我立刻懵逼,都没问几个问题,就让我回去了..."
面试官看了我以前码的东西,频频皱眉,说我没有设计模式、健壮性、可扩展性能差,我觉得我几年的工作经理都被狗吃了,要怎么才能快速提升呀?.......
其实,造成这些问题的核心原因就是:
他们缺乏基础知识掌握应用和对源码实现原理的阅读理解。
现在会应用vue、react等框架的人随处可见,众公司对于人才的关注点会更加注重个人基础能力和自我驱动的能力上面。如何在短期内快速提升,我想你可以关注以下三个方面!
01.
理解vue依赖收集机制
说到vue可能很多人就想到了会问vue的双向数据绑定,但想要让自己在面试中更加突出,这样是远远不够的,理解vue依赖收集机制才能更加清晰地理解vue实现原理。
vue依赖收集机制采用观察者模式,主要有Watcher、Dep、Observer和Compiler这4个类:
Compiler类
主要解析模板和指令;
Watcher类
作为观察者,接收观察目标的信息来做出更新(如watcher和computed);
Dep
作为观察对象,使用subs数组存储它的观察者们(Watcher实例);
Observer类
则是对数据进行可观测化,主要也就是大家熟悉的definedProperty。
值得注意的是,defineProperty对数组的监测有缺陷,所以Observer类针对数组方法进行了增强操作,比如数组的push方法,在通知观察者的同时执行原生方法。
总的就是通过Observer使数据可观测化,在数据getter中给观察目标(Dep实例)存储对应观察者(Watcher实例),在set的时候触发观察目标notify通知观察者进行更新。
02.
重视算法的作用
算法在工作学习中通常会被大家忽略,进行算法的优化可以极大程度上得提升产品和项目,能提高运行性能,减少栈溢出和内存泄漏的风险。
举个数组去重的例子:
如上图的方法一,采用reduce+indexOf的双层遍历实现,相当于双层for遍历,时间复杂度为O(n²);方法二则是利用了ES6的新方法,使用Set结构去重;而方法三则是利用了对象key唯一的形式,仅用两次遍历(forEach和Object.values)即时间复杂度O(n)就可完成。
当然方法还有很多很多,当计算量变大时,不同方法的差距就会逐渐显现出来,计算量过大容易导致浏览器崩溃,这就需要考虑算法的时间复杂度和空间复杂度了。
03
.
掌握缓存的主要方式
缓存是javascript的核心基础知识之一,主要可以分为:本地缓存、应用缓存和离线缓存。
本地缓存主要有cookie、localStorage和sessionStorage,三者均是浏览器提供的本地缓存,但它们的生命周期和缓存大小有所不同:
cookie大小一般限制在4kb以下,而且cookie会随请求发送到后端,所以一般只将用户登录态或者权限验证放在cookie中,避免影响请求传输效率;localStorage和sessionStorage的大小一般均是在5mb以下,sessionStorage的生命周期是维持到页面窗口关闭,而localStorage存储在浏览器缓存中直到代码删除或者手动清除浏览器缓存,它们都不能跨域访问。
应用缓存是项目本身的缓存,比如一个js对象缓存的数据,或者状态管理机制如vuex和redux等进行应用数据存储,它们在页面刷新就会丢失。
离线缓存,就是应用在离线情况下也能快速访问的缓存资源,这里主要讲serviceWorker,大多数浏览器已经支持serviceWorker提供离线缓存。
它主要用做请求代理和离线资源缓存,它根据自定义的缓存策略对资源进行缓存(比如静态资源缓存),当无网或者弱网情况下,拦截请求后可直接返回缓存的静态资源,而不是出现令人烦恼的无法访问。现在在大厂针对支持serviceWorker的浏览器基本都会有一套离线缓存方案,那么知道serviceWorker离线缓存在面试中不失为一个亮点。
前端门槛竞争日益激烈,门槛也越来越高。以上的内容可以进一步扩展大家的知识面,提高竞争力,面试有更大的把握,当然
更详细和更多的内容可以关注网易云课堂的免费直播,给大家提供更多的面试要点
。
限时免费前端进阶课程安排
1. 技巧:
《面试被问优化怎么办?Vue的优化技巧》
性能体系与性能指标
vue项目优化应该注意的方方面面
网易在优化vue时做了什么?
2. 技巧
:
《如何优雅的使用vue?-- 不可不知的vue高级实战技巧》
一次引入,终生受用的组件注册技巧
拯救繁乱的template--render函数
高精度权限控制--自定义指令directive
3. 技巧:《工具不简单-网易webpack的配置中有哪些技巧》
webpack能帮助我们优化什么
如何写出优秀的webpack配置
如何开发webpack的loader、plugins
4. 架构:《前端架构之基于NodeJS打造Web中间层》
什么是中间层
中间层架构分析
基于NodeJS实现中间层架构
5. 项目
:
《全栈技能之基于NodeJS的鉴权实战 》
什么是鉴权与原理详解
NodeJS下实战鉴权操作
高级鉴权操作详解
6. 技巧:《大厂如何初始化项目-搭建你自己的vue-cli》
揭秘项目初始化工具
如何开发一个命令行工具
做一个自己的vue-cli
领取方式
现在扫码添加小助手即可领取6节前端进阶课程
仅限100人!!
阮一峰微博介绍
添加成功附赠前端资料包一份
忘记扫码的我再发一次哦~
仅限100人!!
转载:https://blog.csdn.net/gmszone/article/details/102481448
查看评论