前端面试题(一)

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

  • 1.优化图片
  • 2.图像格式的选择(GIF:提供的颜色较少,可用在一些对颜色要求不高的地方)
  • 3.优化CSS(压缩合并css,如margin-top,margin-left...)
  • 4.网址后加斜杠(如www.campr.com/目录,会判断这个“目录是什么文件类型,或者是目录。)
  • 5.标明高度和宽度(如果浏览器没有找到这两个参数,它需要一边下载图片一边计算大小,如果图片很多,浏览器需要不断地调整页面。这不但影响速度,也影响浏览体验。当浏览器知道了高度和宽度参数后,即使图片暂时无法显示,页面上也会腾出图片的空位,然后继续加载后面的内容。从而加载时间快了,浏览体验也更好了。)
  • 6.减少http请求(合并文件,合并图片)。

 

2.data-属性的作用是什么?

data-* 属性用于存储页面或应用程序的私有自定义数据。data-* 属性赋予我们在所有 HTML 元素上嵌入自定义 data 属性的能力。存储的(自定义)数据能够被页面的 JavaScript 中利用,以创建更好的用户体验(不进行 Ajax 调用或服务器端数据库查询)。

data-* 属性包括两部分:

  • 属性名不应该包含任何大写字母,并且在前缀 "data-" 之后必须有至少一个字符
  • 属性值可以是任意字符串

      

 

3.请描述一下cookies,sessionStorage和localStorage的区别?

sessionStorage和localStorage是HTML5 Web Storage API提供的,可以方便的在web请求之间保存数据。有了本地数据,就可以避免数据在浏览器和服务器间不必要地来回传递。sessionStorage、localStorage、cookie都是在浏览器端存储的数据,其中sessionStorage的概念很特别,引入了一个“浏览器窗口”的概念。sessionStorage是在同源的同窗口(或tab)中,始终存在的数据。也就是说只要这个浏览器窗口没有关闭,即使刷新页面或进入同源另一页面,数据仍然存在。关闭窗口后,sessionStorage即被销毁。同时“独立”打开的不同窗口,即使是同一页面,sessionStorage对象也是不同的cookies会发送到服务器端。其余两个不会。Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie。

  • Firefox每个域名cookie限制为50个。
  • Opera每个域名cookie限制为30个。
  • Firefox和Safari允许cookie多达4097个字节,包括名(name)、值(value)和等号。
  • Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号。
  • InternetExplorer允许cookie多达4095个字节,包括:名(name)、值(value)和等号。

 

4.解释下浮动和它的工作原理。

关于浮动我们需要了解,浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。要想使元素浮动,必须为元素设置一个宽度(width)。虽然浮动元素不是文档流之中,但是它浮动后所处的位置依然是在浮动之前的水平方向上。由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样,下面的元素填补原来的位置。有些元素会在浮动元素的下方,但是这些元素的内容并不一定会被浮动的元素所遮盖,对内联元素进行定位时,这些元素会考虑浮动元素的边界,会围绕着浮动元素放置也可以把浮动元素想象成是被块元素忽略的元素,而内联元素会关注浮动元素的。  

5.列举不同的清除浮动的技巧,并指出它们各自适用的使用场景。

  • 1.使用空标签清除浮动。这种方法是在所有浮动标签后面添加一个空标签定义css clear:both.弊端就是增加了无意义标签。
  • 2.使用overflow。给包含浮动元素的父标签添加css属性overflow:auto;zoom:1;zoom:1用于兼容IE6。
  • 3.使用after伪对象清除浮动。该方法只适用于非IE浏览器。具体写法可参照以下示例。使用中需注意以下几点。一、该方法中必须为需要清除浮动元素的伪对象中设置height:0,否则该元素会比实际高出若干像素;二、content属性是必须的,但其值可以为空,content属性的值设为”.”,空亦是可以的。
  • 4.浮动外部元素

6.你熟悉SVG样式的书写吗?

SVG 意为可缩放矢量图形(Scalable Vector Graphics)。

什么是SVG?

  • SVG 指可伸缩矢量图形 (Scalable Vector Graphics)
  • SVG 用来定义用于网络的基于矢量的图形
  • SVG 使用 XML 格式定义图形
  • SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失
  • SVG 是万维网联盟的标准
  • SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体

示例:

1 <?xml version="1.0" standalone="no"?>
2     <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3     <svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
4         <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red"/>
5     </svg>

 

7.列出你所知道的display属性的全部值。

display属性的值列表如下:

 

8.解释下JavaScript中this是如何工作的。

this永远指向函数运行时所在的对象,而不是函数被创建时所在的对象。匿名函数或不处于任何对象中的函数指向window 。

1.如果是call,apply,with,指定的this是谁,就是谁。

2.普通的函数调用,函数被谁调用,this就是谁。

 

9.描述以下变量的区别:null,undefined或undeclared?

JavaScript的最初版本是这样区分的:null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。

但是,上面这样的区分,在实践中很快就被证明不可行。目前,null和undefined基本是同义的,只有一些细微的差别。

null表示"没有对象",即该处不应该有值。典型用法是:

  • 用来初始化一个变量,这个变量可能被赋值为一个对象。
  • 用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象。
  • 当函数的参数期望是对象时,被用作参数传入。
  • 当函数的返回值期望是对象时,被用作返回值传出。
  • 作为对象原型链的终点。

undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:

  • 变量被声明了,但没有赋值时,就等于undefined。
  • 调用函数时,应该提供的参数没有提供,该参数等于undefined。
  • 对象没有赋值的属性,该属性的值为undefined。
  • 函数没有返回值时,默认返回undefined。

 

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

媒体查询,就是响应式布局。通过不同的媒介类型和条件定义样式表规则。媒介查询让CSS可以更精确作用于不同的媒介类型和同一媒介的不同条件。

语法结构及用法:@media 设备名 only (选取条件) not (选取条件) and(设备选取条件),设备二{sRules}。

示例:

 1 /* 当浏览器的可视区域小于980px */
 2 @media screen and (max-width: 980px) {
 3   #wrap {width: 90%; margin:0 auto;}
 4   #content {width: 60%;padding: 5%;}
 5   #sidebar {width: 30%;}
 6   #footer {padding: 8% 5%;margin-bottom: 10px;}
 7 }
 8 /* 当浏览器的可视区域小于650px */
 9 @media screen and (max-width: 650px) {
10   #header {height: auto;}
11   #searchform {position: absolute;top: 5px;right: 0;}
12   #content {width: auto; float: none; margin: 20px 0;}
13   #sidebar {width: 100%; float: none; margin: 0;}
14 }
原文地址:https://www.cnblogs.com/SF9924/p/14183636.html