网易中高级前端面试题

1、介绍Redux,主要解决什么问题

	介绍redux:
	官方解释:Redux是JavaScript状态容器,提供可预测化的状态管理,
	个人认为:redux是为解决react组件间通信和组件间状态共享而提出的一种解决方案,主要包括3个部分
	store+action+reducer

	store:用来存储当前react状态机(state)的对象,connect后,store的改变就会驱动react的生命周期
	循环,从而驱动页面状态的改变
	
	action: 用于接受state的改变命令,是改变state的唯一途径和入口。一般使用时在当前组件里面调用相关的		    action方法,通常把和后端的通信(ajax)函数放在这里

    reducer: action的处理器,用于修改store中state的值,返回一个新的state值
主要解决什么问题:
	1、组件间通信
	
	由于connect后,各connect组件是共享store的,所以各组件可以通过store来进行数据通信,当然这里必须遵守redux的一些规范,比如遵守 view -> aciton -> reducer的改变state的路径
	
	2、通过对象驱动组件进入生命周期
	
	对于一个react组件来说,只能对自己的state改变驱动自己的生命周期,或者通过外部传入的props进行驱动。通过redux,可以通过store中改变的state,来驱动组件进行update
	
	3、方便进行数据管理和切片
	
	redux通过对store的管理和控制,可以很方便的实现页面状态的管理和切片。通过切片的操作,可以轻松的实现redo之类的操作

2、表单可以跨域吗

	form表单提交没有跨域问题,但ajax提交有跨域问题

在这里插入图片描述

3、promise与async await的区别

在这里插入图片描述

在这里插入图片描述

4、请求性能优化之防抖与节流

防抖(debounce):在函数需要频繁触发时,只有当有足够空闲的时间时,才执行一次。就好像在百度搜索时,每次输入之后都有联想词弹出,这个控制联想词的方法就不可能是输入框内容一改变就触发的,他一定是当你结束输入一段时间之后才会触发。

函数防抖:

function debounce(handle, delay) {
	var timer = null;
	return function() {
		var _this = this,
		    _arg = arguments;
		clearTimeout(timer);
		timer = setTimeout(function() {
			handle.apply(_this, _arg);
		}, delay);
	}
} /

函数节流
节流(thorttle):预定一个函数只有在大于等于执行周期时才执行,周期内调用不执行。就好像你在淘宝抢购某一件限量热卖商品时,你不断点刷新点购买,可是总有一段时间你点上是没有效果,这里就用到了节流,就是怕点的太快导致系统出现bug。

区别:在发生持续触发事件时,防抖设置事件延迟并在空闲时间去触发事件,而节流则是隔一定的时间触发一次。

函数节流运用的实际场景有:窗口调整,页面滚动,抢购疯狂点击等等。

			/*
            节流函数
            handle:调用的函数
            wait:等待时间(毫秒)
        */
        function throttle(handle, wait) {
            var lastTime = 0;
            return function () {
                //new Date().getTime()从1970到当前所过去的时间(毫秒)
                var nowTime = new Date().getTime();
                //时间差大于等于等待时间,就去执行函数
                if (nowTime - lastTime >= wait) {
                    handle.apply(this, arguments);
                    lastTime = nowTime;
                }
            }
        }

5、搜索请求中文如何请求

前台需要对中文参数进行编码,调用js方法encodeURI(url),将url编码,然后请求

6、通过什么做到并发请求

用Promise,有Promise.all
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值