2024最全前端面试系列(JS)(前端进阶基础)(1),作为一名前端面试者你应该知道的

首先我们应该明确一点:ECMAScript中所有函数的参数都是按值来传递的。

但是为什么涉及到原始类型与引用类型的值时仍然有区别呢?还不就是因为内存分配时的差别。

1)原始值:只是把变量里的值传递给参数,之后参数和这个变量互不影响。

2)引用值:对象变量它里面的值是这个对象在堆内存中的内存地址.

因此它传递的值也就是这个内存地址,这也就是为什么函数内部对这个参数的修改会体现在外部的原因了,因为它们都指向同一个对象。

3. 数据类型判断
  • typeof

typeof 基本可以正常判断基本数据类型,没法正确识别 Null,可以区分function,但是对于其他引用数据类型会返回 Object,这是因为 typeof 的原理:

  • 所有数据类型在计算机中存储的都是按照“二进制”存储

  • Null -> 000000

  • 对象都以 000 开头

  • typeof 检测的时候,是按照计算机存储的二进制来检测的

typeof null // “object”

typeof function(){} // “function”

typeof [] // “object”

typeof /./ // “object”

  • instanceof

原理:根据原型对象来判断类型

function instanceof(left, right) {

const rightVal = right.prototype

const leftVal = left.proto

// 若找不到就到一直循环到父类型或祖类型

while(true) {

if (leftVal === null) {

return false

}

if (leftVal === rightVal) {

return true

}

leftVal = leftVal.proto // 获取祖类型的__proto__

}

}

闭包


首先需要了解JS的作用域链,内部可以访问外部的变量,但是外部却不可以访问内部的变量,所以当我们有需求访问函数内部的变量时,我们就需要利用闭包去访问。

因此可以明确闭包的四个特性:

  • 闭包一定是函数对象

  • 闭包和词法作用域,作用域链,垃圾回收机制息息相关

  • 当函数一定是在其定义的作用域外进行的访问时,才产生闭包

  • 闭包是由该函数和其上层执行上下文共同构成

我们可以通过最简单的闭包例子来分析

function foo() {

let a = 2;

function bar() {

console.log( a );

}

return bar;

}

console.log(a) // Uncaught ReferenceError: a is not defined

let baz = foo();

baz(); // 2

但是滥用闭包同样会造成弊端

  1. 内存泄漏(Memory Leak)

闭包阻止了垃圾回收机制对变量进行回收,因此变量会永远存在内存中,即使当变量不再被使用时,这样会造成内存泄漏,会严重影响页面的性能。因此当变量对象不再适用时,我们要将其主动释放,尤其是涉及 DOM 的操作时。

function foo() {

let a = 2;

function bar() {

console.log( a );

}

return bar;

}

let baz = foo();

baz(); //baz指向的对象会永远存在堆内存中

baz = null; //如果baz不再使用,将其指向的对象释放

  1. this指向不明

var object = {

name: ‘object’,

getName: function() {

return function() {

console.log(this.name)

}

}

}

object.getName()() // underfined

事件机制


在这里插入图片描述

事件流分为3个阶段:

1 - 5 为捕获阶段

5 - 6 为目标阶段

6 - 10 为冒泡阶段

事件代理


优点:

  1. 节省内存

  2. 新增对象无需再次绑定

实现方法: 通过给父元素增加监听器获取target,便可拿到子元素的标签名和class,id等属性,从而进行操作

例:

window.onload = function(){

var oUl = document.getElementById(‘ul1’)

oUl.onmouseover = function(ev){

var ev = ev || window.event

var oLi = ev.srcElemnt || ev.target

oLi.style.background = ‘red’

}

}

其中,

IE中event对象有srcElement,无target,有window.event,无ev;

Firefox中event对象无srcElement,有target,无window.event,有ev;

函数节流


/**

  • @desc 节流

  • @param {number} delay 延迟时间

  • @param {func} cb 回调

*/

export function throttle(delay,cb){

let timeoutID;

let lastExec = 0;

function wrapper() {

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

Vue 面试题

1.Vue 双向绑定原理
2.描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?
3.你是如何理解 Vue 的响应式系统的?
4.虚拟 DOM 实现原理
5.既然 Vue 通过数据劫持可以精准探测数据变化,为什么还需要虚拟 DOM 进行 diff 检测差异?
6.Vue 中 key 值的作用?
7.Vue 的生命周期
8.Vue 组件间通信有哪些方式?
9.watch、methods 和 computed 的区别?
10.vue 中怎么重置 data?
11.组件中写 name 选项有什么作用?
12.vue-router 有哪些钩子函数?
13.route 和 router 的区别是什么?
14.说一下 Vue 和 React 的认识,做一个简单的对比
15.Vue 的 nextTick 的原理是什么?
16.Vuex 有哪几种属性?
17.vue 首屏加载优化
18.Vue 3.0 有没有过了解?
19.vue-cli 替我们做了哪些工作?

算法

  1. 冒泡排序
  2. 选择排序
  3. 快速排序
  4. 二叉树查找: 最大值、最小值、固定值
  5. 二叉树遍历
  6. 二叉树的最大深度
  7. 给予链表中的任一节点,把它删除掉
  8. 链表倒叙
  9. 如何判断一个单链表有环
  10. 给定一个有序数组,找出两个数相加为一个目标数

由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+评论666

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

深度
7. 给予链表中的任一节点,把它删除掉
8. 链表倒叙
9. 如何判断一个单链表有环
10. 给定一个有序数组,找出两个数相加为一个目标数

[外链图片转存中…(img-0IAYIQTi-1712912446243)]

由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+评论666

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-wVYS9Uns-1712912446244)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值