js的面试题(一)

函数式编程

1. 什么是函数式编程

简单来说,函数式编程是一种编程范式,也就是如何编写程序的方法论。它属于“结构化编程”的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。

2. 特点

①只使用表达式,不使用语句。也就是说,每一步都是单纯的运算,而且都有返回值。
②没有“副作用”(“副作用”指的是函数内部与外部互动【最典型的就是修改全局变量的值】,产生运算以外的其它结果。),函数要保持独立,所有功能就是返回一个新的值,没有其他行为,尤其是不得修改外部变量的值。
③不修改状态
④引用透明性,如果提供同样的输入,那么函数总是返回同样的结果。这有助于验证正确性、简化算法,甚至有助于找出优化它的方法。
⑤副作用,是修改系统状态的语言结构。

3. 优点

①代码简洁,开发快速。函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快。
②接近自然语言,易于理解。
③更方便的代码管理。函数式编程不依赖、也不会改变外界的状态只要给定输入参数,返回的结果必定相同。因此,每一个函数都可以被看做独立单元,很有利于进行单元测试(unit testing)和除错(debugging),以及模块化组合。
④易于“并发编程”
⑤代码的热升级。只要保证接口不变,内部实现是外部无关的。所以,可以在运行状态下直接升级代码,不需要重启,也不需要停机。

js垃圾回收机制

1. 什么是垃圾回收机制

它主要是由一个叫垃圾收集器(garbage collector,简称GC)的后台进程负责监控、清理对象,并及时回收空闲内存。

2. 原理

垃圾收集器会找出那些不再继续使用的变量,然后释放其内存,为此,垃圾收集器会按照固定的时间间隔(或者代码中预定的手机时间),周期性的执行这一操作。

一个页面从输入URL到加载显示完成,这个过程发生了什么?

①浏览器根据请求的URL交给DNS域名解析,找到真实的IP,向服务器发起请求;
②服务器交给后台处理完成后返回数据,浏览器接收文件(HTML、CSS、JavaScript等);
③浏览器对加载到的资源(HTML、CSS、JavaScript等)进行语法解析,构建相应的内部数据结构(DOM树、CSS树、render树等);
④载入解析到的资源文件、渲染页面、完成。

get和post的区别

get产生一个tcp数据包,post产生两个。
get请求时会把headers和data数据一起发送出去;
post请求时,浏览器先发送headers ,服务器100继续,浏览器再发送data。

js有哪些数据类型

基本类型:字符串(string)、数字(number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol
引用数据类型:对象(Object)、数组(Array)、函数(Function)
注:Symbol是ES6引入了一种新的原始数据类型,表示独一无二的值。

js创建对象有几种方式

工厂模式

就是将创建对象的语句放在一个函数里,通过传入参数来创建特定对象,最后返回创建的对象。

工厂模式虽然可以创建多个相似的对象,但却不能解决对象标识的问题,即怎么知道一个对象的类型。

构造函数模式

构造函数模式是Java语言创建对象的通用方式。构造函数的函数名首字母是大写,而普通函数首字母则是大写。

与工厂模式相比,用构造模式创建对象有以下几点不同:
1. 没有显示地创建对象
2. 直接将属性和方法赋给this对象
3. 没有return语句

此外,还要注意到在创建Student的实例时,必须要使用new操作符,创建的实例对象将有一个constructor(构造器)属性,指向Person构造函数。

调用构造函数创建对象经过了以下几个过程:

1.创建一个新对象
2.将构造函数的作用域赋给新对象(因此this就指向了这个新对象)
3.执行构造函数中的代码
4.返回新对象(不需要显式返回)

缺点:每个方法都要在每个实例上创建一遍。

也就是说通过构造函数实例化的多个对象的方法,是多个不同的方法,但它们内部的代码以及实现的功能是相同的,这就造成了一定的资源浪费。

原型模式

js中,每个函数都有一个prototype属性,它是一个指针,指向一个对象,叫做原型对象,原型对象包含了可以由特定类型的所有实例对象共享的属性和方法。此外,这个对象有一个与生自来的属性constructor,指向创建对象的构造方法。

使用原型模式可以让所有的实例共享原型对象中的属性和方法,也就是说,不必再构造函数中定义对象实例的信息。

其它模式

除了以上几种常见的模式外,批量创建对象的方式还有

  • 动态原型模式:仅在第一次调用构造函数时,将方法赋给原型对象的相应属性,其他示例的处理方式同构造函数模式
  • 寄生构造函数模式:仅仅封装创建对象的代码,然后再返回新创建的对象,仍使用new操作符调用
  • 稳妥构造函数模式:没有公共属性,只有私有变量和方法,以及一些get/set方法,用以处理私有变量。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茜茜--浅瞳々

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值