华雁智科前端面试题
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。