当前位置: 首页 > Web前端 > HTML

面试了拼多多的前端开发岗位,已经拿到offer了,这些知识点要放出来

时间:2023-04-02 14:47:19 HTML

一方面:CSS1。盒子模型2.css文件开头加个*的问题/上下盒子重叠(正值/负值How)3.伪类和伪元素的理解,作用是什么伪类?有什么不同?9.你知道高阶函数吗?10.使用了哪些新的ES6属性?11.var和函数声明的区别。12.类的使用。15、数组会输出重复的元素。16、输入多少万个汉字,会转换成数字。17.promise的api。上面的方法还是原型Vue21上的方法。父子组件通信22.vue指令中v-if/v-show的区别23.Vue的语句循环jQuery24.jQuery的api方法25.jQuery没有做动画26.jQuery27.获取某个id下的所有classHTTP请求头28.请求时如何设置不缓存?编程题:29.spacify('helloworld')//=>Howtoconvert'helloworld'如何实现这个'helloworld'.spacify();两侧:1.做题2.可变高度的标签,以父元素为中心-3.写一个promise,后面的then的第二个参数怎么实现4.reduce方法,还有什么可以参数是?5、sort方法可以返回布尔值吗?6、在原生js中添加事件,7、map和foreach的区别,map返回的长度和原数组一样吗?8.Array-like对象转换为数组9.创建dom节点10.深拷贝如何实现11.webpack优化的三个方面1.组件平台有哪些功能?2.实现一个redux3.用ts实现一个redux。只记得这个。。。其实我上第一节的时候,感觉答案不是很好。不够。我很幸运能把它传给我。我觉得第二次面试的面试官很专业。他们基本上考察了知识的深度,由浅入深。我觉得这个回答还可以,因为我属于那种尽量深入,暂时用不着就花很少的时间,所以我目前的知识很欠缺。我在node、ssr、移动端、小程序方面的能力很弱,但是如果面试的时候不熟悉,就说不熟悉,他不会见面。在准备面试之前,我对自己的要求是尽量不要很快被题目压垮,所以重点复习了自己擅长的知识,上网看了很多拼多多面试题,做了一个整理。现在分享给大家,也算是一种感恩的回馈。JavaScript(由于内容太多,我会重点介绍,部分内容会略述,如有兴趣阅读全文,可【点我】免费获取。)数据类型JavaScript中的基本类型是什么?各种数据类型是如何存储的?JavaScript数据类型包括原始类型和引用类型(对象类型)。原始类型包括以下6种:StringNumberBooleannullundefinedSymbol引用类型统称为Object类型。如果再细分的话,分为以下5种:ObjectArrayDateRegExpFunction1,数据类型的存储形式栈(Stack)和堆(Heap),这是两种基本的数据结构。Stack在内存中自动分配内存空间;堆在内存中动态分配内存空间,不一定会自动释放。一般我们在项目中手动将对象类型设置为null,以减少无用的内存消耗。原始类型是按值存储在栈中的数据段,内存空间可以自由分配,可以直接按值访问。变量a=10;变量b=a;b=30;控制台日志(一);//10值console.log(b);//30个值引用类型存放在堆内存中,堆中的每个对象在内存中都有一个引用地址,就像每个房间都有一个房间号一样。引用类型在栈上保存的是对象在堆内存中的引用地址,也就是我们所说的“房号”。通过“房间号”可以快速找到堆内存中存放的对象。varobj1=newObject();varobj2=obj1;obj2.name="zhizhi";console.log(obj1.name);//zhizhi2,Null面试官:为什么typeofnull等于Object?不同的对象有底层原理存储是用二进制表示的。在javaScript中,如果二进制的前三位全为0,系统会判断为Object类型。null的存储二进制是000,也是前三位,所以系统判断null是Object类型。扩展:这个错误是第一版javaScript遗留下来的。我还扩展了其他几个类型标志:000:对象类型。1:整数类型,数据为31位有符号整数。010:双精度型,数据为双精度数。100:string,数据为字符串。110:布尔型,数据为布尔值。3、typeof和instanceof在判断数据类型上有什么区别?typeof是一元运算符,它也返回字符串类型。一般用于判断一个变量是否为空或者是什么类型。除了null类型和Object类型无法准确判断外,其他数据类型都可能返回正确的类型。typeofundefined//'undefined'typeof'10'//'String'typeof10//'Number'typeoffalse//'Boolean'typeofSymbol()//'Symbol'typeofFunction//'function'typeofnull//'Object'typeof[]//'Object'typeof{}//'Object'由于typeof对于对象类型有返回Object类型的限制,所以我们可以通过instanceof来判断一个对象是否是另一个对象的实例。返回值是布尔类型。vara=[];console.log(ainstanceofArray)//trueinstanceof运算符用于测试对象的原型链中是否具有构造函数的原型属性。如果你对原型链不是很了解,后面我会具体讲解,这里写下来就可以了。我们再测试一下ES6中的class语法糖是什么类型。classA{}console.log(AinstanceofFunction)//true注意:原型链中的原型可以随时改变,改变的值在对象的原型链中可能不存在,instanceof返回的值可能返回false。4.类型转换类型转换通常在面试笔试中出现较多,申请者容易忽略类型转换的一些细节,所以我尽量系统地整理一下。JavaScript是一种弱类型语言,变量不受类型限制,所以在某些情况下我们需要进行类型转换。“类型转换”分为显式类型转换和隐式类型转换。每种转换又分为原始类型转换和对象类型转换。显式类型转换就是我们所说的强制类型转换。将其他数据类型转换为字符串类型!对于原始类型,转换为字符串类型时默认会调用toString()方法。字符串(123);//“123”字符串(真);//“真”字符串(空);//"null"String(undefined);//"undefined"String([1,2,3])//"1,2,3"String({});//"[objectObject]"其他数据类型转为布尔型!除了少数特殊值''、undefined、NAN、null、false、0转Boolean为false外,其他类型的值都转为true。Boolean('')//falseBoolean(undefined)//falseBoolean(null)//falseBoolean(NaN)//falseBoolean(false)//falseBoolean(0)//falseBoolean({})//trueBoolean([])//true转换成数字类型!数(10);//10个数字('10');//10号(空);//0数字('');//0数字(真);//1号(假);//0数字([]);//0数字([1,2]);//NaNNumber('10a');//NaNNumber(undefined);//NaN对象类型到原始类型!当对象类型转换为原始类型时,会调用内置的valueOf()和toString()方法,这两个方法可以重写。转换原始类型有两种情况:转换为字符串类型或其他原始类型。如果它已经是原始类型,则不需要进一步转换。如果转为字符串类型,调用内置函数中的toString()方法。如果是其他基本类型,调用内置函数中的valueOf()方法。如果返回非原始类型,将继续调用toString()方法。如果没有返回原始类型,则报错。5.四个算术运算的hermit类型转换是强制类型转换,不需要考虑。JavaScript会自动将类型转换为需要的类型,因此称为隐式类型转换。加法运算符在运行时决定是执行加法还是连接。不同的操作数导致不同的语法行为,这种现象称为“重载”。如果两边都不是字符串,则将其转换为数字或字符串。Boolean+Boolean将转换为数字相加。Boolean+Number布尔型转换成数字相加。Object+Number对象类型调用valueOf,如果不是String、Boolean或Number类型,则继续调用toString()将其转换为字符串。true+true//21+true//2[1]+3//'13'字符串和字符串以及添加的字符串和非字符串都将被连接起来。1+'b'//'1b'false+'b'//'falseb'[](https://github.com/luxiangqia...没有其他算术运算符(如减法、除法和乘法)重载发生,它们的规则是:所有运算符都转换成值,然后进行相应的数学运算1*'2'//21*[]//06.逻辑运算符逻辑运算符包括两种情况,分别是条件判断和赋值运算。条件判断&&:所有条件为真,整体为真||:只有一个条件为真,整体为真true&&true//truetrue&&false//falsetrue||true//truetrue||false//true赋值操作A&&B首先检查A是true还是false,如果A为false,则返回A的值,如果A为true,则返回B的值。(不管B是什么)console.log(0&&1)//0console.log(1&&2)//2A||B首先检查A是true还是false,A为true返回A的值,A为false返回B的值(无论B是什么)console.log(0||1)//1console.log(1||2)//17.比较运算符比较运算符用于逻辑语句中,判断变量或值是否相等。==和===的区别?对于===,是严格相等的,会比较两个运算符的类型和值。如果X和Y的类型不同,则返回false;如果X和Y的类型相同,则根据下表进一步判断,对于==,不严格相等,先判断两个运算符的类型是否相等,如果类型不同,则执行type先转换,再判断值是否相等。如果X和Y的类型相同,则返回X==Y的比较结果;如果X和Y的类型不同,则根据下表进一步判断;thisnew闭包是闭包面试中的重点,但是对于很多初学者我是一头雾水,所以我就从最基本的scope开始,请绕道。什么是范围?什么是作用域链?可以使用变量和函数的范围称为作用域。看看定义就知道了,挺抽象的,比如:functionfn1(){leta=1;}functionfn2(){letb=2;}声明两个函数,分别创建两个私有作用域(可以理解为两个封闭容器),fn2不能直接访问私有作用域fn1的变量a。同样,fn2中的b变量不能在fn1中访问。一个函数就是一个作用域。每个函数都有一个作用域。查找变量或函数时,从局部作用域依次查找到全局作用域。这些作用域的集合称为作用域链。如果不好理解,我再举个例子:leta=1functionfn(){functionfn1(){functionfn2(){letc=3;控制台日志(一);}//执行fn2fn2();}//执行fn1fn1();}//执行函数fn();虽然上面的嵌套看起来有点复杂,但是我们之前说过,一个函数是一个私有作用域,根据定义,在fn2的作用域中要打印一个in,首先在自己的作用域中查找,如果没有,则在上级查找scope直到找到全局作用域,a=1,如果找到就打印出值。整个搜索过程基于作用域链搜索。什么是闭包?闭包的作用?闭包的应用?很多应聘者喜欢这样回答,“一个功能嵌入一个功能”,但是面试官更喜欢下面的答案,因为他们可以继续给你挖坑。函数执行形成一个私有作用域,保护内部的私有变量不受外界干扰。除了保护私有变量外,还可以保存一些内容。这种模式称为闭包。关闭有两个功能,保护和保存。受保护应用团队开发时,每个开发人员将自己的代码放在私有范围内,防止彼此之间的变量命名冲突;在Global下通过return或window.xxx暴露需要提供给他人的方法。jQuery的源代码中也使用了这种保护机制。封装私有变量。保存的应用程序选项卡关闭的解决方案。循环绑定事件引发的索引有什么问题?如何解决这个问题呢?//事件绑定导致的索引问题varbtnBox=document.getElementById('btnBox'),inputs=btnBox.getElementsByTagName('input')varlen=inputs.length;for(vari=0;i<1en;i++){inputs[i].onclick=function(){alert(i)}}除了上面我已经详细描述的知识点,下面还有简单的概述。如果全部声明,文章会太长,如有兴趣可以【点我】领取。原型与原型链继承1.经典继承2.组合继承3.原型继承4.寄生继承垃圾回收机制1.两种垃圾回收策略2.标记和清除方法3.引用计数方法4.如何管理内存5.深度复制和浅复制异步编程1.执行上下文2.执行栈3.宏任务4.微任务5.运行机制ES6变量提升var,let,constmap,filter,reduce1.map2.filter3.reduceProxy字面量定义1.ES6类2.Object.definedProperty()中的定义3.Proxy代理ES6/7异步编程1.Generator生成器2.Promise3.async和await模块化方法一:函数方法二:立即执行函数方法三:CommonJS方法四:AMD和CMD方法五:ES6Moudle总结想获取所有面试知识点,可以【点我】。