遇到过的前端面试题目

1.什么是闭包?

闭包是一个可以读取其他函数内部变量的函数;本质上是将函数内部和函数外部嫁接起来的桥梁。优点是能读取函数内部的变量,能保证这些变量永远保存在内存中。缺点:一是使用不当时会导致内存泄露,解决方法是在退出函数之前,将不使用的局部变量全部删除,二是会改变父级的值。

2.如何解决js的数组去重。(百度上面有很多种,可以看看)

数组递归去重

Array.prototype.distinct = function (){
  var arr = this ,
   len = arr.length;
  arr.sort( function (a,b){  //对数组进行排序才能方便比较
   return a - b;
  })
  function loop(index){
   if (index >= 1){
    if (arr[index] === arr[index-1]){
     arr.splice(index,1);
    }
    loop(index - 1); //递归loop函数进行去重
   }
  }
  loop(len-1);
  return arr;
};
var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,56,45,56];
var b = a.distinct();
console.log(b.toString());  //1,2,3,4,5,6,45,56


3.如何优化前端性能?

(1).减少http请求(css雪碧图)

(2).css放在顶部,js放在底部

(3).合并请求

4.ajax请求数据的方法?

(1)原生态方法

 1.创建XMLHTTPRequest对象

  2.使用open方法设置和服务器的交互信息

  3.设置发送的数据,开始和服务器端交互

  4.注册事件

  5.更新界面

get请求:

//步骤一:创建异步对象
var ajax = new XMLHttpRequest();
//步骤二:设置请求的url参数,参数一是请求的类型,参数二是请求的url,可以带参数,动态的传递参数starName到服务端
ajax.open('get','getStar.php?starName='+name);
//步骤三:发送请求
ajax.send();
//步骤四:注册事件 onreadystatechange 状态改变就会调用
ajax.onreadystatechange = function () {
if (ajax.readyState==4 &&ajax.status==200) { //步骤五 如果能够进到这个判断 说明 数据 完美的回来了,并且请求的页面是存在的
    console.log(xml.responseText);//输入相应的内容
  }
}

post请求:

//创建异步对象  
var xhr = new XMLHttpRequest();
//设置请求的类型及url
//post请求一定要添加请求头才行不然会报错
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
 xhr.open('post', '02.post.php' );
//发送请求
xhr.send('name=fox&age=18');
xhr.onreadystatechange = function () {
    // 这步为判断服务器是否正确响应
  if (xhr.readyState == 4 && xhr.status == 200) {
    console.log(xhr.responseText);
  } 
};

5.事件代理:

事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。

6.es6十大特性:

  1. Default Parameters(默认参数) in ES6
  2. Template Literals (模板文本)in ES6
  3. Multi-line Strings (多行字符串)in ES6
  4. Destructuring Assignment (解构赋值)in ES6
  5. Enhanced Object Literals (增强的对象文本)in ES6
  6. Arrow Functions (箭头函数)in ES6
  7. Promises in ES6
  8. Block-Scoped Constructs Let and Const(块作用域构造Let and Const)
  9. Classes(类) in ES6
  10. Modules(模块) in ES6

7.cookie和session的区别和用法

 
 

cookie和session都是用来跟踪浏览器用户身份的会话方式。

cookie与session的区别是, cookie数据保存在客户端,session数据保存在服务器端

session是放在服务器上的,过期与否取决于服务期的设定,cookie是存在客户端的,过去与否可以在cookie生成的时候设置进去。

(1)、cookie数据存放在客户的浏览器上,
session数据放在服务器上
(2)、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session
(3)、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE
(4)、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。
觉得我的答案不完整的话,可以自行查阅百度~

猜你喜欢

转载自blog.csdn.net/qq_38950979/article/details/80359209