20160917 携程前端笔试题

1、智力题css

2、选择题html

1. 下列哪一个样式定义后,内联(非块状)元素能够定义宽度和高度?(B)前端

A display:none    B display:block    C display: inherit    D display: inlinehtml5

2. var emp = new Array(3); for(var i in emp)jquery

如下答案中能与for循环代码互换的是(A)android

A for(var i=0; i<emp.length; i++)ios

3. 下面有关js中call和apply的描述,错误的是(A)web

A 二者传递的参数不一样,call函数第一个参数都是要传入给当前对象的对象,apply不是算法

B call传入的则是直接的参数列表。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。chrome

C call与aplly都属于Function.prototype的一个方法,因此每一个function实例都有call、apply属性

D apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入

4. 在js中,下列选项中不属于数组方法的是(D)

A reverse()    B concat()    C sort()    D length()

5. 下面符合一个有效的js变量定义规则的是(B)

A with    B _$te$t2    C 2a    D a bc

6. 下列哪一个属于浏览器内核(AC)

A Trident    B 360    C Gecko    D X5

7. 下列符合规范的AMD模块ID有?(A)

A ./foo/boo/woo    B foo/boo/Woo    C foo/boo/woo.js    D ../../foo/Boo/WoO

参考:AMD规范

8. 下面有关html5标签说法错误的有?(B)

A <menu> 标签订义菜单列表。当但愿列出表单控件时使用该标签

B <canvas> 好比来自一个外部的新闻提供者的一篇新的文章,或者来自 blog 的文本,或者是来自论坛的文本。亦或是来自其余外部源内容

C <audio> 标签订义声音,好比音乐或其余音频流

D <command> 标签订义命令按钮,好比单选按钮、复选框或按钮

解析: 这里考察HTML标签的使用:
<audio> 标签订义声音,好比音乐或其余音频流。 A正确。
<canvas> 标签订义图形,好比图表和其余图像。<canvas> 标签只是图形容器,您必须使用脚原本绘制图形。 B错误,<article>标签订义外部的内容。好比来自一个外部的新闻提供者的一篇新的文章,或者来自 blog 的文本,或者是来自论坛的文本。亦或是来自其余外部源内容。
<menu> 标签订义命令的列表或菜单。<menu> 标签用于上下文菜单、工具栏以及用于列出表单控件和命令。 C正确
command 元素表示用户可以调用的命令。<command> 标签能够定义命令按钮,好比单选按钮、复选框或按钮。只有当 command 元素位于 menu 元素内时,该元素才是可见的。不然不会显示这个元素,可是能够用它规定键盘快捷键。 

9. 下列哪些web安全措施用于防护csrf攻击()

A 每次请求的token最好都不同

B http响应添加Content-Security-Policy头部

C 前端对用户输入的内容进行编码

D 表单提交时需带上token并在服务器端校验经过才行

解析:感受应该选和token有关的,AD?

CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。

你这能够这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF可以作的事情包括:以你名义发送邮件,发消息,盗取你的帐号,甚至于购买商品,虚拟货币转帐......形成的问题包括:我的隐私泄露以及财产安全。

要完成一次CSRF攻击,受害者必须依次完成两个步骤:

  1.登陆受信任网站A,并在本地生成Cookie。

  2.在不登出A的状况下,访问危险网站B。

  看到这里,你也许会说:“若是我不知足以上两个条件中的一个,我就不会受到CSRF的攻击”。是的,确实如此,但你不能保证如下状况不会发生:

  1.你不能保证你登陆了一个网站后,再也不打开一个tab页面并访问另外的网站。

  2.你不能保证你关闭浏览器了后,你本地的Cookie马上过时,你上次的会话已经结束。(事实上,关闭浏览器不能结束一个会话,但大多数人都会错误的认为关闭浏览器就等于退出登陆/结束会话了......)

  3.上图中所谓的攻击网站,多是一个存在其余漏洞的可信任的常常被人访问的网站。

