A. 大廠前端對演算法有什麼要求
作為一個畢業多年小前端,表示演算法什麼的早就還給老師了...
相比較演算法,我覺得數據結構和設計模式對前端來說更重要,理由有三:
1)js可以原生提供的數據類型的確有限。很多時候我們都是用對象和數組來簡單粗暴的解決問題,並寫一堆復雜的業務代碼來支撐邏輯。
比如,我們想做一個輪播圖,很自然的就會想到用數組來記錄輪播圖片的列表數據,我們這里時髦一把,用vue數據驅動視圖的思想來實現,每次輪播翻頁後我們需要改變數組中圖片的順序,看似沒有問題。但是當業務復雜的時候呢,比如我們需要支持循環播放和雙向播放,就需要數組的邊界值進行特殊判斷了,這種特殊判斷就降低了代碼的可維護性。
那如果我們換個角度思考,一開始我們就不用數組來定義圖片列表,而改用一個雙向鏈表呢?問題就會簡單很多。而鏈表這個數據結構在js裡面是沒有原生實現的,需要我們自己來完成。
因此掌握常用的數據結構以及其相關方法還是很有必要的。
2)設計模式是在某個場合下對某個問題的一種優雅的解決方案。這里我加粗了優雅,沒錯,要解決一個問題,往往有不止一個答案。
比如,我想給頁面上一連串按鈕綁定點擊事件,要求點擊按鈕的時候彈出按鈕的內容。一個簡單粗暴的方法是給每個按鈕添加一個onclick事件。那假設按鈕個數非常多或者本身這個按鈕還有其它點擊事件要執行呢,這個方案就不那麼可行了。有的同學想到了可以用事件委託,沒錯,這里你就用到了一種設計模式,代理模式。孰優孰劣,一目瞭然。
我認為每個業務場景都有一種合適的優雅的解決方案,而這就是設計模式。
3)通常情況下,前端需要處理的數據量和計算復雜度都不高。比如我想找到一個數組中的最大值,一般我會直接用數組的排序方法而不會考慮自己寫個冒泡或者快排。如果真要處理大量的數據,恐怕這個處理過程是否應該放在前端就值得商榷了。
問題需要不斷抽象,抽象的水平和經驗能力成正比。
B. 前端有必要學習演算法嗎
需要學一些演算法,JS這塊也是可以做演算法分析的。
除非你是UI,平面設計,可以不用學演算法。
只要是編程開發,都是需要學習一些演算法方面的知識的。
C. 演算法在前端開發的中實際應用有哪些
如果是游戲前端,演算法很重要。。。比如角色尋路,主要就是使用A*演算法,怪物的AI,通常需要使用樹相關的演算法,比如二叉樹,行為樹等。。。如果是APP或網頁前端,實際工作中,需要使用演算法的概率幾乎是零。。
D. 為什麼我認為數據結構與演算法對前端開發很重要
我不認為很重要,後台開發才涉及數據結構和演算法,前端講究的是人機界面的友善程度和易用性和美觀性,網頁的布局,使得用戶想看什麼就知道在哪裡看到,想操作什麼就知道按鈕在哪裡,前端更注重這些
E. 為什麼數據結構與演算法,對前端開發很重要
前端的技術領域和范圍正在飛速演進中,再過3年5年不懂演算法和數據結構的前端慢慢就淘汰了。幾大互聯網公司的已經開始在使用數據挖掘、貝葉斯、3D圖形圖像等領域演算法到前端領域。對瀏覽器的了解也逐步深入到內部實現機制原理上,從原理上理解渲染。無線端的前端越來越像嵌入式應用開發,這些都更需要有扎實而綜合的計算機專業基礎。
F. 前端和演算法有關系么
演算法你指的是網路的一些seo、sem 的演算法嗎?演算法是為了打擊一些非法的操作,當然也有利於用戶的體驗,如果可以在前端布局一些演算法,對網站也是有好處的。前端布局一些演算法是有好處的。
G. 演算法是前端用還是後端用
不分前後端,是一種思想和邏輯。前後端都能用到。前端一般用不到比較深的像冒泡排序都是演算法,不過想要提升能力或者面試什麼的可以學習下
H. Goole搜索引擎對於手機端演算法與pc端演算法有什麼不同演算法的改變對前端與UI會產生哪些影響
演算法Mobilegeddon針對的是移動端搜索結果,而不會影響PC端和平板電腦,從側面也反映出Google對於移動端的重視,那麼,這次演算法調整的重點-讓移動端用戶有更好的網站體驗究竟有哪些參考指標呢?為此Google 方面提出了一個「移動友好度(mobile-friendly)」的概念。
移動友好度的概念是一系列的體驗組合,具體包括頁面文字字型大小、鏈接排列、內容與屏幕適應等方面的用戶體驗的設計。新演算法除了強調移動友好度,還具有實時性、只針對單個頁面等特性。對於那些體驗不好的網站,Google將會做出「嚴厲」的懲罰:在搜索結果中降低它的評分、排名,甚至搜不到。
變革總會伴隨陣痛。新的演算法可能會傷害眾多小企業的利益,這些小企業可能沒有資金或者動力來為移動端進行網站調整。不過數據表明,Google這樣做也是很合理的。
根據市場研究公司comScore的數據報告顯示,在2010年-2014年幾年裡,網民使用智能手機上網增長了394%,平板增長1721%,而PC增長僅為37%。通過圖例,我們可以清晰看到,越來越多的人通過手機上網,移動互聯網的趨勢也已經很明顯。所以,搜索巨頭Google重視移動端的友好體驗也理所當然。
I. 為什麼我認為數據結構與演算法對前端開發很重
首先說結論:你的後端部門不夠硬。把後端的事情推給前端了。
前端後端是程序產業化發生的分工。
首先對比傳統開發模式:一人模式。即做前端又做後端。設計者決定表現方式,用表現方式決定前端,從而決定後端。前端後端除了可視化以外並無明顯分別。你可以把後端代碼放前端里(跟計算有關的?)。也可以把前端代碼放後端里(跟查看有關的?)。
產業化後,人們發現,一人模式, 由於返工特點,在大程序(姑且這么說)合作時,產生的返工成本無法接受。於是人們引入工業模式:設計論證差不多了以後,拿出一個不需要改的可行方案。分配給各部具化。這不但減少返工,還能提高人力利用率。(每個人都干起來,不閑著)
前後之分就是從這里開始的。姑且分為設計階段和實行階段。設計階段就是通篇考慮,保證可行(不行就自己上)。實行階段就是做自己能做的,按設計要求具化。可以看出,兩個階段需要的人的編程能力是不一樣的。實行階段可以換人,而設計階段需要總體負責,需要的經驗肯定不一樣。
於是產業化分工降成本的有勢就體現出來了:訓練專業化工人的成本,小於掌握所有環節的工人的成本。(全是工人,這么說沒錯)
於是把工作分為前後端,可以大致的對應到設計和具化分類上。其實是設計和具化。(具化就是已經有大致路徑,需要精確細化。並且不能偏離路徑)
所以後端的人最討厭前端的人談論演算法。這等於說他的演算法是拉gi。但是他的設計書確實有毛病,或者根本是業務需求——根本什麼都不是。直接挑戰了他的存在意義。所以先噴你沒毛病。
J. 大廠前端對演算法的要求如何
作為一個畢業多年小前端,表示演算法什麼的早就還給老師了...
相比較演算法,我覺得數據結構和設計模式對前端來說更重要,理由有三:
1)js可以原生提供的數據類型的確有限。很多時候我們都是用對象和數組來簡單粗暴的解決問題,並寫一堆復雜的業務代碼來支撐邏輯。
比如,我們想做一個輪播圖,很自然的就會想到用數組來記錄輪播圖片的列表數據,我們這里時髦一把,用vue數據驅動視圖的思想來實現,每次輪播翻頁後我們需要改變數組中圖片的順序,看似沒有問題。但是當業務復雜的時候呢,比如我們需要支持循環播放和雙向播放,就需要數組的邊界值進行特殊判斷了,這種特殊判斷就降低了代碼的可維護性。
那如果我們換個角度思考,一開始我們就不用數組來定義圖片列表,而改用一個雙向鏈表呢?問題就會簡單很多。而鏈表這個數據結構在js裡面是沒有原生實現的,需要我們自己來完成。
因此掌握常用的數據結構以及其相關方法還是很有必要的。
2)設計模式是在某個場合下對某個問題的一種優雅的解決方案。這里我加粗了優雅,沒錯,要解決一個問題,往往有不止一個答案。
比如,我想給頁面上一連串按鈕綁定點擊事件,要求點擊按鈕的時候彈出按鈕的內容。一個簡單粗暴的方法是給每個按鈕添加一個onclick事件。那假設按鈕個數非常多或者本身這個按鈕還有其它點擊事件要執行呢,這個方案就不那麼可行了。有的同學想到了可以用事件委託,沒錯,這里你就用到了一種設計模式,代理模式。孰優孰劣,一目瞭然。
我認為每個業務場景都有一種合適的優雅的解決方案,而這就是設計模式。
3)通常情況下,前端需要處理的數據量和計算復雜度都不高。比如我想找到一個數組中的最大值,一般我會直接用數組的排序方法而不會考慮自己寫個冒泡或者快排。如果真要處理大量的數據,恐怕這個處理過程是否應該放在前端就值得商榷了。
問題需要不斷抽象,抽象的水平和經驗能力成正比。