腾讯实习生面试-笔试

腾讯实习生面试-笔试

之前投了腾讯的实习生,因为已经找到实习的原因,给拒绝了,不知道后来为啥又给我发了面试邮件我也想试试,结果就去了。
然后面试的话面试官问的问题很广知识很基础,还问到了web安全。。。。。我是真没想到啊全程蒙蔽…
面试完以后接着就让笔试,发了3道笔试题 如下:

腾讯实习生面试-笔试_第1张图片
看起来有点简单,但是对于我这个算法小白来说 第一题难度跟山一样,可能数据结构没学好吧, 哈哈哈。

后来答出来发给了面试官 还不错。

第一题(自己当时写的贼复杂,这是参考的别人的)

const linkListReverse = function(head,k) {
    //用于进行链表转换
    let pre = null,cur = head;
    let p = head;
    //查找长度是否满足反转的数量
    for(let i = 0;i<k;i++){
        if(p == null) return head;
        p = p.next;
    }
    //对该k个链表元素进行反转
    for(let j = 0;j<k;j++){
        let temp = cur.next;
        cur.next = pre;
        pre = cur;
        cur = temp;
    }
    //反转后。head.next已经成为当前反转后链表的最后一个元素,它的指向将是下一个递归的开始点
    //而此时pre已经是最后一个元素,cur是下一个范围的第一元素
    head.next = linkListReverse(cur,k);
    return pre;
}

第二题

const formateMoney = function(money) {
    let arr = money.split('').reverse()
    // 结果数组
    let res = []
    // 计数
    let count = 0
    while(arr.length) {
        count++
        res.unshift(arr.shift())
        // 每三位进行分割
        if(count % 3 === 0) {
            res.unshift(',')
        }
    }
    if(res[0] === ',') {
        res.shift()
    }
    return res.join('')
}

第三题

const bigNumAdd = function(num1,num2) {
    let n1 = num1.split('').reverse()
    let n2 = num2.split('').reverse()
    const res = []
    // 计数
    let count = 0
    // 进位
    let add = 0
    // 保证n1为大数
    if (n1.length < n2.length) {
        var temp = n2
        n2 = n1 
        n1 = temp
    }
    while(count < n1.length) {
        let sum = parseInt(n1[count]) + (parseInt(n2[count]) || 0) + add
        if (sum > 9) {
            sum = sum - 10
            add = 1
        } else {
            add = 0
        }
        res.push(sum)
        count++
    }
    if(add) {
        res.push(1)
    }
    return res.reverse().join('')
}

最后是凉凉了的,哈哈,大家加油!!!!

你可能感兴趣的:(面试,面试)