防护:

  1.服务端进行CSRF防护

  服务端的CSRF方式方法不少样,但总的思想都是一致的,就是在客户端页面增长伪随机数。

  (1).Cookie Hashing(全部表单都包含同一个伪随机值):在表单里增长Hash值,以认证这确实是用户发送的请求。而后在服务器端进行Hash值验证

  

  (2).验证码

  这个方案的思路是:每次的用户提交都须要用户在表单中填写一个图片上的随机字符串,厄....这个方案能够彻底解决CSRF,但我的以为在易用性方面彷佛不是太好,还有听闻是验证码图片的使用涉及了一个被称为MHTML的Bug,可能在某些版本的微软IE中受影响。

  (3).One-Time Tokens(不一样的表单包含一个不一样的伪随机值)

  在实现One-Time Tokens时,须要注意一点:就是“并行会话的兼容”。若是用户在一个站点上同时打开了两个不一样的表单,CSRF保护措施不该该影响到他对任何表单的提交。考虑一下若是每次表单被装入时站点生成一个伪随机值来覆盖之前的伪随机值将会发生什么状况:用户只能成功地提交他最后打开的表单,由于全部其余的表单都含有非法的伪随机值。必须当心操做以确保CSRF保护措施不会影响选项卡式的浏览或者利用多个浏览器窗口浏览一个站点。

参考:http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html

 

10. 关于XSS,下列说法正确的是()

A 从cookies中获取用户名并输出到页面的过程并不会致使XSS

B CSRF是XSS的一种

C XSS都是后端未对数据作安全检查形成的

D XSS全称是Cross Site Script

解析:XSS:跨站脚本攻击(Cross Site Scripting)。

咱们所说跨站脚本是指在远程WEB页面的html代码中插入的具备恶意目的的数据,用户认为该页面是可信赖的,可是当浏览器下载该页面,嵌入其中的脚本将被解释执行,有时候跨站脚本被称为"XSS",这是由于"CSS"通常被称为分层样式表,这很容易让人困惑,若是

你听某人提到CSS或者XSS安全漏洞,一般指得是跨站脚本。

对XSS最佳的防御应该结合如下两种方法:验证全部输入数据,有效检测攻击;对全部输出数据进行适当的编码,以防止任何已成功注入的脚本在浏览器端运行。

大概选D?

 

11. 在iphone6手机屏幕上,标准出厂值状况下,下列哪一个尺寸最大(D)

A 1em    B 1px    C 1pt    D 1vh

解析:

px:绝对单位,页面按精确像素展现

em:相对单位,基准点为父节点字体的大小,若是自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个固定的值。

rem:相对单位,可理解为”root em”, 相对根节点html的字体大小来计算,CSS3新加属性,chrome/firefox/IE9+支持。

vw:viewpoint width,视窗宽度,1vw等于视窗宽度的1%。
vh:viewpoint height,视窗高度,1vh等于视窗高度的1%。
vmin:vw和vh中较小的那个。
vmax:vw和vh中较大的那个。

%:百分比
in:寸
cm:厘米
mm:毫米
pt:point,大约1/72寸

pc:pica,大约6pt,1/6寸

ex:取当前做用效果的字体的x的高度,在没法肯定x高度的状况下以0.5em计算(IE11及如下均不支持,firefox/chrome/safari/opera/ios safari/android browser4.4+等均需属性加么有前缀)

ch:以节点所使用字体中的“0”字符为基准,找不到时为0.5em(ie10+,chrome31+,safair7.1+,opera26+,ios safari 7.1+,android browser4.4+支持)

 

12. 下列声明数组的语句中,错误的选项是(A)

A var arra[] = new Array(3)(4)

B var array = new Array()

C var array = new Array('3','4')

D var array = new Array(3)

 

13. 下面有关jquery事件的响应,描述错误的是(C)

A onmousedown 某个鼠标按键被按下

B onload是某个页面的css js html文档结构和图像被完成加载

C onfocus元素失去焦点

D onclick鼠标点击某个对象

解析:blur失去焦点,focus获得焦点

 

14. 下面哪个选项不属于document对象的方法(C)

A getElementsById()

B focus()

C bgColor()

D getElementById()

 

15. 要动态改变层中内容可使用的方法有(AB)

a)innerHTML
b)innerText
c)经过设置层的隐藏和显示来实现
d)经过设置层的样式属性的display属性

 

3、问答题:

1. 使用过第三方的js库或框架吗?列出一些你使用过的,谈谈它们的优势?

 

2. 请用5种不一样的方式实现未知高度宽度的元素垂直水平居中?

3. 设计并实现一个combox(下拉选择框)

1) combox内容可编辑,下拉展现区域可滚动(一共包含了10w条数据)

2) 根据输入内容作prefix匹配,展现匹配到的可选择内容列表(要求提升匹配效率、考察算法能力,空间复杂度和时间复杂度均衡)

4. 下面这个js程序输出的是什么?

<script language="JavaScript">

var bb=1; function aa(bb){bb=2; alert(bb);};aa(bb); alert(bb);

</script>

相关文章
相关标签/搜索