當前位置:首頁 » 網頁前端 » 前端演算法題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端演算法題

發布時間: 2022-01-21 04:50:27

1. 前端必備的數據結構和演算法知識有哪些

數據結構和演算法是任何從事軟體編程工作人員必須學會的一門課程,不管學深淺,都需要學。前端開發也是軟體編程,建議一定要學一學數據結構和演算法,這樣有利於深層次的問題思考。

2. 前端開發是否有必要知道數據結構和演算法

如果只是單純做前端,沒有。前端的核心是DOM。演算法和數據結構是為了解決效率問題的,而提升前端的效率用到的概念往往僅僅是常識級別的。甚至一些流行的中小型庫中都看不到任何數據結構。可以認為前端是程序員里的一個特例,一般程序員面對的是計算機,前端開發人員面對的僅僅是瀏覽器。如果只是關注前端,學習數據結構和演算法的收益還不如去讀jQuery源碼。

既然前端用不上,樓主還是問到了這個問題,那就說明樓主關注的不僅僅是如何成為一個熟練的前端,而是成為一個優秀的軟體工程師。網站開發之所以流行,一部分是因為開發成本低。這些節省下來的成本,一部分就是開發人員的薪水。換句話說,前端開發簡單,門檻低,所以收入低,可替代性強。跳出前端這個領域,把自己放到軟體工程師的隊伍里,再看這個問題,答案就顯而易見了。如果只是專注於前端技術,那麼能解決的也僅僅是一小部分問題。

如果樓主關心的是如何更好地解決前端的問題,那麼在相當長的一段路上數據結構和演算法是優先順序很低的。如果樓主關心的是自己的職業規劃和自身素質的提升,數據結構和演算法則在任何時候都是優先順序最高的。

3. 前端的演算法面試還可以怎麼問

我的 2018 年前端押題說了,以下三個准備一下即可:
八種排序演算法
二分查找演算法
反轉二叉樹演算法

不要問為什麼,信我就學,面試效果會告訴你一切。

4. 大廠前端對演算法有什麼要求

作為一個畢業多年小前端,表示演算法什麼的早就還給老師了...

相比較演算法,我覺得數據結構和設計模式對前端來說更重要,理由有三:

1)js可以原生提供的數據類型的確有限。很多時候我們都是用對象和數組來簡單粗暴的解決問題,並寫一堆復雜的業務代碼來支撐邏輯。

比如,我們想做一個輪播圖,很自然的就會想到用數組來記錄輪播圖片的列表數據,我們這里時髦一把,用vue數據驅動視圖的思想來實現,每次輪播翻頁後我們需要改變數組中圖片的順序,看似沒有問題。但是當業務復雜的時候呢,比如我們需要支持循環播放和雙向播放,就需要數組的邊界值進行特殊判斷了,這種特殊判斷就降低了代碼的可維護性。

那如果我們換個角度思考,一開始我們就不用數組來定義圖片列表,而改用一個雙向鏈表呢?問題就會簡單很多。而鏈表這個數據結構在js裡面是沒有原生實現的,需要我們自己來完成。

因此掌握常用的數據結構以及其相關方法還是很有必要的。

2)設計模式是在某個場合下對某個問題的一種優雅的解決方案。這里我加粗了優雅,沒錯,要解決一個問題,往往有不止一個答案。

比如,我想給頁面上一連串按鈕綁定點擊事件,要求點擊按鈕的時候彈出按鈕的內容。一個簡單粗暴的方法是給每個按鈕添加一個onclick事件。那假設按鈕個數非常多或者本身這個按鈕還有其它點擊事件要執行呢,這個方案就不那麼可行了。有的同學想到了可以用事件委託,沒錯,這里你就用到了一種設計模式,代理模式。孰優孰劣,一目瞭然。

我認為每個業務場景都有一種合適的優雅的解決方案,而這就是設計模式。

3)通常情況下,前端需要處理的數據量和計算復雜度都不高。比如我想找到一個數組中的最大值,一般我會直接用數組的排序方法而不會考慮自己寫個冒泡或者快排。如果真要處理大量的數據,恐怕這個處理過程是否應該放在前端就值得商榷了。

問題需要不斷抽象,抽象的水平和經驗能力成正比。

5. web前端架構和演算法有哪些

《數據結構》看幾遍,再做一下配套習題,然後在OJ上刷100道題,稍微打一下基礎。從廣泛意義上說,演算法就是你解決問題的思路,你思考得出的方案其實就是一個演算法。數據結構有助於你的演算法實現。一般在大公司,後端工程師一般比前端更吃香一點。前端工程師有一條不錯的出路是往全棧工程師發展,掌握多種前端的技術,再學點後端技術,就變得很搶手了。

6. 如何面試前端工程師

隨著時代的發展,很多新興的就業職位隨之產生。前端工程師將就是隨著互聯網的快速發展而產生的。其實在很多人的觀念里,前端工程師也就是一個切頁面的而已,他們也就是會html、css、javascript這些沒有任何技術含量的網頁製作而已。然而隨著技術飛速發展,人們對這些技術的要求也是越來越高,如果只憑著一個人來把所有的事情都解決是很困難的,所以這個時候前端工程師就開始發揮著他們很大的作用了。

那我們應該如何來面試前端工程師呢?

  • 談吐要大方得體

在我們在面對面試官時我們千萬不要緊張。在進行自我介紹時我們要努力做到自信大方、吐字清晰。我們在自我介紹時要用簡明扼要的話語來介紹自己,突出自己的優點表明自己的求職意向。你要通過寥寥數語把自己的優勢都向面試官介紹清楚。記住不必要的話語要少說。

