您的位置:首页 > 职场人生

前端工程师常见的面试题

2017-08-09 20:31 330 查看

1、对WEB标准以及W3C的理解和认识?

标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率

使用外链css和js脚本,结构行为表现的分离

文件下载与页面速度更快,内容能被更多的用户所访问,内容能被更广泛的设备所访问

更少的代码和组价,容易维护,改版方便,不需要变动页面内容

提供打印版本而不需要复制内容、提高网站易用性。

2、xml和html有什么区别

HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言

最主要的不同是:

XHTML元素必须被正确地嵌套

XHTML元素必须被关闭

标签名必须用小写

XHTML文档必须拥有根元素

3、doctype(文档类型)的作用是什么?你知道多少种文档类型?

  作用是:此标签可以告知浏览器文档使用哪种HTML或XHTML规范

  此标签可声明三种DTD类型,分别表示严格版本、过渡版本以及基于框架的HTML文档

HTML4.01规定了三种文档类型:Strict、Transition以及Frameset

XHTML1.0 规定了三种XML文档类型:Strict、Transitional以及Frameset

Standards(标准)模式(也就是严格呈现模式)用于呈现遵循最新标准的网页,而Quirks(包容)模式(也就是松散呈现模式或者兼容模式)用于呈现为传统浏览器而设计的网页

4、行内元素有哪些?块级元素有哪些?CSS的盒模型

行内元素:span、a、Img、input、select、b

块级元素:div、p、h1~h6、form、ul、li

CSS盒模型:border、padding、margin

5、CSS引入方式有哪些?link和@import的区别

CSS引入方式:内联式、行内式、外链式

区别是:同时加载

前者无兼容性、后者CSS2.1以下的浏览器不支持

link支持使用JavaScript改变样式,后者不支持

6、CSS选择器有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先级高?

CSS选择器:标签选择器、类选择器、ID选择器(组合选择器、相邻选择器(+))伪类选择器

继承不如指定

优先级:标签选择器<类选择器<ID选择器

important优先级高

7、前端页面有哪三层构成,分别是什么?作用是什么?

结构层html、表现层css、行为层js

8、CSS的基本语句构成是?

选择器{属性名:属性值;属性名:属性值;}

9、你做的页面在哪些浏览器测试过?这些浏览器的内核是什么

IE(ie内核)、谷歌(webkit内核)、火狐(Gecko)、opera(Presto)

10、写出几种IE6 BUG的解决方法

float引起的双边距bug:使用display

使用float引起的3像素bug:使用display:inline

超链接hover点击之后失效:使用正确的书写顺序link visited hover active

IE z-inde问题:给父级添加position:relative

PNG透明:使用js代码改

min-height最小高度 !important解决

select在ie6下遮盖 使用iframe嵌套

为什么没有办法定义1px左右的宽度容器(IE6默认的行高造成的,使用over:hidden;zoom:0.09;line-height:1px;)

IE6不支持!important

11、img标签上title与alt属性的区别是什么?

alt当图片不显示时,用文字代替

title当鼠标放在图片上时,显示文字说明

12、描述css reset的作用和用途

reset重置浏览器的css默认属性,浏览器的品种不同,样式不同,然后重置,让他们统一

13、解析css sprites,如何使用

css精灵(又叫雪碧图),是把一堆小图片整合到一张大的图片上,减少服务器对图片的请求数量

14、浏览器标准模式和怪异模式之间的区别是什么?

盒子模型、渲染模式不同

使用window.top.document.compatMode可显示为什么模式

15、你如何对网站的文件和资源进行优化?期待的解决方案包括:

文件合并

文件最小化/文件压缩

使用CDN托管

缓存的使用

16、请解释一下什么是"语义化HTML

语义化HTML就是:标题h1~h6,段落p,无序列表ul li,有序列表ol li,图片img,链接a等,对于搜索引擎的抓取有好处

  语义化的好处:

去掉或样式丢失的时候,能让页面呈现清晰的结构

屏幕阅读器(如果访客有视障)会完全根据你的标记来"读"你的网页

PDA、手机登设备可能无法像普通电脑的浏览器一样来渲染网页(通常是因为这些设备对CSS的支持较弱)

