html&css
- 浏览器内核差异
- 移动端的点击事件的有延迟,时间是多久,为什么会有? 怎么解决这个延时?(click 有 300ms 延迟,为了实现safari的双击事件的设计,浏览器要知道你是不是要双击操作。)
- 盒子模型 外边距、内边距和边框之间的关系,及IE8以下版本的浏览器中的盒模型
js相关
- js 数据类型及判断方法
null, undefined,bool,number,string,object,symbol(es6 新增)
1.typeof()出来的没有null 对象,数组和null typeof(x) = "object"
2.instanceof() 对象的原型是否在对象的原型链上
如下:判断Person的原型是否在p的原型链上
function Person(){};
var p =new Person();
console.log(p instanceof Person);//true
- 关于闭包 什么是闭包 为什么会产生 作用 弊端
- 介绍一下你所了解的作用域链
- 是否知道自定义事件。jQuery里的fire函数是什么意思,什么时候用?
- jquery.extend 与 jquery.fn.extend的区别?
-
js的冒泡(Bubbling Event)和捕获(Capture Event)的区别
冒泡和捕获
假设一个元素div,它有一个下级元素p
<div>
<p>元素</p>
</div>
这两个元素都绑定了click事件,如果用户点击了p:
事件捕获
当你使用事件捕获时,父级元素先触发,子级元素后触发,即div先触发,p后触发。
事件冒泡
当你使用事件冒泡时,子级元素先触发,父级元素后触发,即p先触发,div后触发。
addEventListener
函数,它有三个参数,第三个参数若是true,则表示采用事件捕获,若是false,则表示采用事件冒泡。不传值默认是false。
IE只支持事件冒泡,不支持事件捕获。
阻止冒泡
• 在W3c中,使用stopPropagation()方法
• 在IE下设置oEvent.cancelBubble = true;
阻止捕获
阻止事件的默认行为,例如click <a>后的跳转
• 在W3c中,使用oEvent.preventDefault()方法;
• 在IE下设置window.event.returnValue = false;
-
["1", "2", "3"].map(parseInt) 答案是多少?
-
冒泡排序、快速排序、去重、查找字符串最多值
//冒泡排序
var bubbleSort = function(arr) {
for (var i = 0; i < arr.length-1; i++) {
for (var j = i+1; j < arr.length; j++) {
if (arr[i]>arr[j]) {
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr;
};
//快速排序
var quickSort = function(arr) {
if (arr.length <= 1) {
return arr;
}
var len = arr.length;
var midIndex = Math.floor(len/2);
var mid = arr.splice(midIndex,1);
var left = [];
var right = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] < mid) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat(mid,quickSort(right))
}
// 去重
var distinct = function(arr) {
var map = {};
var result = [];
for (var i = 0; i < arr.length; i++) {
if (!map[arr[i]]) {
map[arr[i]] = true;
result.push(arr[i]);
}
}
return result;
}
//查找字符串中最多的值
var search = function(str) {
var json = {};
var max = 0;
var char;
for (var i = 0; i < str.length; i++) {
if (!json[str[i]]) {
json[str[i]]=1;
} else {
json[str[i]]++;
}
}
console.log(json);
for(var i in json){
if(json[i]>max){
max = json[i];
char = i;
}
}
console.log(max, char);
}
流行框架(angular vue react)
1.设计模式(设计思想)是什么?什么是MVVM?MVVM和MVC区别?它和其它框架(jquery)的区别是什么?哪些场景适合?
MVVM是Model-View-ViewModel的缩写。MVVM是一种设计思想。Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View 代表UI 组件,它负责将数据模型转化成UI 展现出来,ViewModel 是一个同步View 和 Model的对象。
在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上。
ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。
mvc和mvvm其实区别并不大。都是一种设计思想。主要就是mvc中Controller演变成mvvm中的viewModel。mvvm主要解决了mvc中大量的DOM 操作使页面渲染性能降低,加载速度变慢,影响用户体验。
区别:vue数据驱动,通过数据来显示视图层而不是节点操作。
场景:数据操作比较多的场景,更加便捷
- vue生命周期总共有几个阶段
可以总共分为8个阶段:创建前/后, 载入前/后,更新前/后,销毁前/销毁后
生命周期钩子的一些使用方法:
beforecreate : 可以在这加个loading事件,在加载实例时触发
created : 初始化完成时的事件写在这里,如在这结束loading事件,异步请求也适宜在这里调用
mounted : 挂载元素,获取到DOM节点
updated : 如果对数据统一处理,在这里写上相应函数
beforeDestroy : 可以做一个确认停止事件的确认框
nextTick : 更新数据后立即操作dom
- 第一次页面加载会触发哪几个钩子
第一次页面加载时会触发 beforeCreate, created, beforeMount, mounted 这几个钩子
-
VUE 组件之间的传值?
父组件与子组件传值
父组件通过标签上面定义传值
子组件通过props方法接受数据
子组件向父组件传递数据
子组件通过$emit方法传递参数 -
(1)vuex是什么?怎么使用?哪种功能场景使用它?
vue框架中状态管理。在main.js引入store,注入。新建一个目录store,….. export 。场景有:单页应用中,组件之间的状态。音乐播放、登录状态、加入购物车 -
(2)vuex有哪几种属性?
有五种,分别是 State、 Getter、Mutation 、Action、 Module -
vue-router有哪几种导航钩子?
三种,一种是全局导航钩子:router.beforeEach(to,from,next),作用:跳转前进行判断拦截。
第二种:组件内的钩子;
第三种:单独路由独享组件
工具使用
- gulp webpack的区别 使用方法 常用插件
- svn与git的区别 常用的命令 解决冲突
理论知识
- 关于http协议
- 如何解决跨域问题(jsonp nginx代理)
- 项目优化的方案
知识拓展
- 是否了解公钥加密和私钥加密。
- AMD(Modules/Asynchronous-Definition)、CMD(Common Module Definition)规范区别?
- requireJS的核心原理是什么?(如何动态加载的?如何避免多次加载的?如何缓存的?)
网友评论