总结
根据路线图上的重点去进行有针对性的学习,在学习过程中,学会写笔记,做总结。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
这里分享一些前端学习笔记:
-
html5 / css3 学习笔记
-
JavaScript 学习笔记
-
Vue 学习笔记
function test(){
var num; //变量声明提升到作用域最前面
console.log(num); // ②
num = 200; // 赋值语句不被提升,原地不动
console.log(num); // ③
}
var num; //标记 *** 的变量声明被提升
console.log(num); // ①
num = 100; // 赋值原地不动
test();
console.log(num); // ④
在这里可以看到,佐证三点主要规则有:
-
被提升的仅仅是函数或变量的声明部分,赋值语句等原地不动。
-
被提升,则提升至其作用域的最顶去。
-
函数声明提升优先级高于变量声明提升。
那么输出结果呢
// 按顺序执行 …
// var num; 声明num
// 执行console.log(num) ①; num未赋值,为undefined
// num = 100;
// 执行函数test();
// console.log(num) ②; 作用域内num未赋值,为undefined
// num = 200;
// console.log(num) ③; 输出200
// console.log(num) ④; 输出100
这里需要注意一下,JavaScript的作用域及作用域链。
===================================================================
这个例子用于诠释:函数表达式不会被提升。
test();
var test = function(){
console.log(‘test’);
}
实际是:
var test;
test(); // 报错
test = function(){
console.log(‘test’);
}
变量test提升
但是表达式
test = function(){
console.log(‘test’);
}
是不会提升的。
===================================================================
这个例子主要诠释关于重复声明的注意点
一、先是变量重复声明 —— 后续声明会被忽略掉,如:
test();
var test;
function test(){
console.log(‘1’);
}
var test = function(){
console.log(‘2’);
}
实际上是:
function test(){
console.log(‘1’);
}
var test; // 重复声明
var test; // 重复声明
test(); // 输出1
// 函数表达式不提升
test = function(){
console.log(‘2’);
}
二、函数的重复声明 —— 后续声明覆盖前者,如:
test();
function test(){
console.log(‘1’);
}
var test = function(){
console.log(‘2’);
}
function test(){
console.log(‘3’);
}
实际上是:
// 函数声明优先提升
// 后来者居上
function test(){
console.log(‘3’);
}
// 前者居下,重复,被代替
function test(){
console.log(‘1’);
}
// 变量声明优先级低,且重复,被忽略去掉
var test;
test();
test = function(){
console.log(‘2’);
}
所以,去掉那些重复声明的之后:
function test(){
console.log(‘3’);
}
test(); // 输出3
test = function(){
console.log(‘2’);
}
=================================================================
-
变量和函数都可以被提升,提升的仅仅是其声明部分。赋值等语句一律原地不动。
-
若被提升,提升至作用域的最顶部。
-
函数声明提升优先级高于变量声明提升。
-
函数表达式不会被提升。
-
若是变量重复声明,则忽略去掉;若是函数重复声明,后来者居上,以后者为准。
数据结构与算法
这一块在笔试、面试的代码题中考核较多,其中常考的数据结构主要有:数组、链表、队列、栈、Set、Map、哈希表等,不同数据结构有不同的方法以及储存原理,这些算是技术岗的必备知识。算法部分主要分为两大块,排序算法与一些其他算法题。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
排序算法根据考频高低主要有:快速排序、归并排序、堆排序、冒泡排序、插入排序、选择排序、希尔排序、桶排序、基数排序、Timsort这十种,这类考核点要么是算法的时间、空间复杂度、稳定度,要么是直接手写代码,故在理解算法原理的同时,对JS语言版的排序算法代码也要加强记忆。
- 二叉树层序遍历
- B 树的特性,B 树和 B+树的区别
- 尾递归
- 如何写一个大数阶乘?递归的方法会出现什么问题?
- 把多维数组变成一维数组的方法
- 知道的排序算法 说一下冒泡快排的原理
- Heap 排序方法的原理?复杂度?
- 几种常见的排序算法,手写
- 数组的去重,尽可能写出多个方法
- 如果有一个大的数组,都是整型,怎么找出最大的前 10 个数
- 知道数据结构里面的常见的数据结构
- 找出数组中第 k 大的数组出现多少次,比如数组【1,2, 4,4,3,5】第二大的数字是 4,出现两次,所以返回 2
- 合并两个有序数组
- 给一个数,去一个已经排好序的数组中寻找这个数的位 置(通过快速查找,二分查找)
历
- B 树的特性,B 树和 B+树的区别
- 尾递归
- 如何写一个大数阶乘?递归的方法会出现什么问题?
- 把多维数组变成一维数组的方法
- 知道的排序算法 说一下冒泡快排的原理
- Heap 排序方法的原理?复杂度?
- 几种常见的排序算法,手写
- 数组的去重,尽可能写出多个方法
- 如果有一个大的数组,都是整型,怎么找出最大的前 10 个数
- 知道数据结构里面的常见的数据结构
- 找出数组中第 k 大的数组出现多少次,比如数组【1,2, 4,4,3,5】第二大的数字是 4,出现两次,所以返回 2
- 合并两个有序数组
- 给一个数,去一个已经排好序的数组中寻找这个数的位 置(通过快速查找,二分查找)
[外链图片转存中…(img-9XEw2GEZ-1715699039905)]