JavaScript 面试备忘单 – 第 2 部分

javascript 面试备忘单 - 第 2 部分

常见 leetcode 模式

// two pointers - in-place array modificationconst modifyarray = (arr) => {    let writepointer = 0;    for (let readpointer = 0; readpointer  {    let slow = head, fast = head;    while (fast && fast.next) {        slow = slow.next;        fast = fast.next.next;        if (slow === fast) return true;    }    return false;};// sliding window - fixed sizeconst fixedslidingwindow = (arr, k) => {    let sum = 0;    // initialize first window    for (let i = 0; i < k; i++) {        sum += arr[i];    }    let maxsum = sum;    // slide window    for (let i = k; i  {    let start = 0, sum = 0, minlen = infinity;    for (let end = 0; end = target) {            minlen = math.min(minlen, end - start + 1);            sum -= arr[start];            start++;        }    }    return minlen === infinity ? 0 : minlen;};// bfs - level order traversalconst levelorder = (root) => {    if (!root) return [];    const result = [];    const queue = [root];    while (queue.length) {        const levelsize = queue.length;        const currentlevel = [];        for (let i = 0; i  {    const result = [];    const traverse = (node) => {        if (!node) return;        // pre-order        result.push(node.val);        traverse(node.left);        // in-order would be here        traverse(node.right);        // post-order would be here    };    traverse(root);    return result;};// backtracking templateconst backtrack = (nums) => {    const result = [];    const bt = (path, choices) => {        if (/* ending condition */) {            result.push([...path]);            return;        }        for (let i = 0; i  {    const dp = new array(n + 1).fill(0);    dp[0] = 1; // base case    for (let i = 1; i <= n; i++) {        for (let j = 0; j  {    const memo = new map();    const dp = (n) => {        if (n <= 1) return 1;        if (memo.has(n)) return memo.get(n);        let result = 0;        for (let i = 0; i  {    const stack = []; // [index, value]    const result = new array(arr.length).fill(-1);    for (let i = 0; i  arr[i]) {            const [previndex, _] = stack.pop();            result[previndex] = i - previndex;        }        stack.push([i, arr[i]]);    }    return result;};// prefix sumconst prefixsum = (arr) => {    const prefix = [0];    for (let i = 0; i  {    let left = 0, right = arr.length;    while (left < right) {        const mid = math.floor((left + right) / 2);        if (arr[mid]  {    let left = 0, right = arr.length;    while (left < right) {        const mid = math.floor((left + right) / 2);        if (arr[mid]  i);        this.rank = new array(n).fill(0);    }    find(x) {        if (this.parent[x] !== x) {            this.parent[x] = this.find(this.parent[x]); // path compression        }        return this.parent[x];    }    union(x, y) {        let rootx = this.find(x);        let rooty = this.find(y);        if (rootx !== rooty) {            if (this.rank[rootx] < this.rank[rooty]) {                [rootx, rooty] = [rooty, rootx];            }            this.parent[rooty] = rootx;            if (this.rank[rootx] === this.rank[rooty]) {                this.rank[rootx]++;            }        }    }}

常见的时间/空间复杂度模式

// O(1) - ConstantArray.push(), Array.pop(), Map.set(), Map.get()// O(log n) - LogarithmicBinary Search, Balanced BST operations// O(n) - LinearArray traversal, Linear Search// O(n log n) - LinearithmicEfficient sorting (Array.sort())// O(n²) - QuadraticNested loops, Simple sorting algorithms// O(2ⁿ) - ExponentialRecursive solutions without memoization

以上就是JavaScript 面试备忘单 – 第 2 部分的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1499349.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 21:43:21
下一篇 2025年12月19日 21:43:26

