前端—每天5道面试题(6)

1、JSON 的了解?

  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于JavaScript的一个子集。数据格式简单, 易于读写, 占用带宽小。

  格式:采用键值树的方式,{‘age’:'16'}

 

2、call()和apply的区别  

  apply()函数有两个参数:第一个参数是上下文,第二个参数是参数组成的数组。如果上下文是null,则使用全局对象代替。
  如:function.apply(this,[1,2,3]);
  call()的第一个参数是上下文,后续是实例传入的参数序列。
  如:function.call(this,1,2,3);

3、哪些常见操作会造成内存泄漏?

  内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
  垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。
  setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。
  闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)。

4、线程与进程的区别

  一个程序至少有一个进程,一个进程至少有一个线程。
  线程的划分尺度小于进程,使得多线程程序的并发性高。
  另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
  线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
  从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

 

5、如何解决跨域问题  

  JSONP:
  原理是:动态插入script标签,通过script标签引入一个js文件,这个js文件载入成功后会执行我们在url参数中指定的函数,并且会把我们需要的json数据作为参数传入。
  由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,为了实现跨域请求,可以通过script标签实现跨域请求,然后在服务端输出JSON数据并执行回调函数,从而解决了跨域的数据请求。
  优点是兼容性好,简单易用,支持浏览器与服务器双向通信。缺点是只支持GET请求。



  

 

 

 

 

 

 

 

原文链接:https://blog.csdn.net/qq_43291759/article/details/109746828

posted @ 2021-07-28 19:55  起风了1573  阅读(118)  评论(0)    收藏  举报