Web前端面試題:如何分析時間複雜度-開課吧

2020-12-11 進擊的小科

問題:如何分析時間複雜度?

Web前端開發

解析:當問題規模即要處理的數據增長時,基本操作要重複執行的次數必定也會增長,那麼我們關心地是這個執行次數以什麼樣的數量級增長。

我們用大O表示法表示下常見的時間複雜度量級:

常數階O(1) 線性階O(n) 對數階O(logn) 線性對數階O(nlogn) 平階O(n)

當然還有指數階和階乘階這種常極端的複雜度量級,我們就不討論了。

O(1)

傳說中的常數階的複雜度,這種複雜度無論數據規模n如何增長,計算時間是不變的。

const increment = n => n++

舉個簡單的例:

不管n如何增長,都不會影響到這個函數的計算時間,因此這個代碼的時間複雜度都是O(1)。

O(n)

線性複雜度,隨著數據規模n的增,計算時間也會隨著n線性增。

典型的O(n)的例就是線性查找。

const linearSearch = (arr, target) =>

{ for (let i = 0; i < arr.length; i++)

{

if (arr[i] === target)

{ return i

}

}

return -1

}

線性查找的時間消化與輸入的數組數量n成個線性例,隨著n規模的增大,時間也會線性增長。

O(logn)

對數複雜度,隨著問題規模n的增長,計算時間也會隨著n對數級增長。

典型的例是分查找法。

functions binarySearch(arr, target)

{ let max = arr.length - 1

let min = 0

while (min <= max) {

let mid = Math.floor((max + min) / 2)

if (target < arr[mid]) {

max = mid - 1

} else if (target > arr[mid])

{ min = mid + 1

} else {

return mid

}

}

return -1

}

在分查找法的代碼中,通過while循環,成 2 倍數的縮減搜索範圍,也就是說需要經過 log2^n 次即可跳出循環。

事實上在實際項目中, O(logn) 是個非常好的時間複雜度,比如當 n=100 的數據規模時,分查找只需要7次,線性查找需要100次,這對於計算機而言差距不,但是當有10億的數據規模的時候,分查找依然只需要30次,而線性查找需要驚人的10億次, O(logn) 時間複雜度的算法隨著數據規模的增大,它的優勢就越明顯。

O(nlogn)

線性對數複雜度,隨著數據規模n的增長,計算時間也會隨著n呈線性對數級增長。

const mergeSort = array =>

{ const len =

array.length if (len <

2) {

return len

}

const mid = Math.floor(len / 2)

const first = array.slice(0, mid)

const last = array.slice(mid)

return merge(mergeSort(fist), mergeSort(last))

function merge(left, right)

{ var result = [];

while (left.length && right.length)

這其中典型代表就是歸併排序

result.push(left.shift());

} else {

result.push(right.shift());

}

}

while (left.length)

result.push(left.shift());

while (right.length)

result.push(right.shift());

return result;

}

}

O(n)

平方級複雜度,典型情況是當存在雙重循環的時候,即把 O(n) 的代碼再嵌套循環遍,它的時間複雜度就是 O(n)了,代表應用是冒泡排序算法。

function

bubleSort(arra){ var

temp;

for(var

i=0;i<arra.length;i++){ for(var

j=0;j<arra.length-i-1;j++){

if(arra[j]>arra[j+1]){ temp

=arra[j];

arra[j]=arra[j+1];

arra[j+1]=temp;

}

}

};

以上就是小科今天整理提供的Web前端開發面試題,希望為Web前端同學提供了有用的面試素材,以後小科每日均會提供Python、Web及MySQL資料庫相關的習題。學習沒有捷徑,希望大家都能少走一些彎路,順利找到工作!

相關焦點

  • 2020Web前端面試題匯總-開課吧
    Web前端面試題說說前端中的事件流?以上就是小科今天整理提供的Web前端開發面試題,希望為Web前端同學提供了有用的面試素材,以後小科每日均會提供Python、Web及MySQL資料庫相關的習題。學習沒有捷徑,希望大家都能少走一些彎路,順利找到工作!
  • 2020Web前端開發常見面試題匯總-開課吧
    2020Web前端面試題了解一些面試題及答案,可以幫助自己順利通過面試哦。以下是小編為大家整理的web前端面試題及答案,供各位參考。Web前端面試題:異步請求適合在哪個生命周期調?解析:官實例的異步請求是在mounted命周期中調的,實際上也可以在created命周期中調。Web前端面試題:各個生命周期的作用是什麼?
  • 2020最新Web前端經典面試題試題及答案(持續更新)-開課吧
    Web前端面試題Web前端面試題:說說你對webpack的看法解析:webpack是一個模塊打包工具,可以使用webpack能很好的管理、打包web開發中所用到的HTML、js、css以及各種靜態文件(圖片、字體等),讓開發過程更加高效。對於不同類型的資源,webpack有對應的模塊加載器。webpack模塊打包器會分析模塊間的依賴關係,最後生成了優化且合併後的靜態資源。
  • 2020Web前端面試題:如何預防XSS?-開課吧
    問題:如何預防XSS?2020Web前端面試題解析:XSS 攻擊有兩大要素:1. 攻擊者提交惡意代碼。2.輸入過濾在用戶提交時,由前端過濾輸,然後提交到後端。這樣做是否可行呢?答案是不可行。旦攻擊者繞過前端過濾,直接構造請求,就可以提交惡意代碼了。那麼,換個過濾時機:後端在寫資料庫前,對輸進行過濾,然後把「安全的」內容,返回給前端。
  • 零基礎入門Web前端,什麼樣的人適合學Web前端-開課吧
    現在所說的web前端,主要是負責前端交互和架構設計的,至於特效和美工,都是UI的工作內容。隨著網際網路的快速發展,web前端人員的需求量也是越來越大。各種網際網路項目的不斷興起讓身處其中的玩家對用戶體驗提出了更高的要求,前端開發也由此逐漸成為了一個不可缺少的專業研發角色。未來幾年前端較為熱門的就業方向將包含小程序、人工智慧、遊戲、移動端開發等,並且隨著低端市場的飽和,各企業對於web前端開發高端技術人才的需求越來越大,就業前景可謂是十分廣闊的哦。
  • 2020Web前端開發常見面試題及答案全解析-開課吧Web前端
    Web前端開發問題一:前端如何進行seo優化,以下說法錯誤的是:A.爬蟲依賴於標籤來確定上下文和各個關鍵字的權重;解析:title 指圖片的信息(滑鼠移到圖片上顯示)、alt 指圖片不顯示時顯示的文字以上就是小科今天整理提供的Web前端開發面試題,希望為Web前端同學提供了有用的面試素材,以後酷仔每日均會提供Python及Web相關的習題。
  • 每日一學:2020Web前端面試題匯總,提高面試成功機率-開課吧
    2020Web前端面試題Web前端面試題:怎樣查找字符串中出現最多的字符和個數?{ num= $0.length;char = $1;}});console.log(`字符最多的是${char},出現了${num}次`);Web前端面試題題
  • 每日一學:2020Web前端面試題匯總-開課吧
    Web前端面試題問題:怎樣判斷是否是電話號碼?解析:function isPhone(tel) {var regx = /^1[34578]\d{9}$/;return regx.test(tel);}問題:如何進行字符串查找?
  • 開課吧:2020Web前端開發常見面試題及答案,提高面試通過率!
    Web前端開發面試題及答案問題:實現節流函數(throttle)解析:防抖函數原理:規定在個單位時間內,只能觸發次函數。如果這個單位時間內觸發多次函數,只有次生效。fn.apply(this, args); flag = true; }, delay); }; };適用場景: 拖拽場景:固定時間內只執行次
  • 2020Web前端面試題:MVVM的優缺點有哪些?-開課吧
    2020Web前端面試題優點:1.以上就是小科今天整理提供的Web前端開發面試題,希望為Web前端同學提供了有用的面試素材,以後小科每日均會提供Python及Web相關的習題。學習沒有捷徑,希望大家都能少走一些彎路,順利找到工作!
  • web前端開發工程師面試題大全
    最近看到web群裡的人,特別關心面試web前端開發工程師時,面試官都會問那些問題,今天我整理了一份,web前端開發工程師崗位面試題的大全,大家可看看
  • 2020Web前端常見經典面試題及答案-開課吧
    Web前端常見面試題及答案問題:js有哪些類型?本文收錄了一些在Web前端開發面試中經常會遇到的面試題及答案,希望對大家有所幫助,若有所疏漏歡迎指正。
  • 答對這40道經典web前端面試題,想不拿到offer都難!
    想成功就業web前端工程師,想要能高薪就業,那麼除了好的web前端技能以外,還得有好的面試技巧,如果提前就了解更多企業的面試要求及面試題目,那麼可以讓我們的面試成功的機率大大的提高。今天小編就整理了一些經典的web前端面試題,希望可以祝大家一臂之力。一、HTML常見題目01、Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義?02、HTML5為什麼只需要寫?
  • 2018web前端面試總結
    關於流程一般的實習&校招招聘大體有這麼一個流程:(這裡我個人都是走的官網投遞的渠道,沒有經歷過宣講會的環節,這一部分我沒啥經驗)筆試筆試作為招聘的第一個環節,一般考察的都是專業基礎知識,這裡會著重考察你在學校的計算機相關基礎,也就是很多人會發現,我明明考的是前端的卷子為啥前端的知識點考的這麼少,而且有時候也會發現,前端的卷子考的沒有前端的知識點
  • Web前端面試真的只掌握企業常用技能就行嗎?
    編者的話:面試是所有求職者最重視的一個環節,這決定著一個求職者是否能夠順利的求職成功,找到一個理想的工作,作為一個求職者,在面試之前,最關心的問題是面試官會問什麼樣的問題,自己該如何準備,本期筆者從Web前端崗位面試題目和要求進行分析,整理出Web前端學習者要重點學習和關注的幾大類技能和知識。
  • 好程式設計師Web前端培訓分享jQuery面試題梳理
    好程式設計師Web前端培訓分享jQuery面試題梳理,目前jQuery在企業中的應用還是很普遍的,企業HR在招聘時也會考察求職者對jQuery的掌握。接下來的好程式設計師web前端培訓班就給大家簡單匯總了一些jQuery經典面試題及答案,希望能給大家帶來幫助。
  • 毫不誇張說這是全網,目前最全的前端面試題庫,覆蓋98%知識點
    ;在這裡,有面試筆試歷年前端真題的解答與拓展。目錄面試筆試經驗技巧篇經驗技巧1 如何巧妙地回答面試官的問題2經驗技巧2 如何回答技術性的問題3經驗技巧3 如何回答非技術性問題4經驗技巧4 如何回答快速估算類問題5經驗技巧5 如何回答算法設計問題6經驗技巧6 如何回答系統設計題
  • 直擊開課吧web全棧架構師培訓課程怎麼樣?
    而北京有一家IT在線教育培訓平臺開課吧,為了更好的服務學員,開課的領導班子在疫情突發之前迅速啟動應急措施,第一是做好疫情期間各類防護物資的準備,另一方面,也為大家做好了關於疫情期間各項公共設施保障的消毒準備。今天為大家帶來的是關於開課吧web全棧架構師的培訓課程。在疫情期間,能做的除了期待疫情的早早結束,保護好自己,還有一個可以做的那就是學習,提升自己。
  • 開課吧開啟雙十二教育節:以實戰驅動的Web前端課程
    隨著網際網路的快速發展,Web前端人員的需求量越來越大。前端開發也由此逐漸成為了一個不可缺少的專業角色。作為數位化人才在線教育平臺,開課吧帶領名師團隊研發了豐富的課程體系。
  • 好程式設計師web前端培訓分享HTML/CSS部分面試題
    好程式設計師web前端培訓分享HTML/CSS部分面試題。準備參加web前端面試的小夥伴們一起看一看吧,希望能夠對大家有所幫助! 同步就是指一個進程在執行某個請求的時候,若該請求需要一段時間才能返回信息,那麼這個進程將會一直等待下去,直到收到返回信息才繼續執行下去; 異步是指進程不需要一直等下去,而是繼續執行下面的操作,不管其他進程的狀態。當有消息返回時系統會通知進程進行處理,這樣可以提高執行的效率。