『壹』 Web前端需要熟悉大學里[高大上]計算專業課嗎
隨著時代的變化,前端的功能不僅僅是簡單的地圖頁面製作。前端工程師的功能已經越來越全面和深入,前端技術的發展迫使我們需要有更高的職業素養。在這個時候,前端工程師首先是一名工程師。
在上學的時候,我也覺得前端學這些是沒意義的。不過在上這些課的時候,也仍然會根據自己的興趣去做一定的了解或者深入,說實話,知識大多是非常有趣的。而現在工作了,結果這些知識就馬上開始用上了。現在我在工作中已經使用到了一部分圖像識別和編譯原理的知識。
不過需要學的東西那麼多,也沒必要說需要將每一門都去做深做透,畢竟人的時間是有限的。除了陪可愛的女朋友,陪可愛的女朋友,陪可愛的女朋友之外,畢竟時間還是不多的。但是對於這些知識有一定程度的了解是有意義的,可以讓你有更強的決斷力來考慮一些更好的方案,並且做出一個些更有趣的東西。
『貳』 前端怎麼面試才能拿到高薪Offer
1. 要有比較好的計算機基礎
這里的計算機基礎指的是數據結構與演算法,操作系統,編譯原理,計算機網路等等。雖然相對於其他方向而言,前端在工作中用到計算機基礎的地方可能少一點,但是無論大小廠,招實習生其實都是為正式招聘做儲備,所以會比較希望招將來有更大發展空間的人,就像里 Web 前後端分離的意義大嗎? - 知乎用戶的回答 和 怎樣成為全棧工程師(Full Stack Developer)? - 知乎用戶的回答 描述的那種。
如果你具備比較好的計算機基礎素養,那麼以後在拓展到其他領域(WebGL —— 計算機圖形學,Node.js 底層 —— 操作系統,JS 引擎和各種預編譯工具—— 編譯原理, etc.)的時候會更快上手。另外有一些公司對前端的概念不局限於 Web 前端,也包括移動端偏前端的部分,這里也需要你有比較好的計算機基礎才能做好。前端領域有很多人已經不滿足於造輪子,直接跑去造語言了,如果你編程基礎夠好,接觸過各種形形色色的編程語言和範式,再上手這些東西也會方便些(比如Ruby/Python->CoffeeScript,Haskell->LiveScript)。
雖然也有很多地方為了招到足夠多能來幹活的前端會降低對計算機基礎的要求,但是打好這方面的基礎是沒有壞處的,如果面試筆試被問到且答得上來,也是能夠加分的。一些大廠經常會出現「不是前端的面試官來面前端」的情況,我個人是覺得如果這類面試官問的都是計算機基礎問題的話,其實真的無可厚非,畢竟人家在面「一個前端程序員」之前,是在面「一個程序員」啊……
2. 要懂得現代前端的一些新技術
比如:
前端自動化工具(Gulp/Grunt等)
模塊化(CommonJS,AMD/CMD模塊載入器,各種Bundler,ES2015 Moles等)
前端 MV* 框架(Backbone,Angular等)
編譯到 CSS 和 JS 的一些語言(Less/Sass/CoffeeScript等)
前端自動化測試工具(Karma,Mocha,Web Driver等)
其他
有一些同學覺得這些東西懂得越多越好,我個人是覺得這些工具不一定要都了解(畢竟它們很多也未必能火多久),但對這些東西要有大致的概念,並且每個領域的用過一兩種(最好是在項目里),清楚它們的優缺點和必要程度。這是區分在前端上投入過一定精力的人和跨行來兼職前端的人的標志。
去大廠校招應聘前端的會有很多隻是做過一些 Web 項目,但不一定對前端的技術很了解,只是看前端門檻比較低就去投簡歷的人。如果你對這些新技術比較了解的話,起碼能夠證明你是比較專注前端而且花過一定時間在上面的。
同時,前端現在確實是一個每天都有很多輪子冒出來的領域,也需要你有足夠強的自學能力和(英文)文檔閱讀能力去跟上社區的這些新動態。接觸過比較多的輪子,才會有自己的判斷,不會老是人雲亦雲火一個學一個。這些工具里,確實也有很多在合適的場景下可以提高前端的生產力或者代碼質量,對這些東西有一定關注,也表明你對自己的生產力和代碼質量是有一定關注的,這其實是一個更廣義的靠譜程序員的特性。
3. 懂得什麼是 Web 標准和瀏覽器開發維護的流程,並且會跟進新發布的標准和主流瀏覽器新實現的特性
當然面試的時候一般不會直接問你這方面的問題,但是如果你懂這裡面的水大概是怎麼一回事的話,在很多問題上(特別是兼容性問題上)都能回答得比較深刻一些。最好清楚:
HTML、CSS、DOM,ECMAScript 和一些泛 HTML5 的標準是怎麼制定的
W3C 和 WHATWG 的區別
各種標準的不同版本和提交狀態是怎麼回事
知道標准和實現的差距(有些人喜歡把 W3C 標准奉為圭臬,但現實中瀏覽器們並不是這樣的)
知道 ECMAScript 和 JavaScript 的區別
知道瀏覽器的一些常見做法(比如給 CSS 特性加前綴)的緣由
標准和瀏覽器這灘水還是很渾的,涉及到很多利益糾葛和大廠的博弈,如果你大概清楚他們的一些事情,不光自己做前端兼容的時候會容易一些(不會只抱怨「為啥XXX就是不能OOO」而是懂得他們的無奈並且認真尋找解決方案),在新特性出來的時候也更容易消化(不是「啊又出了個新東西要學好煩啊」而是「在郵件列表上爭(si)論(bi)了那麼久他們終於把這個搞出來了」),你自己對前端比較基礎的那部分的知識體系更會有條理得多。個人覺得這也是區分比較有經驗的前端和臨時跨行的前端的關鍵之一,這些東西是需要你經過一段時間的耳濡目染才能理清楚,而且會在一定程度上影響你的工作的。
4. 多看書,多關注技術資訊
技術資訊的來源包括RSS、郵件訂閱、比較重要的郵件列表、或者follow Twitter和微博上一些比較有影響力的開發者。個人經驗是,一般在二面或者三面的時候,面試官都會問類似「你從哪裡接觸前端的新技術/你看過哪些書」的問題,因為前端現在技術更新很快,比較專注於前端這方面的人一般都會有自己接觸新技術的渠道,他們自然也會比較關心候選人是不是有在跟進社區的一些動向。其實這也能夠排除那些不太靠譜的臨門跨行的人,因為他們平時一般不會特意去關注前端技術的新動態的。
5. 不僅懂得一些東西怎麼寫,更要懂得一些東西不要怎麼寫
Web 標准大多不是嚴格向後兼容的,很多幾年前常用的寫法,現在已經被社區的大多數人強烈建議避開了,有很多特性也隨著時間的流逝被打上了 deprecated 的標簽,如果你不幸拿著一本比較老的書入門,又不在網上驗證上面說的每一句話,那麼很有可能你就這樣被誤導很久,比如 HTML可能會逐步被XML所取代嗎?(來自《css權威指南》) - 賀師俊的回答 這樣的情況……與之類似的還有:
JavaScript 里那數量令人嘆為觀止的坑
一些在經驗比較豐富的前端看來屬於常識的東西(比如:為什麼 CSS 大多放在 head,JavaScript 多放在 body 底端?)
劃分各種模塊、文件,添加模板的正確方式(比如錯誤方式是一堆腳本/樣式寫在一個超大文件里,或者在有替代方式的情況下在 JavaScript 里拼字元串)
解決一些老問題的新的best/better practice(比如不要到了 2015 年還深陷在回調地獄,去看看 promise 和 generator)
……
這些知識都需要你有一定的前端方面的經驗,看過比較多相關的博客和書,才能慢慢積累起來,所以也能區分靠譜的前端和不靠譜的前端。
6. 不依賴某一個特定的框架或者庫
比如很常見的「離開了jQuery就不會寫前端」星人……也不是說要做原生 JavaScript/CSS 和 DOM 的原教旨主義者,但高度依賴某個框架或者某個庫的話,通常意味著換了一個框架/庫你的學習成本會比不依賴特定輪子的人高,因為這通常是處於還不知道前端領域「什麼是什麼」的階段的表現。
事實上前端領域的這些輪子有一些都是其他領域早就有,或者根本不需要的東西,其中很多的實現原理也不是那麼復雜,只不過是臟活累活。個人覺得對這些東西應該報以「不能知其然而不知其所以然」的態度,起碼大概清楚它們的實現是怎樣的套路,知道它們的優缺點,多接觸幾種,這樣在換一個替代品的時候很快就能上手。
因為前端的特殊性,在開發比較大的項目的時候使用庫和框架是必須的(比如遇到各種滑鼠事件的前端兼容問題時,總不能全都就地寫 if-else 吧,總得封裝一下。遇到非常 data-driven 的項目,還用手動操作 DOM 的寫法很難維護吧,用個 MV* 框架真的不純是偷懶了),但是這些東西都是會迅速改朝換代的,死守著某個特定的庫或者框架,確實不太靠譜。很多公司喜歡問候選人「原生 API 寫個 Ajax 請求怎麼寫」這類問題,感覺很大程度上也是在排除這類人……
7. 懂一點點設計
這里說的不是切圖啊PS啊AI啊什麼的,而是大概懂基礎的視覺傳達/色彩構成/平面構成的知識。畢竟前端是和設計師聯系最密切的程序員,雖然前端要做的事不僅僅包括 UI/UX,但是 UI/UX 卻都主要依賴前端來實現。很多時候,設計師(特別是不會前端技術的設計師)給出的設計可能很難(在照顧兼容性的前提下)實現,這個時候不應該跟他硬拼讓他改設計,或者自己默默糾結怎麼用很 hack 很難維護的方法去實現,而是理解設計的意圖,並且跟設計師溝通,盡可能在工程上容易實現容易維護的前提下實現設計的意圖,哪怕要修改一些具體的表現形態。
最恐怖的就是丟一張圖過來,讓你做到 pixel perfect,你也不問三七二十一直接開工,代碼寫得別扭也不去溝通,遇到不兼容就打個哈哈矇混過關了……設計的目標是讓大眾都能更容易地使用,這樣做是與設計師存在的意義背道而馳的,我也遇到過一些設計師會主動來問前端怎樣的設計在瀏覽器里容易實現,怎樣的設計比較別扭,這樣他才能結合多方面的信息去做設計上的決定。如果你對設計不關心,不與他交流的話,實際上相當於剝奪了一些關心工程實現的設計師的知情權(一般正常的設計師看到自己的設計實現出來效果不好,也會小郁悶的……)。個人覺得與設計師溝通的技巧,也是一個靠譜的前端應該具備的素養。
8. 懂一點點後端
(這個是我看了一下別人的答案補加的)。其實這個和第一點的目的類似,最重要的是別要做一個非得等隊友來才能開工的人。大廠(主要是阿里系)有不少在用 Node 做前後端分離一類的事,另外做前端的經常要在後端還沒寫完的時候自己去 mock 一下數據介面,如果你懂怎麼搭建簡單的伺服器和 serve 數據給前端,那麼就可以提高開發的效率。即使你只想專注前端,但前端有很多東西(比如 JS 跨域,WebSocket,SSE,WebGL 的素材獲取)都需要你懂得架設簡單的後端才能去實踐,這時候不懂後端通常就意味著你要放棄學習這些知識,或者只能紙上談兵。一個正常的前端肯定是要對計算機網路和 HTTP 等協議有一定了解的,有了這些知識去學簡單的後端其實是很水到渠成的事情。
9. 在前端投入足夠的時間
意識到以上幾點還需要投入足夠多的時間才能看到成果,不然很容易出現「道理我都懂,可是OOO」的情況,那最後也還是靠譜不了的……如果不是真的對前端感興趣並且投入足夠多的時間,與其為了「好找工作」而投前端,不如轉一個更合適的方向。阿里前端的困局與突圍 · Issue #141 · lifesinger/lifesinger.github.com · GitHub 和 圖靈社區 : 閱讀 : 企業軟體領域前端開發的困境 都能說明這個問題。
另外有些面試官喜歡問你一些很細節的 API (雖然我個人覺得這類問題很囧),這些東西很多時候都是靠的「無他,但手熟爾」,雖然有一些確實有點刁難人的味道,但有一些真的是如果你經常寫前端,重復多幾次就會記住的,如果記不住,只能說明你前端寫的不夠多。還有一些沒足夠實戰經驗的人很少遇到過的問題(比如 JS 跨域),也是需要在前端投入足夠多的時間,才會接觸到(無論是紙上談兵,還是項目里遇到)。
其實綜上所述,不靠譜的前端大概表現就是:計算機基礎不好(更糟糕的是編程基礎都不行,不過編程基礎和計算機基礎好不好跟績點高不高專業對不對口這些其實真的不一定有什麼關系……),對前端的認識還停留在十年前,對社區出現的新工具完全不認識(沒認識全很正常,但完全不了解就有點兩耳不聞窗外事一心只讀聖賢書的味道了……),不懂 Web 標準是怎麼回事或者不在意標准,遇到兼容問題就復制粘貼搜到的代碼,對於一些在社區里是常識的坑毫無意識地各種踩,「離開了jQuery/某庫/某框架就不會寫前端」星人,或者平時根本沒怎麼做過前端的東西,只是做做 Web 項目順帶寫前端,到應聘了臨門一腳跑過來……不管是平時學習還是筆試面試,盡量避免向這些特徵靠攏就可以了。事實上大廠們招人不一定會要求這么嚴格,而且大廠里的團隊本身也未必個個靠譜,但是平時有在這些方面努力的話,起碼如果掛了會知道自己哪裡不足,或者到底是他的問題還是你的問題……
以上大概就是我覺得拿到大廠(or前端比較靠譜的中小廠)前端offer需要的水平,其實我感覺沒必要拿「實習」這個詞來限定自己,盡量往高水平靠攏,才能做到是你來選公司,而不是公司來選你,這樣你才能結合興趣/家庭/個人規劃之類的因素拿到最適合自己的 offer。另外,我覺得面試這回事是這樣的,上面提到的這些特徵,每一條單獨拿出來,在不確定面試官的情況下,既不是拿到offer的充分條件,也不是拿到offer的必要條件,某一條不滿足,也不是拿不到offer的充分或必要條件。大廠的面試官有很多種,有些設計出身喜歡問設計,有些後端出身喜歡問偏後端的東西,有些喜歡問你API細節,有些喜歡問你實現思路,有些喜歡看你學習能力,有些面試官本來就不是前端所以喜歡問你基礎題。如果你側重某一些方面,雖然無可厚非,但是運氣不好遇上期望不同的面試官,可能你就會得到比較低的評價或者掛掉。確定能拿 offer 的唯一途徑,就是面面俱到,這當然是不可能的要求,但大廠的種種因素配合起來往往就是在找這種不存在的人才,真的想拿 offer 的話,就只有硬著頭皮盡量靠攏。
就像國內很多大廠里比較著名的前端們文章/博客/知乎里提到過的一樣,前端這塊水不是很深,但水非常非常寬,在考慮將來作為一個前端如何發展如何應對天花板之前,先要腳踏實地把這些屬於前端的「本分」的東西搞好。事實上前面提到的這些東西我也沒有全都做到。作為前端,個人覺得最重要的是要保持一顆開放、謙卑的心,不要抵觸新東西,永遠記得外面的世界還有很多東西自己不懂,要繼續學習。
『叄』 之前一直從事游戲後端開發,現准備轉Unity3D,所以我想請問一下,計算機圖形學和unity3D前
看上去Unity3D對圖像學的封裝還是很好的。
關系肯定是有的但是在使用Unity3D的時候其實用不了太多。我現在用到的一點無非就是使用GL的方法。
計算機圖像學我覺得還是有點難的,如果需要建議先看一看基本的圖形生成演算法。
我自己學圖形學依然只是剛起步,與君共勉吧。
『肆』 數字媒體技術的就業前景
數字媒體技術是一門普通高等學校本科專業,隸屬計算機學科,授予工學學士學位。此專業具有文、理、工、藝等學科交叉特點,是一個技術和藝術結合性很強的工科專業。游戲、動畫、影影視特效、虛擬現實等是此專業的符號。
但這個專業的范圍比較廣,未來的就業的可以分為兩個方向,第一個方向的是藝術方向,主要做一些比如說校慶UI交互設計,影視後期製作,動畫設計,平面設計,游戲製作建模等等。如果想走這個方向的最好是要有一定的美術功底的。那如果像以目前的市場來看,從事美術的方向,比如說做手繪師,平均的月收入基本上在5k左右。但是如果計算機也學的很好的話,能做游戲前端的開發工程師的月薪立刻就會上升到20k左右。另外一個方向的就是計算機的方向。如果從事計算機方向的主要就是做編程、大數據,人工智慧這些領域。
『伍』 計算機科學與技術專業學Web前端開發嗎
沒有。
理論課程
1、通識類知識
通識類知識包括人文社會科學類、數學和自然科學類兩部分。人文社會科學類知識包括經濟、環境、法律、倫理等基本內容。數學和自然科學類知識包括高等工程數學、概率論與數理統計、離散結構、力學、電磁學、光學與現代物理的基本內容。
2、學科基礎知識
學科基礎知識被視為專業類基礎知識,培養學生計算思維、程序設計與實現、演算法分析與設計、系統能力等專業基本能力,能夠解決實際問題。
建議教學內容覆蓋以下知識領域的核心內容:程序設計、數據結構、計算機組成、操作系統、計算機網路、信息管理,包括核心概念、基本原理以及相關的基本技術和方法,並讓學生了解學科發展歷史和現狀。
3、專業知識
培養學生將基本原理與技術運用於計算學科研究以及計算系統設計、開發與應用等工作的能力。建議教學內容包含數字電路、計算機系統結構、演算法、程序設計語言、軟體工程、並行分布計算、智能技術、計算機圖形學與人機交互等知識領域的基本內容。
(5)前端學習計算機圖形學擴展閱讀
就業方向
從事各類企事業單位計算機系統的應用開發及其運行管理。包括在科研部門、教育單位、各種類型企業和行政管理部門從事計算機教學、科研和應用開發工作。
1、熟悉Windows 98/2000/XP操作系統平台,能熟練使用Microsoft Office辦公軟體如Word、Excel、PowerPoint等。
2、熟練掌握C/C++語言編程,能熟練應用相關工具Turbo C 2.0、Visual C++6.0a進行應用程序和資料庫系統的開發。
3、熟悉SQL語言,熟悉SQL Server2000資料庫,能熟練應用C++ Builder6.0和SQL Server2000構建C/S結構資料庫系統,有資料庫系統設計方面的應用程序開發經驗。
4、熟悉軟體工程思想,了解網路原理知識並熟悉網路協議TCP/IP協議。
5、對計算機硬體有相當的了解,可以獨立完成機子的裝拆和維修,及系統的安裝;能解決一般的軟體、硬體問題。
『陸』 對於前端,學完JavaScript基礎,接下來應該學習什麼知識呢
前端知識是一種很火的技術,一直在編程語言中名列前茅,而且隨著瀏覽器技術不斷發展,還有會很多擴展的可能性,比如3D可視化,谷歌發布一個全新的圖形工具TensorFlow Graphics,結合計算機圖形學和計算機視覺技術,以無監督的方式解決復雜3D視覺任務,無疑谷歌瀏覽器也會支持3D圖像,前端技術實現在線可視化開發,基於webgl的3D框架有thingjs,three.js。
thingjs是這兩年新興的3D框架,更加簡單,官網有注冊優惠別錯過~理論知識是基礎,對於前端開發者來說,技術應用是進一步的需求,所以thingjs提供免費3D源碼和3D模型庫,讓你在項目開發過程中有東風助力,在實操的過程中你會更好地吸收前端技術知識!
前端技術肯定不是最終的目的,做成一個有價值的商業項目,才能讓你更有成就感!
『柒』 遼寧師范大學的計算機科學與技術專業如何課程設置是怎樣的
這個專業在大連優勢還是比較大的,大連有許多軟體方面的企業,就業缺口很大,而且聽往屆校友說大連軟體行業就業還是比較認可遼師出來的學生的。
遼寧師范大學計算機與信息技術學院有教職工82人,擁有以7名校特聘教授為核心的師資隊伍,其中教授13人,副教授12人,講師36人。大部分教師是畢業於北京大學、南京大學、吉林大學、南開大學、中國傳媒大學、大連理工大學、東北師范大學等重點大學以及中國科學院的博士和碩士。
遼寧師范大學計算機與信息技術學院擁有遼寧師范大學規模最大的實驗設施,包括:計算機公共課實驗室、微格教學實驗室、現代教育技術實驗室、攝錄編實驗室、計算機硬體實驗室、微機實驗室、網路實驗室。
以及「多媒體技術」、「圖像處理與數字印刷」、「動畫與游戲」、「並行計算」、「網路教育應用」等多個專業實驗室。學院還承擔全校非計算機專業的大學計算機基礎公共課教學和全校師范專業的現代教育技術公共課教學工作。
計算機師范與非師范(應用專業)在計算機專業課方面的課程設置有很大重疊,高數、線性代數、大學物理英語、思修馬原等科目暫且不表,計算機方面的課程設置有:
必修課程
離散數學、概率論(有些其他專業也有所以單獨列出)。
計算機導論、C語言、電子技術基礎、數據結構、c++、Java(重要選修課一般都選所以放在必修裡面)、資料庫、計算機組成原理、操作系統、軟體工程、演算法設計、編譯技術等(參照師范專業課程設置,應用專業可能還有一些增加)。
選修課程
html5前端開發技術、移動互聯網技術、計算機組裝與維護、網路工程技術、匯編語言、數字圖像處理、c++stl、日語(一)(二)、計算機專業日語、網站編程技術、雲計算基礎、Oracle資料庫應用技術、Android程序設計、計算機專業英語、java設計模式、人工智慧、計算機圖形學。
高級網站開發技術、大數據編程技術、微機原理與介面技術、數據結構(二)、多媒體技術、機器學習及應用、Linux系統開發等。
計算機科學與技術(師范)專業畢業生主要有兩個對口的就業方向:信息技術老師(學院希望培養同學們畢業後到高中就業,開設的師范專業課程主要針對高中教育)、到企業工作。
計算機科學與技術(非師范)專業畢業生到企業就業的居多,大連本地有許多IT企業,還有一些對日的企業可以選擇,薪資比較高。
以上內容參考 網路-遼寧師范大學計算機與信息技術學院
『捌』 如何拿到阿里巴巴,百度,騰訊的前端實習生offer
1. 要有比較好的計算機基礎
這里的計算機基礎指的是數據結構與演算法,操作系統,編譯原理,計算機網路等等。雖然相對於其他方向而言,前端在工作中用到計算機基礎的地方可能少一點,但是無論大小廠,招實習生其實都是為正式招聘做儲備,所以會比較希望招將來有更大發展空間的人,就像里 Web 前後端分離的意義大嗎? - 知乎用戶的回答 和 怎樣成為全棧工程師(Full Stack Developer)? - 知乎用戶的回答 描述的那種。
如果你具備比較好的計算機基礎素養,那麼以後在拓展到其他領域(WebGL —— 計算機圖形學,Node.js 底層 —— 操作系統,JS 引擎和各種預編譯工具—— 編譯原理, etc.)的時候會更快上手。另外有一些公司對前端的概念不局限於 Web 前端,也包括移動端偏前端的部分,這里也需要你有比較好的計算機基礎才能做好。前端領域有很多人已經不滿足於造輪子,直接跑去造語言了,如果你編程基礎夠好,接觸過各種形形色色的編程語言和範式,再上手這些東西也會方便些(比如Ruby/Python->CoffeeScript,Haskell->LiveScript)。
雖然也有很多地方為了招到足夠多能來幹活的前端會降低對計算機基礎的要求,但是打好這方面的基礎是沒有壞處的,如果面試筆試被問到且答得上來,也是能夠加分的。一些大廠經常會出現「不是前端的面試官來面前端」的情況,我個人是覺得如果這類面試官問的都是計算機基礎問題的話,其實真的無可厚非,畢竟人家在面「一個前端程序員」之前,是在面「一個程序員」啊……
2. 要懂得現代前端的一些新技術
比如:
前端自動化工具(Gulp/Grunt等)
模塊化(CommonJS,AMD/CMD模塊載入器,各種Bundler,ES2015 Moles等)
前端 MV* 框架(Backbone,Angular等)
編譯到 CSS 和 JS 的一些語言(Less/Sass/CoffeeScript等)
前端自動化測試工具(Karma,Mocha,Web Driver等)
其他
有一些同學覺得這些東西懂得越多越好,我個人是覺得這些工具不一定要都了解(畢竟它們很多也未必能火多久),但對這些東西要有大致的概念,並且每個領域的用過一兩種(最好是在項目里),清楚它們的優缺點和必要程度。這是區分在前端上投入過一定精力的人和跨行來兼職前端的人的標志。
去大廠校招應聘前端的會有很多隻是做過一些 Web 項目,但不一定對前端的技術很了解,只是看前端門檻比較低就去投簡歷的人。如果你對這些新技術比較了解的話,起碼能夠證明你是比較專注前端而且花過一定時間在上面的。
同時,前端現在確實是一個每天都有很多輪子冒出來的領域,也需要你有足夠強的自學能力和(英文)文檔閱讀能力去跟上社區的這些新動態。接觸過比較多的輪子,才會有自己的判斷,不會老是人雲亦雲火一個學一個。這些工具里,確實也有很多在合適的場景下可以提高前端的生產力或者代碼質量,對這些東西有一定關注,也表明你對自己的生產力和代碼質量是有一定關注的,這其實是一個更廣義的靠譜程序員的特性。
3. 懂得什麼是 Web 標准和瀏覽器開發維護的流程,並且會跟進新發布的標准和主流瀏覽器新實現的特性
當然面試的時候一般不會直接問你這方面的問題,但是如果你懂這裡面的水大概是怎麼一回事的話,在很多問題上(特別是兼容性問題上)都能回答得比較深刻一些。最好清楚:
HTML、CSS、DOM,ECMAScript 和一些泛 HTML5 的標準是怎麼制定的
W3C 和 WHATWG 的區別
各種標準的不同版本和提交狀態是怎麼回事
知道標准和實現的差距(有些人喜歡把 W3C 標准奉為圭臬,但現實中瀏覽器們並不是這樣的)
知道 ECMAScript 和 JavaScript 的區別
知道瀏覽器的一些常見做法(比如給 CSS 特性加前綴)的緣由
標准和瀏覽器這灘水還是很渾的,涉及到很多利益糾葛和大廠的博弈,如果你大概清楚他們的一些事情,不光自己做前端兼容的時候會容易一些(不會只抱怨「為啥XXX就是不能OOO」而是懂得他們的無奈並且認真尋找解決方案),在新特性出來的時候也更容易消化(不是「啊又出了個新東西要學好煩啊」而是「在郵件列表上爭(si)論(bi)了那麼久他們終於把這個搞出來了」),你自己對前端比較基礎的那部分的知識體系更會有條理得多。個人覺得這也是區分比較有經驗的前端和臨時跨行的前端的關鍵之一,這些東西是需要你經過一段時間的耳濡目染才能理清楚,而且會在一定程度上影響你的工作的。
4. 多看書,多關注技術資訊
技術資訊的來源包括RSS、郵件訂閱、比較重要的郵件列表、或者follow Twitter和微博上一些比較有影響力的開發者。個人經驗是,一般在二面或者三面的時候,面試官都會問類似「你從哪裡接觸前端的新技術/你看過哪些書」的問題,因為前端現在技術更新很快,比較專注於前端這方面的人一般都會有自己接觸新技術的渠道,他們自然也會比較關心候選人是不是有在跟進社區的一些動向。其實這也能夠排除那些不太靠譜的臨門跨行的人,因為他們平時一般不會特意去關注前端技術的新動態的。
5. 不僅懂得一些東西怎麼寫,更要懂得一些東西不要怎麼寫
Web 標准大多不是嚴格向後兼容的,很多幾年前常用的寫法,現在已經被社區的大多數人強烈建議避開了,有很多特性也隨著時間的流逝被打上了 deprecated 的標簽,如果你不幸拿著一本比較老的書入門,又不在網上驗證上面說的每一句話,那麼很有可能你就這樣被誤導很久,比如 HTML可能會逐步被XML所取代嗎?(來自《css權威指南》) - 賀師俊的回答 這樣的情況……與之類似的還有:
JavaScript 里那數量令人嘆為觀止的坑
一些在經驗比較豐富的前端看來屬於常識的東西(比如:為什麼 CSS 大多放在 head,JavaScript 多放在 body 底端?)
劃分各種模塊、文件,添加模板的正確方式(比如錯誤方式是一堆腳本/樣式寫在一個超大文件里,或者在有替代方式的情況下在 JavaScript 里拼字元串)
解決一些老問題的新的best/better practice(比如不要到了 2015 年還深陷在回調地獄,去看看 promise 和 generator)
……
這些知識都需要你有一定的前端方面的經驗,看過比較多相關的博客和書,才能慢慢積累起來,所以也能區分靠譜的前端和不靠譜的前端。
6. 不依賴某一個特定的框架或者庫
比如很常見的「離開了jQuery就不會寫前端」星人……也不是說要做原生 JavaScript/CSS 和 DOM 的原教旨主義者,但高度依賴某個框架或者某個庫的話,通常意味著換了一個框架/庫你的學習成本會比不依賴特定輪子的人高,因為這通常是處於還不知道前端領域「什麼是什麼」的階段的表現。
事實上前端領域的這些輪子有一些都是其他領域早就有,或者根本不需要的東西,其中很多的實現原理也不是那麼復雜,只不過是臟活累活。個人覺得對這些東西應該報以「不能知其然而不知其所以然」的態度,起碼大概清楚它們的實現是怎樣的套路,知道它們的優缺點,多接觸幾種,這樣在換一個替代品的時候很快就能上手。
因為前端的特殊性,在開發比較大的項目的時候使用庫和框架是必須的(比如遇到各種滑鼠事件的前端兼容問題時,總不能全都就地寫 if-else 吧,總得封裝一下。遇到非常 data-driven 的項目,還用手動操作 DOM 的寫法很難維護吧,用個 MV* 框架真的不純是偷懶了),但是這些東西都是會迅速改朝換代的,死守著某個特定的庫或者框架,確實不太靠譜。很多公司喜歡問候選人「原生 API 寫個 Ajax 請求怎麼寫」這類問題,感覺很大程度上也是在排除這類人……
7. 懂一點點設計
這里說的不是切圖啊PS啊AI啊什麼的,而是大概懂基礎的視覺傳達/色彩構成/平面構成的知識。畢竟前端是和設計師聯系最密切的程序員,雖然前端要做的事不僅僅包括 UI/UX,但是 UI/UX 卻都主要依賴前端來實現。很多時候,設計師(特別是不會前端技術的設計師)給出的設計可能很難(在照顧兼容性的前提下)實現,這個時候不應該跟他硬拼讓他改設計,或者自己默默糾結怎麼用很 hack 很難維護的方法去實現,而是理解設計的意圖,並且跟設計師溝通,盡可能在工程上容易實現容易維護的前提下實現設計的意圖,哪怕要修改一些具體的表現形態。
最恐怖的就是丟一張圖過來,讓你做到 pixel perfect,你也不問三七二十一直接開工,代碼寫得別扭也不去溝通,遇到不兼容就打個哈哈矇混過關了……設計的目標是讓大眾都能更容易地使用,這樣做是與設計師存在的意義背道而馳的,我也遇到過一些設計師會主動來問前端怎樣的設計在瀏覽器里容易實現,怎樣的設計比較別扭,這樣他才能結合多方面的信息去做設計上的決定。如果你對設計不關心,不與他交流的話,實際上相當於剝奪了一些關心工程實現的設計師的知情權(一般正常的設計師看到自己的設計實現出來效果不好,也會小郁悶的……)。個人覺得與設計師溝通的技巧,也是一個靠譜的前端應該具備的素養。
8. 懂一點點後端
(這個是我看了一下別人的答案補加的)。其實這個和第一點的目的類似,最重要的是別要做一個非得等隊友來才能開工的人。大廠(主要是阿里系)有不少在用 Node 做前後端分離一類的事,另外做前端的經常要在後端還沒寫完的時候自己去 mock 一下數據介面,如果你懂怎麼搭建簡單的伺服器和 serve 數據給前端,那麼就可以提高開發的效率。即使你只想專注前端,但前端有很多東西(比如 JS 跨域,WebSocket,SSE,WebGL 的素材獲取)都需要你懂得架設簡單的後端才能去實踐,這時候不懂後端通常就意味著你要放棄學習這些知識,或者只能紙上談兵。一個正常的前端肯定是要對計算機網路和 HTTP 等協議有一定了解的,有了這些知識去學簡單的後端其實是很水到渠成的事情。
9. 在前端投入足夠的時間
意識到以上幾點還需要投入足夠多的時間才能看到成果,不然很容易出現「道理我都懂,可是OOO」的情況,那最後也還是靠譜不了的……如果不是真的對前端感興趣並且投入足夠多的時間,與其為了「好找工作」而投前端,不如轉一個更合適的方向。阿里前端的困局與突圍 · Issue #141 · lifesinger/lifesinger.github.com · GitHub 和 圖靈社區 : 閱讀 : 企業軟體領域前端開發的困境 都能說明這個問題。
另外有些面試官喜歡問你一些很細節的 API (雖然我個人覺得這類問題很囧),這些東西很多時候都是靠的「無他,但手熟爾」,雖然有一些確實有點刁難人的味道,但有一些真的是如果你經常寫前端,重復多幾次就會記住的,如果記不住,只能說明你前端寫的不夠多。還有一些沒足夠實戰經驗的人很少遇到過的問題(比如 JS 跨域),也是需要在前端投入足夠多的時間,才會接觸到(無論是紙上談兵,還是項目里遇到)。
其實綜上所述,不靠譜的前端大概表現就是:計算機基礎不好(更糟糕的是編程基礎都不行,不過編程基礎和計算機基礎好不好跟績點高不高專業對不對口這些其實真的不一定有什麼關系……),對前端的認識還停留在十年前,對社區出現的新工具完全不認識(沒認識全很正常,但完全不了解就有點兩耳不聞窗外事一心只讀聖賢書的味道了……),不懂 Web 標準是怎麼回事或者不在意標准,遇到兼容問題就復制粘貼搜到的代碼,對於一些在社區里是常識的坑毫無意識地各種踩,「離開了jQuery/某庫/某框架就不會寫前端」星人,或者平時根本沒怎麼做過前端的東西,只是做做 Web 項目順帶寫前端,到應聘了臨門一腳跑過來……不管是平時學習還是筆試面試,盡量避免向這些特徵靠攏就可以了。事實上大廠們招人不一定會要求這么嚴格,而且大廠里的團隊本身也未必個個靠譜,但是平時有在這些方面努力的話,起碼如果掛了會知道自己哪裡不足,或者到底是他的問題還是你的問題……
以上大概就是我覺得拿到大廠(or前端比較靠譜的中小廠)前端offer需要的水平,其實我感覺沒必要拿「實習」這個詞來限定自己,盡量往高水平靠攏,才能做到是你來選公司,而不是公司來選你,這樣你才能結合興趣/家庭/個人規劃之類的因素拿到最適合自己的 offer。另外,我覺得面試這回事是這樣的,上面提到的這些特徵,每一條單獨拿出來,在不確定面試官的情況下,既不是拿到offer的充分條件,也不是拿到offer的必要條件,某一條不滿足,也不是拿不到offer的充分或必要條件。大廠的面試官有很多種,有些設計出身喜歡問設計,有些後端出身喜歡問偏後端的東西,有些喜歡問你API細節,有些喜歡問你實現思路,有些喜歡看你學習能力,有些面試官本來就不是前端所以喜歡問你基礎題。如果你側重某一些方面,雖然無可厚非,但是運氣不好遇上期望不同的面試官,可能你就會得到比較低的評價或者掛掉。確定能拿 offer 的唯一途徑,就是面面俱到,這當然是不可能的要求,但大廠的種種因素配合起來往往就是在找這種不存在的人才,真的想拿 offer 的話,就只有硬著頭皮盡量靠攏。
就像國內很多大廠里比較著名的前端們文章/博客/知乎里提到過的一樣,前端這塊水不是很深,但水非常非常寬,在考慮將來作為一個前端如何發展如何應對天花板之前,先要腳踏實地把這些屬於前端的「本分」的東西搞好。事實上前面提到的這些東西我也沒有全都做到。作為前端,個人覺得最重要的是要保持一顆開放、謙卑的心,不要抵觸新東西,永遠記得外面的世界還有很多東西自己不懂,要繼續學習。
『玖』 干貨帖,Web前端開發框架有哪些
如果是純移動端的話,zepto加frozenui加seajs挺好的。感覺bootstrap的響應式不適合純移動端開發,因為太重了,對移動端載入速度影響很大,純移動端還是小快靈比較好。
如果是做H5那種活動頁,推薦用motion.js,挺好用的,效果贊贊的。
PC端的話,jq+bootstrap是個挺好的組合,或者用backbone也是挺普遍的,但是如果是開發企業管理系統那種的web頁面可以考慮extjs,現在改名叫sencha了,組件多。相反,個人感覺react就不是很適合用來開發企業管理系統。
react現在很火,發展也很快,可以先學習學習,不過react只是View這一層,是個庫,並不是一個完整的框架。而Angular可以說是個大而全的框架,但是載入速度相對比較慢,還有就是Angular 2.0和1.0有很大不同,幾乎是個推翻重做的感覺,所以現在如果用1.x的話,感覺會比較尷尬。
另外,模塊化的話,用seajs的也挺多。
還有就是可以多關注一下打包工具,grunt,gulp和網路開發的FIS。