内存泄漏指任何对象在您不再拥有或需要它之后仍然存在 setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏闭包使用不当
10 XML和JSON的区别?
1.数据体积方面
JSON 相对 于XML 来讲,数据的体积小,传递的速度更快些。
2.数据交互方面
JSON 与 JavaScript 的交互更加方便,更容易解析处理,更好的数据交互
3.数据描述方面
JSON 对数据的描述性比 XML 较差
4.传输速度方面
JSON 的速度要远远快于 XML
11 谈谈你对webpack的看法
WebPack 是一个模块打包工具,你可以使用 WebPack 管理你的模块依赖,并编绎输出模
块们所需的静态文件。它能够很好地管理、打包 Web 开发中所用到的 HTML 、Javascript 、 CSS 以及各种静态文件(图片、字体等),让开发过程更加高效。对于不同类型的资源, webpack 有对应的模块加载器。 webpack 模块打包器会分析模块间的依赖关系,最后生成了优化且合并后的静态资源
12 用过哪些设计模式?
工厂模式:
工厂模式解决了重复实例化的问题,但还有一个问题,那就是识别问题,因为根本无法主要好处就是可以消除对象间的耦合,通过使用工程方法而不是 new 关键字
构造函数模式:
使用构造函数的方法,即解决了重复实例化的问题,又解决了对象识别的问题,该模式与工厂模式的不同之处在于直接将属性和方法赋值给 this 对象;
13 为什么要有同源限制?
1.同源策略指的是:协议,域名,端口相同,同源策略是一种安全协议
2.举例说明:比如一个黑客程序,他利用 Iframe 把真正的银行登录页面嵌到他的页面上,当你使用真实的用用户名,密码登录时,他的页面就可以通过 Javascript 读取到你的表单中 input 中的内容,这样用户名,密码就轻松到手了。
14 你觉得jQuery源码有哪些写的好的地方
jquery 源码封装在一个匿名函数的自执行环境中,有助于防止变量的全局污染,然后通
过传入window 对象参数,可以使 window 对象作为局部变量使用,好处是当 jquery 中
访问 window 对象的时候,就不用将作用域链退回到顶层作用域了,从而可以更快的访问
window对象。同样,传入 undefined 参数,可以缩短查找 undefined 时的作用域链 jquery 将一些原型属性和方法封装在了 jquery.prototype 中,为了缩短名称,又赋值给了 jquery.fn ,这是很形象的写法有一些数组或对象的方法经常能使用到, jQuery 将其保存为局部变量以提高访问速度 jquery 实现的链式调用可以节约代码,所返回的都是同⼀个对象,可以提高代码效率
15 vue、react、angular
1.Vue.js 一个用于创建 web 交互界面的库,是一个精简的 MVVM 。它通过双向数据绑定把 View 层和 Model 层连接了起来。实际的 DOM 封装和输出格式都被抽象为了Directives 和 Filters
2.AngularJS 是一个比较完善的前端 MVVM 框架,包含模板,数据双向绑定,路由,模块
化,服务,依赖注入等所有功能,模板功能强大丰富,自带了丰富的 Angular 指令
3.react React 仅仅是 VIEW 层是 facebook 公司。推出的一个用于构建 UI 的一个库,能够实现服务器端的渲染。用了 virtual dom ,所以性能很好。
16 哪些操作会造成内存泄漏
内存泄漏指任何对象在您不再拥有或需要它之后仍然存在setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)
17 web开发中会话跟踪的方法有哪些
cookie
session
url 重写
隐藏 input
ip 地址
18 介绍js的基本数据类型
Undefined 、 Null 、 Boolean 、 Number 、 String
19 介绍js有哪些内置对象
Object 是 JavaScript 中所有对象的⽗对象
数据封装类对象: Object 、 Array 、 Boolean 、 Number 和 String
其他对象: Function 、 Arguments 、 Math 、 Date 、 RegExp 、 Error
20 javascript创建对象的几种方式
javascript 创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用 JSON ;但写法有很多种,也能混合使用
1.对象字面量的方式
person={firstname:“Mark”,lastname:“Yun”,age:25,eyecolor:“black”};
2.用function 来模拟无参的构造函数
function Person(){}
var person=new Person();//定义⼀个function,如果使⽤new"实例化",该function可
person.name=“Mark”;
person.age=“25”;
person.work=function(){
alert(person.name+" hello…");
}
person.work();
3.用 function 来模拟参构造函数来实现(用 this 关键字定义构造的上下文属性)
function Pet(name,age,hobby){
this.name=name;//this作⽤域:当前对象
this.age=age;
this.hobby=hobby;
this.eat=function(){
alert(“我叫”+this.name+“,我喜欢”+this.hobby+“,是个程序员”);
}
}
var maidou =new Pet(“⻨兜”,25,“coding”);//实例化、创建对象
maidou.eat();//调⽤eat⽅法
4.用工厂方式来创建(内置对象)
var wcDog =new Object();
wcDog.name=“旺财”;
wcDog.age=3;
wcDog.work=function(){
alert(“我是”+wcDog.name+“,汪汪汪…”);
}
wcDog.work();
5.用原型方式来创建
function Dog(){}
Dog.prototype.name=“旺财”;
Dog.prototype.eat=function(){
alert(this.name+“是个吃货”);
}
var wangcai =new Dog();
wangcai.eat();
6.用混合方式来创建
function Car(name,price){
this.name=name;
this.price=price;
}
Car.prototype.sell=function(){
alert(“我是”+this.name+“,我现在卖”+this.price+“万元”);
}
var camry =new Car(“凯美瑞”,27);
camry.sell();
下集预告:jQuery部分
总结
=============================================================
从转行到现在,差不多两年的时间,虽不能和大佬相比,但也是学了很多东西。我个人在学习的过程中,习惯简单做做笔记,方便自己复习的时候能够快速理解,现在将自己的笔记分享出来,和大家共同学习。
个人将这段时间所学的知识,分为三个阶段:
第一阶段:HTML&CSS&JavaScript基础
第二阶段:移动端开发技术
第三阶段:前端常用框架
-
推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;如果因为我的笔记太过简陋不理解,可以关注我以后我还会继续分享。
-
大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。