资讯专栏INFORMATION COLUMN

献上一套今年的腾讯前端笔试题给大家瞧瞧

SolomonXie / 3368人阅读

摘要:请写一段程序,对这个数组按年龄从小到大进行排序。我这边如下实现中的会一直停留在内存中。。。请写出下面程序中几个的结果我这边打印如下请简述对的理解,并列举一些架构的框架。和碰撞的原理是什么。

1、请写出下面 JS 程序中几个 alert 的结果:

var a = 100;
function fn() {
    alert(a);
    var a = 200;
    alert(a);
}
fn();
alert(a);
var a;
alert(a);
var a = 300;
alert(a);

自己去控制台敲敲就知道了哈

2、请写出以下程序的输出

var obj1 = {name: "obj1", fn: function() {
    document.write(this.name);
}};
var obj2 = {name: "obj2"};
var obj3 = {name: "obj3"};
obj1.fn();
var newFn = obj1.fn;
newFn();
newFn.call(obj2);
obj3.fn = newFn;
obj3.fn();

自己去控制台敲敲就知道了哈

3、一个数组 par 中存放有多个人员的信息,每个人员的信息由年龄 age 和姓名 name 组成,如{age: 2, name: "xx"}。请写一段 JS 程序,对这个数组按年龄从小到大进行排序。

我这边如下实现:

function parSort(par) {
    return par.sort(function(arr1, arr2) {
        return arr1.age > arr2.age ? -1 : 1;
    });
}

4、有字符串 var = "abc345efgabcab",请写出 3 条 JS 语句分别实现如下 3 个功能:
1)去掉字符串中的a、b、c 字符,形成结果:"345efg"
2)将字符串中的数字用中括号括起来,形成结果:"abc3[5]efgabcab"
3)将字符串中的每个数字的值分别乘以 2,形成结果:"abc6810efgabcab"

我这边如下实现:

// 1)
str.replace(/([a-c])/g, "");
// 2)
str.replace(/(d)/g, "[$1]");
// 3)
str.replace(/(d)/g, function(num) {return num*2;});

5、请写一段 JS 程序类,定义一个列表类List,该类包含两个成员:属性 length(表示列表中的元素个数)和方法 add (像列表中添加元素),其中要求构造函数和 add 方法的参数为动态参数。

我这边如下实现:

function List() {
    this["_data"] = [];
    for (var ele in arguments) {
        this._data.push(arguments[ele]);
    }
    this.length = this._data.length;
}

List.prototype = {
    construct: List,
    add: function() {
        for (var ele in arguments) {
            this._data.push(arguments[ele]);
        }
        this.length = this._data.length;
    }
}

6、请问以前 JS 程序有什么问题?应该如何优化?

function setStyle(element) {
    element.style.fontWeight = "bold";
    element.style.textDecoration = "none";
    element.style.color = "#000000";
}

我这边优化如下:

function setStyle(element) {
    if (!element.style) {
        return;
    }
    var eleStyle = element.style;
    eleStyle.fontWeight = "bold";
    eleStyle.textDecoration = "none";
    eleStyle.color = "#000000";
}

7、请写出一下正则表达式:
1)匹配一个全部是数字的字符串
2)提取一个 url 所使用的协议类型如 http、ftp 和 host 名称

我这边实现如下:

