华雁智科前端面试题

1. var 变量的提升

题目:

var a = 1
function fun() {
  console.log(b)
  var b = 2
}
fun()
console.log(a)
  • 正确输出结果:undefined、1
  • 答错了,给一个大嘴巴子,错误答案输出结果为:2,1

此题主要考察 var 定义的变量,作用域提升的问题,相当于

var a 
a = 1
function fun() {
  var b
  console.log(b)
  b = 2
}
fun()
console.log(a)

所以正确输出结果应该是:undefined、1

2. 多维数组去重排序(升序)

let arr = [3, 1, 4, 1, 5, 9, [4, 1, 5, 9], 2, 6, 5, 3, 5, [3, 1, 4, 1]]
  • 忘记去重操作,该死。
  • 方法比较笨,欢迎各位前端大佬,使用更高效的方法尝试。

第一步,采用递归方式将该数组展平为一维数组

let newArr = []
function fun(arr) {
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] instanceof Array) {
      fun(arr[i])
    } else {
      newArr.push(arr[i])
    }
   }
   return newArr
}

newArr = fun(arr)

第二步,数组去重,使用一个变量记录 flag 记录是否是重复的元素

let arr2 = []
function uniqueArr(arr) {
  for (let i = 0; i < arr.length; i++) {
    let flag = false 
    for (let j = 0; j < arr2.length; j++) {
      if (arr[i] === arr[j]) {
        flag = true
        break
       }
     }
     // 唯一的元素
     if (!flag) {
        arr2.push(arr[i])
      }
    } 
  return arr2
}
  const a = uniqueArr(newArr)

第三步,排序算法

 function sort (arr) {
    for (let i = 0; i < arr.length; i++) {
      for (let j = 0; j < arr.length; j++) {
        if (arr[j] > arr[j + 1]) {
          let temp = arr[j]
          arr[j] = arr[j + 1]
          arr[j + 1] = temp
        }
      }
    }
    return arr
  }
  • 正确冒泡排序(该死)
 function sort (arr) {
    for (let i = 0; i < arr.length - 1; i++) {
      for (let j = 0; j < arr.length - 1 - i; j++) {
        if (arr[j] > arr[j + 1]) {
          let temp = arr[j]
          arr[j] = arr[j + 1]
          arr[j + 1] = temp
        }
      }
    }
    return arr
  }

3. 写在最后

此博客记录,秋招第一次很简单的手撕代码笔试题。哭死,希望能给个面试机会。一定能找到工作的。加油,多积累面试经验,借用人民日报今年的广告语,“请你努力,为了你自己。

祝大家秋招都能收到offer。

 

你可能感兴趣的:(前端笔试面试问题整理,javascript,开发语言,ecmascript)