【前端算法】拼多多技術面試算法題分享


我的前端算法面試

算法這個點,是很多程序員的痛,很多朋友表示討厭算法,但是數據結構和算法非常重要!尤其是在大廠(像字節跳動美團,百度,愛奇藝也是一樣的)。

大家一定要好好准備呀!

前不久拿到了拼多多前端的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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM