阿里巴巴前端实习生第一面(笔试+简单电话面试)

  1. 笔试
    // 请尽量在半小时内完成作答
    
    // ====================
    // 题目:为字符串原型增加 reverse() 方法,调用后将自己倒序返回
    // 代码写在这里↓↓↓↓↓
    
    String.prototype.reverse = function () {
        return this.split('').reverse().join('')
    }
    
    // 代码写在这里↑↑↑↑↑
    console.log("123".reverse()); // "321"
    
    
    
    // ====================
    // 题目:有一个数组,里面只存在 * 和 字母,如 ['*', 'd', 'c', '*', 'e']。
    // 实现一个函数把这个数组中的所有星号移动到左边,所有的字母移动到右边,所有字母的顺序不能改变。
    function move(array) {
        // 代码写在这里↓↓↓↓↓
        let left = []
        let right = []
        array.forEach(item=>{
            if(item === '*'){
                left.push('*')
            }else {
                right.push(item)
            }
        })
        return [...left,...right]
        // 代码写在这里↑↑↑↑↑
    }
    const arr = ['*', 'd', 'c', '*', 'e'];
    move(arr);
    console.log(arr); // ['*', '*', 'd', 'c', 'e']
    
    
    
    // ====================
    // 题目:将字符串转为驼峰格式
    function change(string) {
        // 代码写在这里↓↓↓↓↓
        var str = string.split('-');
        for(let i = 1;i<str.left;i++){
            str[i] = str[i][0].toUpperCase() + str[i].substring(1)
        }
        return str.join('')
    
        // 代码写在这里↑↑↑↑↑
    }
    console.log(change("border-bottom-color")); // 输出 borderBottomColor
    
    
    
    // ====================
    // 题目:实现一个函数,比较两个版本号的大小。返回 1(大于)/0(等于)/-1(小于)
    function compareVer(ver1, ver2) {
        // 代码写在这里↓↓↓↓↓
        ver1 = ver1.split('.')
        ver2 = ver2.split('.')
        let sameCount = 0
        for (let i = 0;i<ver1.length;i++){
            if( parseInt(ver1[i])< parseInt(ver2[i])){
                return -1
            } else if( parseInt(ver1[i]) == parseInt(ver2[i])){
                sameCount++
            }
        }
        if(sameCount ===ver1.length ){
            return 0
        }
        return 1
        // 代码写在这里↑↑↑↑↑
    }
    console.log(compareVer("1.0.20", "1.1.0")); // 1.0.20 < 1.1.0 返回 -1
    console.log(compareVer("1.0.20", "1.0.3")); // 1.0.20 > 1.0.3 返回 1
    
    
    
    // ====================
    // 题目:实现一个函数,效果同 document.getElementById(通过遍历 node.childNodes 和 node.id 属性实现)
    function getElementById(findId) {
        // 代码写在这里↓↓↓↓↓
        var star  = document.body
        function find(node,id) {
            for (let item in Array.from(node.childNodes)){
                if( item.id === id){
                    return item
                }else {
                    return find(node.childNodes)
                }
            }
        }
        return  find(star,findId)
    
        // 代码写在这里↑↑↑↑↑
    } 

  2. 面试
    面试官很友好,对笔试代码进行了一些讲解,并对应提出一些问题,还问了一些项目的经历等等,阿里真不愧是大公司啊,面试套路完全不一样,希望接下来的面试顺利吧!
  3. 面试结果下午就出来了,emmm凉了哈哈哈,果然自己还是要多练练
    整体技术热情和能力不错,但是在技术成果/沉淀 上还是有欠缺,面试结果是未通过。
#实习##面经##阿里巴巴##前端工程师#
全部评论
驼峰题写一个正则的解法: function solution(str) {   return str.replace(/-\w/g, (word) => { // 捕获-和后面的字母     return word[1].toUpperCase()          // 返回后面的字母的大写形式   }) }
2 回复
分享
发布于 2021-02-25 17:53
老哥在哪投的简历呀
点赞 回复
分享
发布于 2021-02-25 12:49
百信银行
校招火热招聘中
官网直投
驼峰转换那题,str.length写成了str.left,另外楼主投哪的鸭
点赞 回复
分享
发布于 2021-02-25 16:28
版本比较那题,ver1是2.0.1,ver2是1.1.1,输出为-1
点赞 回复
分享
发布于 2021-02-25 16:40
功底深厚呀
点赞 回复
分享
发布于 2021-02-25 17:15
我是明天笔试,阿里云原生。楼主tql,学习一下
点赞 回复
分享
发布于 2021-02-25 19:00
lz,版本号那道题写错了,考虑过(compareVer("1.0.20", "1.0.20.1"))这种情况吗?
点赞 回复
分享
发布于 2021-02-26 18:23
写的不挺好的嘛。。这么严格吗
点赞 回复
分享
发布于 2021-03-02 02:16
最后一题那个find递归应该要传两个参数的吧😳
点赞 回复
分享
发布于 2021-03-03 20:09
lz是研究生嘛
点赞 回复
分享
发布于 2021-03-04 13:40
请问笔试可以用java写吗?
点赞 回复
分享
发布于 2021-03-11 08:50

相关推荐

投递珠海市杰理科技股份有限公司等公司7个岗位
点赞 评论 收藏
转发
11 56 评论
分享
牛客网
牛客企业服务