首页 > 网站 > WEB开发 > 正文

2014年前端面试经历

2024-04-27 14:22:09
字体:
来源:转载
供稿:网友

2014年前端面试经历

前言:

最近离职了,工作快三年了,第二次离职,两次离职都带着沉重的心态,或许还有点依依不舍,或许。。。说多了都是泪,哈哈;

这个时间点工作也不好找,投了很多家公司,发现90%的公司在招移动端人才;

面试了近十家公司,有移动端、互联网电商、金融证券、医疗、广告、还有创业型公司,接下来讲的主要是一些面试题。

面试题:

1、下面代码运行结果

var bl = false;$.Ajax(url, {    //...    success: function(){        bl = true;    }});while ( !bl ) {    alert( bl );}alert( bl );// 结果大家自己去想,这道题是面试官临时写的,简单直接,很好的考察你是否理解javascript中的运行机制,很棒的一道面试题

2、扩展Array原型,编写一个去除数组重复项的方法

// 算法一,两层循环,性能差Array.PRototype.unique = function(){    var len = this.length, i;    // 两两比较(数组长度大于1)    while ( --len > 0 ) {        i = len;        while ( --i >= 0 ) {                    // 前一项索引最小为0            if ( this[len] === this[i] ) {      // 最后一项与前一项进行比较                //this.splice(i, 1);            // this.length自动减一,删除前面的重复项                this.splice(len, 1);            // this.length自动减一,删除后面的重复项                i--;            }        }    }    return this;};// 算法二,性能优化Array.prototype.unique = function(){    var i, key, len = this.length,        cache = {},        // 缓存对象        ret = [];    // 要返回的数组    for ( i = 0; i < len; i++ ) {        key = typeof this[i] + this[i];        if ( cache[key] !== 1 ) {            cache[key] = 1;            ret.push( this[i] );        }    }        return ret;;};// 解决方法三,直接使用jQuery.unique工具函数var arr = [1,3,4,6,9,10,4,6];arr = jQuery.unique( arr );    // [1, 3, 4, 6, 9, 10]

3、手动实现原生数组Array.prototype.sort方法的实现

Array.prototype.sort = function( filter ){    var i, temp, len = this.length;    // 两两比较(数组长度大于1)    while ( --len > 0 ) {        i = len;                while ( --i >= 0 ) {                    // 前一项索引最小为0            temp = this[len];                        // 不传递过滤回调,则默认是从小到大排序            // 回调函数的返回值大于0,则是从小到大排序,否则不进行操作,默认为从大到小            if ( !filter && this[i] > this[len] || filter && filter(this[i], this[len]) > 0 ) {                this[len] = this[i];                this[i] = temp;            }        }    }    return this;};//快速排序法function quickSort ( arr ) {    // 必要条件    if ( arr.length <= 1 ) { return arr; }    var left = [], right = [],        length = arr.length,        pivotIndex = Math.floor( length / 2 ),                // 中间项        pivot = arr.splice( pivotIndex, 1 )[0]; //每执行一次,原数组arr数组length--    // 实际的数组长度为 length-1    for ( var i = 0; i < length - 1; i++ ) {        if ( arr[i] < pivot ) {     // 小于中间项的放左边            left.push( arr[i] );        }        else {            right.push( arr[i] );   // 大于中间项的放右边        }    }    // 递归    return quickSort( left ).concat( pivot, quickSort( right ) );}

4、其他算术题

// 数的阶乘function factorial( num ) {    var ret = num;    while ( --num ) {        ret = ret * num;    }    return ret;}factorial( 10 ); // 3628800// 对数值型值保留2位小数var num = 100.567;var num2 = 100;num.toFixed(2); //    100.57num2.toFixed(2); // 100.00// 求一个数组中随机出现的项function randomArr ( arr ) {    // Math.random()           最小值接近0,最大接近1,0.00000000000001    0.9999999999999    // Math.random()*length    最小值接近0,最大接近length    // Math.floor( Math.random() * arr.length ) 舍去小数部分,得到的就是随机出现的数组索引    var randomIdx = Math.floor( Math.random() * arr.length );    return arr[randomIdx];    // 返回随机项}

总结:

出去面试尽量请年假,在你没确定得到满意的offer之前,永远不要太相信自己,一句话,接着找,哈哈。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表