百度前端一面

百度一面:

本文是根据记忆整理的百度面试题,由于作者知识储备有限,有些许偏差

在这里插入图片描述

JavaScript

js的数据类型有哪些,Number,String,Boolean,Null,Undefined,Symbol

ES6新增了哪种数据类型,bigint Symbol(笑死,这里本来说了bigint的,但是普通话不标准,面试官没听到,后面他补充了)

有哪两种数据类型,引用数据类型和基本数据类型

引用数据类型有哪些,Object,Array,Data,Function()

判断数据类型有几种方法,typeof和Object.prototype.toString.call

typeof的缺点,typeof(null)的值是什么,这里回答了undefined,后面面试官说了是object

作用域和作用域链,规定变量和函数的可使用范围称作作用域,每个函数都有一个作用域链,查找变量或者函数时,需要从局部作用域到全局作用域依次查找,这些作用域集合称作作用域链

原型和原型链,原型分为隐式原型和显示原型,每个对象都有一个隐式原型,他指向自己构造函数的显示原型,当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个prototype又会有自己的prototype,于是就这样一直找下去,也就是平时我们说的原型链概念

什么是闭包,js中内层函数可以访问外层函数的变量,使内部私有变量不受外界干扰,起到保护变量的作用,这个特性叫做闭包,(这里我说了外层函数不可以访问内层函数,面试官纠正说可以,但一般不用)

箭头函数和普通函数的区别,不能用new,没有arguments,面试的时候我说箭头函数this指向是固定的,但是面试官说箭头函数没有this,后面我查了,箭头函数没有this,写在箭头函数中的this,会自动向当前作用域的上一层作用域寻找,是否含有this,如果有就指代,没有就继续寻找上一层

var let const ,var声明变量存在变量提升,即变量可以可以在声明之前调用,var可以允许重复声明,var不存在块级作用域,let和const不存在变量提升,let和const存在块级作用域

ES6的新特性,模板字符串,箭头函数,扩展运算符,map和ste,promise和proxy,数组方法Array.from(),filter(),forEach(),some()

map和forEach的区别,都是遍历数组中的每一项forEach和map方法里每次执行匿名函数都支持3个参数,map方法返回一个新的数组,数组中的元素为原始数组调用函数处理后的值

常用的数组方法有哪些,改变原数组;push,pop,shift,unshift,sort,solice,reverse,不改变原数组,concat,join,map,forEach,filter,slice

slice和splice的区别,slice切片的意思,根据传入的起始和终止下标,获取该范围数组,splice可根据传入参数个数不同实现删除,插入操作,直接操作原数组,第一个参数为起始下标,第二个参数为要删除的个数,第三个为要删除的个数,第三个为要增加的数据

如何改变this指向,call,bind,apply都是JavaScript用于改变函数执行上下文,即this指向的方法,传参call,bind可以传递无数个参数,apply只有两个参数,第二个参数为数组,返回call和apply方法是直接调用函数并改变函数的上下文,而bind方法则是返回一个新函数,稍后调用时绑定指定的上下文

防抖和节流,防抖只会在最后一次事件触发函数,如果在此之前触发函数,则取消之前的计时器重新计时,节流不管多么频繁,都会保证在规定时间段触发函数,使用场景,防抖用在input,节流用在滚动事件,鼠标事件

什么是promise,Promise异步编程的一种解决方案,Promise是一个构造函数,接受一个函数作为参数,返回一个promise实例,promise对象的三种状态,他们分别是pending(等待中),resolved(已完成),rejected(拒绝)

CSS

你除了用TailwindCss实现响应式布局还用其他什么方法,flex

flex中怎么实现水平分布,justify-content

justify-content怎么实现在项目剩余空间项目于容器起始边贴边对齐,space-between

盒子模型和怪异盒模型,盒模型,总宽度等于width+border+padding+margin,怪异盒模型,width包括内容+padding+margin+border

动画,怎么平移,属性,animation,transform:translate(),50%,-50%

Vue

vue的生命周期beforeCreate,create,beforeMounted,mounted,beforeUpdate,update,beforeDestroy,destroyed

vuex中mutation和action的区别和使用

Mutation用于执行简单的同步操作,比如直接修改state的值,Action用于执行更复杂的异步操作,比如发起API请求或批量的异步操作,并可以在异步操作完成后在触发mutation来修改状态

vueX中数据存在哪里,怎么修改:数据存在state中,可以用Mutation修改

vue watch和computed区别,watch用来监听某个变量,当被监听的值发生变化时,执行相关的操作,computed中的属性本质是一个变量,一个特殊的变量,它由其他变量计算或者说赋值而来,它依赖于其他变量的变化,无需也无法像普通v变量一样直接赋值修改

vue的响应式原理,采用数据劫持结合订阅者,发布者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调

有一万条数据,怎么做虚拟滚动列表

router的钩子函数有哪些,全局前置守卫router.beforeEach,全局解析守卫router.beforeResolve,全局后置钩子router.afterEach,路由独享守卫beforeEnter

封装axios

import axios from 'axios'
const httpInstance=axios.create({
    baseURL:'http://pcapi-xiaotuxian-front-devtest.itheima.net',
    timeout:5000
})

//拦截器
//axios拦截器
httpInstance.interceptors.request.use(config=>{
    return config
},e=>Promise.reject(e))

//axios响应式拦截器
httpInstance.interceptors.response.use(res=>res.data,e=>{
    return Promise.reject(e)
})

export default httpInstance

asyic await,asyic和await是一种同步的写法,但还是异步的操作,两个必须配合使用

页面如何跳转?如何跨页面传参数:

router-link标签跳转

路由跳转,顺便把参数传了

query传参

this.$router.push({
    path:'/url',
    query:{
        par:parid
    }
})

params传参

//编程式
this.$router.push({
    name:'home',
    params:{username:this.username},
})
<router-link :to="{name:"home",params:{username:username}}">

node

express

cors,解决前端后端跨域问题

npm是什么,为什么用npm命令下载包?npm 是一个管理包的地方,npm下的包放在node_moudle中

webpack

git

git常用哪些语句,pull,commit,push,reset,merge,log,branch,stash

版本回退语句,git reset --soft版本号,git reset --hard 版本号,soft 回退后,代码改动在本地还保存有,hard会删除本地改动,彻底抹去该版本的痕迹

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值