正文
第二题
对于粗心大意的初学者来说,可能会马上给出答案:b=3,又因为a=b,所以a=3;
正确的做法,应该是拆分出来:
b=3
var a=b;
需要注意的是这是在自执行函数里面的,所以a的声明只存在自执行函数里
而b由于自执行函数里没有声明,所以成为了全局变量
第三题
对于这道题,相信对很多小伙伴来说并不陌生,应该是见过许多遍了,但是人有粗心的伙伴会马上给出答案3个3,实际上答案是3个四,必须区分好结束循环时i的值时多少
若对这道题不清晰的或是想巩固这片知识的可以看这篇文章 :
做一名合格的前端开发工程师:Javascript加载执行问题探索
第四题
这道题重在考查 函数声明和普通变量声明的优先级关系,众所周知,函数声明的提升的优先级要高级普通变量 (如若这里有点不知所云,请看这篇文章:【JS】预编译(图解) )
因此正确答案为
把这道题变一下,
这样的话会是什么结果了?到这里还是不能给出答案的话,建议还是认真看下这篇文章:
数据结构与算法
这一块在笔试、面试的代码题中考核较多,其中常考的数据结构主要有:数组、链表、队列、栈、Set、Map、哈希表等,不同数据结构有不同的方法以及储存原理,这些算是技术岗的必备知识。算法部分主要分为两大块,排序算法与一些其他算法题。
排序算法根据考频高低主要有:快速排序、归并排序、堆排序、冒泡排序、插入排序、选择排序、希尔排序、桶排序、基数排序、Timsort这十种,这类考核点要么是算法的时间、空间复杂度、稳定度,要么是直接手写代码,故在理解算法原理的同时,对JS语言版的排序算法代码也要加强记忆。
- 二叉树层序遍历
- B 树的特性,B 树和 B+树的区别
- 尾递归
- 如何写一个大数阶乘?递归的方法会出现什么问题?
- 把多维数组变成一维数组的方法
- 知道的排序算法 说一下冒泡快排的原理
- Heap 排序方法的原理?复杂度?
- 几种常见的排序算法,手写
- 数组的去重,尽可能写出多个方法
- 如果有一个大的数组,都是整型,怎么找出最大的前 10 个数
- 知道数据结构里面的常见的数据结构
- 找出数组中第 k 大的数组出现多少次,比如数组【1,2, 4,4,3,5】第二大的数字是 4,出现两次,所以返回 2
- 合并两个有序数组
- 给一个数,去一个已经排好序的数组中寻找这个数的位 置(通过快速查找,二分查找)