編程題
攜程&蘑菇街&bilibili:手寫數組去重、扁平化函數百度:什麼是淺拷貝和深拷貝?有什麼區別?如何實現 Object 的深拷貝題目僅僅會在「前端進階算法集訓營」裡發布,每個工作日早 9: 00,瓶子君都會在第二天解答呦
掃碼添加瓶子君小姐姐微信,免費拉你進營學習前端進階算法
以下是一些節選前端進階算法1:如何分析、統計算法的執行效率和資源消耗?
好的數據結構與算法能夠大大縮短代碼的執行時間與存儲空間,那麼我們如何去衡量它喃?本節就主要介紹算法性能的衡量指標—複雜度分析
前端進階算法2:從Chrome V8源碼看JavaScript數組(附贈騰訊面試題)
在 JavaScript 中,可以在數組中保存不同類型值,並且數組可以動態增長,不像其它語言,例如 C,創建的時候要決定數組的大小,如果數組滿了,就要重新申請內存空間,這是怎麼做到的喃?
本節從 Chrome v8 源碼角度回答了這個問題
前端進階算法3:從瀏覽器緩存淘汰策略和Vue的keep-alive學習LRU算法(附Leetcode題解)
由瀏覽器緩存策略引出 LRU 算法原理,然後透過 vue 中 keep-alive 源碼看 LRU 算法的實現,最後來一道leetcode,動手實現一個 LRU 緩存機制,點亮前端技能 X 點
前端進階算法4:鍊表原來如此簡單(+leetcode刷題)
介紹常用的鍊表(單鍊表、雙鍊表以及循環鍊表),畫圖且代碼實現常見的鍊表操作及複雜度問題,並總結出了一套常見的鍊表答題五步驟
前端進階算法5:全方位解讀前端用到的棧結構(+leetcode刷題)
代碼實現棧結構及相關操作,並附上複雜度分析,作為前端不應僅僅了解棧結構,也需要了解棧在前端的應用,這裡擴展介紹面試、前端進階資深必備的知識:調用棧、棧空間與堆空間以及相關的垃圾回收,讓算法不再獨立與前端
前端進階算法5:全方位解讀前端用到的棧結構(+leetcode刷題)
代碼實現棧結構及相關操作,並附上複雜度分析,作為前端不應僅僅了解棧結構,也需要了解棧在前端的應用,這裡擴展介紹面試、前端進階資深必備的知識:調用棧、棧空間與堆空間以及相關的垃圾回收,讓算法不再獨立與前端
前端進階算法6:一看就懂的隊列及配套算法題
隊列這種數據結構,據瓶子君了解,前端需要了解的隊列結構主要有:雙端隊列、滑動窗口,它們都是算法中是比較常用的數據結構
前端進階算法7:頭條正在面的哈希表問題
如何設計哈希函數以及如何解決衝突,這是哈希表考察的重要問題。
一個好的散列函數需要具有以下基本要求:易於計算、統一分布、較少的衝突
常見的解決衝突方法有幾個:開放地址法(也叫開放尋址法)、鏈地址法、再哈希法、建立一個公共溢出區
前端進階算法8:小白都可以看懂的樹與二叉樹
不同與我們之前介紹的線性結構,今天我們介紹一種非線性結構:樹,樹的內容比較多,包括BST樹、AVL樹、Trie樹等
前端進階算法9:看完這篇,再也不怕堆排序、Top K、中位數問題面試了
堆是一個完全二叉樹,並且堆上的任意節點值都必須大於等於(大頂堆)或小於等於(小頂堆)其左右子節點值,推可以採用數組存儲法存儲,可以通過插入式建堆或原地建堆,堆的重要應用有:
中位數問題:維護兩個堆,一大(前50%)一小(後50%),奇數元素取大頂堆的堆頂,偶數取取大、小頂堆的堆頂前端進階算法集訓營並且她也開通了前端進階算法集訓營第一期,在營裡:
你可以和志同道合的前端朋友們一起進階前端算法,從0到1構建完整的數據結構與算法體系。瓶子君不僅介紹算法,還將算法與前端各個領域進行結合,包括瀏覽器、HTTP、V8、JS框架原理等。所以這裡不僅僅是進階算法,更是進階 JS。你可以每天學習一道大廠算法題(阿里、騰訊、百度、字節等等)或 leetcode,瓶子君都會在第二天解答喲!她還會每周、每月總結一次,回顧一下我們已經做了什麼,以後要做什麼,每天一小步,一月後收穫滿滿掃碼關注公眾號和瓶子君一起進階前端算法,還有各種前端進階必備好文,同時兼顧前端學習的深度與廣度!