• 前端工程师常见的面试题


    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 auto9  所有IE
    • margin:  IE8 

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

    • @media  screen  and  (min-400px)  and  (max-700px){......}
    • @media  handheld  and  (min-20em),screen  and  (min-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规范。
  • 相关阅读:
    poj1363Rails(栈模拟)
    centos6.5设备mysql5.6
    SGU326Perspective(网络流量的最大流量)(经典赛车模型)
    扩大或缩小undo表空间
    Boost源代码学习---shared_ptr.hpp
    leetcode
    为客户打造RAC-DG一些遇到的问题汇总
    十归并排序有用的算法和二进制搜索的基础
    Delphi TNativeXML Node节点乱码的一种解决方法
    Delphi TcxTreeList 读取 TcxImageComboBoxItem类型的值
  • 原文地址:https://www.cnblogs.com/qijunjun/p/7324375.html
Copyright © 2020-2023  润新知