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

7 个棘手的 JavaScript 面试题!

Answer 数组对象的 length 属性具有特殊的行为:减少 length 属性的值的副作用是删除自己的数组元素。...另外,关注微信公众号:Java技术栈,在后台回复:面试,可以获取我整理的 N 篇 Java 面试题。 因此,numbers 数组的内容为 5。...这是等效的代码,在返回后插入了分号: function arrayFromValue(item) { return; [item]; } arrayFromValue(10);...当我第一次尝试解决它时,这也是我的答案! 执行此代码段有两个阶段。 Phase 1 1、for() 重复3次,在每次迭代过程中,都会创建一个新的函数 log() 来捕获变量 i。...7、变量提升 Question 如果在声明前访问 myVar 和 myConst,会发生什么情况? myVar; // => ??? myConst; // => ???

59530

Java程序员,这7个简单但棘手的JavaScript面试问题。你会吗?

Answer 数组对象的 length 属性具有特殊的行为:减少length属性的值的副作用是删除自己的数组元素。...因此,numbers 数组的内容为 [5]。 4.自动分号插入 Question arrayFromValue() 返回什么值?...这是等效的代码,在返回后插入了分号: function arrayFromValue(item) { return; [item]; } arrayFromValue(10); // => undefined...当我第一次尝试解决它时,这也是我的答案! 执行此代码段有两个阶段。 Phase 1 for() 重复3次,在每次迭代过程中,都会创建一个新的函数 log() 来捕获变量 i。...7.变量提升 Question 如果在声明前访问 myVar 和 myConst,会发生什么情况? myVar; // => ??? myConst; // => ???

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

    关于 React 的 keep-alive 功能都在这里了(上)

    , 我下面展示代码是参考了网上的几种方案后稍作改良的。...二、核心原理、 先赘述一下前提, react的虚拟dom结构是一棵树, 这棵树的某个节点被移除会导致所有子节点也被销毁 所以写代码时才需要用 Memo进行包裹。...五、KeepAliveProvider开发 这里先列出一个"概念代码", 因为直接看完整的代码会晕掉。 import CacheContext from '....{props.children} 渲染 KeepAliveProvider 标签中的内容 5. div渲染需要缓存的组件 这里放一个div作为渲染组件的容器, 当我们可以获取到这个div的实例时则对其childNodes...div, 我也没发现太好的办法, 我尝试使用doms把这个div元素替换掉, 这就会导致没有react的数据驱动了, 也尝试将这个dom 设置 "hidden = true" 然后将doms插入到这个div

    5K20

    每次面完腾讯,都是一把汗。。。

    图解学习网站:https://xiaolincoding.com 大家好,我是小林。...,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小 稳定性方面:进程中某个线程如果崩溃了,可能会导致整个进程都崩溃。...当我们在查询条件中对索引列进行表达式计算,也是无法走索引的。 MySQL 在遇到字符串和数字比较的时候,会自动把字符串转为数字,然后再进行比较。...: 什么情况下会出现幻读?...这种通过「版本链」来控制并发事务访问同一个记录时的行为就叫 MVCC(多版本并发控制)。 事务之间怎么避免脏读的? 针对不同的隔离级别,并发事务时可能发生的现象也会不同。

    19310

    【ssm个人博客项目实战06】博客类别的添加修改删除的实现1、博客类别service层完善3、博客类别管理界面功能完善1、功能实现

    ids.split(","); 这样我们就拿到了全部要删除的id了 就是代码实现 // 添加和更新博客类别 @RequestMapping("/save") public String...handler: function () { alert("刷新"); } }], 这一段代码是用户给我们分页显示时添加对应的工具条...我主要说一下handler属性 当我们点击对应的按钮 就应该会执行函数,那么这个函数的实现写在哪里,那就是写在对应的handler中的, 所以我在对应的handler中写上alert 测试一下handler...Paste_Image.png 当我们点击添加或者修改按钮时 我们是处于blogTypeMange.jsp中 所以我们需要完善这个页面其实能弹出对话框 的url不同 当我们点击不同按钮 设置不同的url即可 //定义全局url 用于修改与添加操作 var url; //省略其他代码 让url声明在第一行 /** * 添加或者修改博客类别

    1.1K60

    用 100 行代码提升 10 倍的性能

    所以通常的优化方法之一是通过空间换取时间;而另一个方法……稍后再引出。 这里我们尝试通过建立字典树(Trie)来优化搜索。...那么此时无论用户想访问任何属性的值,只要从树的根节点出发,依据属性字母出现的顺序访问树的叶子节点,即可得到该属性的值。比如当我们想访问tea时: ?...|--a (ids: [1]) 这样当用户搜索 an 时,我们能返回所有的匹配项 OK,有了思路之后我们开始实现代码。...a,那么字典树的查找效率会比遍历搜索低,也就是反而花费的时间长;当搜索词变得具体时,比如ali,字典树的查找效率会比遍历搜索高 效率反而低的问题不难想到是为什么:当你搜索词简单时,访问的叶子节点会少,...相信如果数据结构变得更复杂,效率提升会更明显 本文源代码的地址是 (https://github.com/hh54188/search-trie-tree)[https://github.com/hh54188

    76420

    Vue3 的响应式和以前有什么区别,Proxy 无敌?(面试热门,源码级详解)

    ', ids.map(id => ({ id }))) }) // ✅ 触发响应 ids.push(2) 复制代码 这样,每次调用各种 api 改变 ids 数组,都会重新发送请求获取最新的学生列表...如果我在监听函数中调用了 map、forEach 等 api, 说明我关心这个数组的长度变化,那么 push 的时候触发响应是完全正确的。 但是它是如何实现的呢?感觉似乎很复杂啊。...因为 effect 第一次执行的时候, data 还是个空数组,怎么会 push 的时候能触发更新呢? 还是用刚刚的小测试,看看 map 的时候会发生什么事情。...'length' : ITERATE_KEY)); } 其实就是我们聊数组的时候,代码简化掉的那部分。判断非数组,则触发 ITERATE_KEY 对应的依赖。...(在我刚上手 Vue 的时候,我是真的不知道什么情况下该用 $set),它的 composition-api 又可以完美对标 React Hook,并且得益于响应式系统的强大,在某些方面是优胜于它的。

    77621

    等不及了,冲银行去了!

    当我们使用左或者左右模糊匹配的时候,也就是 like %xx 或者 like %xx%这两种方式都会造成索引失效; 当我们在查询条件中对索引列使用函数,就会导致索引失效。...当我们在查询条件中对索引列进行表达式计算,也是无法走索引的。 MySQL 在遇到字符串和数字比较的时候,会自动把字符串转为数字,然后再进行比较。...min_trx_id :指的是在创建 Read View 时,当前数据库中「活跃事务」中事务 id 最小的事务,也就是 m_ids 的最小值。...乐观锁: 基本思想:乐观锁假设多个事务之间很少发生冲突,因此在读取数据时不会加锁,而是在更新数据时检查数据的版本(如使用版本号或时间戳),如果版本匹配则执行更新操作,否则认为发生了冲突。...悲观锁: 基本思想:悲观锁假设多个事务之间会频繁发生冲突,因此在读取数据时会加锁,防止其他事务对数据进行修改,直到当前事务完成操作后才释放锁。

    17710

    教你如何在 React 中逃离闭包陷阱 ...

    警告:如果你从未接触过 React 中的闭包,本文可能会让你脑浆迸裂,在阅读本文时,请确保随身携带足够的巧克力来刺激你的脑细胞。...}; return inside; }; 问题是每次调用都会重新创建内部函数,如果我决定尝试缓存它,会发生什么情况呢?...如果我尝试对 onClick 回调使用 Ref 而不是 useCallback 钩子,会发生什么情况呢?有些文章会建议通过这样做来 memoize 组件上的 props。...我们在 onClick 中的值从未更新过,你能告诉我为什么吗? 当然,这又是一个过期闭包。当我们创建 onClick 时,首先使用默认状态值(undefined)形成闭包。...}); }; 不带依赖数组的 useEffect 会在每次重新渲染时触发。

    69040

    Vue3 的响应式和以前有什么区别,Proxy 无敌?

    ', ids.map(id => ({ id }))) }) // ✅ 触发响应 ids.push(2) 复制代码 这样,每次调用各种 api 改变 ids 数组,都会重新发送请求获取最新的学生列表...如果我在监听函数中调用了 map、forEach 等 api, 说明我关心这个数组的长度变化,那么 push 的时候触发响应是完全正确的。 但是它是如何实现的呢?感觉似乎很复杂啊。...因为 effect 第一次执行的时候, data 还是个空数组,怎么会 push 的时候能触发更新呢? 还是用刚刚的小测试,看看 map 的时候会发生什么事情。...'length' : ITERATE_KEY)); } 复制代码 其实就是我们聊数组的时候,代码简化掉的那部分。判断非数组,则触发 ITERATE_KEY 对应的依赖。...(在我刚上手 Vue 的时候,我是真的不知道什么情况下该用 $set),它的 composition-api 又可以完美对标 React Hook,并且得益于响应式系统的强大,在某些方面是优胜于它的。

    1.3K10

    Vue3 的响应式和以前有什么区别,Proxy 无敌?

    ) // ✅ 触发响应 ids.push(2) 这样,每次调用各种 api 改变 ids 数组,都会重新发送请求获取最新的学生列表。...如果我在监听函数中调用了 map、forEach 等 api, 说明我关心这个数组的长度变化,那么 push 的时候触发响应是完全正确的。 但是它是如何实现的呢?感觉似乎很复杂啊。...因为 effect 第一次执行的时候, data 还是个空数组,怎么会 push 的时候能触发更新呢? 还是用刚刚的小测试,看看 map 的时候会发生什么事情。...'length' : ITERATE_KEY)); } 其实就是我们聊数组的时候,代码简化掉的那部分。判断非数组,则触发 ITERATE_KEY 对应的依赖。...(在我刚上手 Vue 的时候,我是真的不知道什么情况下该用 $set),它的 composition-api 又可以完美对标 React Hook,并且得益于响应式系统的强大,在某些方面是优胜于它的。

    23310

    顺序表操作详解

    return; } 值得注意的是,在销毁顺序表需要由内而外销毁,如果直接销毁整个顺序表并不会自动帮你把内部数组销毁,反而这样会让你丢失对应的地址在想要释放内部数组就很困难了。...六、实现随机插入删除 接下来便是如何把数据进行体现出来,在这里我采用随机插入随机删除的方法进行代码演示,原理就是状态码进行分发,在接收任务时进行概率分配任务,详细如下: int main...答案是否定的,如果你C语言学了realloc这个函数,那么你扩容的问题就可以简单解决 。首先,要思考是在什么情况下才需要进行扩容,在哪步操做下需要扩容?...其实很简单,用一个整形指针变量接收realloc后的值,在进行判断是否扩容失败,如果成功则把这个变量的值赋给结构体的数组,这里realloc的值可以自行调整大小,我这里默认扩容两倍大小。...可以看到确实发生了扩容操作,这样一个完整的顺序表就实现出来了!

    7110

    【实战篇】| 模拟 20 万数据快速查询 IP 归属地

    今天主要模拟一下怎么在 20 万数据中定位一个 IP 地址的归属地,不知道大家有没有用过百度搜索过 IP 地址的归属地。当我们在百度输入 IP 地址时,就会出现这个 IP 地址的归属地。 ?...如果你真认为问题分析完成只剩下写代码了,你会接连的遇到棘手的问题。为了能够让大家更能体会到实际问题的复杂性,我会采用分步式递进最终的解决方法。...问题一:当下手开始写代码时,你会发现 IP 地址并不是像上述我们用到的整数,那我们怎么办呢? ※ 解决:你会想能不能将 IP 转化为整数来计算,这里我用 js 来转化。...代码我们都做好了,我在这用前端做了一的简单的交互页面,我们来模拟一下,你会发现,当我们划分区间后,数据并没有 20 万,因为我们只记录区间的起始值查找就可以了,20 万数据实际大约也就是十几万甚至小于这个值...我们可以设想一下如果把全球的数据存储到浏览器中会发生什么,所以小鹿随机生成了 50 亿的数据,来进行排序二分查找,你猜发生了什么情况?

    2.3K10

    JavaScript中的forEach,你踩过哪些坑?请避开这些常见误区

    在JavaScript的世界里,forEach是我们常用的数组遍历方法之一。大多数开发者都熟悉它的基础用法,但你知道吗?在处理异步操作时,forEach可能会让你掉进一些意想不到的“坑”。...更具体地说,当我们试图在forEach内部删除元素时,forEach不会重新计算索引,这会导致一些元素被跳过,或者某些情况下出现未定义的行为。...: [1, 3, 4] 在这个例子中,当我们删除元素2时,forEach并不会重置或调整索引,因此它继续处理原数组中的下一个元素。...因此,虽然数组的长度是4,但实际被遍历的元素只有3个。 跳过已删除的值 当在forEach循环中删除数组元素时,forEach会跳过这些已删除的值。...想要了解更多JavaScript技巧和编程知识,记得关注我的公众号,第一时间获取最新的技术干货。你的支持是我们创作的最大动力! 我们下期再见,Happy Coding!

    20410

    thinkphp5.0漏洞_thinkphp6漏洞

    新建一个模型 再来新建一个index控制器下的test方法 变量$ids引入的方式是数组 , 在这里要看下官方的input函数 Thinkphp5.0引入了一个新的助手函数input来替代3.2.3...版本里的I函数; /a 表示参数ids取值的规则是通过数组的形式来获取到,这点很关键 最后用update保存一组数据,从代码层看上去没有进行SQL拼接的痕迹; 那就看一下update方法框架是怎么定义的...值得一提的是这种数据库账户和密码泄漏的前提是SQL语句执行失败或者发生异常的时候才会出现。...结论当然不是的,这种问题也会产生与select查询方法里;看下方代码 public function test() { $ids = input("ids/a"); $gather =...ids[0’\]=1 笔者尝试着连接对方的数据库,可惜的是运气不好 0x04漏洞总结 Tp5.0框架采用PDO机制已经很安全了,只要不出现拼接字符的现象,至少在绑定参数查询的时候不会产生注入漏洞;也由此可见

    1.5K30

    面试官扎心一问:知道 CopyOnWriteArrayList 吗?

    其核心思想是,如果有多个调用者(Callers)同时要求相同的资源(如内存或者是磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者视图修改资源内容时,系统才会真正复制一份专用副本...以下代码是向CopyOnWriteArrayList中add方法的实现(向CopyOnWriteArrayList里添加元素),可以发现在添加的时候是需要加锁的,否则多线程写的时候会Copy出N个副本出来...,写时复制出一个新的数组,完成插入、修改或者移除操作后将新数组赋值给array ** volatile (挥发物、易变的)** :变量修饰符,只能用来修饰变量。...volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变 化时,强迫线程将变化值回写到共享内存。...面试官问:MySQL的自增ID用完了,怎么办? ArrayList插入1000w条数据之后,我怀疑了jvm...

    36420

    记一次内存泄漏排查过程

    结论 先说结论,导致内存泄漏的代码在 org.apache.dubbo.admin.service.RegistryServerSync#notify 中,核心代码就是这一段 if (URL_IDS_MAPPER.containsKey...(url.toFullString(), md5); } 简单来说就是 URL_IDS_MAPPER一直在增长,导致它占用的内存越来越越大,最后导致不停的fullGC 分析 什么情况下会执行这个方法?...当/dubbo下的节点发生变更的时候 URL_IDS_MAPPER的本意只是想维护一个 md5 与 fullUrl 的关系,但因为控制不当,导致它的容量不断增长,感觉这个URL_IDS_MAPPER完全没有必要...比如每次提供者或者消费者 上线 -> 下线 -> 上线,虽然该服务一直都只有一个实例,但却产生了多个MD5,如果频繁的进行这个操作,就会导致URL_IDS_MAPPER容量越来越大 与URL_IDS_MAPPER...top -> 看GC -> 内存dump -> MAT分析 -> 查看大对象 -> 发现URL_IDS_MAPPER中元素有100万+ ->再分析代码

    50420

    线程安全的queue-浅谈线程安全那些事儿

    在并发编程时,如果多个线程访问同一资源,我们需要保证访问的时候不会产生冲突,数据修改不会发生错误,这就是我们常说的 线程安全 。   那什么情况下,访问数据时是安全的?...什么情况下,访问数据是不安全的?如何知道你的代码是否线程安全?要如何访问数据才能保证数据的安全?   本篇文章会一一回答你的问题。   1. 线程不安全是怎样的?   ...当我们还是无法确定我们的代码是否具有原子性的时候,可以尝试通过 dis 模块里的 dis 函数来查看   当我们执行这段代码时,可以看到 number += 1 这一行代码,由两条字节码实现。   ...这里我拿字典的 update 操作举例,代码和执行过程如下图   从截图里可以看到,info.update(new) 虽然也分为好几个操作   但我们要知道真正会引导数据冲突的,其实不是读操作,而是写操作...当我们对它进行写入和提取的操作不会被中断而导致错误,这也是我们在使用队列时,不需要额外加锁的原因。   他是如何做到的呢?

    47820
    领券