2018web前端面试题总结 (7)

二十七、js的阻塞特性:所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等。
直到JS下载、解析、执行完毕后才开始继续并行下载其他资源并呈现内容。
为了提高用户体验,新一代浏览器都支持并行下载JS,但是JS下载仍然会阻塞其它资源的下载(例如.图片,css文件等)。
css阻塞:因为浏览器会维持html中css和js的顺序,样式表必须在嵌入的JS执行前先加载、解析完。
而嵌入的JS会阻塞后面的资源加载,所以就会出现上面CSS阻塞下载的情况。

二十八、meta元素可提供有关页面的元信息,比如针对搜索引擎和更新频度的描述和关键词

 

二十九: POST提交数据时四种常见格式

服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。

         setRequestHeader(“Content-type” , ”application/x-www-form-urlencoded”);

1)1. application/x-www-form-urlencoded 原生表单

2)2. multipart/form-data 表单上传文件

3)3. application/json

4)4. text/xml

三十:   HTTP请求方法

GET:获取资源      POST:传输文本

PUT:传输文件      DELETE:删除文件

HEAD:获得报文首部

OPTIONS:访问服务器端可以提交哪些请求方法

三十一: js实现图片上传到服务器和回显

<input type="file" value="" id = "input_file"

      accept="image/gif,image/jpeg,image/jpg,image/png,image/svg"    onchange="imgPreview(this,0)">

function imgPreview(fileDom,i) {

var file = fileDom.files[0];  //获取文件

reader.onload = function(e) {

document.getElementsByClassName('file-box')[i].style.background="url("+e.target.result+")no-repeat";//回显图片

          document.getElementsByClassName('file-box')[i].style.backgroundSize='200px 160px';

}

reader.readAsDataURL(file); //转码保存

}

//ajax请求

var formData = new FormData();

formData.append('photo', $('#input_file')[0].files[0]); 

$.ajax({})

三十二: 简述浏览器渲染过程

解析html以构建dom树 -> 构建render树(加上css) -> 布局render树 -> 绘制render树

三十三:  jQuery工作原理

1)jQuery采用的是构造函数模式进行开发的,jQuery是一个类

2)常用的方法(CSS、属性、筛选、事件、动画)都是定义在jQuery.prototype上的 ->只有jQuery的实例才能使用这些方法

三十四: Sessionid如何生成,由谁产生,保存在哪里?

sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。程序调用 HttpServletRequest.getSession(true)这样的语句时才被创建。存放:服务器端的内存中

三十五: Session和Cookie的区别与联系:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5、可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。

三十六: JSON.parse()与JSON.stringify()的区别

JSON.parse()从一个字符串中解析出json对象

JSON.stringify()从一个对象中解析出字符串

三十七:NaN 是什么?它的类型是什么?如何可靠地测试一个值是否等于 NaN ?

NAN:不是数字               类型:number

value!==value 为true就是nan(只有nan才会和自己不相等)

Number.isNaN()

三十八:javascript创建数组时,Array()和[]有什么区别

Array()通过调用数组构造函数生成,可以(8)直接定义数组长度,内存中开辟一个存储空间,比较耗资源

[]通过字面量定义数组,直接在内存中开辟一个存储字段,不耗资源

三十九: 定义函数时用 var foo = function () {} 和 function foo() {}有什么区别?

前者声明了一个变量,这个变量是个方法,是可以改变的

后者声明了一个方法,这个方法名字无法改变

本质变量和方法声明提前的问题

四十:写一个按照下面方式调用都能正常工作的sum方法

console.log(sum(2,3));  //输出Outputs 5

console.log(sum(2)(3)); //输出Outputs 5

function sum() {

          var num = arguments[0];

          if(arguments.length === 2) {

            return arguments[0] + arguments[1]

          } else {

            return function(sec) {

               return num + sec;

            }

          } 

        }

四十一:如果一个函数没有返回语句,此函数返回值是什么?

无返回语句返回Undefined

return; 返回null,起到中断方法执行效果

四十二: forEach()和map()的区别

Foreach:没有返回值,遍历数组对每个值进行处理

Map():有返回值,返回值组成一个新的数组

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjfsg.html