FE-star / 2018.1

第二期课程仓库,请勿fork,建议watch或者star
43 stars 7 forks source link

征集解析 #25

Open miniflycn opened 6 years ago

miniflycn commented 6 years ago

征集第一次测试题的解析~

地址如下:

https://miniflycn.gitbooks.io/exam/content/chapter1.html

miniflycn commented 6 years ago

编程题第一题也可以利用下面特性来解:http://w3help.org/zh-cn/causes/SJ9011

bluescurry commented 6 years ago

super 的作用可以查考我的这篇文章 https://www.jianshu.com/p/fc79756b1dc0 希望对大家理解 super 有帮助~

wknhsj commented 6 years ago

第七组-shenjia

单选题1.答案:(√)改变method的this指针,返回method执行结果

解析: 首先我们来看proxy的参数,method是一个方法,target是一个对象(或者说需要绑定的作用域),method.call(target)翻译成大家都能听懂的中文,意思就是method叫target来调用自己,method愿意暂时成为target的人,此时method住在target的家里(改变method的执行上下文为target)。大家这时候再看看题目,不难猜到答案就是:改变method的this指针,返回method执行结果 学习资料: Function.prototype.call(): https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/call Function.prototype.apply(): https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

2.答案:(√)Content-Length

解析: EOF 是End Of File的意思,用作文件结束标志 0xFF 就像计算机中的一把剪刀 0x0D CR 表示回车,对应ASCII码:\ r,对应十六进制,0x0d,(附:0x0A LF 表示换行) 0x1A SUB 在文本文件中表示文件结果 CLRF 您是不是要找: CRLF Content-Length:字面意思就是文本长度,这个背一下吧,Keep-Alive的原理就是这个 学习资料:
一个关于Keep-Alive的blog地址:https://www.cnblogs.com/laowenBlog/p/6096239.html 很显然老师出这题的目的是想大家平时的学习不仅仅局限于前端,需要了解更多计算机方面的知识,欠老师的迟早要还的。

3.答案:(√)关键词super是定义类不可被继承

