3.25 腾讯微信支付 一面

上来三道编程题

1、

题目比较简单,但是要考虑到示例中的两种情况。

实例1:没有?和后面的参数

示例2:city 没有参数值

function urlToObj(url){
	var obj = {}
	var newUrl = url.split('?')
    //考虑没有?后面参数的情况
    if(newUrl[1]) {
    	var arr = newUrl[1].split('#')[0].split('&')
        for (var i=0; i<arr.length; i++){
        	var item = arr[i].split('=')
        	obj[item[0]] = item[1] || ''  //考虑没有参数值的情况
        }
    }
  return obj
}

问:里面的 obj 可以用 const 定义吗

可以,const 声明的常量不能改变的是该常量的内存地址,当用 const 声明一个基本类型时,基本类型值就保存在它指向的那个地址中,所以无法改变。
当用 const 声明一个引用类型时,引用类型的内存地址是一个指针,该指针指向的地址才是它的数据,const 只能保证这个引用类型的指针不改变,而这个指针指向地址的数据可以改变。(对象的某个属性 obj.name、数组的某个元素 arr[0])

 

2、

图中方法:将数字转为字符串,再转为数组去反转,再拼接成字符串,跟原来的字符串比较。

不转成字符串的方法:除法取余数把每一位数字取出来,组成数组

function isPalindrome(num) {
	let i = 0
    const arr = []
    num = Math.abs(num)
	while(num) {
    	arr[i++] = num%10
        num = parseInt(num/10)
    }
  
    return arr.join('') === arr.reverse().join('')
}

 

3、

思路:

用两个点 a、b,从左上角的 1 开始,

a 一直往右走,走到最右然后向下走;

b 一直往下走,走到最下面然后往右走;

a、b 移动过程中总会形成一条对角线,定义一个函数实现打印 a、b 对角线上的数字。

打印对角线的函数:

有两个方向,斜向上或者斜向下,用一个 flag 来标记方向。

//打印对角线上的数字
function print(arr, aR, aC, bR, bC, flag) {
    let res = []
    // falg 为 true 时,从b点斜向上打印
    if (flag) {
        while (bR >= aR) {
            res.push(arr[bR--][bC++])
        }
    } else {
    // falg 为 false 时,从a点斜向下打印
        while (aR <= bR) {
            res.push(arr[aR++][aC--])
        }
    }
    return res
}

// 之字形输出矩阵
function zhi(matrix) {
    let aR = 0
    let aC = 0
    let bR = 0
    let bC = 0
    const endR = matrix[0][0] - 1
    const endC = matrix[0][1] - 1
    matrix = matrix.slice(1, endR + 2)

    let flag = true
    let res = []
    while (aR <= endR && bC <= endC) {
        res = res.concat(print(matrix, aR, aC, bR, bC, flag))
        //打印完一个对角线后,就把flag取反,并移动a、b点
        flag = !flag
        aC == endC ? aR++ : aC++
        bR == endR ? bC++ : bR++

    }
    return res
}

 

提问

介绍项目

程序上线了吗?

登陆模块怎么设计的,有考虑一些安全的问题吗?

懒登陆,用户密码有加密操作吗?

登陆之后怎么维护用户的登陆块?保存到哪里?

登陆time?应该是在用户名密码登陆之后,在后台校验一下用户名密码,再给前端返回一个类似token或者 线下id 之类的,前台以后再通信的时候就用这个 线下id 发送给后台。

保存登录的两种方法:session+cookie、token

 

从在浏览器输入一个链接到页面被渲染出来中间的过程是

每次请求时都会状态连接吗?   http 请求头有一个 connection: keep-alive / close,表示是否持续连接,浏览器每次请求是复用已建立好的请求,还是重新建立一个新的请求。

浏览器渲染页面的过程

重排(计算节点信息)和重绘(根据计算好的信息绘制页面)

https 传输验证的过程,是对称加密还是非对称加密?

为什么用两种结合的混合加密?

 

为什么浏览器会有同源策略?

虚拟DOM

浏览器缓存  localStorage、sessionStorage 的特点和区别

 

有上过计算机安全、数据结构的课吗

知道什么排序算法?

堆排序是稳定的排序算法吗?

稳定和不稳定?

 

反问技术栈:小程序、vue

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值