好了關於如何面試前端工程師這個話題我就聊到這了。希望我的回答能對你有所幫助。

7. Goole搜索引擎對於手機端演算法與pc端演算法有什麼不同演算法的改變對前端與UI會產生哪些影響

演算法Mobilegeddon針對的是移動端搜索結果,而不會影響PC端和平板電腦,從側面也反映出Google對於移動端的重視,那麼,這次演算法調整的重點-讓移動端用戶有更好的網站體驗究竟有哪些參考指標呢?為此Google 方面提出了一個「移動友好度(mobile-friendly)」的概念。
移動友好度的概念是一系列的體驗組合,具體包括頁面文字字型大小、鏈接排列、內容與屏幕適應等方面的用戶體驗的設計。新演算法除了強調移動友好度,還具有實時性、只針對單個頁面等特性。對於那些體驗不好的網站,Google將會做出「嚴厲」的懲罰:在搜索結果中降低它的評分、排名,甚至搜不到。
變革總會伴隨陣痛。新的演算法可能會傷害眾多小企業的利益,這些小企業可能沒有資金或者動力來為移動端進行網站調整。不過數據表明,Google這樣做也是很合理的。
根據市場研究公司comScore的數據報告顯示,在2010年-2014年幾年裡,網民使用智能手機上網增長了394%,平板增長1721%,而PC增長僅為37%。通過圖例,我們可以清晰看到,越來越多的人通過手機上網,移動互聯網的趨勢也已經很明顯。所以,搜索巨頭Google重視移動端的友好體驗也理所當然。

8. BAT 前端工程師面試對演算法一般有怎樣的要求

當我是實習生時,我遇到了BAT三,所以我對演算法沒有要求。當然,實習生的要求也可能比較低。

  • 阿裡面試:

一邊使用電腦直接連接到互聯網看到面試官網站,博客之類的,然後選擇一些問,並幫助考背後的標簽組件的實現和JS類繼承,等等。在第二個方面,我也看到了,GitHub,博客等等。

實際上,在工作的前端使用的演算法並不多,即使像jQuery這樣的公共庫的實現對演算法的應用也不是很好。至於何時使用,請使用NodeJs偶爾編寫自動化工具,前端WebGL矩陣操作,圖像處理,如需要,但我認為這些都超出了一般前端工程師的能力。

9. 為什麼數據結構與演算法,對前端開發很重要

前端的技術領域和范圍正在飛速演進中,再過3年5年不懂演算法和數據結構的前端慢慢就淘汰了。幾大互聯網公司的已經開始在使用數據挖掘、貝葉斯、3D圖形圖像等領域演算法到前端領域。對瀏覽器的了解也逐步深入到內部實現機制原理上,從原理上理解渲染。無線端的前端越來越像嵌入式應用開發,這些都更需要有扎實而綜合的計算機專業基礎。

10. 前端面試會提問到哪些

在面試前端的過程中,有些問題是經常會被提問到的
一、基礎篇
1. 在不使用第三個變數的情況下,如何調換a與b的值?
2. px與em的區別
3. 簡述一下盒模型
4. 頁面導入樣式時,使用link和@import有什麼區別?
5. 簡述一下事件代理
二、HTML常見題目
01、Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義?
02、HTML5為什麼只需要寫?
03、行內元素有哪些?塊級元素有哪些?空(void)元素有哪些?
04、頁面導入樣式時,使用link和@import有什麼區別?
05、介紹一下你對瀏覽器內核的理解?
06、常見的瀏覽器內核有哪些?
07、html5有哪些新特性、移除了哪些元素?如何處理HTML5新標簽的瀏覽器兼容問題?
08、如何區分HTML和HTML5?
09、簡述一下你對HTML語義化的理解?
10、HTML5的離線儲存怎麼使用,工作原理能不能解釋一下?
三、CSS類的題目
01、介紹一下標準的CSS的盒子模型?與低版本IE的盒子模型有什麼不同的?
02、CSS選擇符有哪些?哪些屬性可以繼承?
03、CSS優先順序演算法如何計算?
04、CSS3新增偽類有哪些?
05、如何居中div?如何居中一個浮動元素?如何讓絕對定位的div居中?
06、display有哪些值?說明他們的作用。
07、position的值relative和absolute定位原點是?
08、CSS3有哪些新特性?
09、請解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?
10、用純CSS創建一個三角形的原理是什麼?
四、JavaScript類的題目
01、JavaScript中this是如何工作的
02、請解釋原型繼承的原理。
03、什麼是閉包(closure),如何使用它,為什麼要使用它?
04、.call 和.apply的區別是什麼?
05、請指出JavaScript 宿主對象(host objects) 和原生對象(native objects) 的區別?
06、請指出以下代碼的區別:function Person(){}、var person = Person()、var person = new Person()?
07、請解釋變數聲明提升(hoisting)。
08、什麼是 「use strict」; ? 使用它的好處和壞處分別是什麼?
09、什麼是事件循環 (event loop)?
10、請解釋同步 (synchronous) 和非同步 (asynchronous) 函數的區別。
五、開發及性能優化類題目
01、如何規避javascript多人開發函數重名問題?
02、請說出三種減低頁面載入時間的方法.
03、說說你所了解到的Web攻擊技術。
04、說說你說了解的前端性能優化方法?
05、前端開發中,如何優化圖像?圖像格式的區別?
06、瀏覽器是如何渲染頁面的?
07、頁面重構怎麼操作?
08、什麼叫優雅降級和漸進增強?
09、前端需要注意哪些SEO?如何做SEO優化?
10、平時如何管理你的項目?