滴滴前端一面+二面(已OC)
一面(2021-11-19)
- 自我介绍
- 接触前端,真实开始写前端代码是多长时间了?
- 项目网易云音乐(就是问了一些项目的问题叭)?
- js 中数据类型?
- A:回答了基本数据类型和引用数据类型
- 有什么不同?
- 什么是浅拷贝和深拷贝?
- 怎么实现一个深拷贝?
- 创建一个新的对象,递归实现
- object.asign() 对于一个对象所有数据都是基本的类型的话是深拷贝,引用类型还是浅拷贝
- JSON.parse 和 JSON.stringfy 实现
- 数组的方法,contact,splice等等
- 递归,JSON.parse 和 stringfy 有什么区别?
- JSON对象和js对象的区别: 对数据格式的要求更加严格
- 平常写的话你是用哪一种?(自己的话会使用递归来实现或者就是数组的方法)
- 什么情况下会去深拷贝一个对象?
- 判断一个数据的类型?
- 基本数据类型除了null、还有函数是可以使用typeof,缺点:对于对象和数组和null的话返回的都是Object
- 对象的话是 Object.prototype.toString.call() 或者instanceof检测正常
- 数组 isArray方法,instanceof
- instanceof 是用来?(检测是否在对象的原型链上)
- 什么是闭包?闭包的优缺点?
- 局部变量可以在外部访问,延长变量的作用域链,缺点:内存泄漏
- const 定义一个对象,对象里面的属性可以改变吗?(可以,只是不能改变const变量的地址)
- 箭头函数的 this 指向?
- 对象和数组可以解构,你是怎么理解解构的?
- 方便取出属性,直接赋值
- 什么是同步,什么是异步?(同步会阻塞,异步是并发执行的)
- 写一个编程题目
- 实现一个登录框,原生写就行
- 水平垂直于页面正中间
- 用户名,密码,登录按钮
- 你写这个框为什么使用position:absolute;来实现居中
- vue 双向数据绑定?
- 就是数据劫持加发布订阅,Object.defineProperty等等
- vue 里面的 $set
- definePorperty只能遍历对象属性进行响应式,新增的属性不是响应式的
- $set 对于数组来说会直接使用 splice 进行增删改操作
- $set 对于对象会重新判断这个新增的属性是不是响应式的,对象是不是响应式的,再调用defineReactive方法
- nextTick 的作用
- vue 写一个 element-ui Tab 组件
- 点击三个按钮显示不同的内容
- get 和 post 请求的区别?
- 破不破坏服务器资源是 get 和 post 来决定的吗?
- 是服务端的接口决定的,接口的方法是get来提交数据的话, 那么get方法也会破坏服务器的资源
- http 状态码,304?
- 怎么判断是协商缓存?headers里有哪些标识?
- 资源永远不被缓存,每一次都拿新的,怎么做?
- cache-control: no store
- js为什么会是单线程?
- 多线程会造成冲突
二面(2021-11-26)
一面完了以后,很久都没有消息,等了有一个周左右才打的电话约的二面
- 自我介绍
- 哪个项目在线上真实跑的?
- A:介绍完了两个项目
- 鉴权怎么做的?权限限制
- 前端是通过响应拦截的状态码和标志,进入路由发送请求,商量返回的状态码判断有没有权限。
- Q:登录是token?
- 前端怎么存储 token?
- A:vuex localstorage,多个页面之间都需要 -> vux,强制刷新会丢失,所以...两者结合,刷新的时候从localstorage里判断有没有数据,有的话存到vuex里面进行判断
- 权限标志位?是有角色的?
- 巴拉巴拉减少后台的请求
- 登陆权限方案的专业名词了解过吗?
- 登录用的 JWT ?
- A:后台返回的,不是jwt好像
- Q:去了解一下,IBAC(身份的访问控制)等等,权限控制
- 项目用的 vue3 吗?
- vue-router 解决什么问题的?
- vue 单页面应用,只是页面内容的动态替换,单页面的话,不能进行浏览器前进后退,使用vue-router实现了这个功能
- Q:让单页面的开发更加便捷灵活
- 实现原理了解过吗?
- hash 和 history,hash 是有#的,#后面的就是hash值,他是基于location.hash的,发请求不会携带hash值,但是hash值的改变会在浏览器中有记录。history的话 使用pushState,replaceState......
- history 问题,浏览器强制刷新的时候一般直接访问服务器404。后台要重定向到初始页面,hash 模式没有这个问题
- 实际代码引用的时候,如何引入 router 这个东西?入口文件会把 vue-router 包引进来......
- router 里面配置不同的路由,
- vue.use 内部实现
- es6 是怎么学习的?看哪了?
- 看阮一峰老师的书,基本学完了
- Proxy 了解过吗?是用来干嘛的?
1.取代 defineProperty - 具体有什么用呢?(对对象加一层拦截)
- 能举一个例子吗?
- 面试官:可以从设计模式方面去了解
- 看代码说输出
const o = { name: 'didi', getName() { return function() { console.log(this.name); } } } const func = o.getName(); func()
Q:想输出didi怎么改代码?(箭头函数) - 数组扁平化
- 考察Promise
- 输入一个URL敲回车,会发生什么
反问
对之后学习的建议
部门使用的技术栈
后面的话,就是二面完了之后一天左右hr就打电话了
#前端##滴滴##面试题目#