3.22 阿里CCO电话一面

介绍项目

项目有上线吗

遇到的困难,怎么解决的

  • 引申出的问题:

nextTick 的作用

前后端分离的含义

SPA 的含义、优缺点

怎么解决 SEO 的问题?  SSR 服务器端渲染

怎么解决首次加载速度慢? 按需加载组件、SSR

 

路由跳转(前端路由问题?)

vuex 的作用、原理

设计 vuex 这样的状态管理的思路

 

  • 基础知识

JS 怎么监听数据的变化:

ES5 的 object.defineProperty() 方法,get 和 set 属性;

ES6 的 Proxy 对象:new Proxy 创建实例,可以拦截和监视外部对对象(被代理的对象)的访问。其中参数:handler 处理器,可以包含 set、get。

 

http 请求发送后经历的流程

CSS 中 display 的属性及其对应的含义

块元素与行内元素的区别

水平垂直居中的实现

 

  • 算法题

一个整型数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,找出总和最大的子数组(并返回总和)。

var maxSubArray = function (nums) {
    let res = nums[0];
    let sum = 0;
    for (let i = 1; i < nums.length; i++) {
        sum = nums[i] + Math.max(sum, 0);
        res = Math.max(res, sum);
    }
    return res;
};

思路:

动态规划问题,采用前缀和的方式来解决。

扫描数组 [-1,2,3,8,9,-23,60],首先进行累加,假设sum=0,则第一个数加上去sum = -1;

由于是负数,那么当加第二个数的时候,sum 肯定会比第二个数小。那么我们可以舍弃这个sum,从第二个数重新开始累加;

(但是这里要注意,有可能第一个 sum=-1 为最大的连续数列的和,因此需要保存下来 max=-1,以后每次比较sum与max,更新max)

2累加到9,sum和max都为22,再加-23,sum就为-1;

重新从60开始,并且60也大于max的22,就更新max为60。

 

扫描的过程中,只要 sum 还大于0,就累加后面的数,并且不断更新 max;

若 sum 小于0,就把sum清零,重新从下一个数开始累加。

 

如果要返回具体的最大子数组,就要在扫描中记录 max 开始和结束的元素序号

当sum小于0时,应该重新记录一个起点的序号,当总和大于原来的max(更新max)时,才能记录新的开始序号。

function maxQueue(arr){
    var max=0    //初始化
  	var sum=0

    var star=0  //最大数列的开始序号
    var end=0   //最大数列的结束序号
    var point=0   //当前记录sum的起点
    
    for(var i=0; i<arr.length; i++){
        sum += arr[i]
   
        if(sum>max) {   //当sum大于max时
            max=sum     //更新max
            star=point  //开始序号记录为起点   
            end=i       //结束序号记录为当前扫描的序号
        }
        if(sum<0) {   //当sum小于0
          sum=0      //sum清零
          point=i+1  //起点重新记录为下一个扫描的序号
        }       
    }
    return max
    //return arr.slice(star,end+1)
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值