前端面试修仙(二)

前端面试修仙(二)

写在前面,比较重要的知识点,书上出错的地方我才会明确指出,主要目的是我怕也有人和我一样倒霉买了这本书。
1.问题:利用js实现获取5个0到99之间的随机数?

var arr=[];
for(i=0;i<100;i++){
    arr.push(i);
}
function getNumber(arr){
    var _arr =[];
    var index;
    for(i=0;i<5;i++){
        var index =parseInt(Math.random()*100);
        _arr.push(arr[index]);
    }
    return _arr;
}
var b=getNumber(arr);
console.log(b);//我自己写的,仅做参考

2.问题:用原生js写一个 traverse 函数,输出所有页面宽度和高度大于 50 像素的节点?

这里写代码片

3.问题:统计1到1000之间的自然数有多少个含有1?比如1到21,有1,10,11,12,13,14,15,16,17,18,19,21共11个数?(这个问题是我对前端面试江湖里的61题改进的,他的题目是错的,1到21他居然说只有5个含有1,这真的是蠢出天际)

这里写代码片

4.问题:用js编写一个0到7的随机函数?

这里写代码片

5.问题:写js代码,找到arr1中出现而arry2中没有出现的数字?

这里写代码片

6.问题:编写js函数arrFilter过滤数组内的重复元素,要求根据传入的参数的不同,实现不同的输出方案,方案一,不改变原数组,返回一个新数组,方案二,改变原数组并返回。

这里写代码片

7.问题:给arry数组增加换一个方法,maxMin,作用是去掉数组里的最大值和最小值。并返回新的数组?(原书中的答案,答非所问)

这里写代码片

8.数组方法pop(),push(),unshift(),shift()分别具备什么功能?

  • pop(),从集合中把最后一个元素删除,并返回这个元素的值。
  • push(),从集合中添加一个元素,并返回一个新的长度。
  • unshift(),在集合开头添加一个元素,并返回新的数组。
  • shift(),把集合中的第一个元素删除,并返回这个元素的值。

9.js中如何规避多人开发时函数重命名问题?

  • 使用单例模式,创建命名空间,根据不同的开发人员开发的功能加前缀
  • 立即执行函数,避免污染全局。

10.请分别描述js中,prototype、constructor、this、argument的含义

  • -

11.这里就扩展一下this的常用用法:1.纯粹的函数调用,2.作为对象的方法调用,3.作为构造函数调用,4.apply调用。
12.问题:当点击按钮时,如何实现2个id的值互换?

这里写代码片

13 . prenventDefault(),用来阻止dom元素的默认行为。stopPropagation()阻止冒泡。
14.在form表单中在效果上来说,get和post都能够获取到服务器的数据,也都会向服务器发送数据。但是在语义上来说,get的确是为了得到数据,随get的参数应该是请求所需的参数,而不该是写入数据库的数据。post的返回值应该是存入数据的状态,而不是一个新的页面。虽然在使用的时候大家基本都会混淆两者。get传送的数据量较小,不能大于2KB的说法是来自于IE对URL长度的限制,HTTP规范中并没有规定URL的长度上限。get和post的安全性差不多吧,除非蠢到在get参数中明文传递用户名和密码。要提高安全性,请选用https协议。
15.说说js中数组排序方法sort()的使用?
16.前端面试江湖,题187错误,题目:call和apply的区别?

  • 其实call和apply都可以改变this的执行环境,主要区别在于,call的参数传递从第二个开始,而apply的参数是类数组。

17.问题:请写一个表格以及对应的 CSS,使表格奇数行为白色背景,偶数行为灰色背景,鼠标移上去时为黄色背景。

这里写代码片
这里写代码片
这里写代码片

18.问题:写一个求和的函数 sum,达到下面的效果
// Should equal 15
sum(1, 2, 3, 4, 5);
// Should equal 0
sum(5, null, -5);
// Should equal 10
sum(‘1.0’, false, 1, true, 1, ‘A’, 1, ‘B’, 1, ‘C’, 1, ‘D’, 1, ‘E’, 1, ‘F’, 1, ‘G’, 1);
// Should equal 0.3, not 0.30000000000000004
sum(0.1, 0.2);

这里写代码片

19.问题:在空白处填入适当的代码使输出结果成立:
function showMoney( ) {
1
};
var personA = new Object;
var personB = new Object;
personA.money= “100”;
personB.money= “150”;
personA.showMoney= showMoney;
personB.showMoney= showMoney;

20.问题:删除给定数组中的第二项和第三项,并且在得到的新的数组中第二项后面添加一个新的值:
var arr1 = [‘a’,’b’,’c’,’d’,’e’];

这里写代码片

21.使用for in循环数组中的元素会枚举原型链上的所有属性,过滤这些属性的方式是用hasOwnProperty()
22.问题:请实现一个 fibonacci 函数,要求其参数和返回值如下所示:
/**
*@desc: fibonacci
*@param: count {Number}
*@return: result {Number} 第 count 个 fibonacci 值,计数从 0 开始
fibonacci 数列为:[1, 1, 2, 3, 5, 8, 13, 21, 34 …]
则 getNthFibonacci(0)返回值为 1
则 getNthFibonacci(4)返回值为 5
*/
function getNthFibonacci(count) {
}

这里写代码片

23.问题:输出对象中值大于 2 的 key 的数组
var data = {a: 1, b: 2, c: 3, d: 4};
期待输出:[“c”,”d”]

这里写代码片
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值