Fork me on github

面试题

本文以收集一些网上的前端函数面试题为主, 后续会持续更新(说明一下 后续代码中 ,我就尽量不写分号了😁😁)

  1. 这是一道大题,现拆分成了4个小项;需要答题者用递归算法(限15行内代码实现;限时10分钟内完成)

    1. 创建一个长度为5的空数组。
    2. 生成一个(2~32)之间随机整数 rand。
    3. 把随机数 rand 插入到 数组 arr 内, 如果数组中存在相同的与rand 相同的数字。则重现生成随机数 rand 并插入(不能使用 for/while 等循环)。
    4. 最终输入一个长度为 5, 且内容不重复的数字 arr。

    解题:

    let arr = new Array(5) // 小问1
    
    let random = (min, max) => Math.round( Math.random() * (max-min) + min ) // 小问2:这里没有按照 区间 [2~32] 写死,而是写成了一个纯方法, 由使用者自行传参
    
    function create(arr, min, max, i) {
      if(i > max - min ) return arr
      let nub = random(min, max)
      if(!arr.includes(nub)) {
        arr[i] = nub
        create(arr, min, max, i+1)
      }  else {
        create(arr, min, max, i)
      }
    }
    create(arr, 2, 32, 0) // 小问3 
    arr = arr.slice(0, 5) // 小问4 
    
    console.log(arr) // 输入结果验证, 全部代码实现 14行 
    

欢迎大家评论 交流不同解题思路 😁😁

posted @ 2019-08-29 11:06  vanst  阅读(147)  评论(0编辑  收藏  举报