首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

百度前端二面高频面试题合集

这种方法缺陷在于兼容性不行,IOS 系统需要8及以上版本,安卓系统则直接不兼容。思路二:伪元素先放大后缩小这个方法可行性会更高,兼容性也更好。唯一缺点是代码会变多。...因此,V8 内存(堆)分为新生代和老生代两部分。(1)新生代算法新生代中对象一般存活时间较短,使用 Scavenge GC 算法。...,以下情况会先启动标记清除算法:某一个空间没有分块时候空间中被对象超过一定限制空间不能保证新生代中对象移动到老生代中在这个阶段中,会遍历堆中所有的对象,然后标记活对象标记完成后,销毁所有没有被标记对象...编码优化:怎样写出更好 CSS?构建:如何处理我 CSS,才能让它打包结果最优?可维护性:代码写完了,如何最小化它后续变更成本?如何确保任何一个同事都能轻松接手?... JavaScript 中,基本类型是没有属性和方法,但是为了便于操作基本类型值,调用基本类型属性或方法JavaScript 会在后台隐式地基本类型值转换为对象,如:const a =

93330
您找到你想要的搜索结果了吗?
是的
没有找到

JavaScript 数组 API 全解析

JavaScript 中,数组可以是任意类型元素组成集合。这意味着,创建一个数组,它元素类型可以是 String、Boolean、Number、Object,甚至是另一个数组。...如何创建数组 JavaScript 中有多种方式可以创建数组,最直接方式是把数组字面量赋值给一个变量。 const salad = ['?', '?', '?', '?', '?', '?'...如何使用剩余参数 通过剩余参数,可以剩下元素映射到一个数组中。剩余参数必须是解构语法中最后一个变量。...还有另一个相关方法 findIndex(),这个方法返回我们使用 find() 方法找到元素索引,如果没有符合条件元素则返回 -1。...希望你觉得这篇文章有价值,也希望它能够帮助你更好地理解 JavaScript 数组。请多多练习文中示例,以便更好地掌握它们。你可以 GitHub 仓库中找到所有代码示例。

2.2K20

VisualStudio 调试内存泄漏方法

核心方法是查看内存中有哪些对象占用了大量内存,其次是查看内存中有哪些不用对象还在内存 第一个方法,查看对象占用方法我做了一个课件视频,点击下面图片就可以播放 上面的方法适合在不了解任何业务时,同时软件存在明显内存泄漏时调试...必须要在进行方法一之后,发现还不满足需求时才进行方法优化,因为使用方法二查看内存中有哪些不用对象还在内存,这个方法要求是了解业务,知道哪些对象已经被执行过了,不需要放在内存,知道了这部分内存可以被释放之后还需要更改一些业务代码...Program.Foo += Do 只要在 C# 中将对象加入到一个长时间生效对象,也就是一个生效时间比较短对象加入到一个生效时间比较长对象,那么这个对象将会直到生效时间最长对象被释放时才可以被释放...而静态对象生效时间时整个应用到结束时间,所以任何被静态对象引用对象都不会被释放 代码中, Do 方法加入到静态 Foo 事件,此时 Program 对象将会引用 Business 对象,因为加入是静态事件...(可用来做缓存池使用) - walterlv 另外,调试时可能会发现,内存中有很多诡异数组占用了很多内存,而这部分数组或列表组成都会很迷,如开始课件视频说到内容,请看下面代码 class

1K20

从一道面试题引发原理性探究

下面详细介绍了V8 v6.3+如何key存储哈希表中最新进展。 哈希码 Hash code 散列函数用于将给定 key 映射到哈希表中特定位置。...但是,大多数现实世界代码都不遵循这种模式,并且键通常具有不同隐藏类,导致散列码复态内联缓存查找变慢。 私有符号方法另一个问题是它在存储散列码 key 时触发了一个隐藏类转换。...这导致不仅对哈希码查找变慢,而且在对象上存储其它 key 查找也会进行 deoptimization 操作。(deoptimization 是把已经优化代码重新去除优化)。...JavaScript 对象支持存储 V8 JavaScript 对象(JSObject)使用 2 个 word(除了它头部):一个 word 用于存储指向元素存储指针,另一个 word 用于存储指向属性存储指针...但是,对于那些没有添加到哈希表中对象,这会浪费内存。相反,我们可以尝试散列码存储元素存储或属性存储中。 元素存储是一个包含其长度和所有元素数组

1.4K20

arguments 转换成 Array 最佳实践

可读性更好,参数都是函数括号中定义,不会突然出现一个arguments,显得很突兀。 4、Q & A 在这里我简单解答一些常见疑惑: Q: 为什么需要将 arguments 对象转换成数组?...A: 按照文章 《JavaScript arguments 对象全面介绍》所言, arguments 语言早期就引入了,当时 Array 对象具有 4 个方法:toString、 join、 reverse...A: 因为 arguments 也是“伪数组对象”,不难推而广之,上面讨论数组转换方式都可以应用在“伪数组对象”上;至于每个转换方法性能如何,我因为没有单独去测试过,所以也不能妄下定论,大家可以自己写...:v8 无法优化 slice 方法原因,是因为该方法会保持对 arguments 对象引用,无法将其优化成 stack 变量。...它出现为一组数据行为(函数)扩展提供了基础 JavaScript数组对象参考:JS 中有哪些伪数组对象

89820

synchronize和volatile

JVM 中采用2个字(jvm 字等于位数)来存储对象头(如果对象数组则会分配3个字,多出来1个字记录数组长度) Mark Word默认情况下存储着对象HashCode、分代年龄、锁标记位等以下是...当方法调用时,调用指令将会检查方法 ACC_SYNCHRONIZED 访问标志是否被设置, 如果设置了去获取monitor 锁分类 无锁 无锁是指没有对资源进行锁定,所有的线程都能访问并修改同一个资源...[类加载机制与对象创建]中有过详细说明)证实,只被一个线程访问,在编译这个代码时候就不生成 Synchronized 关键字,仅仅生成代码对应机器码。...锁粗化 假设有几个程序上相邻同步块(代码段/共享资源)上,每个同步块使用是同一个锁实例。 那么 JIT 会在编译时候这些同步块合并成一个大同步块,并且使用同一个锁实例。...这种方式虽然不会带来上下文切换,但是会消耗 CPU 资源。为了综合较长较短两种线程等待模式,JVM 会根据运行过程中收集到信息来判断,锁持有时间是较长时间或者较短时间。

29410

分享近百道JavaScript 基础面试题,帮助你巩固JavaScript 基础知识

bind() 方法创建一个新函数,调用时具有指定 this 值和传递给它参数。 12. JavaScript 中循环遍历数组有哪些不同方法?...回调函数是作为参数传递给另一个函数并在该函数内部调用函数。一个示例是 setTimeout() 函数,你可以在其中传递一个回调函数以一定延迟后执行。 43....JavaScript 中 push() 方法用途是什么? push() 方法一个或多个元素添加到数组末尾并返回数组新长度。 48. JavaScript 中如何检查变量是否属于特定类型?...JavaScript 没有内置方法来比较两个对象是否相等。您需要手动比较它们属性和值。 55. JavaScript 中 toUpperCase() 方法用途是什么?... JavaScript 中如何检查变量是否为空? 可以通过变量与 null、undefined 或空字符串进行比较来检查变量是否为空。 65. JavaScript 中有哪些不同类型错误处理?

17810

JavaScript性能优化

,如果内存中有非常多对象需要修改,那么时间开销会大一些) 标记清除算法 核心思想:分标记和清除两个阶段 第一个阶段:遍历所有对象找标记活动对象(活动对象:可达对象) 第二个阶段:遍历所有对象清除没有标记对象...小空间用于存储新生代对象(64位→32M | 32位→16M) 新生代指的是存活时间较短对象 (什么是存活时间较短对象:当前代码内有一个变量a局部作用域,变量b全局作用域,a存活时间是比较短...通过原型新增方法 原型对象上新增实例对象需要方法。...上添加两种方式测试代码,进行性能对比,性能上原型对象上添加方法性能要更好 ?...html> 避免属性访问方法使用 JS不需要属性访问方法,所有属性都是外部可见 使用属性访问方法只会增加一层重定义,没有访问控制力 如下测试用例,从性能上避免属性访问方法使用性能上要更好一些

1.1K10

前端性能优化JavaScript

大多数情况下,对一个直接量和一个局部变量数据访问性能差异是微不足道 JavaScript 中有四种基本数据访问位置: 直接量 直接量仅仅代表自己,而不存储于特定位置。...,存储一个 JavaScript 数组对象 对象成员 具有字符串索引,存储一个 JavaScript 对象 ---- 总结 直接量与局部变量访问速度非常快,数组项和对象成员需要更长时间 局部变量比域外变量访问速度快...,访问速度越慢 将对象成员、数组项、域外变量存入局部变量能提高 js 代码性能 三、dom 编程 对 DOM 操作代价昂贵,富网页应用中通常是一个性能瓶颈。...如果许多选项保存在一起并经常检查,位掩码有助于加快整体性能 原生方法 无论你怎样优化 JavaScript 代码,它永远不会比 JavaScript 引擎提供原生方法更快。...经验不足 JavaScript 开发者经常犯一个错误是代码中进行复杂数学运算,而没有使用内置 Math 对象中那些性能更好版本。Math 对象包含专门设计属性和方法,使数学运算更容易。

1.8K30

如何用原生 DOM API 生成表格

学到些什么 本教程中,你学习如何: 用 JavaScript 生成一个表格 用本机 DOM API 来操作表 要求 要学习本教程,你应该对 HTML 和 JavaScript 有基本了解。...题目要求你用 JavaScript 构建一个 HTML 表。你任务是依据 “mountains” 数组数据生成表格,将对象key对应到列并且每行一个对象。...填充表头工作只做了一半,可以看到表头中填充了一堆 th。每个表头必须映射到对象描述数据组成 key 上。 信息已经存在于数组 mountains 中一个对象内部。...接下来该填表了…… 生成行和单元格 为了填充表格可以遵循同样方法,但这次我们需要迭代 mountains 数组每个对象。当进入 for…of 循环时,将为每个项目创建一个新行。...这个接口有两种方法,其中最重要是 insertCell。 给定一个对象数组,可以使用 for…of 循环来迭代生成行。对于每个对象,我们可以使用 for … in 生成单元格。

1.9K20

50道JavaScript详解面试题,你需要了解一下

在这种情况下,只有一个唯一对象,它具有两个常量x和y,它们指向内存中唯一对象,并在控制台上返回True。 6、数组对象JavaScript原始对象吗?...JavaScript中,我们处理大多数事物都是对象,类似地,数组只是JavaScript特殊对象,它们具有其他对象没有的属性。 7、以下函数返回类型是什么?...答案是False,await关键字仅阻止执行包含await关键字特定函数内代码。 9、以下打印什么? JavaScript函数是对象,typeof name输出function。...不可以,因为字符串JavaScript中是不可变,指向字符串变量可以分配给另一个字符串。 21、承诺链中嵌套捕获可以捕获承诺链中向上抛出错误吗?...43、class关键字JavaScript中有什么作用? 使JavaScript更加面向对象只是语法上,即使使用class关键字,JavaScript仍会使用原型继承。

3.5K40

JavaScript 模式》读书笔记(2)— 基本技巧2「建议收藏」

注意,这里复制并不是说单纯复制代码至另一处,而是通过js代码复用模式另一个函数中使用。   ...从技术上来说,可以使用for-in循环来遍历数组(因为JavaScript中,数组也是对象),但是不推荐这样做,因为当该数组对象已经被自定义函数扩大后,这样做有可能会导致逻辑上错误。...所以,请一定避免在你代码中使用eval()。 该函数可以任意字符串当作一个JavaScript代码来执行。...当需要讨论代码是预先就编译好(不是动态运行时决定),是没有理由需要使用eval()。而如果代码是在运行时动态生成,则也有其他更好方法来代替eval()实现其功能。...另一个避免自动成为全局变量方法eval()调用封装到一个即时函数中。

25140

JavaScript 模式》读书笔记(2)— 基本技巧2

注意,这里复制并不是说单纯复制代码至另一处,而是通过js代码复用模式另一个函数中使用。   ...从技术上来说,可以使用for-in循环来遍历数组(因为JavaScript中,数组也是对象),但是不推荐这样做,因为当该数组对象已经被自定义函数扩大后,这样做有可能会导致逻辑上错误。...所以,请一定避免在你代码中使用eval()。 该函数可以任意字符串当作一个JavaScript代码来执行。...当需要讨论代码是预先就编译好(不是动态运行时决定),是没有理由需要使用eval()。而如果代码是在运行时动态生成,则也有其他更好方法来代替eval()实现其功能。...另一个避免自动成为全局变量方法eval()调用封装到一个即时函数中。

36210

jdk源码分析之HashMap--为什么key不建议是可变对象

详细介绍答案之前,再问一个问题,代码使用层面,如果key是可变对象,对我们get查询操作有影响吗?有什么影响? 首先,还是先看一下get方法代码: ?...没错,还真有关系,hash方法是基于keyhashCode做散列运算,那么当然不同key有不同hashcode(非绝对),hash方法同样会算出不同hash值,然后映射到数组不同位置,这一点是没有疑问...那假如说key是可变对象,比如说key是一个人,value是他工作信息,第一次put之后,插入到Entry 数组具体位置,那如果这个key对应的人对象内部属性发生变化,体重变动,那么会导致key...hashcode发生变化,反映到get操作就是,hash散列运算和之前得到hash值发生变化,直接导致indexFor()方法射到 Entry数组位置发生变化,结果就是根据这个key永远无法再找到之前插入数据了...本篇篇幅较短,但是同样希望给大家开发过程中带来更好效率和体验。

48240

前端系列第8集-Javascript系列

隐式类型转换 JavaScript隐式类型转换是指在运行代码时,JavaScript 引擎自动一个数据类型转换为另一个数据类型。...显式类型转换 JavaScript显式类型转换是开发人员明确地一个数据类型转换为另一个数据类型。...JavaScript特殊之处在于它原型链机制,它允许对象继承另一个对象属性和方法。... JavaScript 中,可以通过以下几种方式实现继承: 原型链继承 原型链继承是通过一个对象实例作为另一个对象原型来实现继承。这种方式简单易懂,但有一些缺点,比如无法实现多重继承。...代码复用:函数式编程中提供了高阶函数和函数组机制,可以方便地复用代码。 缺点: 学习曲线陡峭:函数式编程需要对一些复杂概念进行深入理解,需要花费较长时间去学习和适应。

18810

【THE LAST TIME】this:call、apply、bind

明确说,this不会以任何方式指向函数词法作用域,作用域好像是一个所有可用标识符作为属性对象,这从内部来说他是对,但是JavaScript代码不能访问这个作用域“对象”,因为它是引擎内部实现...另一个最为常见就是 Node 了,同样作为宿主环境,node 也有自己 JavaScript 引擎:v8....我们都知道,JavaScript 一个对象赋值是地址赋值给变量。引擎在读取变量时候其实就是要了个地址然后再从原地址读出来对象。...每个参数会映射到相应位置 Function 参数上。但是如果所有的参数作为数组传入,它们会作为一个整体映射到 Function 对应一个参数上,之后参数都为空。...放到程序中我们可以理解为,某一个对象没有想用方法去实现某个功能,但是不想浪费内存开销,就借用另一个有该方法对象去借用一下。

51530

探究JS V8引擎下数组”底层实现

也就是说,它通过计算一个关于键值函数,所需查询数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录数组称做散列表。...解释完了扩容和减容,来看下刚刚提到holes对象。 holes (空洞)对象指的是数组中分配了空间,但是没有存放元素位置。...对于holes,快数组中有个专门模式, Fast Elements 模式中有一个扩展,是Fast Holey Elements模式。...当数组中有空洞,没有赋值数组索引将会存储一个特殊值,这样访问这些位置时就可以得到 undefined。这种情况下就会是 Fast Holey Elements 模式。...源码中 Dictionary 结构 可以看到,内部是一个HashTable,然后定义了一些操作方法,和 Java HashMap类似,没有什么特别之处。

1.8K30

JavaScript 权威指南第七版(GPT 重译)(三)

一个对象属性分配到另一个对象一个原因是,当你有一个对象定义了许多属性默认值,并且希望这些默认属性复制到另一个对象中,如果该对象中不存在同名属性。...(这非常类似于稍后将在本章介绍数组map()方法,但在构建数组时执行映射比构建数组然后将其映射到另一个数组更有效。) 7.2 读取和写入数组元素 使用[]运算符访问数组元素。...ES6 定义了一种重要新定义函数方式,即“箭头函数”没有function关键字:箭头函数具有特别简洁语法,并且一个函数作为另一个函数参数传递时非常有用。... ES6 及更高版本中,另一个解决此问题方法嵌套函数f转换为箭头函数,这样正确继承this值。...再举一个例子,考虑接下来mapper()函数。它接受一个函数参数并返回一个使用该函数一个数组射到另一个数组新函数。

13410

分享一些你可能还没使用 JavaScript 技巧

本文分享一些你可能还没有使用JavaScript技巧,这些技巧可以让你代码更加高效和易于维护。让我们一起来看看这些技巧吧!...JavaScript中有许多数组方法。最受欢迎数组方法有.filter()、.find()、.map()、.reduce()。它们可以合并在一起产生一些精彩模式,就像这些一样。...不使用上述任何方法一个相当干净和易读方法是使用数组reduce方法,上述代码现已得到修正。...您知道吗,这里URL对象遵循了建造者模式,它是您可以代码中实现许多设计模式之一,可以复杂逻辑隐藏在一个单独位置,并提高可读性。...结尾 正如我们本文中所看到JavaScript一个充满惊喜和创新语言,拥有丰富功能和技巧,可以帮助我们更好地处理数据和构建Web应用程序。

18920
领券