vue
- vuex属性
- keepalive
- 父子组件传值
- 路由钩子有哪些
- 计算属性和watcher区别
- vue事件绑定原理
- v-for 的key 有什么作用
- v-if和v-for能一起使用吗
- v-if和v-show的区别
- vue内置指令
- vue生命周期父子组件执行顺序
- vue生命周期每一个钩子函数都做了什么
- 如何异步触发state中的数据
- 路由懒加载的几种方式
- 如果有100个组件怎么做
- 打包的时候所有的组件都打包到main.js中吗
- vuex说一下
- Vuex有什么缺点:刷新状态恢复 通过插件或者本地存储
- keep-alive用过吗
- keep-alive对应的钩子函数,使用keep-alive的组件mounted还执行吗
- vue中key的作用,为什么不建议绑定index
- vue路由说一下跳转方式/参数,路由hash和history的原理
- vue data为什么是个函数,vue实例可以是个对象吗?为什么,因为只有一个不存在复用
- vue组件通信几种方式
- events bus如何使用的?原理?
- vue的diff算法原理
- vue中watch的第二个参数是什么
- vue为什么不能监听数组的变化
- v-if写在子组件上,设置true或false时,会走子组件的生命周期吗
- vuex在组件内部如何使用
- vue中element-ui的表单组件是如何实现双向数据绑定的
- vue路由传参的方式有哪些?有什么区别?
- vue路由跳转的方式
- 对vue的理解
- vue请求接口在哪个生命周期
- vue箭头函数中this指向问题
- vue中路由配置
- vue兄弟组件之间传值pubsub
- echarts获取数据一般在mounted里,为什么不能在created上? echarts需要挂载到dom节点上,created此时是虚拟的节点
- vue项目中的跨域问题遇到过吗
js
- 数据类型
- 检测数据类型的方法
- instance of 原理是什么
- typeof null 是什么?为什么是空对象
- 深拷贝和浅拷贝
- 原型和原型链
- new 都做了什么
- 防抖和节流区别
- bind call apply 区别
- js继承有哪些方式
- js执行机制
- promiss和settimeout哪个先执行
- await 和async
- Async返回的是什么
- await 返回的是什么
- 如果await后面还会执行吗
- promise的使用
- var let const 区别和用法
- js数组的方法哪些可以改变原数组?哪些不会改变原数组
- Js数组遍历的方法有哪些
- 浅拷贝和深拷贝,深拷贝实现的方式有哪些?
- foreach如何跳出循环
- async、await、promise
- prototype和proto区别
- prototype和constructor什么区别
es6
- es6用过哪些
- es5和es6面向对象有什么区别
h5c3
- rem em px区别
- 如何使用rem
- rem布局原理
- flex 布局
- 水平垂直居中
- css3新属性
- 清除浮动的方法
- position有几个值
- 多栏布局
- 标准盒模型和怪异盒模型
- 设置css的时候,前面设置了padding值,后面再设置会直接覆盖掉
- css、less、sass的区别
- 响应式布局的实现方法和原理
- 设置透明度的方法
- 给一个div设置height为0,这个div还会显示吗
- 适配4K大屏怎么做的
- H5嵌入到钉钉下具体是怎么做的
布局
canvas
- canvas 原生用过吗
- echarts有封装过同类型的options吗
- 用canvas画个圆
项目
- 管理系统的权限怎么做的
- 组件封装是如何做的
- 跨域有哪些如何实现
- jsonp的跨域原理
- 介绍一下自己
- vue项目中做过哪些优化
- 数据请求怎么做的,请求拦截器和响应拦截器怎么做的
- 前端管理多个服务地址如何去做的,可以通过指令构建去修改
- 前端开发页面优化的方法
- axios依赖于多个数据接口的话怎么做
- 假如访问一个网址慢,前端可以从哪些方面定位引起的该问题
- 前端发到生产环境发现有些新的东西没有更上去怎么办
- 前端上线工具
- 前端展示一千张照片懒加载
- 一个项目如果想手动选择主题色如何去做,不使用插件
微信小程序
- 微信小程序分包
- 微信登录流程
- 微信下载文件,存储满了怎么做
- 微信小程序权限如何做的
- 小程序发布上线的流程
- 微信页面下拉
git
- git常用指令
- git切换到远程分支
代码题
-
Let a = 10 一个数字 let b = 20 不使用第三个变量的时候如何让a=20 b=10
-
数组去重的方式有哪些,es6中有个new Set(arr);map和filter/双层for循环
-
forEach和map的区别
-
forEach如何跳出循环 如何终止循环 break continue
-
数组冒泡除了双层for循环还有什么,比如一些方法可以直接实现的
-
js数组中有从1-100任意十个字符串格式的数字,求和
-
数组里是对象,如何去重
-
两个数组,求其交集和差集
-
深拷贝实现方式
-
将一个json数据的所有key从下划线改为驼峰
/** * 问题 1 * 将一个json数据的所有key从下划线改为驼峰 * @param {object | array} value 待处理对象或数组 * @returns {object | array} 处理后的对象或数组 */ const testData = { a_bbb: 123, a_g: [1, 2, 3, 4], a_d: { s: 2, s_d: 3 }, a_f: [1, 2, 3, { a_g: 5 }], a_d_s: 1 } function mapKeysToCamelCase(data) { } -
手写深度比较isEqual
/**问题2 * @decription 手写深度比较isEqual * @param param1 - any * @param param2 - any * @return Boolean * 例如: * isEqual(1,1) => true; * isEqual() */ // 比较任意两个类型,如果相等则输出true function isEqual(a, b) { } -
将48位的时间位图格式化成字符串
/** 问题3 * 将48位的时间位图格式化成字符串 * 要求:写一个函数timeBitmapToRanges,将下述规则描述的时间位图转换成一个选中时间区间的数组。 * 规则描述: * 将一天24小时按每半小划分成48段,我们用一个位图表示选中的时间区间, * 例如`110000000000000000000000000000000000000000000000`, * 表示第一个半小时和第二个半小时被选中了,其余时间段都没有被选中, * 也就是对应00:00~01:00这个时间区间。一个位图中可能有多个不连续的 * 时间区间被选中,例如`110010000000000000000000000000000000000000000000`, * 表示00:00-1:00和02:00-02:30这两个时间区间被选中了。 * 示例输入:`"110010000000000000000000000000000000000000000000"` * 示例输出:`["00:00~01:00", "02:00~02:30"]` */ function timeBitmapToRanges(bitmap) { } -
输出顺序
var now = new Date() console.log('1', new Date() - now) setTimeout(() => { console.log('2', new Date() - now) }, 500) Promise.resolve().then(console.log('3', new Date() - now)) while (new Date() - now < 1000) {} console.log('4', new Date() - now) // "1" 0 // "3" 0 // "4" 1001 // "2" 1001 -
将数组[1,2,3,[7,9],[8,9,[10,1]]]输出[1,2,3,7,9,8,9,10,1],扁平化处理
console.log(arr.flat(Infinity)) -
输出顺序
const myPromise = () => Promise.resolve("I have resolved") function FirstFun() { myPromise().then(res => console.log(res)) console.log('frist'); } async function SecondFun() { console.log('second 1'); console.log('second', await myPromise()) console.log('second 2'); } FirstFun(); SecondFun(); // "frist" // "second 1" // "I have resolved" // "second" "I have resolved" // "second 2" -
页面展示内容
// 展示内容 <template> <div> <div>第一个值:{{text1}}</div> <div>第二个值:{{text2}}</div> <div>第三个值:{{text3}}</div> <div>第四个值:{{text4}}</div> <div>第五个值:{{text5}}</div> </div> </template> <script> export default { data () { return { text1: 'hello' } }, computed: { text4: function () { return this.text2 + 'computed' } }, created () { this.text2 = 'text2' }, mounted () { this.text3 = 'text3' } } </script> // 第一个值:hello // 第二个值:text2 // 第三个值: // 第四个值:text2computed // 第五个值: // text3 和text5报错 // vue.esm.js?c9fd:628 [Vue warn]: Property or method "text3" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property. -
输出内容
var name = 'The Window'; var object = { name: 'My Object', getNameFunc: function () { return function () { return this.name; }; } }; console.log(object.getNameFunc()); console.log(object.getNameFunc()()); // ƒ () { // return this.name; // } // The Window -
输出
function test() { console.log(foo) console.log(bar) var foo = 'Hello' console.log(foo) var bar = function () { return 'world' } function foo () { return 'Hello' } } test() // ƒ foo () { // return 'Hello' // } // undefined // Hello -
输出
for (var i = 0; i<5; i++) { console.log('i', i) setTimeout(function() { console.log('iiii', i) }, 1000) }
一面
- import和link的区别
- vue生命周期
- 两栏布局左侧固定宽度,右侧自适应
- flex有哪些属性
- promise setTimeout async await执行顺序题
- css3新属性
- 盒模型的组成
- 前端展示一千张图片除了分页有什么方法
- vue中methods中的方法可不可以直接用箭头函数?为什么this指向
- js数据类型,基本数据类型和引用的区别
- 前端BFC
- 清除浮动的几种
- 垂直水平居中方式
- 媒体查询
- display有哪些属性
- display:none和visibility:hidden区别
- 元素隐藏的方法
- css优先级
- vue中data为啥必须是函数
- 原型和原型链
- this
- 闭包
二面
- cdn怎么使用的,有什么优化?如果遇到访问量特别大的话如何应对?大家都访问同一个带宽的话承受不住
- 前端优化相关的
- webpack的loader和plunge有什么区别为什么不设计一个为什么分开设计两个,loader轻量级的
- webpack中的loader怎么用具体
- 防抖和截流的区别
- 路由懒加载
- 路由如何根据不同的用户,控制权限
- 如果随意访问一个路由,不在权限内或者无法展示,怎么判断?对路由数组进行遍历如果不是就跳转到404页面
- vue页面一个img 绑定src 给个id 一个点击事件,此时去获取该图片的高度,然后给图片src赋值,再去获取图片的高度。这个时候是两次获取的是否一样?两次都没有高度,vue的异步渲染
- 打包优化如何使vendor文件变小的?比如一些文件直接放到dist文件下,不去进行压缩行不行?