整理一些前端面试中的笔试题

前端开发最新应用框架 前端不用框架开发模式 自己开发前端框架

1、用递归方式写个长度为n的斐波纳契数列;
javascript 代码

function febArr(n) {
    if (n < 2) {
        return n
    } else {
        return febArr(n – 1) + febArr(n – 2)
    }
}

循环方式:
javascript 代码

function febArr(n) {
    var arr = []
    for (var i = 0; i <= n; i++) {
        if (i == 0 || i == 1) {
            arr[i] = i
        } else {
            arr[i] = arr[i – 1] + arr[i – 2]
        }
    }
    return arr[n]
}

2、javascript 代码

for (var i = 0; i < 5; i++) {
    setTimeout(function() {
        console.log(i)
    }, i * 1000)
}

输出的结果
注意js的作用域,已及setTimeout的用法。
在这里i是全局变量,setTimeout是异步代码,它会等到js代码空闲的时候才执行,就算它延时为0,所以这段代码相当于setTimeout执行的时候for循环已经结束,而此时的i=5;所以输出5次5

如果想要输出0,1,2,3,4
javascript 代码

for (var i = 0; i < 5; i++) {
    ;(function(i) {
        setTimeout(function() {
            console.log(i)
        }, i * 1000)
    })(i)
}

这样行程闭包,定时器用的i不在是全局变量

3、写一个选择器,支持id,className,tagName,要考虑性能和兼容性
写了个简易的,很多情况没考虑
html 代码

<div class=”div1″></div>
<div id=”a”>aaaaaa</div>
<a class=”yo” href=””></a>
<a href=””></a>
<a href=””></a>
<a href=””></a>
<a href=””></a>

javascript 代码

function _$(obj) {
    if (obj == undefined) return
    obj.replace(/^\s+|\s+$/g, ”)
    if (obj.indexOf(‘#’) == 0) {
        return document.getElementById(obj.substr(1))
    } else if (obj.indexOf(‘.’) == 0) {
        if (!document.getElementsByClassName) {
            getEle(obj)
        } else {
            return document.getElementsByClassName(obj.substr(1))
        }
    } else {
        return document.getElementsByTagName(obj)
    }
}
function getEle(className, tagName) {
    tagName = tagName || ‘*’
    className = className.split(‘ ‘)
    var ele = document.getElementsByTagName(tagName),
        result = []
    for (var i = 0, len = ele.length, k = 0; i < len; i++) {
        if (className[k++].substr(1) == ele[i]) {
            result.push(ele)
            break
        }
    }
    return result
}
console.log(_$(‘#a’))
console.log(_$(‘.div1’))
console.log(_$(‘a’))

电话面试:(记录,之后详细补充)
1、jq几种事件绑定方法,各有什么不同
2、前端性能
3、viewport
4、jsonp
5、矩阵

2018年移动前端开发框架 web前端开发框架面试 前端为什么要用框架开发

» 本文来自:前端开发者 » 《整理一些前端面试中的笔试题》
» 本文链接地址:https://www.rokub.com/5489.html
» 您也可以订阅本站:https://www.rokub.com
赞(0)
64K

评论 抢沙发

评论前必须登录!