zoukankan      html  css  js  c++  java
  • 【前端算法】拼多多技术面试算法题分享

    我的前端算法面试

    算法这个点,是很多程序员的痛,很多朋友表示讨厌算法,但是数据结构和算法非常重要!尤其是在大厂(像字节跳动美团,百度,爱奇艺也是一样的)。

    大家一定要好好准备呀!

    前不久拿到了拼多多前端的offer,分享了一下拼多多的前端面经,很多朋友表示想要算法题的详解,这里就进行一波分享吧。

    拼多多面试算法题

    一面算法

    经常会遇到后端传给我的是一个拍平的树结构,将这样的结构,转为树结构,可以用于类似cascader 例:

    输入:
    const data = [
      {
        parent: 3,
        id: 4,
        value: 4,
      },
      {
        parent: null,
        id: 1,
        value: 1,
      },
      {
        parent: 1,
        id: 2,
        value: 2,
      },
      {
        parent: 1,
        id: 3,
        value: 3,
      }
    ];
    
    输出:
    [
      {
        id: 1,
        value: 1,
        children: [
          {
            id: 2,
            value: 2,
          },
          {
            id: 3, 
            value:3,
            children: [
              {
                id: 4,
                value: 4,
              }
            ]
          }
        ]
      }
    ];
    

    实现思路:

    • 先找到根节点
    • 再从根节点递归找其孩子

    二面算法

    在一个一维坐标,给出一个目标线段,例如(3, 8)。一组源线段,例如(1, 2),(3, 4), (5, 8), (3, 6)。判断源线段组成的合集是否能完全覆盖目标线段,返回 true 或 false

    输入:
    const data = [3, 8];
    const source = [[1, 2], [3, 4], [5, 8], [3, 6]];
    输出:
    true
    

    实现思路: 主要是如何将源线段合并

    • 先将源线段根据起始点排序
    • 再去遍历源线段,每次通过下一个线段的起点与当前终点比较,判断是否又交集,如果有,则合并,如果没有,说明是分开的线段
    • 遍历合并后的源线段,判断是否完全包含目标线段

    三面算法

    合并两个有序数组,并逆序。 这个在力扣有分析,大家可以自己去看。

    作答: 参考leet code 88

    总结

    一面算法题,和三面算法题很快就写出来了,二面的算法题,也是让面试官给了些提示才堪堪写出来。 在面试过程中,遇到算法题,不要慌张。下面几步帮你搞定算法:

    1. 首先搞清楚题目的含义,确定输入输出。和面试官确认题目理解没有错
    2. 整理自己的思路,向面试官讲解一下,思路大体没有问题,再开始编码
    3. 即使没有思路,也不要心慌,或者就不做了,可以笑着让面试官给点提示
    4. 按照提示思考,再重复步骤2
    5. 编码与运行,总结分析时间复杂度与空间复杂度

    最后

    数据结构和算法非常重要!

    这个知识点的 准备需要的时间比较长,要尽早准备 ,多刷一些leetcode或是其他类似的题。 我个人的算法能力一开始也很差 ,但是经过我自己安排的算法专项训练, 效果还是十分显著的 。下面我把自己的复习方法分享给大家。

    下面是数据结构和算法的面试核心知识点,大家可以参考学习,逐个击破。

    • 栈与队列:先进先出、后进先出
    • 线性链表
    • 查找:顺序查找、二分查找
    • 排序:交换类、插入类、选择类
    • 树、二叉树、图:深度优先(DFS)、广度优先(BFS)
    • 递归
    • 分治
    • 滑窗
    • 三大牛逼算法:回溯、贪心、动态规划(DP)

    这里直接给大家分享一份算法速刷宝典吧(这是一个机构自费买来的,现在免费分享给大家啦)

    image

    有需要的朋友可以直接滴滴我获取。

    // Wechat number: 
    study5233
    

    最后

    长风破浪会有时,直挂云帆济沧海。

    祝大家找到心仪的工作,收获满意的 offer !

    加油!

    image

  • 相关阅读:
    MySQL与Navicat的安装及使用教程
    数据结构与算法1
    Spring Cloud Gateway 聚合 Swagger
    Linux上GitLab+Jenkins实现Vue、Spring Cloud项目的自动部署
    JPA and ( or )
    How to autowire RestTemplate using annotations
    MyBatis的解析和运行原理(源码分析)
    MyBatis映射器总结
    什么是泛型?泛型的基本原理与使用优势。
    MyBatis配置总结
  • 原文地址:https://www.cnblogs.com/chengsisi/p/14945298.html
Copyright © 2011-2022 走看看