// 1)
var str = "1234";
/^d+$/.test(str);
// 2)
var str = "http://yangbai.me";
str.match(/(([a-zA-Z]{3,5})://)?(www.)?([a-zA-Z\_-]+).([a-zA-Z]+)$/);

8、请使用闭包的方式,写一段 JS 程序实现如下功能:函数每调用一次则该函数的返回值加 1。

我这边如下实现:

function A() {
    var count = 0;
    function B() {
        count++;
        return count;
    }
    return B;
}

var plus = A();
//A中的count会一直停留在内存中。。。
plus();// 0
plus(); // 1
plus(); // 2

9、请写出下面 JS 程序中几个 document.write 的结果:

function Parent() {
    this.a = 1;
    this.b = [1, 2, this.a];
    this.c = {demo: 5};
    this.show = function() {
        document.write(this.a + " " + this.c.demo + ":" + this.b + "
") } } function Child() { this.a = 2; this.change = function() { this.b.push(this.a); this.a = this.b.length; this.c.demo = this.a++; } } Child.prototype = new Parent(); var parent = new Parent(); var child1 = new Child(); var child2 = new Child(); child1.a = 11; child2.a = 12; parent.show(); child1.show(); child2.show(); child1.change(); child2.change(); parent.show(); child1.show(); child2.show();

我这边打印如下:

1 5:1,2,1
11 5:1,2,1
12 5:1,2,1
1 5:1,2,1
5 5:1,2,1,11,12
6 5:1,2,1,11,12

10、请简述对 MVC 的理解,并列举一些 MVC 架构的 js 框架。

来吧,各抒己见......

11、请用 js 程序实现二分算法。

我这边如下实现:

/**
 * 简单二分查找实现【数组必须有序】
 * @param  {[type]} arr   [description]
 * @param  {[type]} num   [description]
 * @param  {[type]} start [description]
 * @param  {[type]} end   [description]
 * @return {[type]}       [description]
 */
function binaryFind(arr, num, start, end) {
    start = start || 0;
    end = end || arr.length;
    var mid = Math.floor((start + end) / 2);
    var midVal = arr[mid];
    if (start >= end) {
        return false;
    }
    if (midVal === num) {
        return "arr[" + mid + "] = " + midVal;
    } else {
        if (midVal > num) {
            return binaryFind(arr, num, 0, mid);
        } else {
            return binaryFind(arr, num, mid+1);
        }
    }
}

12、有这样一个 URL:http://vip.qq.com/a.php?a=1&b...,请写一段 JS 程序提取 URL 中的各个参数(参数名和参数个数不确定),将其按 key-value 形式返回到一个 json 结构中,如{a:"1",b:"2",c:"",d:"xxx",e:undefined}。

我这边实现如下:

/**
 * 解析url参数为对象 
 * @param  {[type]} url [description]
 * @return {[type]}     [description]
 */
function parseUrl(url) {
    url = url.toString();
    var ret = {};
    var urlArr = url.split("?");
    if (urlArr.length < 2) {
        return ret;
    }
    var paramsArr = urlArr[1].split("&");
    var len = paramsArr.length;
    for (var i=0; i 1 ? arr[1] : undefined;
    }
    return ret;
}

13、XSS 原理是什么?怎么防范呢?请写一个攻击和防御的例子。CSRF 和 hash 碰撞的原理是什么。怎么防范。

来吧,各抒己见......

14、请列举前端可以采取的常见优化方式

来吧,各抒己见......

15、请列举你所了解的跨域实现方法

来吧,各抒己见......

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78974.html

相关文章

  • 记一道腾讯前端试题

    摘要:我今年月投递了腾讯前端开发岗位,很可惜笔试题没通过,小时内给出答案回复面试官,我的答案太过于简单,所以后面面试官估计也就懒得回我这个菜鸡来嘤嘤嘤。 我今年4月投递了腾讯前端开发岗位,很可惜笔试题没通过,48小时内给出答案回复面试官,我的答案太过于简单,所以后面面试官估计也就懒得回我这个菜鸡来(嘤嘤嘤)。当然以我现在的眼光来重新看那份答案,都觉得那不应该是一个一年的前端开发工作者给出的答...

    孙吉亮 评论0 收藏0
  • 程序员也要懂一些保险和理财知识

    摘要:商业保险分四大险种重疾险,医疗险,寿险,意外险。意外险百万身故保险计划,基本保额万,保意外伤害和意外身故比较亲民的配置,一套组合下来,一年的费用大概是块,不算贵。 前言 首先,这不是一篇科普文, 关于保险和理财的一些`基本概念不会过多解释` 。 这篇文章主要是这段时间以来,我`个人的一些总结和收获`, 比较浅显,毕竟不是专业的, 分享给大家看看, 献丑了。 楼主是个小财迷, ...

    hiyayiji 评论0 收藏0
  • 程序员也要懂一些保险和理财知识

    摘要:商业保险分四大险种重疾险,医疗险,寿险,意外险。意外险百万身故保险计划,基本保额万,保意外伤害和意外身故比较亲民的配置,一套组合下来,一年的费用大概是块,不算贵。 前言 首先,这不是一篇科普文, 关于保险和理财的一些`基本概念不会过多解释` 。 这篇文章主要是这段时间以来,我`个人的一些总结和收获`, 比较浅显,毕竟不是专业的, 分享给大家看看, 献丑了。 楼主是个小财迷, ...

    PascalXie 评论0 收藏0
  • 前端开发应届生面试指南(含各大公司具体指南及面试真题)

    摘要:先介绍一下本人应届前端开发一枚,非科班出身,专业是化学,大学期间开始自学前端开发,在今年春招实习和秋招的时候投了一些公司,拿到一些京东拼多多虎牙等,总体来说还算满意,特地写一篇文章来总结一下面试的那些套路。 showImg(https://segmentfault.com/img/remote/1460000011897700); 先介绍一下本人应届前端开发一枚,非科班出身,专业是化学...

    sunnyxd 评论0 收藏0
  • 前端开发应届生面试指南(含各大公司具体指南及面试真题)

    摘要:先介绍一下本人应届前端开发一枚,非科班出身,专业是化学,大学期间开始自学前端开发,在今年春招实习和秋招的时候投了一些公司,拿到一些京东拼多多虎牙等,总体来说还算满意,特地写一篇文章来总结一下面试的那些套路。 showImg(https://segmentfault.com/img/remote/1460000011897700); 先介绍一下本人应届前端开发一枚,非科班出身,专业是化学...

    jeyhan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<