4399前端一面

8/20 18min

自我介绍

为什么选前端

学前端的路线,怎么学的

for in和for of区别

CommonJS和ES Module区别

Webpack和Vite区别

Node事件循环和浏览器事件循环区别

ts type和interface区别

ts 枚举编译后会变成什么

304状态码

http1.1加载多张图片是一张一张加载还是同时加载

Vue和React应用可以被搜索引擎直接搜索到吗

项目为什么用Electron

Electron有用过混合开发吗

项目的更新是怎么做到的

接触过原生小程序吗

UniApp+Vue编译后还有Vue吗

Vite为什么比Webpack快

异步更改pinia

虚拟列表怎么实现的

Git的钩子

反问:

业务:分部门,有内部的工具,有给游戏活动写页面

面试结果什么时候出来:一周内

#面经##前端#
全部评论

相关推荐

头像
10-10 11:06
已编辑
武汉理工大学 前端工程师
        今天分享一下美团和蔚来面试中遇到的一些问题。1.(蔚来二面)在forEach和map里面对遍历的值进行改变会影响原数组吗        认真背八股的同学肯定都记得,forEach不会返回新的数组,只是遍历每一项并做计算,map会返回新的数组,所以理所当然的想map不会改变原数组,forEach...会怎么样??想到这里就错了,这也是我当时的思路。        事实上这个问题跟上面那个八股完全没关系。试想一个函数,传递了参数进来并改变这个参数,会不会对原来数据进行改变呢?这个题是在靠这个,需要分类回答。        数组中数据为基本数据类型时,forEach和map都不会改变原数组;数据为引用数据类型时,map和forEach都会改变原数组。在使用 forEach 和 map 方法时,对引用类型元素的修改会直接反映在原始数组中。这是因为引用类型的元素实际上存储的是引用(内存地址),而非值本身。因此,通过引用可以访问和修改原始数组中的元素。而number,string,Boolean,null,undefined这些基本类型在栈内存中直接存储变量与值。2.(美团到家一面)为啥会出现箭头函数        这一个问题可以去b站渡一老师的小视频里看看。        肯定很多人跟我一样第一时间想到的是箭头函数和普通函数的区别,那为啥有这些区别,为啥要单独搞个箭头函数出来?难道只是为了简单吗。其实原因只有一个:消除函数的二义性。        在出现箭头函数之前,函数可以直接被调用,也可以被new当作构造函数使用,这就是函数的二义性。而这种二义性的存在是会给开发带来负担的,因为创建者并不知道未来函数的调用者是如何使用这个函数的,所以后来先在命名上做了规范:小写开头的函数是直接使用的,大写开头的是构造函数。但这种规范也不是强约束,毕竟既可以Number(),又可以new Number(),所以为了消除这种二义性,创造了箭头函数和class,箭头函数只能() => {},当作普通函数调用,而class只能被new,这就刚好对应二义性的两种用法,解决这种复杂情况了。————————10.10补充————————        感谢牛u的提示,这边还有一个点补充。        箭头函数的出现解决了this的复杂指向问题。        举例如图3所示,当调用show方法打印this.x的时候打印的是undefined。这是因为当代码执行到了setTimexout( )的时候,此时的this已经变成了window对象(setTimeout( )是window对象的方法),因此会在window上查找x,找不到,就输出undefined。        而如果是箭头函数,箭头函数的this是定义时就确定的,因此箭头函数的this指向的是obj,输出的就是obj.x。这样就解决了普通函数在当作回调函数传递的时候this变化带来的麻烦,否则就要用全局变量或者闭包之类的方法。3.(美团到家一面)obj对象中有一个方法,用obj.a()和(obj.a)()去调用分别输出什么(a方法中输出this.name,obj和全局都有一个name属性)?        这个题其实是当时考的一个输出题(图1)。下来尝试了一下,答案是没区别,都输出obj对象中的name。        这个题我一开始以为(obj.a)()这种调用就跟let b = obj.a,然后调用b()这种形式一样,但不是这样的,这个点可以记一下。        然后还要注意的一个点是,如果这个方法是箭头函数的形式(图2),那么this指向就不一样了,指向的是window。所以会在window上面去找name。那么这个时候输出什么?        是不是很多人脱口而出,“输出hong!”        恭喜各位掉到新坑了,这个时候输出是空(什么都没有:“”)        因为let和const定义的变量是不会挂到window对象身上的,如果改成var就能输出hong了,大家可以自行尝试一下、        (上面这个点个人认为还是很细的,一定要小心)                这几个是自己踩过的坑,第三点应该很多同学都会想错。        欢迎各位评论区交流~#24届软开秋招面试经验大赏##软件开发2024笔面经##美团##蔚来##前端#
菠萝包lime:佬说的太棒了,箭头函数这块我也看的渡一的视频,当时被问到还是挺爽的,直接从二义性回答。
点赞 评论 收藏
分享
3 13 评论
分享
牛客网
牛客企业服务