搜索引擎的爬虫也依赖于标记来确定上下文和各个关键字的权重

你的页面是否对爬虫容易理解非常重要,因为爬虫很大程度上会忽略用于表现的标记,而只注重语义化标记。

便于团队开发和维护

17、清除浮动的几种方式,各自的优缺点

使用空标签清除浮动clear:both(理论上能清除任何标签,,,增加无意义的标签)

使用overflow:auto(空标签元素清除浮动而不是增加无意代码的弊端,使用zoom:1用于兼容IE)

使用after伪元素清除浮动(用于非IE浏览器)

18、请说出三种减少页面加载时间的方法。(加载时间指感知的时间或者实际加载时间)

优化图片

图片格式的选择(GIF:提供的颜色较少,可用在一些对颜色要求不高的地方)

优化CSS(压缩合并css,如margin-top,margin-left...)

网址后加斜杠(如:www.campr.com/目录,会判断这个"目录是什么文件类型,或者是目录。")

标明高度和宽度(如果浏览器没有找到这两个参数,它需要一边下载图片,一边计算大小,如果图片很多,浏览器需要不断的调整页面,这不但影响速度,也影响浏览体验,当浏览器知道了高度和宽度参数后,即使图片暂时无法显示,页面上也会腾出图片的空位,然后继续加载后面的内容,从而使加载时间变快,浏览体验也更好)

减少http请求(合并文件,合并图片使用雪碧图)

19、讨论CSS hacks,条件引用或者其他

<!--[if IE6]--><![end if]-->

_margin IE6

+margin IE7

margin:0 auto\9 所有IE

margin:\0 IE8

20、你用过媒体查询,或者针对移动端的布局/CSS吗?

@media screen and (min-width:400px) and (max-width:700px){......}

@media handheld and (min-width:20em),screen and (min-width:20em){......}

媒体查询,就是响应式布局,响应式布局框架:bootstrap、PureCSS等

21、解释下原型继承的原理

当查找一个对象的属性时,JavaScript会向上遍历原型链,直到找到给定名称的属性为止(大多数JavaScript的实现用_proto_属性来表示一个对象的原型链)

以下代码展示了JS引擎如何查找属性:

function getProperty(obj,prop){

  if(obj.hasOwnProperty(prop)){

    return obj[prop];

  }else if(obj._proto_! == null){

    return getProperty(obj._proto_,prop)

  }else{

    return undefined;

  } 

}

22、前端安全

CSRF:跨站请求伪造。攻击者盗用了你的身份,以你的名义发送恶意请求。他可以做到的事情包括:以你的名义发送邮件,发消息,盗取你的账号。甚至购买商品...造成的问题包括:个人隐私泄露以及财产安全。

原理:

  登录受信任的网站A,并且在本地生成cookie,在不登录A网站的情况下,访问危险网站B

常见类型:

使用get更新请求资源,容易在B使用img标签造成攻击

前端虽然改成了post请求,但是B网站通过iframe等手段同样造成了攻击

防御机制:

验证码:用户每次提交都需要在表单中填写图片上一个随机字符串

添加一个隐藏的输入框:包含token,服务端验证是否匹配

使用HTTP refer头部进行判断,如果不是业务域名发起的HTTP请求,直接过滤。

XSS它的全名:Cross-sitescripting,为了和CSS层叠样式表区分所以取名XSS是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,这类攻击通常包含了HTML以及用户端脚本语言。

23、CMD VS AMD

CommonJS是服务器端模块的规范,Node.js采用了这个规范

根据CommonJS规范,一个单独的文件就是一个模块。每一个模块都是一个单独的作用域,也就是说,在该模块内部定义的变量,无法被其他模块读取,除非定义为globald对象的属性。

CommonJS规范加载模块是同步的,也就是说,只要加载完成,才能执行后面的操作。

AMD规范则是非同步加载模块,允许指定回调函数。

由于Node.js主要用于服务器编程,模块文件一般都已经存在于本地硬盘,所以加载起来比较快,不用考虑非同步加载的方式,所以CommonJS规范比较适用。

但是,如果是浏览器环境,要从服务器端加载模块,这时就必须采用非同步模式,因此浏览器一般采用AMD规范。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: