原创 確定一個整數是否是2的冪

給定一個整數,編寫一個函數來確定它是否是2的冪。(範圍:1 - 2^31-1)測試用例:輸入 : 16, 輸出 : true 因爲 2^4 = 16輸入 : 18, 輸出 : false.方法1最明顯的暴力方法就是除以2,然後檢查它是否

原创 發佈第一個npm包

這篇文章主要介紹如何發佈一個npm包,這個過程並不複雜,學完之後你可以發佈任何你喜歡的代碼到npm網站上,之後你可以使用npm命令安裝在其他項目中。發佈到npm網站之前,你必須在npm網站上創建一個你自己的賬號,這是網站的網址:http

原创 如何回答各種原理

面試官在問了一些常見的技術後 總會問各種原理,比如 ajax 原理 http原理 mvvm原理等。像這些原理,範圍很廣,知識面很多,回答這些問題真的不好回答。但是我們可以把原理拆分成個個小的知識點,然後分別作答。回答流程如下:1、如果是

原创 webpack原理和優化

Webpack打包原理Webpack 的運行流程是一個串行的過程,從啓動到結束會依次執行以下流程:初始化參數:從配置文件和 Shell 語句中讀取與合併參數,得出最終的參數;開始編譯:用上一步得到的參數初始化 Compiler 對象,加

原创 阿里面試題(含內推)

新冠疫情慢慢消退,各行各業裁員跳槽大洗牌,爲了收割滿意的offer,每天不得不逼着自己天天刷題。下面是來自阿里的面試題,希望可以幫到你。例1實現一個 normalize 函數,能將輸入的特定的字符串轉化爲特定的結構化數據。符串僅由小寫字

原创 異步編程的解決方案

首先先明白一點,異步編程的目標就是怎樣讓它更像同步編程。異步編程的解決方案有哪些?1、回調2、事件發佈訂閱3、Promise4、Generator5、async/await回調由於node涉及大量的異步操作,所以回調非常常見。fs.re

原创 快速排序爲什麼快

您是否想過快速排序爲什麼快?因爲它是目前最快的排序算法之一。但是,它仍然比冒泡,插入和選擇排序要快,並且在所有情況下都可以快速運行。在平均情況下,快速排序的複雜度爲Θ(n log(n)),最差的是Θ(n2)。當問題被分爲幾個小塊時,這些

原创 什麼是虛擬DOM(React16源碼分析)

const element = <h1>Hello, world!</h1>; 這個有趣的標籤語法既不是字符串也不是 HTML。它被稱爲 JSX,是一個 JavaScript 的語法擴展。我們建議在 React 中配合使用 JSX,JS

原创 理解非阻塞異步概念

線程與進程進程(Process)是系統資源分配和調度的單元。一個運行着的程序就對應了一個進程。一個進程包括了運行中的程序和程序所使用到的內存和系統資源。如果是單核CPU的話,在同一時間內,有且只有一個進程在運行。但是,單核CPU也能實現

原创 徹底理解js是單線程

JS執行是單線程單線程是指Js引擎執行Js時只分了一個線程給他執行,也就是執行js時是單線程的。那麼問題來了,什麼是線程?進程又是什麼?在分析瀏覽器的渲染過程之前,我們先了解一下什麼是進程和線程:(1)什麼是進程?進程是CPU進行資源分

原创 requestIdleCallback函數

我們都知道React 16實現了新的調度策略(Fiber), 新的調度策略提到的異步、可中斷,其實就是基於瀏覽器的 requestIdleCallback和requestAnimationFrame兩個API。所以這裏我們有必要了解一下

原创 瞭解FPS屏幕刷新率

FPS是圖像領域中的定義,是指畫面每秒傳輸幀數。FPS”也可以理解爲我們常說的“刷新率(單位爲Hz)”我們在裝機選購顯卡和顯示器的時候,都會注意到“刷新率”。一般我們刷新率都在75Hz(即75幀/秒)以上。例如:75Hz的刷新率刷也就是

原创 let聲明變量時的特點

ES6 新增了let命令,用來聲明變量。它的用法類似於var,但是所聲明的變量,只在let命令所在的代碼塊內有效。{ let a = 10; var b = 1; } a // ReferenceError: a is no

原创 React Fiber 瞭解一下

舊版React中,更新過程是同步的,這可能會導致性能問題。當React決定要更新組件樹時,會做很多事,比如調用各個組件的生命週期函數,計算和比對Virtual DOM,最後更新DOM樹,這整個過程是同步進行的,也就是說只要一個加載或者更

原创 redux解決了什麼問題?

隨着 JavaScript 單頁應用開發日趨複雜,JavaScript 需要管理太多的 state (狀態)。這些 state 可能包括服務器響應、緩存數據、本地生成尚未持久化到服務器的數據,也包括 UI 狀態,如激活的路由,被選中的標