栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > web前端

web前端笔试练习

web前端 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

web前端笔试练习

1.将一个32位十进制数组转化成2进制后,翻转这个2进制数,再转换成十进制数

  //res1  function reverseB(num) {    var bits = num.toString(2);    var len = 32 - bits.length;    bits = bits.split("").reverse().join("");    while(len--) {        bits+="0";    }        return parseInt(bits,2);  }  console.log(reverseB(43261596));//964176192      //res2  function reverseBs(n){    var m = 0;    for (var i = 0; i < 31; i++) {      m|=(n&1);      n >>= 1;      m <<= 1;    }      m|=(n&01);      return m;    }  console.log(reverseBs(43261596));//964176192    ```<!--more-->2.罗马数组转换成十进制数字
    var romObj = {I:1, V:5, X:10, L:50, C:100, D:500, M:1000};    var romanToInt = function(str) {        var sum = 0;        for(var i = 0; i < str.length; i++) { rom1 = romObj[str.substring(i,i+1)]; rom2 = romObj[str.substring(i+1,i+2)]; if(str.substring(i+1,i+2) !== "" && rom1 < rom2) {     sum += rom2 - rom1;     i++; } else     sum += rom1;        }        return sum;    };    console.log(romanToInt('II'));    ```> 3.总共有n阶楼梯,每次只能上一步或者两部,要到达楼上有多少种方式> 分析,当列举了当n为1,2,3,4,5时得出有1,2,3,5,8种方式> 就是一个斐波拉契数列
var climbStairs = function(n) {    var a = 1,        b = 2,        sum = 1;        if(n == 1) return a;        if(n == 2) return b;        n -= 2;    while(n--){        sum = a + b;        a = b;        b = sum;    }    return sum;};console.log(climbStairs(3));```

4.给数组增加一种方法,可以去除数组中的重复项并返回数组

    //fun1--hash    Array.prototype.delWeight = function()    {        var n=[],r=[]; //n为hash表,r为临时数组        for(var i = 0; i < this.length; i++) //遍历当前数组        { if (!n[this[i]]) //如果hash表中没有当前项 {     n[this[i]] = true; //存入hash表     r.push(this[i]); //把当前数组的当前项push到临时数组里面 }        }        return r;    }    var arr = [1,1,1,1,1,2,2,33,4,5,6,5,6];    console.log(arr.delWeight());    //fun2--利用数组的indexOf方法    function delWeight (arr) {        var result = [];        for (var i = 0; i < arr.length; i++) { if (result.indexOf(arr[i]) == -1) result.push(arr[i]);        }        return result;    }    ```> 5.对不确定数量的数进行排序
