首页
社区
课程
招聘
[转帖]腾讯的笔试面试经历
发表于: 2017-3-3 16:51 3960

[转帖]腾讯的笔试面试经历

2017-3-3 16:51
3960

JS考察:
1
、基本数据类型:undefinednullStringNumberbooleanarrayobject
2
、有以下两个函数,定义一个对象使其拥有这两个函数属性。

function mobile(){

        return  'mobile';

    }

    function phone(){

        return 'phone';

    }

    var a = {};

    a.mobile = mobile();

    a.phone = phone();

console.log(a);

3、(考察了对象变量和堆内存)

var a = {n:10,m:20};

 var b = a;

 b.n = 30;

 console.log(a.n);

 console.log(b);

输出的结果是什么?

看了这个图就很明了了,变量a和变量b在堆内存空间中所指向的地址指针是相同的,所以当b改变时a也会改变。

4、(考察闭包)

var x = 20;

    var a = {

        x : 15,

        fn : function(){

            var x = 30;

            return function(){

                return this.x;

            };

        }

    };

    console.log(a.fn());

    console.log((a.fn())());

    console.log(a.fn()());

    console.log(a.fn()() == (a.fn())());

    console.log(a.fn().call(this));

console.log(a.fn().call(a));

(还有很多种情况的输出,当时我看到我就懵逼了o()o
先说一下输出的答案:
1)、function(){return this.x;}

2)20

3)、20

4)、true

5)、20

6)15


这道题中的this都是指向windows,所以this.x的值都为20,第1234种情况都很好理解,到第五第六种考察了call这个函数,call的用途:
// 1. 替换函数运行环境中的this

// 2. 传递参数

// 3. 运行函数

所以第六种是把this指向了a对象,所以输出的是a.x就为15
5、(数组去重复项,以下是我做的)

var arr = ['a','g','q','d','a','e','q'];

    Array.prototype.unique = function(){

        for(var i = 0; i < this.length; i++){

            for(var j = i+1; j < this.length; j++){

                if(this[i] == this[j]){

                    this.splice(j,1);

                }

            }

        }

        return this;

    };

    console.log(arr.unique());

6、编写一个函数fn(Number n),将数字转为大写输出,如输入123,输出一百二十三。

function fn(n){

        if(!/^([1-9]\d*)/.test(n)){

            return '非法数据';

        }

        var unit = '千百十亿千百十万千百十个';

        if(n.length > unit.length){

            return '数据过长';

        }

        var newStr = '';

        var nlength = n.length;

        unit = unit.substr(unit.length - nlength);

        for(var i = 0; i < nlength; i++){

            newStr += '零一二三四五六七八九'.charAt(n[i]) + unit.charAt(i);

        }

        newStr = newStr.substr(0,newStr.length-1);

        newStr = newStr.replace(/(||)/g,'').replace(/()+/g,'').replace(/(亿|)/g,'$1');

        return newStr;

    }

console.log(fn('205402002103'));

这题考察了正则表达式还有数组的操作。
【内容展示有限,可以加群下载,群文件会定期更新学习资料,以及练手小案例】
【web前端交流群0007群】群号618250199【定期更新群文件】
课工场官网注册UID获取免费学习视频课,http://www.kgc.cn/?tuin=7145

 


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
狂拽酷炫吊炸天,低调奢华有品位
2017-3-4 11:20
0
雪    币: 269
活跃值: (51)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
学习参考一下
2017-3-4 15:25
0
雪    币: 34
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
官网课程一起来“打价”,找群内管理员还可以折上折,快点行动吧~找群主598291783
2017-3-6 17:15
0
游客
登录 | 注册 方可回帖
返回
//