前端笔试题

457 阅读5分钟

HTML

1、HTML5的Web存储对象有两个,分别是sessionStoragelocalStorage

sessionStorage:将数据保存在session对象中。所谓session,是指用户在浏览,也就是用户浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。session对象可以用来保存在这段时间内所要求保存的任何数据

localStorage:将数据保存在客户端本地的硬件设备(通常指硬盘,也可以是其他硬件设备)中,即使浏览器被关闭了,该数据仍然存在,下次打开浏览器访问网站时仍然可以继续使用

这两者的区别:sessionStorage临时保存,而localStorage永久保存

2、当HTML页面加载完毕时触发的事件是onload()

3、localStoragecookie的区别

Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),(服务器告诉浏览器设置一下cookie),浏览器自动会将Cookie以key/value保存到某个目录下的文本文件内,下次请求同一网站时也会自动发送该Cookie给服务器,即添加在请求头部(前提是浏览器设置为启用cookie)。Cookie就是个小型文件(浏览器对cookie的内存大小是有限制的-------用来记录一些信息)

Cookie一般是由服务器端生成,localStorage存储在客户端,不参与服务器通信

4、HTML5中可以使用data-*自定义属性

data-* 属性用于存储页面或应用程序的私有自定义数据。

data-* 属性赋予我们在所有 HTML 元素上嵌入自定义 data 属性的能力。

存储的(自定义)数据能够被页面的 JavaScript 中利用,以创建更好的用户体验(不进行 Ajax 调用或服务器端数据库查询)。

data-* 属性包括两部分:

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

注释:用户代理会完全忽略前缀为 "data-" 的自定义属性。

5、

<!DOCTYPE>声明有助于浏览器中正确显示网页。

网络上有很多不同的文件,如果能够正确声明HTML的版本,浏览器就能正确显示网页内容。

<!DOCTYPE html> 告诉浏览器当前页面使用h5版本解析

6、alt与title的区别

  • alt是在图片不能正常加载时候显示的提示语

  • title属性是鼠标划上去显示的内容

7、form元素的enctype属性

  1. enctype属性在get请求中会被忽略,在post请求中才有效

  2. application/x-www-form-urlencoded表示会对特殊字符进行转义

  3. text/plain 以文本的形式进行编码,不会对特殊字符进行编码

  4. multipart/form-data向服务器发送二进制文件的时候有用,例如提交文件!!!

8、阻止事件冒泡

preventDefault() 阻止事件默认行为

stopPropagation() W3C标准的阻止冒泡

cancelBubble() ie的阻止冒泡

CSS

1、padding: 0 12px 20px 12px; 中的4个值按顺序代表的方向是什么()

上右下左

2、display:none、visibility:hidden、opacity:0 的区别

display:none:对应的元素不会在文档流中占据位置

visibility:hidden:虽然元素隐藏,但是对应的元素会在文档流中占据空间

opacity:0以透明度隐藏,对应元素的事件监听器还会触发

3、选择器

4、当一个元素设置为flex布局时,其子元素会自动变成block元素

Javascript

1、描述一下脚本<script>放在<head>和放到<body>底部的区别

<head>中的情况:脚本会优先加载,但加载过程中,<body>还没加载完,会使脚本访问不到<body>中的元素。 放<body>底部:脚本在<body>加载后加载,能够保证脚本有效地访问<body>的元素。 例外情况:脚本中没有访问<body>元素的情况下,两种加载方式效果一致。

2、正则表达式语法

使用字面量来创建正则表达式 语法:var 变量=/正则表达式/匹配模式

匹配模式参数:

  • 'i':忽略大小写
  • 'g':全局匹配模式

正则表达式语法

  • |:或者
  • []:[]里的内容也是或的关系,[ab]==a|b
  • [a-z]:任意小写字母
  • [A-Z]:任意大写字母
  • [A-z]:任意字母
  • [0-9]:任意数字
  • [^]:除了
  • {n}:正好出现n次
  • {m,n}:出现的次数在[m-n]这这个范围
  • {m,}:出现m次以上,包括m
  • +:至少一个,相当于{1,}
  • *: 0个或多个,相当于{0,}
  • ?:0个或1个,相当于{0,1}
  • ^:表示开头
  • $:表示结尾
  • .:表示任意字符

在正则表达式中使用\作为转义字符

  • \.:表示.
  • \\:表示\
  • \w:任意字母、数字、下划线,相当于[A-z0-9_]
  • \W:除了字母、数字、下划线,相当于[^A-z0-9_]
  • \d:匹配一个任意的数字,相当于[0-9]
  • \D:匹配一个非数字字符,相当于[^0-9]
  • \s:匹配任何空白字符,包括空格、制表符、换页符等等。相当于[\f\n\r\t\v]
  • \S:匹配任何非空白字符。相当于[^\f\n\r\t\v]
  • \b:匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'
  • \B:匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'

3、事件捕捉与事件冒泡

以下前端代码的运行结果是()

<div id="box1">
  <div id="box2">
    content
  </div>
<script>
const $ = document.querySelector.bind(document);
const box1 = $('#box1');
const box2 = $('#box2');
box1.addEventListener('click', () => {
  console.log('box1 true');
}, true);
box1.addEventListener('click', () => {
  console.log('box1 false');
}, false);
box2.addEventListener('click', () => {
  console.log('box2 true');
}, true);
box2.addEventListener('click', () => {
  console.log('box2 false');
}, false);
</script>

box1 true, box2 true, box2 false, box1 false

addEventListener的第三个参数true和false分别代表时间发生在捕捉阶段冒泡阶段

事件捕捉:事件从最不精确的对象(document对象)开始触发,然后到最精确的对象

事件冒泡:事件按照从最精确的对象到最不精确的对象(document对象)的顺序触发

addEventListener(type,callback,useCapture)事件的触发阶段

事件捕捉--->事件冒泡

其中userCapture参数

  • true表示在事件捕捉时触发
  • false表示在事件冒泡时触发

单击content

开始事件捕捉,document->…->box1->box2;触发了useCapture为true的事件 输出box1 true box2 true

开始事件冒泡,box2->box1->…->document;触发了useCapture为false的事件 输出box2 false box1 false

网络编程

1、常用的HTTP状态码

  • 2XX 成功
  1. 200 ok(请求成功)
  2. 204 no content(请求成功,但是没有结果返回)
  3. 206 partial content(客户端请求一部分资源,服务器成功响应,返回一范围资源)
  • 3XX 重定向
  1. 301 move permanently(永久性重定向)
  2. 302 found(临时性重定向)
  3. 303 see other(该状态码表示由于请求对应的资源存在着另一个 URI,应使用 GET方法定向获取请求的资源)
  4. 304 not modified(该状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况)
  5. 307 temporary redirect(临时重定向。该状态码与302 found 有着相同的含义。尽管302标准禁止POST变换成GET)
  • 4XX 客户端错误
  1. 400 bad request(请求报文存在语法错误)
  2. 401 unauthorized(发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息)
  3. 403 forbidden(请求被服务器拒绝了)
  4. 404 not found(服务器上无法找到请求的资源)
  • 5XX 服务器错误
  1. 500 internal server error(服务端执行请求时发生了错误)
  2. 503 service unavailable(服务器正在超负载或者停机维护,无法处理请求)

2、写出HTTP、HTTPS、FTP、SSH的默认端口号

  • HTTP(超文本协议):80/8080
  • FTP(文件传输):21
  • HTTPS:443
  • SSH(安全登录):22

数据结构

1、完全二叉树节点总数(2^n)-1,n代表深度,例如n=2代表共有2层

2、排序算法复杂度