function mySort() {    var tags = new Array();//使用数组作为参数存储容器    for(var i = 0,len = arguments.length;i<len;i++){        tags.push(arguments[i]);    }    tags.sort(function(a,b){        return a - b;    });    return tags;//返回已经排序的数组}var result = mySort(50,11,16,32,24,99,57,100);//传入参数个数不确定console.info(result);//显示结果```

6.用短路求值的方式求前n项和

    function sumr(n) {        var ans = n;        ans && (ans += sumr(n-1));        return ans;    }    console.log(sumr(5));    ```> 7.正则表达式判断一个数是不是素数
function is_prime(x){     var r=[],s="";     while(r.length<x){         r.push("1");     }     s=r.join("");     return !/^1?$|^(11+?)1+$/.test(s);}console.log(is_prime(5));console.log(is_prime(10));console.log(is_prime(13));console.log(is_prime(60));console.log(is_prime(99));```

8.辗转相除求最大公约数

    function ff(a,b){        if (b>a) ff(b,a);        return !(a%b)?b:ff(b,a%b);    }    console.log(ff(10,3));    ```> 9.Json数据按照某一字段排序的方法
var stuJson = [{ name: "daming", age: 21, weight: 66, sex:"boy" },        { name: "lisa", age: 19, weight: 45, sex:"girl" },        { name: "lili", age: 20, weight: 50, sex:"boy"}];     //按age升序   stuJson.sort(function(a,b){         return a.age - b.age;  });console.log(stuJson);```

10.求一个数组中的最大最小值

    var arr = [32,42,12,42,21,23,56,75,3,33,53,23,36];    var min =   Math.min.apply(null,arr);       console.log(min);    var aMax = Math.max.apply(null,arr);       console.log(aMax);    ```> 11.将一个匿名函数作为函数的一个参数
  function map(f,a) {  var result = [], // Create a new Array      i;  for (i = 0; i != a.length; i++)    result[i] = f(a[i]);  return result;}   //调用的时候实现这个引用参数函数  var re = map(function(x) {return x * x * x}, [0, 1, 2, 5, 10]);  console.log(re);//[0, 1, 8, 125, 1000].```

12.字符传中的大小写相互转换

    function upperToggleLower(str){      var s ="";      for(var i = 0,len = str.length;i<len;i++){        if (str[i]<='z'&&str[i]>='a'||str[i]<='Z'&&str[i]>='A') {          s+=String.fromCharCode(str.charCodeAt(i)^32);        }else{          s+=str[i];        }      }      return s;    }    var str = 'abcdef FEDCBA' ;    console.log(upperToggleLower(str));//"ABCDEF fedcba"    ```> 13.js快排
function quick_sort(array,l,r){  if(l < r){    var i = l,j = r,x = array[l];    while(i < j){      while(i < j && array[j]>=x){        j--;      }      if(i < j){        array[i++] = array[j];      }      while(i < j && array[i] < x){        i++;      }      if(i < j){        array[j--] = array[i];      }    }    array[i] = x;    quick_sort(array,l,i -1 );    quick_sort(array,i + 1,r);  }  return array;}```

14.给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字

        int singleNumber(vector<int> &A) {        if (!A.size()) return 0;        int a = A[0];        for(int i = 1;i<A.size();i++)        { a^=A[i];        }        return a;    }

15.给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。

    int aplusb(int a, int b) {        int n1;        do{ n1 = a ^ b; b = (a & b) << 1; a = n1;        }while(b != 0);        return n1;    }

16.计算在一个 32 位的整数的二进制表式中有多少个 1.

  int countones(int num) {        int count = 0;        while(num!=0)        {  num = num&(num-1);  count++;        }        return count;    }

17.找到单链表倒数第n个节点,保证链表中节点的最少数量为n。

    ListNode *nthToLast(ListNode *head, int n) {        if (!head) return NULL;        ListNode *h,*d;        h = d = head;        while(--n)        { h = h->next;        }        while(h->next!=NULL){ h = h->next; d = d->next;        }        return d;    }

18.写出一个高效的算法来搜索 m × n矩阵中的值。

    bool searchMatrix(vector<vector<int> > &matrix, int target) {        if(!matrix.size()) return false;        int i,j;        for(i = 0; i < matrix.size(); i++)        { if(target < matrix[i][0])     break; if(target == matrix[i][0])     return true;        }        i--;        for(j = 0;j < matrix[i].size();j++) if(target == matrix[i][j]) return true;        return false;    }

19.设计一种方法,将一个字符串中的所有空格替换成 %20 。

    int replaceBlank(char string[], int length) {        // Write your code here      int space_cnt = 0;      int new_length = 0;      char *p,*q;      for(int i = 0; i < length; i++)      {        if (string[i] == ' ') space_cnt++;      }      new_length = space_cnt * 2 +length;      p = string + (length - 1);      q = string + (new_length - 1);      while(p != q)      {        if(*p == ' ') *q = '0',q--,*q = '2',q--,*q = '%';        else *q = *p;        p--;        q--;      }      return new_length;    }

20.统计一个字符串中每个单词的个数

function countWordNum(str) {    if (!str) return ;    var wordsArr = str.split(' ');    var o = {};    for (var i = 0, len = wordsArr.length; i < len; i++){        if (wordsArr[i] in o) { //or if (o[wordsArr[i]]) {   or if (o.hasOwnProperty(wordsArr[i])) { o[wordsArr[i]]++;        }        else {          o[wordsArr[i]] = 1;        }    }    return o;}

21.给你六种面额 1、5、10、20、50、100 元的纸币,假设每种币值的数量都足够多,编写程序求组成N元(N为0~10000的非负整数)的不同组合的个数

public class changeDP {  static int v [] = {1, 5, 10, 20, 50, 100};  public static int change (int n, int i){    if (n < 0) return 0;    if (n == 0) return 1;    if (i < 0) return 0;    return change(n,i-1)+change(n-v[i],i);      }  public static void main (String[] args){    System.out.println(change(100,v.length-1));  }}

22.给定非空整型数组 arr 和整数 limit ,两次从 arr 中随机抽取元素(可能抽到同一个元素),获得整数 x ,y ,得到和 s = x + y 。求所有不超过 limit 的 s 值中的最大数。

function limitedMaxSum(arr, limit) {    var max = 0;    for (var i = 0, len = arr.length; i < len; i++) {        for(var j = 0; j < len; j++) { var sum = arr[i] + arr[j]; if (sum <= limit && sum >= max) {     max = sum; }        }    }    return max;}

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号