前端面试汇总

1,cookie和session的应用场景和区别?

  cookie存于客户端,session存于服务器端。

  cookie应用场景:1,判断用户是否登录过网站;2,使用cookie来记录购物车,或者记录用户使用偏好来制定推送

  session应用场景:1,登录验证信息

  有效期不同 

  sessionStorage: 仅在当前浏览器关闭前有效 
  localStorage:始终有效 
  cookie:过期之前有效

  作用域不同 
  sessionStorage在打开的不同浏览器窗口不共享,即使同一页面 
  localStorage 在同源页面共享 
  cookie 同源页面共享

2,用户登录的实现?

  校验用户名,密码。用户信息存储在session中。

3,for(var i=0; i<10; i++){} alert(i);

  10 

  解释:for循环没有形成一个块级作用域,js设计的缺陷。可以采用es6 的let定义变量。let 定义的变量是块级作用域,函数内部对外部无影响。

4,JSONP原理 

  Ajax存在不能跨域请求数据的问题。而Web上调用js是不受跨域影响的。因为JSON数据格式恰好被Js支持,web客户端通过调用跨域服务器上动态生成的Js,从而达到跨域请求到JSON包的需求。 为了便于客户端调用JSON数据,形成了非正式的传输协议,也就是JSONP。 客户端传一个callback参数给跨域服务器,跨域服务器返回一个以callback为函数名包裹的JSON数据,这样客户端就可以处理跨域得到的JSON数据了。

5,问题:

  var a = {n: 1} var b = a; a.x = a = {n: 2}; console.log(a.x); console.log(b.x); 

  (a.x)->undefined 
  (b.x)->[object Object ] 

6,bom,dom分别是什么?

  bom:浏览器对象模型

  dom:document

7,请说明下面各种情况的执行结果,并注明产生对应结果的理由。 

  function doSomething() { 
    alert(this); 
  } 
  ① element.onclick = doSomething,点击element元素后。 
  ② element.onclick = function() {doSomething()}, 点击element元素后。 
  ③ 直接执行doSomething()。**

  1)弹出element object,通过函数赋值方式,this直接指向element对象; 
  2)弹出window object,this是写在doSomething这个函数里面的,而这种方式的事件绑定写法并没有将element对象传递给this,而在默认情况下this 指向window; 
  3)弹出window object,没有绑定对象的情况下this默认指向window。

8、请用JavaScript语言实现 sort 排序函数,要求:sort([5, 100, 6, 3, -12]) // 返回 [-12, 3, 5, 6, 100]。 

  var arr = [5,100,6,3,-12];

  var result = arr.sort(function(a,b){

    return a-b;

})

console.log(result);

9,前端性能优化的方式有哪些?

  1,减少http请求,合理设置http缓存

  2,使用浏览器缓存

  3,启用压缩

  4,雪碧图合并css图片,减少图片请求数量

  5,css放在页面顶部,js放在页面底部

  6,减少cookie传输

  7,减少dom查找,用变量缓存

  8,避免使用eval,eval函数效率特别低

  9,减少作用域链查找

10,阐述基础数据类型和引用数据类型的区别?

  1.内存使用:基本数据类型直接存放在栈内存里。而引用类型则是,内容存放在栈内存,地址存放在堆内存,访问时通过堆内存的地址找到栈内存的内容。

  2.变量赋值:基本数据类型是直接把值赋给变量。而引用类型是,把值的地址复制给新变量,通过地址再找到内容。

  基础数据类型:数值,字符,布尔

  引用数据类型:类,数组

11,for click的闭包问题?如何解决?

  形成闭包。

  参考链接:http://blog.csdn.net/yuli_zoe/article/details/43305855

12,跨域是什么?为什么会出现跨域的问题?跨域有什么解决方案/

  1,跨域,顾名思义。不同域名之间的访问。之所以会出现跨域的问题,主要是因为浏览器的安全访问机制,限制了不同域名之间的相互访问。

  解决方案:1,关闭浏览器的跨域安全设置。2,html5的postMessage支持跨域传输。postMessage(data,origin)。data:传输的数据,origin:目标窗口的源。

13,浏览器内核的作用?

  1,帮助浏览器来渲染网页的内容,将页面内容和排版代码转换为用户所见的视图。渲染引擎:渲染css 。js引擎。jscore  谷歌:v8

14,304错误?

  服务器告诉客户端原来缓存的文件有效,可以使用。

15,null和underfined的区别?

  在if语句中都直接转换成false。

  null==underfined 但 null!==underfined

  type of  null  是对象  type of underfined  为 'underfined'

  null 在数值计算中转换成0。underfined在数值计算中返回未NaN

  undefined表示变量声明但未初始化时的值,

  null表示准备用来保存对象,还没有真正保存对象的值。从逻辑角度看,null值表示一个空对象指针。

16,html5和html4声明的区别?

  html5:doc type Html  不用声明DTD

  html4 :需要声明DTD

17,判断浏览器的版本号,版本名称

  版本号:navigator.appVersion

  版本名称:navigator.appName

18,常见的js框架,css框架。

  js框架:angular.js,vue.js,react

  css框架:bootstrap,easyui

原文地址:https://www.cnblogs.com/shmily-code/p/7252766.html