前端面试题总结

1、html5的新特性?

  canvas绘画

  用于媒介回放的video和audio元素

  本地离线存储localStorage可以长期存储,并且在浏览器关闭之后可以保存很长一段时间,sesstionStorage在浏览器关闭之后会丢失

  语义化更好的标签,如article、nav、section、footer、header

  表单控件calendar、date、time、email

  新的技术websock、websocket

2、html标签语义化的理解?

  用正确的标签做正确的事

  html标签语义化可以让页面的内容结构化,让结构更加清晰,便于对浏览器、搜索引擎解析

  即使在没有css样式的情况下,也以一种文档格式显示,易于阅读,易于SEO,易于阅读和维护

3、html5离线存储

  在用户没有网络连接的时候,可以正常访问站点或应用,在用户有网络连接时,更新用户机器上的缓存文件

  原理:html5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来。之后当网络处于离线状态时,浏览器会通过被离线存储的数据进行页面展示。

  如何使用: 

   3.1、页面头部像下面一样加入一个manifest的属性;

   3.2、在cache.manifest文件的编写离线存储的资源;
      CACHE MANIFEST
      #v0.11
      CACHE:
      js/app.js
      css/style.css
      NETWORK:
      resourse/logo.png
      FALLBACK:
      / /offline.html

   3.3、在离线状态时,操作window.applicationCache进行需求实现。

浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢?
在线的情况下,浏览器发现html头部有manifest属性,它会请求manifest文件,如果是第一次访问app,那么浏览器就会根据manifest文件的内容下载相应的资源并且进行离线存储。如果已经访问过app并且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面,然后浏览器会对比新的manifest文件与旧的manifest文件,如果文件没有发生改变,就不做任何操作,如果文件改变了,那么就会重新下载文件中的资源并进行离线存储。
离线的情况下,浏览器就直接使用离线存储的资源。

4、css居中

  水平居中

div{
  width: 200px;
  margin: 0 auto;    
}

   让绝对定位的div居中

div{
    position: absolute;
    width: 500px;
    margin: auto;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0
}

 

   水平垂直居中显示

1、
div{
    position: absolute;
    width: 500px;
    height: 300px;
    top: 50%;
    left: 50%;
    margin: -150px 0  0 -250px;
}

2、
未知容器的宽高    
div{
    position:absolute;
    width: 500px;
    heigth:300px;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%)
}
3、利用flex布局
.container{
  display: flex;
  align-items:center;//垂直居中
  justify-content: center;//水平居中
}
.container div{
  width: 100px;
  height: 100px;
}
  

 

 5、ie盒模型和标准盒模型

  

IE盒模型
box-sizing: border-box;
width: 400px;
盒子width=padding+border+content = 400px

标准盒模型
box-siziing: content-box
width: 400px;
盒子width = padding + border + 400px(content)

 

6、css优先级确定

  每个选择器都有权值,权值越大越优先,

  继承的样式优先级低于自身指定样式

  !important优先级最高,js也无法修改

  权值相同时,靠近元素的样式优先级高 顺序为内联样式表(标签内部)> 内部样式表(当前文件中)> 外部样式表(外部文件中)

 7、请解释一下为什么会出现浮动和什么时候需要清除浮动?清除浮动的方式?

    浮动float最初出现的意义是为了让文字环绕图片而已,但是人们发现,要让3个块级元素并排显示,给他们加个float会来的比较方便,但是当给3个元素加上float之后,父元素的高度塌陷了,清除浮动是指清除子元素浮动带来父元素高度坍塌的影响。
    清除浮动的两大方法:1.脚底插入clear:both;2.父元素BFC(ie8+)或haslayout(ie6/ie7)
     在父元素的最后加一个冗余元素并为其设置clear:both;必要在页面中添加很多没有意义的冗余元素,太麻烦,而且不符合语义化。
     采用伪元素,这里我们使用:after。添加一个类clearfix:
     使用overflow属性,给父元素添加overflow:hidden ||auto

 8、BFC

  block formatting context 块级格式化上下文,它是页面中的一个独立的渲染区域。只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。

   BFC布局规则:

  1. 内部的Box会在垂直方向,一个接一个地放置。
  2. Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠
  3. 每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
  4. BFC的区域不会与float box重叠。
  5. BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
  6. 计算BFC的高度时,浮动元素也参与计算

  BFC应用

   解决margin叠加。两个div的margin会叠加。比如上下两个div,上面的div设置margin-bottom:10px,下面的div设置margin-top:10px,这个时候两个div的间距是10px,而不是想象中的20px;如果想要两个div的间距为20px,可以对其中一个div通过display:inline-block来触发BFC,这样两个div就不会发生margin重叠了。

  用于布局;

  用于清除浮动,对父元素设置overflow:hidden

