Tagged

JavaScript

A collection of 4 posts

JavaScript

字节跳动最爱考的 64 道算法题(JS版)

缘起现在大厂面试中,算法题几乎为必考项,且近几年频现 LeetCode 真题,此篇为拿到字节、腾讯、京东 Offer 的笔者本人在准备面试过程中亲自刷过以及遇到过高频算法题。文章内容会分模块整理,对于笔者在面试过程中遇到的真题,会给予着重 【🔥】标出。 同时,可以毫不客气的说,如果你准备时间有限,又想追求算法题准备效率最大化,那么你只需要按照大纲把下面的题目刷完,并把代码烂熟于心,就几乎可以应对 90% 的面试算法考题了。 整理这篇内容的目的一个是笔者在之前准备面试时的一点积累,而它确实也帮助笔者在面试算法题中过关斩将,同时呢,也希望能够在金三银四给予拼搏的你,一点点帮助就好!💪 文末有福利 :)😈 本篇内容包括如下模块: 高频算法题系列:链表【🔥】【有真题】高频算法题系列:字符串【🔥】【有真题】高频算法题系列:数组问题高频算法题系列:二叉树【🔥】高频算法题系列:排序算法【🔥】高频算法题系列:二分查找【🔥】高频算法题系列:动态规划高频算法题系列:BFS【🔥】高频算法题系列:栈【🔥】高频算法题系列:DFS【

JavaScript

一文带你了解如何排查内存泄漏导致的页面卡顿现象

不知道在座的各位有没有被问到过这样一个问题:如果页面卡顿,你觉得可能是什么原因造成的?有什么办法锁定原因并解决吗? 这是一个非常宽泛而又有深度的问题,他涉及到很多的页面性能优化问题,我依稀还记得当初面试被问到这个问题时我是这么回答的: 先会检查是否是网络请求太多,导致数据返回较慢,可以适当做一些缓存也有可能是某块资源的bundle太大,可以考虑拆分一下然后排查一下js代码,是不是某处有过多循环导致占用主线程时间过长浏览器某帧渲染的东西太多,导致的卡顿在页面渲染过程中,可能有很多重复的重排重绘emmmmmm....不知道了后来了解到了,感官上的长时间运行页面卡顿也有可能是因为内存泄漏引起的 🌟 内存泄漏的定义那什么是内存泄漏呢?借助别的大佬给出的定义,内存泄漏就是指由于疏忽或者程序的某些错误造成未能释放已经不再使用的内存的情况。简单来讲就是假设某个变量占用100M的内存,而你又用不到这个变量,但是这个变量没有被手动的回收或自动回收,即仍然占用100M的内存空间,这就是一种内存的浪费,即内存泄漏 🌼 JS的数据存储JavaScript的内存空间分为栈内存和堆内存,前者用来存放一些简单变量,后者用来存放复杂对象 简单变量指的是JS的基本数据类型,例如:String、Number、Boolean、null、undefined、Symbol、BigInt复杂对象指的是JS的引用数据类型,例如:Object、Array、Function...🌴 JS垃圾回收机制根据内存泄漏的定义,有些变量或数据不再被使用或不需要了,那么它就是垃圾变量或垃圾数据,如果其一直保存在内存中,最终可能会导致内存占用过多的情况。那么此时就需要对这些垃圾数据进行回收,这里引入了垃圾回收机制的概念

设计模式

掌握设计原则,你就是光(25个问题,你会几个)

25个问题,你会几个如何理解单一职责原则?如何判断职责是否足够单一?职责是否设计得越单一越好?什么是开闭原则?修改代码就一定意味着违反开闭原则吗?怎样的代码改动才被定义为扩展或者说是修改?如何做到对扩展开放、修改关闭?如何在项目中灵活运用开闭原则?什么是依赖反转(倒置)原则 ?高层模块和低层模块是啥意识?如何理解反转两个字?什么依赖被反转了?什么是控制反转 IOC ( Inversion Of Control )?什么是依赖注入 DI ( Dependency Injection )?IOC 和 DI 有什么区别?代码行数越少就越简单吗?代码逻辑复杂就违背 KISS 原则吗?如何写出满足 KISS 原则的代码?如何判断是否满足 KISS 原则?重复的代码就一定违背 DRY 吗?如何提高代码的复用性?什么是迪米特法则?高内聚、松耦合是什么意识?如何理解高内聚和松耦合?如何用好迪米特法则?看完这些问题,是不是激动的一笔,

JavaScript

17K star 仓库,解决 90% 的大厂基础面试题

前言笔者开源的前端进阶之道已有三年之久,至今也有 17k star,承蒙各位读者垂爱。在当下部分内容已经略微过时,因此决定提笔翻新内容。 翻新后的内容会全部集合在「干爆前端」中,有兴趣的读者可以前往查看。 阅读前重要提示: 本文非百科全书,只专为面试复习准备、查漏补缺、深入某知识点的引子、了解相关面试题等准备。 笔者一直都是崇尚学会面试题底下涉及到的知识点,而不是刷一大堆面试题,结果变了个题型就不会的那种。所以本文和别的面经不一样,旨在提炼面试题底下的常用知识点,而不是甩一大堆面试题给各位看官。 大家也可以在笔者的网站上阅读,体验更佳!数据类型JS 数据类型分为两大类,九个数据类型: 原始类型对象类型其中原始类型又分为七种类型,分别为: booleannumberstringundefinednullsymbolbigint对象类型分为两种,分别为: ObjectFunction其中 Object 中又包含了很多子类型,比如 Array、RegExp、Math、Map、Set 等等,也就不一一列出了。 原始类型存储在栈上,对象类型存储在堆上,但是它的引用地址还是存在栈上。 注意:以上结论前半句是不准确的,更准确的内容我会在闭包章节里说明。 常见考点JS