最近面过的前端面经
海康一面
-
1.解决塌陷
一,盒子塌陷是什么?
3.旋转45度
4.axios的拦截器原理及应用
**应用场景**
import axios from 'axios' let instance = axios.create({ baseURL: "http://localhost:3000/", headers: { 'content-type': 'application/x-www-form-urlencoded' } }) //请求拦截器 instance.interceptors.request.use(config => { //拦截请求,做统一处理 const token = "asdasdk" //在每个http header都加上token config.headers.authorization = token return config }, err => {//失败 return Promise.reject(err) }) //响应拦截器 instance.interceptors.response.use(response => { //拦截响应,做统一处理 if (response.data.code) { switch (response.data.code) { case 200: console.log("1111") } } return response }, err => { //无响应时的处理 return Promise.reject(err.response.status) }) export default instance
import instance from './api/axios' Vue.prototype.$http = instance 12
this.$http.get(url).then(r => console.log(r)).catch(err => console.log(err)) this.$http.post(url, params).then(r => console.log(r)).catch(err => console.log(err))
5.路由守卫进行判断登录。
6.webpack的打包流程
7.实现三角形,圆形
8.vuex原理
9.vue-router懒加载
{ path: '/path', name: 'componentName', component: resolve => require(['@/componentPath'], resolve), }
能够被webpack自动代码分割 允许将不同的组件打包到一个异步块中,使用命名chunk(特殊注释语法)。 Webpack 会将任何一个异步模块与相同的块名称组合到相同的异步块中。 const comA = () => import('url') const Foo = () => import(/* webpackChunkName: "group-foo" */ './Foo.vue') const Bar = () => import(/* webpackChunkName: "group-foo" */ './Bar.vue') const Baz = () => import(/* webpackChunkName: "group-foo" */ './Baz.vue')
{ path: '/home', name: 'home', component: r =>require.ensure([], ()=>r(require('@/components/home')), 'demo') }
滴滴二面(一面就项目+基础)(50min)
-
1.介绍项目(说了一下实习的时候做了什么)
-
2.react你了解多少(巴拉巴拉一堆),我面试的部门开发项目用的是react
-
3.数组去重
var newArr = [] if(newArr.indexOf(arr[i])==-1){ newArr.push(arr[i]) } 面试官提出[1,2,3,3,NaN,NaN]去重不了 NaN该怎么做 我想的是用object的值唯一的方式 面试官提出的是设置一个标志位flag,如果NaN不存在flag = true,如果有的话flag=true
-
6.反问。
-
5.给一个文科生讲解数据结构,你会怎样讲解。
-
4.实现数组快排。。。
去哪网一面(30min)
-
1.项目+基础。
-
2.input事件自动获取焦点()。
<input type="text" id="box" autofocus="autofocus">
-
3.input的事件有哪些。
当<input>,<select><textarea>元素的value被修改时,会触发input事件
-
onblur: 失去焦点
-
onfocus:得到焦点
-
ondblclick:双击
-
onchange:改变
-
onkeydown:
-
onmousedown
-
4.js实现一个轮播图。
v-for由此衍生出vue组件间传值。
-
5.css动画(transform,translate,transition)。
-
6.简历里搜索页的实现。
-
-
-
快手一面
-
1.介绍项目
-
2.js类型
判别类型的方式
Array.prototype.toString.call()得到的是一个[object String]
那么怎么拿到这个'[object String]'中的String呢
-
3.Promise的状态,三种pending fulfilled rejected
-
4.promise.all手动实现
-
5
Function.prototype.a=()=>{ alert(1) } Object.prototype.b = ()=>{ alert(2) } function A(){} var a = new A() a.a() a.b()//2 考的是原型链 a->A.prototype -> Object.prototype -> null new 的过程做了什么 改变this指向的方式 call bind apply 手动实现bind
-
6
[1,2,[3,4,5],[[6,7]]].getLevel() []->1 [[]]->2 获取当前数组---this 递归调用的是getLevel flattern
-
7.后又问了我一些以前做的demo的难点(我说了跨域koa-cors,基于cors原理)