9、如何让chrome支持小于12px的字体

  我们都知道,chrome浏览器支持的最小字体就是12px,无论你对字体设置10px还是8px,页面中显示的还是12px,但是我们可以使用transform:scale()来对字体进行缩放从而达到目的

10、flex布局的优势?又称圣杯布局

  圣杯布局是一种左中右布局,左右两栏固定宽度,中间内容栏自适应宽度,当pc端屏幕够宽时,会呈现水平三栏布局,当在移动端时,屏幕较小,会呈现垂直的三栏布局;圣杯布局的优势在于只需要写一套代码,就可以同时兼容pc端和移动端。父div display: flex; flex-low: row nowrap;子div flex: 1 6 20%;order:1; 最大放大一倍,最小可以缩小6倍,占据父div的20%,order是子div的顺序

11、div+css布局较table布局的优缺点?

  div+css布局的符合w3c的标准,代码结构清晰明了,结构、样式和行为分离,带来了足够的维护性,布局精准,网站版面布局修改简单,加快了页面的加载速度,节约站点所占的空间和站点的流量。用只包含结构化内容的html代替嵌套的标签,提高搜索引擎对网页的搜索效率。

  table布局容易上手,可以形成复杂的变化,简单快速,在不同浏览器中有很好的兼容。

12、img图片标签的alt和title属性的区别

  alt是给搜索引擎识别,在图像无法显示时的替代文本;title是关于元素的注释信息,主要是给用户解读

 13、渐进增强和优雅降级之间的不同?

  渐进增强:针对低版本浏览器进行构建页面,保证最基本的功能,然后在针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。

  优雅降级:一开始就构建完整的功能,然后再针对低版本的浏览器进行兼容。

  区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强是一个非常基础,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。

14、cookie和session的区别?

  • cookie数据存放在客户端的浏览器上,session数据放在服务器上
  • cookie不是很安全,别人可以分析存放在本地的cookie进行cookie欺骗
  • session会在一定时间内保存在服务器上,当访问增多,会比较占用服务器的性能,考虑减轻服务器性能方面,应当使用cookie
  • 单个cookie保存的数据不能超过4k,很多浏览器现在一个站点最多保存20个cookie
  • 将登录信息等重要信息存储在session,其他信息若要保留,放在cookie中

15、浏览器的cookies、sessionStorage、localStorage的区别?

  共同点:都是保存在浏览器端,并且使同源的 (协议、端口、主机名相同)

  不同点:

    • cookie数据始终在http请求中携带,即在客户端和服务器端间来回传递,而sessionStorage和localStorage不会自动把数据发送给服务器,仅在本地保存
    • 存储大小限制不同。cookie数据不能超过4k,同时每次http请求都会携带cookie,所以cookie只适合保存很小的数据,sessionStorage和localStorage虽然也有储存大小的限制,但是比cookie大的多,可以达到5M或更大
    • 数据有效期不同。sessionStorage仅在当前浏览器关闭之前有效;localStorage始终有效。窗口或者浏览器关闭之后也一直保存,因此作用持久数据。cookie只在设置过期时间之前有效,即使关闭窗口或者浏览器。
    • 作用域不同。sessionStorage在不同的浏览器窗口中不共享,即使同一个页面。localStorage在所有的同源窗口中是共享的,cookie也是。

16、href和src的区别?

  href表示超文本引用,用在link和a等元素上,用来建立当前元素和文档之间的链接

  src表示引用资源,表示替换当前元素,用在img,script,iframe上,src指向的内容会嵌入到文档中当前标签所在的位置

