拼多多面试经验,内含详细面经 无保留分享

问题预览

  1. 什么是事件冒泡,怎么阻止
  2. ie盒模型和w3c盒模型的区别?
  3. js基本数据类型和引用数据类型有哪些?
  4. 怎么判断是什么数据类型怎么判断是否为数组?
  5. 什么是原形链?
  6. 如何创建一个函数, new一个函数的时候发生了什么?
  7. 什么是闭包,闭包的缺点为什么会有内存溢出?
  8. es6特性let const var区别?
  9. 什么是深拷贝?
  10. 怎么画出一个三角形
  11. vue的双向绑定vue的通信方式?
  12. vue的生命周期
  13. 为什么选择vue

手写代码

  1. 防抖节流并写出任意一个

详细解答

    1. 事件冒泡

事件冒泡: 浏览器从用户点击的按钮从下往上遍历至 window,逐个触发事件处理函数

e.stopPropagation() //可以阻止事件冒泡

2. ie盒模型和w3c盒模型的区别?

W3C的标准盒子模型:content-box

content-box是内容盒模型:宽度=内容的宽度,如果后期添加了border或padding就会使盒子向外扩张

IE盒子模型:border-box边框盒模型

border-box是边框盒模型:设置的宽度就等于=内容宽度+padding+border;添加的padding和border就在原先设置的width里,border和padding越大就会向内部content扩张,导致content变小

3.js基本数据类型和引用数据类型有哪些?

记住口诀:四基两空一对象

四基:string,number,symbol,bool,

两空:null,undefined

一对象:object

string,number,symbol,bool,null,undefined 属于基本数据类型

Function、Object、Date、RegExp、Number、String、Boolean和自定义类等属于引用数据类型

4.怎么判断是什么数据类型?怎么判断是否为数组?

对于原始数据类型,我们可以使用typeof()函数来判断他的数据类型

为什么 typeof 运算符对于 null 值会返回 "object"。这实际上是 JavaScript 最初实现中的一个错误,然后被 ECMAScript 沿用了。现在,null 被认为是对象的占位符,从而解释了这一矛盾,但从技术上来说,它仍然是原始值。

instanceof 用来判断一个变量是否是某个对象的实例,所以对于引用类型我们使用instanceof来进行类型判断。

5.什么是原形链?

当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__隐式原型上查找,即它的构造函数的prototype,如果还没有找到就会再在构造函数的prototype的__proto__中查找,这样一层一层向上查找就会形成一个链式结构,我们称为原型链。

6.如何创建一个函数, new一个函数的时候发生了什么?

创建函数有三种方式

// 声明式
function Fn(x,y){
    return x + y;
}
// 函数表达式
var sum2=function(n1,n2){
  return n1+n2;
};

// 函数构造法
var sum3=new Function('n1','n2','return n1+n2');
console.log(sum3(2,3));

new一个函数时,一般有四步

1.新创建一个空对象

2.构造函数的显示原型等于实例对象的隐式原型,实例对象的constructor属性为构造函数的名称

3.通过调用call、apply方法执行构造函数并改变this对象(绑定到实例对象上)

4.返回这个对象

7.什么是闭包,闭包的缺点?

闭包概念:闭包是指有权访问另外一个函数作用域中的变量的函数

闭包的缺点:比普通函数更占用内存,会导致网页性能变差,在IE下容易造成内存泄露。

如何防止内存泄漏:在退出函数之前,将不使用的局部变量全部删除,或将变量赋值为null

8.es6特性let const var区别?

var和let都是声明变量的,var有变量提升,let没有,但是let具有块级作用域

const声明常量具有块级作用域

9.什么是深拷贝?

深拷贝:是将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象,且修改新对象不会影响原对象

10.怎么画出一个三角形

原理是让一个元素没有宽高,但是给其边框设置足够的宽度,并让其中三条边框的背景色为透明transparent。

<div class="border"></div>
<style>
  .border {
      width: 0;
      height: 0;
      border: 50px solid;
      border-color: transparent transparent red;
  }
</style>

11.vue的双向绑定vue的通信方式?

当数据传入vue的实例中作为data数据时,vue将遍历此对象的所有property,并且使用Object.defineProperty把他们转化为getter和setter方法,而get和set正是对属性的读写进行监控

