2018前端面试题(一)

一、https和http的区别及优缺点

        http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。

        https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份。

二、打开网站到页面呈现,经过的步骤       

        <1>客户端输入网址,请求与服务器的80端口建立连接。

<2>服务器收到请求,并响应客户端;

<3>客户端接收到服务器的响应,准备开始接收数据。服务器开始发送数据。

        (三次握手)

第1次握手:客户端通过将一个含有“同步序列号(SYN)”标志位的数据段发送给服务器请求连接。

第2次握手:服务器用一个带有“确认应答(ACK)”和“同步序列号(SYN)”标志位的数据段响应客户端。

第3次握手:客户端发送一个数据段确认收到服务器的数据段,并开始传送实际数据。

<4>对html页面进行解析,将页面内容呈现给用户。

三、MVC和MVVM的区别

MVC是传统的model-view-controller三部分组成,是单项通信,也就是model和view必须通过controller来承上启下。

MVVM是数据驱动视图,核心是VM,在MVVM中view和viewmodel中数据可以相互通信,也就是相互调用。

四、Vue的生命周期

Vue 实例从创建到销毁的过程,就是生命周期。也就是从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程,我们称这是 Vue 的生命周期。

vue的生命周期可以总共分为8个阶段:创建前/后, 载入前/后,更新前/后,销毁前/销毁后,第一次页面加载时会触发 beforeCreate, created, beforeMount, mounted 这几个钩子,DOM 渲染在 mounted 中就已经完成了。

生命周期钩子的一些使用方法: beforecreate : 可以在这加个loading事件,在加载实例时触发 created : 初始化完成时的事件写在这里,如在这结束loading事件,异步请求也适宜在这里调用 mounted : 挂载元素,获取到DOM节点 updated : 如果对数据统一处理,在这里写上相应函数 beforeDestroy : 可以做一个确认停止事件的确认框 nextTick : 更新数据后立即操作dom。

五、解决跨域的方法有哪些

(1)图片ping或script 标签跨域

图片ping常用于跟踪用户点击页面或者动态广告曝光的次数;

 script标签可以得到从其他来源的数据,这也是jsonp依赖的根据;

缺点:只能发送get请求,无法访问服务器的响应文本。

(2)jsonp跨域

根据XmlHttpRequest对象受到同源策略的影响,而利用script元素的这个开放策略,网页可以得到从其他来源动态产生的json数据,而这种使用模式就是所谓的jsonp。用jsonp抓取到的数据并不是json,而是任意的JavaScript,用JavaScript解释器运行而不是用json解析器解析。所以,通过Chrome查看所有的jsonp发送的get请求都是js类型,而非xhr。

缺点:只能使用get请求;

不能注册success、error等事件监听函数,不能很容易的确定jsonp请求成功或者失败;

jsonp是从其他域中加载代码执行,容易受到跨域请求伪造的攻击,安全性无法保证;

(3)cors

        cross-origin resouce sharing 跨域资源共享是允许浏览器向跨源服务器发出XmlHttpRequest请求,从而克服了ajax只能同源使用的限制。与 JSONP 不同,CORS 除了 GET 要求方法以外也支持其他的 HTTP 要求。服务器一般需要增加如下响应头的一种或几种:

Access-Control-Allow-Origin:*

Access-Control-Allow-Methods:POST, GET, OPTIONS

Access-Control-Allow-Headers:X-PINGOTHER, Content-Type

Access-Control-Max-Age:86400

跨域请求默认不会携带Cookie信息,如果需要携带,请配置下述参数:

"Access-Control-Allow-Credentials":true

//Ajax设置

"withCredentials":true

(4)WebScoket

WebScoket protocol是HTML5的一种新的协议,它实现了浏览器与服务器全双工通信,同时允许跨域通信,是server push技术的一种很棒的实现。需要注意的是:WebScoket对象不支持DOM2级事件监听,必须使用DOM 0级语法分别定义各个事件。

(5)修改document.domain跨子域

(6)window.postMessage()

HTML5新特性,可以用来向其他所有的window对象发送消息。需注意,必须保证素有的脚本执行完成后才能发送MessageEvent,否则容易使其后买你的函数超时无法执行。

   (7)window.name+iframe

六、es6中数组的使用

 (1)includes: includes函数与string的includes一样,接受2个参数,查询的项以及查询起始位置;

(2)find : find的参数为回调函数,回调函数可以接受3个参数,值X、索引i、数组arr,回调函数默认返回值X;

(3)findIndex : 和find差不多,不过默认返回的是索引;

(4)keys 、values、entries :分别是对数组索引、数组项、数组键值对的遍历;

(5)fill :fill方法改变原数组,当第三个参数大于数组长度时候,以最后一位为结束位置;

(6)Array.of() :方法返回一个数组,参数不分类型,只分数量,数量为0时返回空数组;

    (7)Array.from() :可以把带有length属性类似数组的对象转换为数组,也可以把字符串等便利的对象转化为数组,接受2个参数,转换对象和回调函数。

(8)copywithin() : 接收三个参数,被汰换数据的开始处,替换块的开始处,替换块的结束处;

(9) reduce : 对数组中的所有元素调用指定的回调函数,该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供;

(10) forEach 和map : 遍历数组;

(11)every (且)和some (或):数组中的项返回true 或者false;

(12)filter :数组的过滤筛选。

七、IE和火狐的事件机制有什么区别,如何阻止冒泡事件?

事件流描述的是从页面中接受事件的顺序,分为冒泡流和捕获流;

事件冒泡是指事件从最具体的元素接收,然后逐级向上传播,直到不具体的节点;而事件捕获则正好相反,它是从不具体的节点开始,逐步到最具体的节点;

IE的事件流是冒泡流,而火狐同时支持冒泡流和捕获流;

阻止事件冒泡:e.stopPropagation(),ie则是使用e.cancelBubble = true ;

八、清除浮动的几种方法及各自的优缺点

(1)  父级div定义height ;

优点:简单,代码少,容易掌握

缺点:只适合高度固定的布局,若高度和父级高度不同时,会产生问题;

(2)结尾处添加空div标签clear:both

优点:简单,代码少,兼容性好,不容易出现问题

缺点:页面布局浮动多,需要添加很多空div

(3)父级div伪类:after和zoom

优点:浏览器支持好,不容易出现怪问题

缺点:代码多,需要两者结合起来才能让主流浏览器兼容

(4)父级div 定义overflow:hidden

优点:简单,代码少,浏览器支持好

缺点:不能和position结合使用,超出的部分会被隐藏掉

(5)父级div定义overflow:auto

优点:代码少,简单,浏览器支持好

缺点:内部宽度超过父级时候,出现滚动条

(6)父级div也跟着一起浮动

缺点:会产生新的浮动问题

(7)父级div定义display:table

缺点:会产生新的位置问题

(8)结尾处加br标签clear:both

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容