前端基础面试题集合

336 阅读3分钟

HTML5

1. 语义化标签

  • 代码结构清晰,方便阅读,有利于团队合作开发。
  • 方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以语义的方式来渲染网页。
  • 有利于搜索引擎优化(SEO)。
  • H5 新语义化标签:下图

2. canvas

  • Canvas是HTML5新增的组件,它就像一块幕布,可以用JavaScript在上面绘制各种图表、动画等。
  • 没有Canvas的年代,绘图只能借助Flash插件实现,页面不得不用JavaScript和Flash进行交互。有了Canvas,我们就再也不需要Flash了,直接使用JavaScript完成绘制。
  • Canvas API用于网页实时生成图像,JavaScript通过API来操作图像内容。这样做的优点是:减少HTTP请求数,减少下载的数据,加快网页载入时间,可以对图像进行实时处理。

3. 新表单属性

  • placehoder 属性,简短的提示在用户输入值前会显示在输入域上。即我们常见的输入框默认提示,在用户输入后消失。
  • required 属性,是一个 boolean 属性。要求填写的输入域不能为空
  • pattern 属性,描述了一个正则表达式用于验证<input> 元素的值。
  • min 和 max 属性,设置元素最小值与最大值。
  • step 属性,为输入域规定合法的数字间隔。
  • height 和 width 属性,用于 image 类型的 <input> 标签的图像高度和宽度。
  • autofocus 属性,是一个 boolean 属性。规定在页面加载时,域自动地获得焦点。
  • multiple 属性 ,是一个 boolean 属性。规定<input> 元素中可选择多个值。 

4. 手写ajax的实现过程

var xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
xhr.onreadtstatechange = function () {
    if (xhr.readystate == 4) {
        //响应内容解析完成,可以在客户端调用了
        if (xhr.status == 200) {
            //客户端的请求成功了
            alert(xhr.responseText);
        }
    }
}
xhr.send(null);

5. 什么是跨域及解决方法?

什么是 ajax 跨域

  • 浏览器有同源策略,不允许ajax访问其他域名下的接口数据
  • 所有的跨域请求都必须经过信息提供方允许,如果未经允许就能获取,那是浏览器同源策略出现的漏洞。
  • 跨域条件:请求url中协议、域名、端口任何一个不同,都属于跨域

有三个标签允许跨域加载,浏览器不会限制

  • <img src="">但是,图片提供方可以通过判断请求url是否属于公司内部域名,来确定是否返回正确图片(比如百度图片设置,仅百度可见),以此来做防盗链处理
  • <link href=""> 链接css
  • <script src=""></script> 链接js

跨域解决方法

  • 前端:使用jsonp

比如需要 跨域 访问a.js :aaa.com/a.js (注意: 服务器端不一定真实存在这个a.js,可以动态生成一个文件数据,然后返回给客户端)

那么,

前端需要和后端约定一个传入的参数字段,比如, jsonpCallback : jsonp1 然后前端要定义一下jsonp1这个函数 而后端返回这个函数的调用, 参数即是前端要获得的数据

  • 服务器端:设置http header
  • response.setHeader("Access-Control-Allow-Origin","http://a.com, http://b.com");

cookie、sessionStorage、loacalStorage 的区别

www.cnblogs.com/pengc/p/871…