12.vue的生命周期

Vue 实例从创建到销毁的过程,就是生命周期。从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、销毁等一系列过程,称之为 Vue 的生命周期。

它可以总共分为8个阶段:创建前/后, 载入前/后,更新前/后,销毁前/销毁后

它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻辑。

DOM 渲染在 mounted 中就已经完成了。

13.为什么选择vue

Vue.js是一个轻巧、高性能、可组件化的MVVM库,同时拥有非常容易上手的API

vue两大特点:响应式编程、组件化

vue的优势:轻量级框架、简单易学、双向数据绑定、组件化、视图、数据和结构的分离、虚拟DOM、运行速度快

手写代码

函数节流:任务在指定的间隔时间内只执行一次。

// 节流(一段时间执行一次之后,就不执行第二次)
 function throttle(fn, delay){
     let canUse = true
     return function(){
         if(canUse){
             fn.apply(this, arguments)
             canUse = false
             setTimeout(()=>canUse = true, delay)
         }
     }
 }
 const thro = throttle(()=>console.log('hi'))
 throttled()
 thr()

函数防抖:只有在任务触发的间隔大于等于指定的间隔时间,任务才会被执行。(点击了之后先不做,等了一定的时间之后再做)

 
// 防抖(一段时间会等,然后带着一起做了)
 function debounce(fn, delay){
     let timerId = null
     return function(){
         const context = this
         if(timerId){window.clearTimeout(timerId)}
         timerId = setTimeout(()=>{
             fn.apply(context, arguments)
             timerId = null
         },delay)
     }
 }
 const debo = debounce(()=>console.log('hi'))
 debounced()
 debo()
#23届找工作求助阵地##0offer是寒冬太冷还是我太菜##2023开工大吉##如何判断面试是否凉了#
真面经解析 文章被收录于专栏

根据真实面试经历盘点面试题目,总结面试经验,分类总结面试题目答案

全部评论
楼主厉害,祝成功
1 回复 分享
发布于 2023-02-02 16:40 河南
没有算法吗
点赞 回复 分享
发布于 2023-02-06 21:59 浙江
大哥这么多大厂面试,你真的是工商的吗
点赞 回复 分享
发布于 2023-03-25 11:19 福建

相关推荐

工作基本定了,比较满意。这深度学习真是难搞啊,论文看不懂,代码看不懂,不会改,创新点???&nbsp;还有一个月中期,怎么搞,已经抑郁了,没有小论文要求,我真是非常幸运了,不然就我这科研能力…………&nbsp;感觉自己对自己失去信心,无时无刻不在否定自己取得一些成绩都是运气好罢了,真的能顺利毕业吗?严重内耗、无力感爆棚啊…………
AI牛可乐:哎呀,听起来你最近压力好大呀,毕业论文和工作的双重压力一定让你感觉像是背了两座山呢。深度学习确实挺复杂的,就像是要在一片迷雾中找到出路一样。但是,你已经很棒了,工作都定好了,这是很大的成就呢! 论文的事情,别太担心。每个人都有看不懂代码和论文的时候,这是正常的。至于创新点嘛,有时候灵感就像小猫一样,需要一点一点地哄出来的。你可以先试试把你看过的资料整理一下,说不定就能找到新的思路呢。 中期答辩前,你可以列个计划,一步一步来,把大问题分解成小问题,一点一点克服。记得,你不是一个人在战斗,你的导师、同学都是你的战友哦。 至于信心嘛,别否定自己,每个人都会有低谷的时候。你已经取得的成绩,都是你实力的体现。毕业不是问题,只要你不放弃,就一定能顺利走过去的。加油哦,我相信你可以的! 对了,如果你愿意的话,可以点击我的头像,我们私信聊,也许我能帮你出出主意,或者就是简单地聊聊天,分散一下你的注意力也好呀。🐮💪🌟
点赞 评论 收藏
分享
躺尸修仙中:因为很多92的也去卷中小厂,反正投递简历不要钱,面试不要钱,时间冲突就推,不冲突就面试积累经验
点赞 评论 收藏
分享
11 39 评论
分享
牛客网
牛客企业服务