17、在css/js代码上线之后开发人员经常会优化性能,从用户刷新网页开始,一次js请求一般情况下有哪些地方会有缓存处理?

  dns缓存、cdn缓存、浏览器缓存 、服务器缓存

18、css中可以让文字在垂直和水平方向重叠的属性是什么?

  垂直方向:line-height

  水平方向:letter-spacing

19、normalize.css和reset的css文件的异同?

  相同点:重置样式;保持跨浏览器一致性

  不同点:reset通过为几乎所有的元素施加默认样式,强行是的元素有相同的视觉效果,而normalize.css保持了许多浏览器的默认样式,它会力求这些样式保持一致并尽可能与现代标准符合

20、html5中的link和@import引入外部css文件的区别?

  • link属于html标签,而@import是css提供的一种方式
  • @import有引入次数的限制,只能引入31次
  • 当页面加载时,link引用的css会同时被加载,而@import引入的css文件会在等待主页面全部加载完成后才会被加载,所有网速较慢时,可能只有页面而没有样式,需要过一段时间才会被加载出来
  • @import只能在IE5以上才能使用识别,而link则没有浏览器版本限制
  • 当使用javascript控制dom去改变样式表里面的样式时,只能用link,dom不能控制@import

21、doctype的作用?严格模式和混杂模式的区别?

  doctype声明文档的类型,告诉浏览器该文档的类型,让浏览器知道应该用哪个规范来解析文档。

  严格模式又称标准模式,是指浏览器按照w3c标准解析代码

  混杂模式又称怪异模式或兼容模式,是指浏览器按自己的规范解析代码

  HTML5 没有 DTD ,因此也就没有严格模式与混杂模式的区别,HTML5 有相对宽松的语法,实现时,已经尽可能大的实现了向后兼容。( HTML5 没有严格和混杂之分)

22、html和xhtml的区别

  • XHTML 元素必须被正确地嵌套
  • XHTML 元素必须被关闭,空标签也必须被关闭,如 <br> 必须写成 <br />
  •  XHTML 标签名必须用小写字母

  • XHTML 文档必须拥有根元素
  • XHTML 文档要求给所有属性赋一个值
  •  XHTML 要求所有的属性必须用引号""括起来
  • XHTML 文档需要把所有 < 、>、& 等特殊符号用编码表示
  • XHTML 图片必须有说明文字
  • XHTML 文档中用id属性代替name属性

22、前端页面由哪三层构成?作用分别是什么?

  结构层、表示层、行为层

  html实现页面结构,css完成页面的表现与风格,javascript实现客户端的功能与业务

23、javascript的typeof返回哪些数据类型?

  undefined、string、number、object、Function、boolean、symbol

24、强制类型转换和隐式转换

  通过String()、Number()、Boolean()函数强制转换

  JavaScript的数据类型分为六种,分别为null,undefined,boolean,string,number,object。object是引用类型,其它的五种是基本类型或者是原始类型。我们可以用typeof方法打印来某个是属于哪个类型的。不同类型的变量比较要先转类型,叫做类型转换,类型转换也叫隐式转换。隐式转换通常发生在运算符加减乘除,等于,还有小于,大于等。。 console.log(10+'5')//105;console.log(10-'2')//8 number

25、javascript中spilt()和join()的区别?

  共同点:两个函数通常都是对字符或者字符串的操作

  区别:split()用于分割字符串,返回一个数组

     join()用于连接多个字符或字符串,返回值为一个字符串,默认连接符为逗号

26、javascript中的pop() push() shift() unshift()?

  push()方法可以在数组的末尾添加一个或多个元素

  pop()方法把数组中的最后一个元素删除

  shift()方法把数组中的第一个元素删除

  unshift()方法在数组的前端添加一个或多个元素

27、javascript中事件绑定和普通事件的区别?

  普通事件中的onclick是DOM0级事件只支持单个事件,会被其他onclick事件覆盖;而事件绑定中的addEventListener是DOM2级事件,可以添加多个事件而不会被覆盖。

 

未完待续...........

 

posted @ 2018-10-11 09:43  雨吻蝶  阅读(186)  评论(0编辑  收藏  举报