前端知识收集

333 阅读4分钟

JS基础

  1. 浅析javascript调用栈函数栈、内存、JS执行过程分析、同步执行、异步执行
  2. 从一道面试题谈谈对EventLoop的理解堆、栈、队列、宏任务、微任务。是我看过的对event loop的讲的最清楚的一篇文章。
  3. 作用域链
  4. 原型链
  5. 闭包
  6. 继承原型链继承、class继承
  7. var、let、const区别(1)作用域 (2)var变量定义提升 (3)let、const不能重复定义 (4)const不能重复赋值
  8. 改变this指针的方法call、apply、bind
  9. call、apply、bind的作用、区别、手写实现
    • 相同点:改变this指针第一个参数都为this要指向的对象
    • 不同点:(1)传参:apply后只能传数组,call和bind后面可以传多个参数(2)bind返回函数, call,apply立即执行
  10. 防抖与节流的原理与区别防抖:setTimeout,节流:规定一段时间内只执行一次。适用于:mouseover|scroll时计算、input联想只提交最后一次输入
  11. 实现链式调用关键点:每次调用都返回自身
  12. 类数组和数组的区别,类数组如何转换成数组
    • 区别:类数组是长的像数组的普通对象,key数index下标数,value为值;数组是具有length的特殊对象, 有自己特有的方法,改变长度时length会自动更新。
    • 转换:Array.from(类数组)Array.prototype.slice.call(类数组)
  13. Promise实现异步的原理、特性、优缺点、手写实现返回的是函数,有then、catch、finally、all等方法处理不同的回调,比以前传回调,做判断看上去更直观
  14. 实现promise.all请求结果返回时判断已经返回结果的个数,等于请求总数时触发回调\
  15. Common.js 和 es6 module 区别
  16. HTTP2与HTTP1的区别
  17. Map和Set的理解
  18. 首屏渲染优化

(1)加载方面:速度(CDN、(强缓存和协商缓存)服务器缓存、HTTP2代替HTTP1)、减少资源大小(代码压缩、图片压缩、代码拆分) 减少请求数量(http强缓存,缓存重复请求的数据,合并请求如雪碧图)、优化加载时间(预加载、懒加载、按需加载)、优化加载方式(SSR、SSG静态站点生成方案)

(2)渲染方面:骨架屏、HTML(CSS顶部,SCRIPT底部、减少DOM数)、CSS和JS(减少重排重绘、减少CSS选择器的复杂性)、动画效果(CSS3代替GIF图,使用transform, opacity目的也是为了减少重排重绘)

  1. JavaScript 里的奇葩知识看运行结果
  2. 掌握 JavaScript ES6 中的 Symbol 类型 避免冲突,值是唯一的标识符
  3. ES6 Class 继承与 super: 子类constructor中使用this前必须使用super
  4. ES6问题集合

手写功能

  • 前端面试常见的手写功能:看到最全的一个
  • JavaScript手写代码无敌秘籍: 相对上条增加了JSON.stringifyJSON.parse
  • JS实现1万的阶乘
  • 数组去重:Array.from(new Set([1,2,3,3,4,6,2]))
  • 查找数组中的某个元素的方法indexOfincludesnew Set(...[1,2,3,4]).has(2)find
  • 上列的数组查找的方法哪个效率最高数据量<1万时,set.has > includes, >1万条时,includes > set.has, indexOf > find
  • 求两个数组交集:a.filter(x => bArySet.has(x))
  • 求两个数组并集:Array.from(new Set(a.concat(b)))
  • 对象deepCopy

Vue

  1. vue双向绑定原理
  2. vue更新dom过程异步, nextTick
  3. Vue.nextTick 的原理和用途
  4. vue-cli中都包含什么vue-router、vuex、axios、sass/less、element ui/vux
  5. vue中data为什么必须是个函数实例独立作用域引用类型数据会造成组件数据混淆
  6. vue组件传值方式
    • ⑴父传子:属性(props)、$refs.child_id.name
    • ⑵子传父:$emit、$parent、依赖注入(provide和inject) 查看依赖注入API
    • ⑶ vuex
  7. 父子组件加载顺序、销毁顺序
    • mount时:父beforeCreated、created、beforeMount -> 子beforeCreated、created、beforeMount、mounted -> 父mounted
    • 子组件update时:父beforeUpdate -> 子beforeUpdate、updated -> 父updated
    • 父组件update时:父beforeUpdate -> 子deactived -> 父updateddeactived指被 keep-alive 缓存的组件停用时调用。
    • 销毁时:父 beforeDestroy -> beforeDestroy、destoryed -> 父destoryed
    • 加载多个子元素时:
    parent beforeCreate parent created parent beforeMount child1 beforeCreate child1 created child1 beforeMount child2 beforeCreate child2 created child2 beforeMount (2) child mounted parent mounted
  8. Vue全局注册组件
  9. vue组件中style scoped的原理及遇到过的问题
    • 作用:组件样式私有化,不影响全局样式

    • 原理:vue把含有scoped样式属性的组件,编译DOM时,把DOM中使用到class的元素、CSS属性选择器都加上一个唯一标识(data-v-xxxxxx)。如果组件内部还有组件,只会给外层组件的标签加唯一属性,不影响内部组件。

React

  1. ReactDOM.createPortal与ReactDOM.render的区别
  2. react的子组件更新时引起父组件渲染,怎么优化useMemoshouldComponentUpdate
  3. React知识点汇总
  4. 为什么react在16.8的版本里加入了Hooks?(zh-hans.reactjs.org/docs/hooks-…)
  5. React hooks原理:其中包含以下问题
    • 为什么只能在函数最外层调用 Hook?为什么不要在循环、条件判断或者子函数中调用。
    • 自定义的 Hook 是如何影响使用它的函数组件的?
    • “Capture Value” 特性是如何产生的?
  6. React's Hooks 的实现原理

工程化

node与linux

算法