前端知识点整理03

75.说说你对前端架构师的理解

负责前端团队的管理及与其余团队的协调工做,提高团队成员能力和总体效率; 带领团队完成研发工具及平台前端部分的设计、研发和维护; 带领团队进行前端领域前沿技术研究及新技术调研,保证团队的技术领先 负责前端开发规范制定、功能模块化设计、公共组件搭建等工做,并组织培训。

实现一个函数clone,能够对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制html

 Object.prototype.clone = function(){

            var o = this.constructor === Array ? [] : {};

            for(var e in this){

                    o[e] = typeof this[e] === "object" ? this[e].clone() : this[e];

            }

            return o;
    }


76.说说严格模式的限制

严格模式主要有如下限制:

变量必须声明后再使用

函数的参数不能有同名属性,不然报错

不能使用with语句

不能对只读属性赋值,不然报错

不能使用前缀0表示八进制数,不然报错

不能删除不可删除的属性,不然报错

不能删除变量delete prop,会报错,只能删除属性delete global[prop]
eval不会在它的外层做用域引入变量

eval和arguments不能被从新赋值

arguments不会自动反映函数参数的变化

不能使用arguments.callee

不能使用arguments.caller

禁止this指向全局对象

不能使用fn.caller和fn.arguments获取函数调用的堆栈

增长了保留字(好比protected、static和interface)

设立"严格模式"的目的,主要有如下几个:

消除Javascript语法的一些不合理、不严谨之处,减小一些怪异行为;

消除代码运行的一些不安全之处,保证代码运行的安全;

提升编译器效率,增长运行速度;

为将来新版本的Javascript作好铺垫。

注:通过测试IE6,7,8,9均不支持严格模式。

77.如何删除一个cookie

1.将时间设为当前时间往前一点。

var date = new Date();

date.setDate(date.getDate() - 1);//真正的删除

setDate()方法用于设置一个月的某一天。

2.expires的设置

    document.cookie = 'user='+ encodeURIComponent('name')  + ';expires = ' + new Date(0)

<strong>,<em>和<b>,<i>标签

<strong> 标签和 <em> 标签同样,用于强调文本,但它强调的程度更强一些。

em 是 斜体强调标签,更强烈强调,表示内容的强调点。至关于html元素中的 <i>...</i>;

< b > < i >是视觉要素,分别表示无心义的加粗,无心义的斜体。

em 和 strong 是表达要素(phrase elements)。

78.说说你对AMD和Commonjs的理解

CommonJS是服务器端模块的规范,Node.js采用了这个规范。CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操做。AMD规范则是非同步加载模块,容许指定回调函数。

AMD推荐的风格经过返回一个对象作为模块对象,CommonJS的风格经过对module.exports或exports的属性赋值来达到暴露模块对象的目的。

详情:也谈webpack及其开发模式

79.document.write()的用法

document.write()方法能够用在两个方面:页面载入过程当中用实时脚本建立页面内容,以及用延时脚本建立本窗口或新窗口的内容。

document.write只能重绘整个页面。innerHTML能够重绘页面的一部分

80.编写一个方法 求一个字符串的字节长度

假设:一个英文字符占用一个字节,一个中文字符占用两个字节前端

 function GetBytes(str){

        var len = str.length;

        var bytes = len;

        for(var i=0; i<len; i++){

            if (str.charCodeAt(i) > 255) bytes++;

        }

        return bytes;

    }

alert(GetBytes("你好,as"));

81.git fetch和git pull的区别

git pull:至关因而从远程获取最新版本并merge到本地

git fetch:至关因而从远程获取最新版本到本地,不会自动merge

82.说说你对MVC和MVVM的理解

MVC
View 传送指令到 Controller

Controller 完成业务逻辑后,要求 Model 改变状态

Model 将新的数据发送到 View,用户获得反馈

全部通讯都是单向的。

Angular它采用双向绑定(data-binding):View的变更,自动反映在 ViewModel,反之亦然。

组成部分Model、View、ViewModel

View:UI界面

ViewModel:它是View的抽象,负责View与Model之间信息转换,将View的Command传送到Model;

Model:数据访问层

83.请解释什么是事件代理

事件代理(Event Delegation),又称之为事件委托。是 JavaScript 中经常使用绑定事件的经常使用技巧。顾名思义,“事件代理”便是把本来须要绑定的事件委托给父元素,让父元素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡。使用事件代理的好处是能够提升性能。

84.attribute和property的区别是什么?

attribute是dom元素在文档中做为html标签拥有的属性;

property就是dom元素在js中做为对象拥有的属性。

因此:

对于html的标准属性来讲,attribute和property是同步的,是会自动更新的,

可是对于自定义的属性来讲,他们是不一样步的,

84.说说网络分层里七层模型是哪七层

应用层:应用层、表示层、会话层(从上往下)(HTTP、FTP、SMTP、DNS)

传输层(TCP和UDP)

网络层(IP)

物理和数据链路层(以太网)

每一层的做用以下:

物理层:经过媒介传输比特,肯定机械及电气规范(比特Bit)

数据链路层:将比特组装成帧和点到点的传递(帧Frame)

网络层:负责数据包从源到宿的传递和网际互连(包PackeT)

传输层:提供端到端的可靠报文传递和错误恢复(段Segment)

会话层:创建、管理和终止会话(会话协议数据单元SPDU)

表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)

应用层:容许访问OSI环境的手段(应用协议数据单元APDU)

各类协议

ICMP协议: 因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

TFTP协议: 是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。

HTTP协议: 超文本传输协议,是一个属于应用层的面向对象的协议,因为其简捷、快速的方式,适用于分布式超媒体信息系统。

DHCP协议: 动态主机配置协议,是一种让系统得以链接到网络上,并获取所须要的配置参数手段。

85.说说mongoDB和MySQL的区别

MySQL是传统的关系型数据库,MongoDB则是非关系型数据库

mongodb以BSON结构(二进制)进行存储,对海量数据存储有着很明显的优点。

对比传统关系型数据库,NoSQL有着很是显著的性能和扩展性优点,与关系型数据库相比,MongoDB的优势有: ①弱一致性(最终一致),更能保证用户的访问速度: ②文档结构的存储方式,可以更便捷的获取数据。

86.讲讲304缓存的原理

服务器首先产生ETag,服务器可在稍后使用它来判断页面是否已经被修改。本质上,客户端经过将该记号传回服务器要求服务器验证其(客户端)缓存。

304是HTTP状态码,服务器用来标识这个文件没修改,不返回内容,浏览器在接收到个状态码后,会使用浏览器已缓存的文件

客户端请求一个页面(A)。 服务器返回页面A,并在给A加上一个ETag。 客户端展示该页面,并将页面连同ETag一块儿缓存。 客户再次请求页面A,并将上次请求时服务器返回的ETag一块儿传递给服务器。 服务器检查该ETag,并判断出该页面自上次客户端请求以后还未被修改,直接返回响应304(未修改——Not Modified)和一个空的响应体。

87.什么样的前端代码是好的

高复用低耦合,这样文件小,好维护,并且好扩展。webpack

 

原文地址:http://www.qdfuns.com/notes/38721/bed740616de4e5795baa5a28cc7be08c.htmlgit

相关文章
相关标签/搜索