相关推荐

  • 使用 Laravel、Inertiajs v 和 Vue 3 实现无限滚动

    在这篇综合指南中,我们将探索如何使用 inertia.js v2.0 和 vue 3 在 laravel 应用程序中实现无限滚动。我们将介绍前端和后端实现,特别注意处理整页刷新并保持滚动位置。 目录 了解组件前端实现后端实现现实示例:带有类别的博客文章最佳实践和注意事项 了解组件 无限滚动的实现依赖…

    2025年12月19日
    000
  • Javascript:使用 Salesforce 实施无密码登录

    salesforce 提供无头无密码登录流程,允许注册用户无缝访问应用程序。无密码登录非常用户友好,它只需要一个有效的电子邮件地址。在这篇文章中,我将分享一些用于使用 salesforce 实现无密码登录流程的代码片段。 要求 开始之前,请确保满足以下条件: a) 您有权访问 salesforce …

    2025年12月19日
    000
  • 想要从事自由软件的远程实习吗?

    阅读我的博客文章,了解我如何获得 Mozilla Firefox 的 @outreachy 实习机会 我第一次申请 Outreachy 是在今年,五月份的实习期间,虽然我没有通过贡献者轮次,但我有幸参与有关可访问性和本地化的伟大项目。  特别是,我致力于将 Deutsch Transifex 术语表…

    2025年12月19日
    000
  • EchoAPI 教程:如何在 EchoAPI 中使用脚本

    在本教程中,我们将探索如何利用 echoapi 中的脚本进行高级 api 测试和开发。用 javascript 编写的 echoapi 脚本允许您向 api 请求添加动态功能。通过了解执行前和执行后脚本,您可以轻松增强测试能力、管理变量和操作请求参数。让我们深入了解 echoapi 脚本的强大功能,…

    2025年12月19日 好文分享
    000
  • 使用 Nextjs Tailwind CSS、Prisma 和 Clerk 构建的 MeetRoomly 应用程序

    见面会 使用 next.js 15、tailwind css、prisma 和 clerk 构建的 meetroomly 应用程序。功能包括用户注册、登录、添加房间、查看房间评论和预订。在开发过程中接受贡献。 入门 克隆存储库:git clone https://github.com/saidmou…

    2025年12月19日
    000
  • 了解 Fetch API 中 resok 的重要性

    我一直是 axios 数据获取的狂热用户,但我最近决定改用 fetch api。在探索过程中,我遇到了一个微妙但显着的差异,我认为值得分享。 让我们从这段代码开始。您认为它会记录什么? try{ //this returns a 404 error const res = await fetch(“…

    2025年12月19日
    000
  • 您没有使用(但应该使用)的被低估的 NPM 软件包

    NPM 的世界是广阔的。拥有超过 200 万个可用软件包,您很容易会被一些大牌——React、Lodash、Express——所吸引,而错过一些真正被低估的宝石,这些宝石可以让您作为开发者的生活变得更加轻松。 1。日期-fns-tz无需额外开销即可解决时区问题 时区是最糟糕的。跨时区解析和格式化日期…

    2025年12月19日
    000
  • ✨ 带有玻璃变形效果的发光迪斯科灯泡动画! ✨ 代码 HTML CSS 和 JAVASCRIPT

    Disco Bulb Animation body { margin: 0; height: 100vh; display: flex; justify-content: center; align-items: center; background: linear-gradient(45deg, …

    2025年12月19日
    000
  • React 19 中的新增功能

    行动 react 应用程序中的一个常见用例是执行数据突变,然后更新状态作为响应。例如,当用户提交表单以更改其姓名时,您将发出 api 请求,然后处理响应。过去,您需要手动处理挂起状态、错误、乐观更新和顺序请求。 例如,您可以在 usestate 中处理挂起和错误状态: // before actio…

    2025年12月19日
    000
  • 人工智能驱动的代码生成:彻底改变开发

    人工智能 (AI) 正在改变开发人员编写、调试和维护代码的方式。人工智能工具现在为开发人员提供智能代码建议、自动化测试和无缝集成,使软件开发比以往更快、更高效。在这篇博文中,我们将探讨人工智能代码、其功能、优势、挑战以及可用的最佳工具。 什么是AI代码? 人工智能代码是指由人工智能系统生成、优化或增…

    2025年12月19日
    000
  • EchoAPI for Cursor 入门指南:断言可视化技术

    在api开发中,使用脚本进行断言起着至关重要的作用;然而,它们的复杂性可能会成为学习的障碍,常常给开发人员带来令人沮丧的体验。具体来说,检查某些响应所需的代码通常很冗长且难以理解,这给新团队成员带来了陡峭的学习曲线。这种复杂性可能会导致开发速度变慢并给代码审查带来挑战。 EchoAPI 针对光标的创…

    2025年12月19日 好文分享
    000
  • 文本压缩和代码分割和现代图像格式 – 性能优化

    我尝试了以下方法来优化我的业余项目性能: 文本压缩代码分割现代图像格式. 分析器 我构建的应用程序使用了 vite 和 pnpm。现代 web 构建工具在构建过程中默认自动优化 web 性能。所以我们可以 pnpm run build 然后 pnpm dlxserve dist。然后使用 chrom…

    2025年12月19日
    000
  • 如何处理异步操作

    如何处理异步操作 在 typescript 中,我们有多种方法来处理异步操作:回调、promise 和 async/await。异步编程使我们能够管理可能需要时间的操作,例如从 api 获取数据,而不会阻塞其他代码的执行。 回调 回调是作为参数传递给另一个函数的函数,并在任务完成后执行。虽然回调适用…

    2025年12月19日
    000
  • 改变范式:从过早的重构和虚假的“可重用性”到适应性、可扩展性和可靠性

    在软件世界中,人们普遍痴迷于过早的重构以及对虚假可重用性的追求。开发人员(尤其是刚起步的开发人员)经常被教导“可重用性”是圣杯。但不惜一切代价追求可重用性往往会导致过度设计的解决方案,这些解决方案过于通用、过于僵化,并且与当前项目的具体需求相距甚远。事实上,它可能会导致我们通常所说的“抽象地狱”——…

    2025年12月19日
    000
  • 采用声明式数据访问来尊重您作为开发人员的智慧

    在软件开发的世界中,我们经常发现自己在两种范式之间左右为难:命令式和声明式。对于许多开发人员来说,命令式代码的吸引力在于它的简单性——只需逐步编写指令,您就可以确切地知道计算机在做什么。然而,随着复杂性的增加,这种循序渐进的方法变成了分散在代码库中的混乱的逻辑。相比之下,声明式方法旨在让您描述您想要…

    2025年12月19日
    000
  • MeetRoomly 是一款使用 Nextjs Prisma、Tailwind CSS 和 Clerk 轻松管理和预订会议室的应用程序

    见面会 使用 next.js 15、tailwind css、prisma 和 clerk 构建的 meetroomly 应用程序。功能包括用户注册、登录、添加房间、查看房间评论和预订。在开发过程中接受贡献。 入门 克隆存储库:git clone https://github.com/saidmou…

    2025年12月19日
    000
  • 4年前端开发必备技术

    前端开发市场发展迅速,带来了新的工具和实践,改变了创建 Web 应用程序的体验。对于开发人员来说,无论是初学者、全职人员,还是想要了解自己要寻找什么的招聘人员,了解当今不可或缺的技术至关重要。让我们探讨一下 2024 年市场真正发生变化的因素。 1. 现代 JavaScript:坚实的基础 无论你使…

    2025年12月19日
    000
  • 在生产中避免控制台日志:稳健日志记录的最佳实践

    简介 日志记录对于调试和监控应用程序至关重要,但不正确的日志记录可能会导致性能问题、安全漏洞和混乱的输出。在本文中,我们将探讨为什么在生产中应避免使用 console.log,并使用示例提供最佳实践。 为什么在生产中应该避免使用 console.log? 性能开销-> 这在我的系统中花费了大约…

    2025年12月19日
    000
  • 使用 Vitest 进行单元测试:下一代测试框架

    为什么选择维泰斯特? vitest 的设计考虑了现代开发。这就是它脱颖而出的原因: 速度 vitest 以 vite 作为基础,利用其闪电般快速的热模块替换 (hmr) 和 esbuild 进行捆绑和转译。结果是: 智能即时监视模式:仅针对受影响的文件重新运行测试,从而实现即时反馈循环。开箱即用的 …

    2025年12月19日
    000
  • 如何在nodejs环境中使用代理

    配置代理有一个既定的标准。它通过以下环境变量运行: https_proxy:https 流量的代理http_proxy:http 流量的代理no_proxy:不应通过代理运行的 url。 nodejs 的本机获取客户端不提供任何开箱即用的功能,但是您可以使用来自 undici http 客户端的代理…

    2025年12月19日
    000

发表回复

登录后才能评论
关注微信