解析: (√)关键词let允许创建块级作用域,建议定义局部变量使用let取代var (此乃ES6官方最推荐的做法,随处都能查到资料) (√)箭头函数 var getName = function(){return 'James';} 简写为 var getName = ()=>'James' (ES6 允许使用“箭头”(=>)定义函数。var f = () => 5;// 等同于 var f = function () { return 5 };) (×)关键词super是定义类不可被继承 (super就是用来继承的,ES6实现了原生继承) (√)WeakMap就是一个Map,只不过他的所有key都是弱引用,即不考虑它的内存泄漏问题 (WeakMap与Map的区别有两点。首先,WeakMap只接受对象作为键名(null除外),不接受其他类型的值作为键名。其次,WeakMap的键名所指向的对象,不计入垃圾回收机制。) (√)ES6对Promise有了原生的支持,直接使用new Promise即可 (ES6新语法记住就好了) (√)运算符for...of案例: let arr=['a','b','c']; for(let item of arr) {console.log(item)} 输出为a,b,c (ES6新语法,item指代每一个遍历的元素,而for...in中遍历的为key) 学习资料: WeakMap参考文章:http://es6.ruanyifeng.com/#docs/set-map#WeakMap Promise参考文章:http://es6.ruanyifeng.com/#docs/promise

4.答案:(√)电话号码:8668899-239,可以被匹配上

解析: /(0\d{2,3}-+)?[1-9]{7,8}(-[2-3]{2}[1-9]+)?/。这个正则一共可以拆分成3个小正则。 第一个小正则(0\d{2,3}-+)?。首先第一个部分为(必须以0开头,后面跟2-3位的数字,紧接着一个符号-),第二部分+号表示可以有多个第一部分,第三部分?号表示前面第一部分和第二部分可有可无。 第二个小正则[1-9]{7,8}。这个就比较简单,7-8位的数字,这些数字必须是1-9这几个。 第三个小正则(-[2-3]{2}[1-9]+)?。首先第一部分符号-,后面跟2个数字(2或者3),紧接着后面必须跟最少一个1-9的数字,第二部分?号表示第一部分可有可无

5.答案:使用 fetch API

解析: 跨域我们仓库有demo:https://github.com/FE-star/showcase1 可能大家想问fetch为什么不能跨域,答案是可以跨域,只是不能直接简单的用fetch api跨域,需要配置一些东西。参考这个网站: https://fetch.spec.whatwg.org/#cors-protocol-examples

PennyOrAmy commented 6 years ago

第七组-pengyuqin

多选题解析

1. 以下哪些可能是使用 CDN 的理由

题目分析

WIKI:
内容分发网络(英语:Content delivery network 或 Content distribution network,缩写:CDN)是指一种通过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。

选项分析
充分利用缓存
精确调度,优化资源加载速度

正确。
CDN 可以在不同的地点缓存内容,通过负载均衡技术,将用户的请求定向到最合适的缓存服务器上去获取内容。
比如说,是北京的用户,我们让他访问北京的节点,深圳的用户,我们让他访问深圳的节点。通过就近访问,加速用户对网站的访问。
解决Internet网络拥堵状况,提高用户访问网络的响应速度。

更小的 http request header

正确。例如把主域的Cookie分离,这样CDN的请求就不会带着登录信息这些对静态资源没啥用的东西。

提高浏览器页面并发请求数
缓解主域的压力

正确。
浏览器对同一域名的并发请求数目有限制:

Browser             HTTP/1.1
IE 6,7  2           4
IE 8    6           6
Firefox 2           2   
Firefox 3           6   
Safari 3,4          4   
Chrome 1,2          6   
Chrome 3            4   
Chrome 4+           6   
iPhone 2            4   
iPhone 3            6   
iPhone 4            4   
Opera 9.63,10.00alpha   4   
Opera 10.51+            8   

用了 CDN,相当于并发请求数变多了。

更安全,更不容易被攻击

标准答案认为:CDN 安全没啥关系。
但也有观点认为:

CDN的负载均衡和分布式存储技术,可以加强网站的可靠性,相当于无形中给你的网站添加了一把保护伞,应对绝大部分的互联网攻击事件。CDN的 防攻击系统也能避免网站遭到恶意攻击。

这里应该理解为是CDN运营商技术能力强,其提供的服务相对稳定而安全,并不是CDN这项技术本身能提高安全。换个角度看,比如我们自己去搭建CDN,很可能很快就被黑客攻破,反而增加了被XSS注入的可能性。

参考链接

https://zh.wikipedia.org/wiki/%E5%85%A7%E5%AE%B9%E5%82%B3%E9%81%9E%E7%B6%B2%E8%B7%AF
https://www.zhihu.com/question/36514327
http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/

2. 关于 CSRF,以下哪些说法是正确的?

题目分析

WIKI:
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。 跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

选项分析
CSRF 是跨站脚本攻击的一种手段
CSRF 会向被攻击者页面注入恶意脚本

错误。
跨站脚本攻击是 XSS,不是 CSRF。

CSRF 攻击可能会导致用户信息的泄露

标准答案认为正确。
但维基百科认为:

攻击者并不能通过CSRF攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户浏览器,让其以用户的名义执行操作。

【文坚订正】维基百科说的很清楚,是不能直接窃取用户的任何信息,但并非不能因为CSRF的漏洞从接口获取用户信息,请参见:

https://www.secpulse.com/archives/36163.html

CSRF 会让攻击者盗取到用户的Cookie信息

错误。 攻击者并不能直接窃取用户的任何信息。

使用 Token 校验可以有效的防止 CSRF 攻击

正确。
由于 CSRF 的本质在于攻击者欺骗用户去访问自己设置的地址,所以如果要求在访问敏感数据请求时,要求用户浏览器提供不保存在 cookie 中,并且攻击者无法伪造的数据作为校验,那么攻击者就无法再执行 CSRF 攻击。这种数据通常是表单中的一个数据项。服务器将其生成并附加在表单中,其内容是一个伪乱数。当客户端通过表单提交请求时,这个伪乱数也一并提交上去以供校验。正常的访问时,客户端浏览器能够正确得到并传回这个伪乱数,而通过 CSRF 传来的欺骗性攻击中,攻击者无从事先得知这个伪乱数的值,服务器端就会因为校验 token 的值为空或者错误,拒绝这个可疑请求。

使用GET请求可有效防止CSRF攻击

错误。
Get 请求十分容易伪造,可以随意篡改参数。

参考链接

https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%AB%99%E8%AF%B7%E6%B1%82%E4%BC%AA%E9%80%A0

3. 以下哪些是浏览器支持的本地存储相关的对象?

题目分析

做这道题,打开浏览器开发者工具,看看 Application Tab 下的 Storage 列表就够了。

选项分析
localStorage
sessionStorage

正确。
这两种存储机制属于 Web Storage API。

cookie

正确。 cookie 指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。

indexedDB

正确。 IndexedDB 是一种使用浏览器存储大量数据的方法.它创造的数据可以被查询,并且可以离线使用。IndexedDB对于那些需要存储大量数据,或者是需要离线使用的程序是非常有效的解决方法。

WebSQL API

正确。 WebSQL API 是指,Web SQL Database 引入的一套使用 SQL 来操纵客户端数据库(client-side database)的 API。

参考链接

https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API
https://zh.wikipedia.org/zh-hans/Cookie
https://developer.mozilla.org/zh-CN/docs/Web/API/IndexedDB_API/Basic_Concepts_Behind_IndexedDB
https://www.ibm.com/developerworks/cn/web/1108_zhaifeng_websqldb/

4. 关于script标签,下列说法正确的是

题目分析

MDN:
HTML Githubissues.

  • Githubissues is a development platform for aggregating issues.