疫情期间的4次远程面试+答案整理

本文作者分享了疫情期间参与的四家公司的远程面试经历,涵盖了前端面试中常见的问题,包括Vue.js、JavaScript、Websocket、数组操作、权限控制、深拷贝、Promise、Vue Router、Flex布局等内容。通过对面试问题的整理,作者对前端面试有了更多信心,并希望这些经验能对其他求职者有所帮助。
摘要由CSDN通过智能技术生成

最近开始了久违的面试之旅,感觉金三银四感觉还是存在的。于是就想分享一下最近面试到的几家公司给大家,虽然也不是什么一线厂,但是问的问题感觉也有很多共通点,整理整理之后对前端面试也自信了许多。感觉把公司名字直接贴上来有点不是很尊重,就暂时隐去了。视频面试的题我面试完马上进行记录,电话面试的根据录音一点点整理出来的。希望能给大家一点帮助吧。

第一家公司(一面)

  • 社保参保人数:737
  • 公司行业:软件和信息技术服务业

1. 你用vue做了什么?

此处表示很迷惑,这个问题比较大范围。后来沟通之后才知道面试官想要问你最近用vue实现了一些什么功能,然后再根据你回答的内容进一步提问。

2. JSON.stringfy() JSON.parse() 有什么作用?有多少个参数?

JSON.stringify:有三个参数,第二个参数是对内容进行处理,第三个参数是设置缩进的值
str_pretty2 = JSON.stringify(str, null, 4)

JSON.parse():有两个参数,JSON.parse(text[, reviver])
JSON.parse('{"p": 5}', function (k, v) {
    if(k === '') return v;     // 如果到了最顶层,则直接返回属性值,
    return v * 2;              // 否则将属性值变为原来的 2 倍。
});                            // { p: 10 }
复制代码

3. 如何实现一个深拷贝?

参考下面的连接,主要是把简单的思路讲清楚就好了。建议先自己整理一遍简单思路,不然讲出来会很乱。深拷贝实现

4. websocket的相关接口有哪些?

new Websocket('')
this.ws.onopen = ()=>{}
this.ws.onclose = ()=>{}
this.ws.onmessage = ()=>{}
this.ws.onerror = ()=>{}
复制代码

5. 你知道的数组相关的API有哪些?

包括下一个答案的内容,还有pop、push、shift、unshift、slice、splice、reverse
复制代码

6. 除了 for of,遍历数组还有哪些方法?

1.for循环
2.forEach循环
3.map循环
4.for of循环
5.filter循环
6.every遍历
7.some遍历
8.reduce累加器
9.reduceRight从末位计算的累加器
10.find
11.findIndex
12.keys、values、entries
13.while
复制代码

7. 如何对下面数据实现过滤?

arr: [
  {
    key: '01',
    value: '西施'
  }, {
    key: '02',
    value: '王昭君'
  }, {
    key: '03',
    value: '杨玉环'
  }, {
    key: '04',
    value: '貂蝉'
  }, {
    key: '01',
    value: '西施'
  }, {
    key: '01',
    value: '西施'
  }
],
};

let finalResult = []
let attr = {}
for(let item of this.arr){
    if(!attr[item.key]){
      finalResult.push(item)
      attr[item.key]=true
    }
}
复制代码

8. 你知道的ES6使用到的API有哪些?

略。一般你说什么就会更深入地问你。
复制代码

9. Promise和Async的使用场景有哪些?

Promise和async/await常用的就是用来优化多重异步和异步嵌套,防止回调地狱。

加载文件、图片,接口需要先后顺序调用等。
复制代码

10. 如何让前面两个接口其中一个返回了立马调用下一个接口?

Promise.race

const p = Promise.race([
  fetch('/resource-that-may-take-a-while'),
  new Promise(function (resolve, reject) {
    fetch('/resource-that-may-take-a-while2')
  })
]);

p
.then(console.log)
.catch(console.error);
复制代码

11. 如果有五个接口同时调用怎么办?

const p = Promise.all([p1, p2, p3, p4, p5]);
复制代码

12. vue路由如何做导航拦截?

router.beforeEach

13. vue组件通信方式有哪几种?跨组件一般怎么通信?

六种通信方式,基本上不用全答出来,常用的理解到就好。

14. vuex一般使用场景是什么?

vuex是一个专门为vue构建的状态管理工具,主要是解决多组建状态共享的问题。强调的是集中式管理。 常见场景:购物车的数据共享,登入注册

15. vue的destroy生命周期你一般怎么使用?怎么回收内存?

beforeCreated 一般用于写一个loading created一般用于请求数据,可以将loading去掉 mounted之后与dom相关的操作,因为dom才解析完成之后才触发mounted beforeDestroy一般用于在移除组件的一些定时器,绑定的事件等

内存回收: removeEventListener 用于移除事件 ClearTimeOut和ClearInterval 用于移除定时器

16. 如何动态加载组件?

VUE的动态加载组件

17. 纯前端如何控制权限?你们项目控制权限用的是什么方式?

参考链接。感觉大概答出来配合后端,在vue-router里面配合导航拦截就差不多了。

18. 下面数据如何结构赋值获取到line的第二个数据?

const node = {
    loc: {
      start: {
        line: [1,2,3],
        column: 5
      }
    }
};

let { loc: { start: {line:[,num]}} } = node;
复制代码

19. webpack如何配置某个loader只遍历部分文件?

参考链接。配置loader中的include设置遍历范围。

20. webpack如何设置别名?

vuecli3.0里面在vue.config.js的文件里配置。
module.exports={
    chainWebpack:(config)=>{
        config.resolve.alias
        .set('@',resolve('./src'))
        //set第一个参数:设置的别名,第二个参数:设置的路径
    }
}

纯webpack的话,可参考:https://www.cnblogs.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值