前端[每日一题]1-10

253 阅读4分钟

题目概览


  1. 回调考查
  2. 同步异步
  3. 微任务与宏任务
  4. 原始值引用值
  5. ES6 symbol考查
  6. 隐式转换考查
  7. this考查
  8. 字符串知识点汇总
  9. ES6 proxy考查
  10. 分辨率适配方案

题目详解


题目一

「回调函数」

官方文档解释:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.

定义:js中函数是一个引用数据类型,所以我们传入的不可能是一个函数,而是函数的指针。所以这里应该是先定义好函数,然后把指针作为参数传递给调用它的函数。

解决的问题:最常遇到的一个是事件处理函数,一个是异步请求的数据处理函数。异步请求的回调函数,相似的处理,也是将数据处理的部分单独封装,在数据返回之后调用

优点:优点前面提到了,高内聚低耦合,减少重复代码,提高可读性

缺点:回调造成一个代码的嵌套,层级多了就是回调地狱(Callback Hell)


题目二

「同步异步」

异步与同步的区别是什么,异步方法有哪些,简述其中的一种(一般会让手写promise,必须要掌握)

案例提供:李培伟大佬

promise手写案例: github.com/lipeiwei-sz…

promise测试用例: github.com/promises-ap…


题目三

「微任务、宏任务与eventLoop」

简述微任务与宏任务与eventloop。那就你所知的微任务有哪些,宏任务有哪些,promise中的执行顺序可以概述下吗

宏任务

I/O

setTimeout

setInterval

setImmediate

requestAnimationFrame

微任务

process.nextTick

MutationObserver

Promise.then catch finally

输出结果: 1,7,6,8,2,4,3,5,9,11,10,12

参考:www.cnblogs.com/jiasm/p/948…


题目四

「原始值与引用值」

拓展

双重循环如何优化时间复杂度,通过空间复杂度的牺牲来做

原理参考:blog.csdn.net/qq_24909089…

比较两者的差异,指针直接赋值,原始值依赖原型链+Object.create


题目五

「ES6 symbol考查」

本题考查symbol的新属性species,同时涵盖原型链内容,存储器内容、类的继承内容。

原型链developer.mozilla.org/zh-CN/docs/…

存储器: https://www.jianshu.com/p/bd00adb67ee6


题目六

「隐式转换」

[] == 0 //返回结果是 true

![] == 0 //返回结果是 true

[] == '' //返回结果是 true

!![] == '' //返回结果是 false

'' == true //返回结果是 false

隐式转换内容:blog.csdn.net/u014465934/…

不建议在开发中使用==与let,let应极力避免。而且应该在开发中避免隐式转换的使用,方便自己也方便他人的代码阅读


题目七

「this考查」

输出结果

//window,undefined

//{a: 2} 2

注意箭头函数与普通函数表达式的区别


题目八

「字符串汇总」

通过字符串的排列,考查知识点极为丰富,LeetCode中定位难度为middle

api参考:developer.mozilla.org/en-US/


题目九

「ES6 proxy考查」

单纯的函数调用走apply方法,new一个实例走constructor,后两个走get方法

proxy中

get方法用于拦截某个属性的读取操作,可以接受三个参数,依次为目标对象、属性名和 proxy 实例本身

apply方法拦截函数的调用、call和apply操作。apply方法可以接受三个参数,分别是目标对象、目标对象的上下文对象(this)和目标对象的参数数组

construct方法用于拦截new命令,接收三个参数。

  • target:目标对象
  • args:构造函数的参数对象
  • newTarget:创造实例对象时,new命令作用的构造函数(下面例子的p)

题目十

「分辨率适配方案」

谈谈你知道的分辨率适配方案,工作中你用的最多的是那种,做一个landingPage如何适配13.3寸电脑、15.7寸电脑、ipad、手机(iphone11)(一般需要简单手写下方法)

参考juejin.cn/post/684490…

我自己的话常用的ui框架是antd,里面的栅格做的很好。假如不使用框架的话,我会选择使用媒体查询


写在最后

微信500人群:群内不定期会有赞助商送书活动,BAT大厂资深大牛定期推送面经与源码分析,更有内推跳槽咨询、视频资源共享等等福利。加入我们一起进步。

为了解决微信群二维码有效期7天的问题,下方的二维码做了持久化处理

公众号:中台架构之家

知乎:安大虎

定期推送面经与源码分析、油管技术视频等......好资源要共享,关注我们一起进步