博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
献上一套今年的腾讯前端笔试题给大家瞧瞧
阅读量:6835 次
发布时间:2019-06-26

本文共 4384 字,大约阅读时间需要 14 分钟。

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();// 0plus(); // 1plus(); // 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:,请写一段 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、请列举你所了解的跨域实现方法

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

转载地址:http://isxkl.baihongyu.com/

你可能感兴趣的文章
ssh 端口转发脚本
查看>>
分布式组件-识别引擎
查看>>
試用 Golang 抓取網站價錢
查看>>
Xcode - Code Snippets 代码块
查看>>
手动创建JavaWeb项目
查看>>
iOS--Cocoapods
查看>>
判断奇偶数
查看>>
Git详解之七 自定义Git
查看>>
hive与hbase的联系与区别
查看>>
仓储控制系统软件(WCS)
查看>>
iMatrix平台只有小窗体管理员才能看到注册小窗体按钮
查看>>
从前端角度理解缓存
查看>>
ipad视频导入重新命名排序
查看>>
搜索引擎
查看>>
Python实现抓取城市的PM2.5浓度和排名
查看>>
中国企业的等级制度
查看>>
web开发之浏览器(三)----浏览器常用事件及属性
查看>>
四种形式的乘法表---PHP编写
查看>>
pcDuino 3维模型
查看>>
iOS应用架构谈 网络层设计方案 一 (转帖)
查看>>