一面
还是太年轻,感觉自我介绍的时候把自己带跑了,回答的都不是很清晰,后面项目经历也写得不够好,下次努力啊!
-
自我介绍:你说前后端都写过,讲一讲前后端分离
-
讲下
MVC
和MVVM
的概念和区别 -
类型判断
//es6方式,返回布尔值 const isType1 = type => obj => Object.prototype.toString.call(obj) === `[object ${type}]`; let isArray = isType1('Array') isArray([1,2,3]) // 第二种 console.log([1,2,3] instanceof Array) // ...
-
项目=》 你的
ajax
封装了什么新功能,手写 -
axios
拦截器,原理/* 创建用于保存请求/响应拦截函数的数组 数组的中间放发送请求的函数 数组的左边放请求拦截器函数(成功/失败) 数组的右边放响应拦截器函数 */ var chain = [dispatchRequest, undefined]; var promise = Promise.resolve(config); // 后添加的请求拦截器保存在数组的前面 this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { chain.unshift(interceptor.fulfilled, interceptor.rejected); }); // 后添加的响应拦截器保存在数组的后面 this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { chain.push(interceptor.fulfilled, interceptor.rejected); }); // 通过promise的then()串连起所有的请求拦截器/请求方法/响应拦截器 while (chain.length) { promise = promise.then(chain.shift(), chain.shift()); } // 返回用来指定我们的onResolved和onRejected的promise return promise;
-
promise
实现队列,手写(真的紧张,影响心情)Promise.queue = function (things) { let len = things.length let results = new Array(len) return things.reduce((total, cur, index) => { //关键:使用then连接 和axios类似 return total.then( (res) => { return cur.then((res) => { //console.log(res) results[index] = res if (results.length == len) { return results // 返回结果 } }) }, (reason) => { return Promise.reject(reason) } ) }, Promise.resolve()) }
-
版本号排序,基数排序
var version = ['1.23', '1.4', '2.5', '2.35', '6.2.3', '6.6.6'] // 存储结果 var nums = new Array(version.length) // 每个版本号转成数组 for (let i = 0; i < nums.length; i++) { var maxDigit = 0 nums[i] = version[i].split('.') if (nums[i].length > maxDigit) { maxDigit = nums[i].length } // console.log(nums[i]) } //排序 for (let i = maxDigit - 1; i >= 0; i--) { // 处理缺少的位,补零 for (let index = 0; index < nums.length; index++) { if (i >= nums[index].length) { nums[index].push('0') } } // 按位排序 nums.sort((a, b) => { return a[i] - b[i] }) } // 处理成字符串 for (let i = 0; i < nums.length; i++) { const regex = /,/gi let str = nums[i].toString().replace(regex, '.') nums[i] = str } // 输出 [ '1.4.0', '1.23.0', '2.5.0', '2.35.0', '6.2.3', '6.6.6' ] console.log(nums)
-
document获取元素 (document.querySelector)
-
vue 下使用标签元素
-
双向绑定 /草草结束
总结还是经验不够,面试的时候手写代码紧张,一顿操作猛如虎,一看战绩0-5的赶脚(笑哭)