zoukankan      html  css  js  c++  java
  • 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.57
    num2.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之前,永远不要太相信自己,一句话,接着找,哈哈。

  • 相关阅读:
    nginx利用image_filter动态生成缩略图
    uva 624 CD 01背包打印路径
    【剑指Offer学习】【全部面试题汇总】
    POJ2096-Collecting Bugs(概率DP)
    配置struts tags 输出HTML
    合并基因表达水平(merge gene expression levels, FPKM)
    设置MySQL自动增长从某个指定的数开始
    列联表(Crosstabs)
    mysql 实现行号的方法——如何获取当前记录所在行号
    shell 标出输入、标准输出、错误输出
  • 原文地址:https://www.cnblogs.com/yangjunhua/p/3813564.html
Copyright © 2011-2022 走看看