自學前端之路應該往簡歷上添加什麼項目增加競爭力?
我現在的情況是:
開學研二,18年初畢業,東北某985非計算機專業,年中開始正式學習前端課程,之前看過《head first》系列書籍,目前進展是可以使用HTML/CSS/JS模仿一些首頁,JS可以實現一些基本效果例如輪播、懶載入,以及瀑布流布局,會使用AMD模塊化代碼以及gulp自動化流程,紅寶書以及幾本經典書籍大體過了一遍,Node.js正在學習,使用hexo搭了一個小博客,不定時更新一些學習筆記。現在的打算:- 把書籍重點章節多次閱讀,寫成技術博客- Node.js學完後做一個小小小網站- 複習前端面試知識,畢竟筆試面試的代碼題還是需要針對性複習的
- 整理作品之後找一家一二三線互聯網公司實習(如果導師放人的話。。。)我的問題: - 看到很多前輩的簡歷里的作品是以前實習或者學校的項目,那麼對於我們這種沒有這樣條件的人,做一些什麼項目可以增加競爭力呢,因為我覺得照著網上做一些灰常灰常簡單的小遊戲或者單單仿頁面,這個沒什麼競爭力(說很low會不會被打)。因為我感覺體現能力的就三點:工作/實習經歷,項目,面試時問題的回答情況,第一個沒有,最後一個靠學習基礎知識和刷題,那麼最最最關鍵的就是項目了。而且感覺自己所剩的時間不多了,所以想在這裡問一下各位有什麼好的建議么。- 一直在使用jQuery,原型API已經記得不清楚了,面試時面試官更希望面試者用哪種呢?因為之前看過面經,有的面試官強調要用原型,有的又說用庫也可以鍛煉基礎,所以很困惑。- 找實習有必要嗎,還是在學校修鍊內功,做一些回答里的項目充實簡歷,因為確實看到有些人實習結果做了一些很底層的活,感覺他們如果按照自己的節奏學習,沒準提升的更快。以上就是所有的問題,感覺自己的優勢是目標明確(笑),因為身邊很多變故所以想好了要走前端這條路,已經決定了前端就是畢業後的工作,因此最重要的課題就是如何讓自己在這個領域的競爭力更強。雖然可能和碩士的專業無關了,不過這件事其實並不重要,重要的是前端這一目標本身。如何在明年春招和秋招里讓自己水平達到BAT的要求才是首要的關鍵。希望這個問題的回答,能讓和我一樣「在自學荒原上跋涉的非科班學生,在一口很深的井底,猛然抬起了頭來。」
首先感謝題主的邀請。
第一點,關於職業選擇的一些看法。題主對問題的描述比較有條理,也有自己的思考,想必對畢業後第一份工作的職業規劃是比較清晰的。 前端這個領域在近幾年的發展非常迅猛,各大互聯網公司對優秀的前端人才也是求賢若渴,所以題主如果能在畢業前的這兩年內好好鑽研相關技術,進入BAT等一線公司工作也將會是順其自然的事情。
第二點,關於如何發展自己的前端技能及定製學習方向。
這一點,我可以給你一些個人的經驗。關於突破前端學習瓶頸可以參見我另一個回答。一年前端工作經驗,感覺自己沒有學到什麼知識,如何突破? - 黃大仙的回答現在的我快入行前端兩年了,已經逐漸接觸和接手起目前公司的部分前端架構工作了。我在這兩年內,重寫過redux,在非常短的時間內掌握了react,vue,knockout,angular2等前端框架,通讀過一遍《深入淺出nodeJS》,在理論層面基本掌握了node的分散式架構,同時搭建過公司級別的webpack及gulp4構建工具。 說前面的這些是想告訴你,兩年時間足夠讓一個不懂技術的同學成為前端領域比較厲害的小牛了。那麼,下面我大概說下我這兩年的學習曲線及自己的學習方法。
1. 學習是有階段性的。
剛接觸前端的時候,別指望一下子能夠認識它的全貌,學會定製自己的階段性目標。
在第一年的前半年可以定個小目標: w3c文檔過完一遍,ES5的語法都瞭然於心,css的基礎語法都熟悉,jquery層面的api基本會用。如果能玩成以上,我覺得已經對得起這半年的時光,具有較快的學習進度了。
在這一年的後半年可以定個小目標: ES6的基本語法會用,熟悉JS的模塊化規範amd,cmd,umd,開始接觸gulp webpack等構建工具,同時vue,react有個初步了解和項目經驗,能獨立編寫jquery插件。如果能完成以上,你的技術水平已經超越了二線互聯網公司的初級前端,可以開始寫簡歷給一些公司投實習了。好吧,說的容易做的難。這裡,我默認你的英語閱讀能力不錯,同時對技術具有一定的探究熱情。
2. 中級階段。
經過第一年的學習,想必對前端已經有比較深刻的認識了。
這個時候該提上日程的就是學習設計模式,研究框架源碼以及架構相關的目標了。關於設計模式這塊,掌握observer,pub/sub ,我覺得就算可以過關了。在框架源碼方面,能夠理解react的diff演算法及生命周期管理,在代碼出bug後能夠從框架源碼層面發現問題,我覺得可以出師了。而且在這個階段,在你學完設計模式及debug的各種技巧後,你在學習vue,angular,knockout等框架,速度將會非常快。 因為這些框架都大同小異,並且都實踐著pub/sub,eventEmitter,父子組件communication,tick周期等等概念。在這個階段,我的建議是題主能開始獨立編寫react,vue,jquery等框架的插件,同時對這些框架的架構思路進行自己的思考和整理,這樣對精通這些框架和提升自己的架構修為將會有很大的好處。
同時在這個階段,你可以開始獨立寫一些gulp,webpack的配置文件,有能力的情況下開始寫gulp,webpack的插件。如果能夠做到以上的幾點,我覺得題主可以超越大部分BAT的初中級前端了。(雖然bat對中高級工程師的職位招聘,很看重工作年限,不僅僅是候選人能力強就可以進去的,吐槽=_=)嗯,說可以天花亂墜,做卻是要腳踏實地。
關於服務端的nodeJS,近幾年在國內的發展也是非常的火熱,在杭州範圍的互聯網公司尤是。
題主要鑽研node的話,我建議先通讀一遍阿里朴靈的《深入淺出node》,這本書對node的多進程架構/v8及libuv層面的東西講的比較淺顯易懂,同時對web層面的概念也滲透很多,對你精通node,精通web都有很大好處。在nodeJS層面,建議你學習和使用有名的socket/request等模塊,相信你可以在使用過程中就產生對nodeJS的喜愛。好了,長篇大論不講了。台上一分鐘,台下十年功。
預祝題主熱情而踏實的學技術,一定可以在短時間內搭到一定的高度,順利進入國內一線互聯網公司。最後,安利下個人的github博客賬號,關於前端和node的問題可以在我的blog下面提issue,我會儘快回答~https://github.com/slashhuang/blog--------分割線 ------
好像偏題了,題主問的貌似是簡歷相關。好吧,介紹下答主我自己的背景。本人985大學數學專業出身,當過英語老師,所以看英文文檔和邏輯思維能力都很不錯。同時,我的第一份工作是傳統行業,也是自學轉行前端開發的。關於簡歷這塊,我的第一個建議是實事求是。用人單位會根據你的簡歷發問,就比如我面試候選人的時候,就會根據簡歷的內容進行相關追問,所以千萬不要寫自己精通某樣技能,然而實際上只是會用api而已。第二個建議是開源項目。如果候選人有開源項目的經驗,github打開就是一片綠,我基本可以肯定對方是個對技術有熱情的人,也就不會問一些比較基礎的問題了,而是著眼於考察候選人解決問題的思路及對問題的獨到看法。第三個建議是健全自己的性格。要知道,在公司裡面,一個項目是會涉及到多方合作的。對於一個特別內向,講話給人情商很低感覺的候選人,往往我們是不會錄用的。
因為,技術不是死板的,技術也需要足夠的溝通和情懷。所以切記,基本的禮貌及展示軟實力非常重要。補充回答完畢,希望有所裨益。題主問為簡歷上添加什麼項目才能提高競爭力,進BAT。
那我告訴題主,現在開始好好做一套成熟的項目,有處理圖片懶載入,有處理表單問題,有處理後台數據的,有應對cookie和localstorage兼容處理的,有應對圖片支持問題(比如webp),有模板引擎使用的,有組件化web component的,有MVVM分層思想的。還有大量等等之類的問題。寫了一個這樣的項目,基本對web前端就能很熟悉了,然後自己封裝個插件,寫個小的東西上傳github,然後多多求star,github在面試時是大的加分項。然後簡歷要好好寫,因為面試官面試就是針對你的簡歷問你問題,面試是叫你現場帶簡歷。什麼star情景式之類的都需要了解。最基本的需要了解一個流行的框架,vuejs,react,angular,很深入的了解,並且用過。了解一門後台語言,nodejs(阿里),php,java(阿里),python(知乎,搜狐等用做後台),C++(騰訊,百度等)。對於演算法,學習一下簡單的排序(冒泡,快排,希爾等),尋路演算法,洗牌演算法,簡單的dp,背包等。
然後就是去面試小公司作為磨刀石,增加經驗和信心,每一次面試都坐下筆記。在然後就是在github和網上找面經好好學習。學習基本就是這樣的套路了。設計模式也就在寫項目的時候學習,不要沒事就看什麼設計模式,沒項目經驗你也理解不了。你要面試bat,實習還是好說,但是真的要留下來,其實很難,拿2016年來說,互聯網校招的情況大家都是知道的,很難進BAT,筆試叫你寫一個promise,寫一個事件系統EventEmitter,然後還有演算法題要你做,騰訊題目全是c++,阿里是前端題,但人收的極少,百度我就感覺演算法不行還是別投了吧。
因為現在本身互聯網現在特別火,動不動就是有人在知乎上求問前端該怎麼學,培訓機構又是一堆。一般剛剛畢業的大學生跟那些培訓出來的也沒什麼太大的區別(指學的還不錯的,認真做培訓的培訓機構出來的,別笑是有這樣的培訓機構的),基層的前端多的沒人要,然而真的能適應企業的優秀前端工程師和應屆生又很少,而且大公司現在的人才也趨於飽和,基本上招應屆生就是為了避稅和政策。要不然人家肯定更趨於在社會上招有經驗的人。
實習是必要的,不然最後連好一點的企業都找不到。
最後,有些面試就是一半運氣一半看命,找工作就是如此了。
面試學會適當在自己hold住的範圍類裝逼,不要過頭。
祝好!「因為我感覺體現能力的就三點:工作/實習經歷,項目,面試時問題的回答情況,第一個沒有,最後一個靠學習基礎知識和刷題,那麼最最最關鍵的就是項目了。而且感覺自己所剩的時間不多了,所以想在這裡問一下各位有什麼好的建議」
先說結論吧:題主從不正確的出發點,得到了無解的問題。
- - - - - - - - - - - - - - - - - - - - - - - - -
不可否認,在上學的時候,我也像題主這樣想過,考慮的問題都是如何超過別人。其實,這在戰略上就不太正確。因為,選擇大於努力。在工作/實習經歷/項目,三方面明顯不佔優勢的情況下,還要強行對比,會輸的很慘。
擺脫這個困局的方法就是,不要像普通人那樣考慮問題。
要想想自己有什麼優勢,如果沒有的話,想想你打算以什麼作為優勢。然後再憑藉強大的自制力和努力實現這個目標。從這個層面來看,努力,是最簡單的事情了,逼急了誰都會。
- - - - - - - - - - - - - - - - - - - - - - - - -
好了,然後我們說說前端吧。你寫的這些技能點,大家都會,怎麼能體現出你的不同來呢?前端的技術體系比較雜,且發展迅猛,我相信那些老兵也不一定能面面俱到。那麼優秀程序員和普通程序員的區別是什麼?
這誠如優秀作家和普通作家的區別,比的是描述能力和創造力。你學了這麼多東西,可曾創造過什麼嗎?有什麼自己的發現和體會?哪些是別人沒有的?這些才是人和人不同的地方。
每個人受教育程度不同,知識結構不同,遇到問題會湧現出不同的想法。強行抹平非計算機專業的歷史,會隱藏你最大的優勢。- - - - - - - - - - - - - - - - - - - - - - - - -
最後,目標是找到一個工作,這確實很務實。但是,又顯得過於短見了。你的目標不應該是成為一個合格的程序員嗎?前端只是現在比較火罷了。因此,除了追風之外,那些幫你成為一個真正程序員所需要的知識,才是必要的。
比如,如何對實際問題建模,如何用符號描述它們,如何編譯和解釋這些符號,如何降低計算複雜度以及減小規模,如何加速軟體的演進,如何降低軟體成本提高質量,如何考慮問題的特徵,如何在多個解決方案之間權衡,如何溝通和促成,等等。這些才是一個程序員的日常。
把什麼東西實現一下,這誰都會,網上一搜到處都是。- - - - - - - - - - - - - - - - - - - - - - - - -
我同意很多人提到的做一個大型的實際的項目練手。然而,最重要的是,你怎樣變得與眾不同。怎樣變得能為企業創造價值。學什麼那是你的事,我可沒說讓你學好計算機專業的所有課程。你說呢?感覺其實人的回答雖然很多很中肯的但都好 Boring 啊 orz
說實話如果我招畢業生,我才不會看基礎怎樣對什麼框架熟悉之類的,因為前端太難招了還指望從校招招到王牌實在是不靠譜;還不如看看他自己對前端的理解與熱情在哪裡,如果看了老半天都是千篇一率的東西而且還都只有 Hello World 級別,至少我是不會覺得這個人有太大潛力的,可能只會覺得夠用而已。
往自己簡歷上添加什麼項目合適?當然是有趣的項目!做點有趣的信息頁或是工具,然後嘗試結合新技術把他們做得體驗更好外表更漂亮,就是最好的項目了;實際在校園裡能做的東西也太多了,同學錄頁面,班級頁面,甚至課程學習的信息頁,各種公益性質的頁面,活動頁面,或是參加比賽做點東西,功利點的話做自己的簡歷頁面放到 github page 上去之類的……
讀書時可以做的項目最有意思的就在於,你想做什麼就能做什麼,最能發揮自己的想法了,我可不推薦花那麼多時間去研究基礎、框架之類的,那些其實都只是輔助,而且結合實際問題來學習事半功倍,我覺得這才是王道。我也許就是你說的在荒原上自學跋涉的非科班學生。
某不知名985目前大四非計算機專業。去年十月份開始決定踩前端的坑。年初做了第一個正式的項目。四月份找到第一份薪水還算樂觀的實習跳出學校。六月份開始在阿里實習。至於現在??因為自己能力還不夠/學歷太低/不願意沒事時候加班 等等原因而沒有轉正,現在在乖巧的繼續實習一邊按部就班走秋招。其實前端常規路線太多了講真。
主要是題主你喜歡什麼,比如 canvas?或者可以試試 three.js? WebGL? 動畫好有趣啊喂 css? js? jq? jq動畫怎麼實現的啊嗷?css3為啥就強制GPU渲染啊喂!underscore這庫用起來好爽啊卧槽我要看看他怎麼拓展的??react寫起來6的飛起虛擬DOM怎麼快啊?diff演算法怎麼實現的?redux太他媽的酷了我要重構我之前的項目(?Д?)ノ項目經歷確實超級超級重要但是如果對長遠來說,還是日常積累更重要。
或者換句話說,熱愛。題主18年才畢業不方啦,慢慢折騰,好好做項目,BAT穩穩的(///ω///)。
PS:自學其實也沒有多艱苦,放棄原專業開始學前端真是我大學以來最開心的時候了,如釋重負。
願你未來要做的是你真正喜歡的。PPS: 非科班的話,演算法數據結構網路編譯原理操作系統全家桶一定不要落下,這是非科班的軟肋,希望這一年能讓他們變成你的鎧甲。
最後,突然發現這回答好像不太切題。
那再賣個萌吧去年入行, 寫了 Java 半年, 去年九月份開始寫 NodeJS 和前端代碼。可以提出部分意見供參考。
首先,如何學習?
學習主要是學習的是思想,然後進行大量實踐聯繫,千萬不要學了很多很多,練得很少很少,或者一個項目一個項目去做,但是不加思索就只有 Google + StackOverFlow,這樣會很慘的,多思考,看看背後的機制,理解為什麼要這樣做,這樣做解決了什麼痛點,基本的原理是什麼,自己能否去實現一下,等等……
其次,如何增加亮點?
至少前端的最新技術要知道吧,各大前端會議都有 PPT,至少要把這些 PPT 啃透,框架的源碼不一定要讀,但是框架的文檔要啃一遍吧,NodeJS的文檔,Vue 及 React 的文檔等等,然後找個感興趣的項目做起來……最後,基礎要紮實,興趣才是最好的老師,沒有興趣,一切玩完兒第一次被邀請,容我偷笑兩三分鐘。
看到被邀請好久了,但是最近一直很忙,今天抽個空來回答一下吧。因為我也是一個做「雲計算」的,從研一才開始轉前端,現在也是研二階段。說建議說不上,只能說一下我自己的對自己的打算吧。因為我研一的時候就給自己定一個一個小小的路線:
研一:好好學習,打好基礎;研二:接項目來做,並同時關注一下面試上的問題。我很欣慰的是,算是基本上完成了我的路線規劃把,現在我在第二階段,第一階段的學習過程可以見我另一個回答 web前端怎樣入門? - Hawintion 的回答
然後,說一下我現階段的感想:- 首先,如何在校內接項目:
我們導師也不放人去實習啊。你要找肯定是有的,像我就是在我們學校的bbs上找的,後來你活兒越接越多,你的朋友也會有項目就推薦給你啊。
2. 做項目前的準備工作
因為我沒有時間出去實習,所以現階段接的都是學校里的項目,比如說做一個網站啊,做一個管理系統啊。然後在我接這些項目前,我還有點恐慌,雖然說我覺得自己的基礎打得還算好,要實現什麼效果也可以把它實現出來,要求做個什麼功能也可以。但是就不知道前後端是如何交流溝通的,於是還特意在慕客網上學了大半個月的PHP,因為這是最簡單的伺服器語言了吧,用php+mysql簡單的搭建了一個管理系統。源碼在此 GitHub - daisyHawen/shop-by-php: 學習php之前一直對MVC雲里霧裡的,學了這個之後就懂什麼是MVC,跟後台也好撕逼了,畢竟你可以說你是懂後台語言的嘛。然後再說一下,學了PHP對於理解Nodejs也有好處。再者我之前本科的時候,做過一個項目是python的,然後對於後台的restful介面那塊兒很熟,所以。天啊,我這裡寫得有點凌亂,就湊合著看吧。3. 如何在項目中,自我提升
一般而言,接了一個項目之後,就不像自己寫個小東西那麼簡單了。自己寫個小型的項目會比較懶散,沒有人催促你。而這些項目的三方是有截止日期的,而且需求方總是提出各種問題,各種bug要及時解決。為了亂七八糟完成這些需求方的任務,一開始,我寫的代碼超級凌亂,根本沒有什麼維護性可言這裡我可以貼一下。我自己都不好意思看下去,幸虧這些項目都是小項目,不需要後期的維護。我平時為了好好學習,寫的代碼都是盡量遵從於規範的,好歹也要用個像樣一點的單例模式嘛。
然後就開始反思,會不會撿了芝麻丟了西瓜。其實有很大原因還在於,自己對於這些規範使用不是很熟練,畢竟只學了一年,對於原型這些還沒有真正的用進項目中去,很多時候只是為了去學習,才努力的使用原型鏈,call、apply、閉包啊這些東西。還沒有養成一個良好的習慣,就去寫這些亂七八糟的東西了。所以,我這裡有一個建議:
如果樓主對自己信心不是很足的話,可以多寫一些代碼,遵循目前流行的規範,比如現在很流行的模塊化編程:AMD、UMD,以及結合設計模式,讓自己寫的代碼變得漂亮。所以也不要羨慕別人都有項目經驗,說不定他為了完成任務,代碼寫得跟一坨屎一樣。所以我現在汲取了教訓,以後的項目也不會刻意去追求快速完成,而不顧代碼的優雅了。
4. 刻意的讓自己接觸一些流行的框架
就比如說我現在在做的項目,我接的所有項目,都只有一個前端,還要包攬設計的活兒,學校的項目就是這樣,唉~ 然後為了鍛煉自己,學習點東西,不要又寫一堆自己都看不下去的代碼了。於是就想說研究一下MVVM,特意用了Vuejs。然後感覺項目做下去也有動力一些了。然後之前還學了一點react,但是感覺平時不怎麼用得著,跟著教程寫了一個demo:React Webpack Template Title還有就是我們實驗室的老師也開始發掘我了,讓我去做一個項目的前端,於是更加促使自己去學習新東西,electron(一個開發桌面應用的js框架)、d3.js(用於數據可視化),以及以前沒有接觸過的svg等等。也就是說,你刻意讓自己多接觸一點現今的流行框架,至少在跟面試官吹的時候,還表現出你遵循一顆愛好學習新技術的心。5. 關注一下面試題目
說實話,很多面試題目真的不一定是你在寫代碼的時候會考慮的。所以我偶爾會看一下 牛客網,上面搜集了大量的面試題目,平時多積累一點6.爭對樓主,給點建議
jq固然好用,原型API不能丟,每天沒事的時候翻兩下《Javascrip權威指南》和傳說中的js紅寶書;Ajax不清楚的話,見第2點,自己學習一門後台, 用ajax寫一個管理系統,我當時是不清楚MVC,於是自己寫了一個,這個必須要弄清楚;關於核心競爭力,沒有項目的話,其實你的git上面的star也能反映啊,雖然我沒什麼star;另外說一下,關於blog,如果你用的別人的模板,根本就不算什麼技術含量的東西。最近在考慮自己寫一個jekyll的網站模板,讓別人來star,正在寫當中(前段時間正在寫,最近好忙....),另外,希望大家看到這裡的去給我一個star:star由此去: GitHub - daisyHawen/daisyHawen.github.io: https://daisyhawen.github.io/參觀由此去:Daisy花園目前還很不好,希望大家不要吐槽,多給鼓勵。7. 最後 放平靜心態
說實話,我身邊的人都在說我前端好厲害啊什麼的,畢竟了,整個實驗室40多號人就我一個搞前端的,行外人不懂行內人的苦啊/(ㄒoㄒ)/~~我常常會擔心我明年找不找得著工作,而且看到師兄師姐們搞java搞研發甚至搞文檔,只要在面試前好好刷題,都能拿一個不錯的offer,就會動搖。最後的最後,我只求明年拿到一個還不錯的公司的offer就好了,並不奢求什麼BAT。謝邀。前幾天一直在外面玩,所以拖了這麼久才回答,不好意思。
首先,題主堅持輸出學習總結是一件好事情。開始的時候可以先把重點放在養成輸出總結的習慣,之後可以慢慢注重內容。比如今天解決了一個問題,那麼如何把這個問題的背景、難點交待清楚,再把自己的思路、解決方案詳略得當地講給別人呢?
交待問題交流思路這個場景在工作中是很頻繁的,在校招和面試官聊項目的時候也是如此。「把問題/思路說清楚」是一個非常有競爭力的軟實力。阮一峰老師的博客被那麼多人推崇,我想很大的原因是因為行文流暢、詳略有序。寫博客的時候如果注意鍛煉一下自己的表達能力,有利於把握面試的節奏並提高面試的效果。接著回答你的三個問題:
1.原生DOM API不熟悉,影響面試嗎?2.AJAX搞不清楚。3.實習還是自己修鍊?1.還是建議學習一下原生DOM和BOM的API,不要太依賴jQuery。比如一個元素element的element.offsetLeft和
getClientBoundingRect(element).left和parseInt(element.style.left)的區別,這種問題筆試面試都有可能考。2.在我看來,AJAX就是瀏覽器賦予JavaScript發起HTTP請求的能力,是在解放瀏覽器的客戶端能力並提供給JavaScript。
我猜題主搞不清楚AJAX的意思可能是:搞不清楚HTTP請求/響應是什麼以及如何使用HTTP請求/響應。那麼建議題主讀一下《計算機網路自頂向下方法》(最新的第6版就可以了)或者《HTTP權威指南》。我感覺不用求全部看完也不用求全部看懂,每章讀個60%就可以了,即每章的後幾小節不用管。把HTTP協議的原理和機制了解一下就知道AJAX是什麼以及在做什麼了,當然結合實踐的話最好使用Node.js寫一個簡單的server,這個server提供一些簡單的響應HTTP請求的介面,然後寫了一個頁面去請求這些介面。對於「搞清楚AJAX」這個問題,做到這步就差不多了。3.一定要找實習。有一些比較考驗工程能力的業務場景只有在真正的項目中才會遇到。
比如,版本控制。我沒有系統科學地了解過版本控制方面的理論,下面都是我在實習中個人的體會。一個比較大的獨立模塊大概有開發版、測試版、穩定版三個版本。開發版就是我們本地目錄中一直在被我們編寫、修改、迭代的代碼;測試版是我們經過一定程度的本地測試,提交給測試團隊的代碼;穩定版就是經過測試團隊測試,具有穩定的運行結果的代碼。這個「穩定」的意思不一定是不出錯,而是「穩定地正確運行,穩定地出錯」。比如我寫了一個聊天機器人,由於我的技術選型和實現等原因,它一收到辱罵性質的輸入就會崩潰閃退,但是好好說話的話它就能正常地回復你。所以我就會在說明文檔里明確地列出哪些詞語或句子算是「辱罵性質」的輸入,明明白白告訴用戶這樣和機器人聊天程序就會崩潰。雖然機器人被罵就會閃退看起來很不合理,但它「穩定地正確運行,穩定地出錯」,所以這個版本的聊天機器人就是「可用的」。那麼當一個項目有m個模塊,由n個不同的人維護(m &< n)。每個模塊都有上面提到的「開發版」、「測試版」、「穩定版」這三個版本,而各個模塊之間可能還有依賴關係。假如A模塊依賴B模塊,那麼負責維護A模塊的同事在進行本地開發時,希望同時運行的模塊肯定是是「穩定版」,或者至少是「測試版」。這樣的話如果運行時出了問題,那麼錯誤範圍就可以直接定位到A模塊。
我們把這個問題再具體化。假設一個項目由運行時框架 + 基礎庫 + 調用基礎庫的上層業務代碼組成。其中,運行時框架由2個人維護
;基礎庫依賴運行時框架,包含20個基礎組件,表現為一些視圖元素,由4個人維護,每個人負責若干個組件;上層業務代碼依賴基礎庫,分為8個版塊(可以想像成一個網站的8個版塊),由8個人通過調用基礎組件去編寫。除了14名開發人員,還可能有若干測試人員負責跟進不同的基礎組件/上層業務。那麼問題來了。
當運行時框架正在開發新版本,而同時基礎組件也在開發新版本時,如何進行版本控制使兩邊的開發和測試跟進互不影響?
當測試報運行時錯誤給開發人員,如何去定位錯誤?是運行時框架的錯誤?還是組件的錯誤?還是上層代碼傳入了不合法的邊界參數?如果一時半會兒無法排查、修復這個錯誤而又發布在即,如何進行正確的回滾?如果回滾過度,那麼以前修復的一些BUG又回再次跳出來。
在這種情況下,一套正確的版本控制流程可以極大地提高工作效率和減少加班。而這種場景是自我修鍊難以遇到的,所以我建議題主最好找個實習。說實話,練習項目往往只能做到「可運行」這一步就止步了。在真正投入線上使用的項目中,真實的需求會逼迫你把「可運行」的代碼迭代成「穩定可用」的代碼。而在這個過程中,你會遇到更多像「版本控制」一樣的生產實踐問題,解決這些問題的能力也是BAT這些大廠比較看重的。謝邀。
看完了題主描述,感覺題主的學習計劃沒什麼問題,一定要堅持下去。至於你的問題:
1、項目經歷:這個只要想,肯定可以做到。題主的學校里一定有信息中心以及一些計算機方向的學生團隊,可以嘗試去打聽下,申請加入他們,這些地方往往會有一些不錯的練手的項目和工作報酬,而且往往他們也很缺人。這樣既能交到朋友又能練手技術和掙點生活費,是一個不錯的選擇。當然,適當的時候可以嘗試造造輪子,然後放在GitHub上,既對社區做了貢獻,找工作也能加一定分。2、jQ是庫而不是框架,jQ只是常用工具的一個集合庫,題主現在的水平已經可以嘗試去閱讀jQ的源碼或者看別人寫的jQ源碼解析的文章,然後你在驚嘆jQ的設計之巧妙時也會發現jQ也不過如此嘛。至於原型,原型這個算是JS的語言高級特性,當然是要弄懂的。用框架想必是說的React,angular之類的,框架是為了解決特定的工程問題才出現的,當你遇到了這些問題時自然而然會去尋找解決方案,到時自然就會去選用框架了。
3、ajax:說來慚愧,平時幾乎不寫原生ajax,現在讓我不查手冊默寫原生ajax我可能會寫錯。ajax只是一個概念和API而已,如果說非要學習那就學習背後的網路知識,可以看看HTTP權威指南之類的書,至於API真的沒必要去背,寫多了自然就記住了。而且在大多數寫項目的過程中,我們往往會用封裝過的ajax工具。
4、實習:有必要嗎?我覺得題主自己已經有答案了,不是嗎?
題主的學習速度和基本功已經不錯了,即使還有欠缺可以在實踐中慢慢補。建議題主可以開始多關注社區的動向,玩玩一些大家都在討論的東西,比如框架,還有工具(Webpack之類),以及ES6/7。像AMD這類屬於上一個時代的終將死亡而且現在已經有較好的替代方案的東西,可以不要再去踩坑了。
最後同非科班,現在大三,如果不讀研明年也要去參加春招和秋招了。題主的目標很明確,想明年校招達到去BAT的水準,這是完全可以實現的。但同時提醒題主,Web前端只是計算機的一個小的範疇,作為非科班記得要去補好計算機的一些基礎,不然很容易淪落為碼農而非程序員。簡單答一下.企業關注的有一點很重要,也就是自我學習能力.簡稱自學.另一個是技術發展趨勢關注程度.自我學習就不多說了.除了基本的JS語法要深度熟悉外.某些英文文檔也能夠獨立去查閱觀看.相信我你如果花時間去翻譯一篇英文文檔.並且發佈於各大社區 v2ex,掘金. 這個效果比你去學其他的要好得多.技術發展趨勢.簡單來說就是你是否能夠跟上目前的技術潮流. 前端目前的發展是很快的. nodejs.gulp.webpack.vue...如果你能夠了解並且寫出他們的適用場景與不同.這一點是可以帶來加分的.
Hexo亮點在哪? 傻瓜式new么?.... 寫個spa的博客才是前端實力的基本證明
謝邀。 針對你的情況,結合我自己的經歷來回答一下。
- (1)ajax肯定要熟悉的,使用xmlHttpRequest對象以及microsoft.activeX對象做兼容性處理,特點是無跳轉請求以及無歷史記錄,存在跨域問題以及跨域問題的常見解決方案這些還是要知道的,至於實踐還是太簡單了。
- (2)jquery還是要熟悉的,常用的api要熟悉,大致的api要了解,常見的原生api例如querySelectorAll,事件冒泡,取消冒泡,默認行為,事件委託這些還是要知道的,不然很難過一輪。
- (3)node熟悉還是比較好的,搭個博客寫一下成長經歷也算一個小的加分點
- (4)小遊戲這個還是要看個人興趣與切入點了,canvas水還是挺深的。
其實有一個點你還是要處理好的,我當初就是沒有處理好所以沒有去一線城市,那就是你的導師願不願意放你,我當初大三面一線互聯網公司的時候就是學校不願意放人,我又很傻很呆萌地無意中透露了這個信息所以掛在了最後一輪,結果到了大四學校還是不願意放人,我就只能在長沙選了一家離校近的公司來做開發,果不其然學校的事在上半年的時候搞的我焦頭爛額,現在呢,在公司從事java開發。不過幸運的是,公司配了一個一線互聯網公司的架構師來帶我,公司氛圍還算不錯,暫時還不想離職。
大四的時候閑的無趣(湖南地區的互聯網氛圍大家也知道)就帶了一個同學來寫js,後來他把本專業offer推了來跟我學前端,我就給他寫了一個綱要,讓他慢慢學習,前段時間給我電話告訴我已經在廈門那邊找到工作了,從事ionic開發,很喜歡現在的工作,很感謝我帶他走了這條路。 結合自身的經歷給答主的建議,前端基礎一定要過關,建議熟悉高級程序設計(函數級作用域,作用鏈,面向對象之類的),ecmascript5的標準還是要熟悉的,常見的布局還是要熟悉的,設計模式了解吧,有一兩個深入的點,當然很重要的點,一定要趁早去找一個實習。 祝答主幸運。一個初中生一周到四周培訓就能做到網頁設計圖的100%像素級別htmlcss化
我的意思是說這個不難做到 但css html的代碼也許很爛很繁瑣但css提高效率和水平要大量時間實踐
js靈活度很大 有很多人其實不真懂 入門容易進階曲線陡峭
至少前端要看css js功力 精通了
react boostrap grunt gulp那些不是事作為一個同樣非計算機專業並且非理工科出身,畢業後做普通文職工作而後通過自學轉行到前端的,也面試過一些來自百度,新浪等大公司的前端。希望我的回答對題主有所幫助:)
題主現在可能跟之前我一樣有過這樣的困惑或者心理:- 非科班出身如何得到前端工作機會?是否一定需要相關實習/工作經歷?
- 什麼項目可以增加競爭力?
- 目前前端要學的東西看起來紛繁複雜,時間緊迫,我該著重哪一點才能得到面試官青睞?
- 如何進入BAT?
先說一。
其實題主相比我來說,已經幸運很多了,畢竟還是學生時代就想好了以後的職業。我想轉行做前端的時候,完完全全從零開始,辭了職自學。因為沒有了經濟來源所以心理上來說特別想速成,自學了四個月之後找到了一份滿意的工作。在此之前,我大學是學的文科,並且沒有任何實習/工作經驗。老實說當時心裡也是沒有底的,但是我覺得想做任何事情都是,不要用常規思維去約束自己。不要覺得非科班是一個門檻。真正約束你的是你的能力,而不是你的專業。:) 要找到一份前端的工作,即使沒有實習和工作經驗也是沒有關係的(當然有更好)第二,什麼項目可以增加競爭力
題主說到要什麼項目才能增加競爭力?我覺得在沒有實習或者工作經驗的時候這個尤為重要!我就是靠自己做的項目找到了第一份前端工作,並且其間得到了騰訊的面試邀請(也就是說,作為一個已經不是校園招聘的通道,沒有任何工作經驗的人,只要你的項目有點意思,也是能夠被發現的)。我覺得能夠增加競爭力的項目,尤其是像題主這樣並非社會人,你項目的著重點要體現你完整的思路過程和一個產品流程,哪怕這個項目很簡單,但是整個流程是能夠走通的,比如實現一個簡單的知乎,或者你個人喜歡的東西,也可以嘗試將你生活中的興趣愛好融入你的項目之中。簡單來說就是,你的項目能讓我看到你這個人思路清晰,基礎不差以及對前端的熱情和潛力。我覺得這個是從事前端的基礎吧。另:最好自己有台伺服器,把自己的項目傳上去並且能順利跑起來。簡歷裡面附上你項目的鏈接,能夠在線瀏覽,做到PC端和移動端都能順暢的觀賞。第三。
現在前端什麼angular,vue啊,react啊,node,rn等等一大堆,grunt,gulp,webpack啥的那麼多東西,是不是每個框架每個工具我都要擼一遍才能顯示我的NB我懂前端?我覺得不是的。記住javascript本身才是基礎,重中之重,可以去看一些講javascript本身的書籍。其他的東西不是不重要,而是對於現階段的題主來說不是每個都重要。首先javascript的基礎知識和概念必須很清楚,其它的框架之類,題主可以根據自己的項目需求,選擇其中之一深入實踐,簡歷上也著重突出這部分就好。即使是模仿別人的項目,也要有自己的看法和思考。項目裡面最好不要直接貼別人的代碼。比如我看有的應屆生給我看的項目,一些代碼片段簡直就是風格迥異...其實面試大多數也是根據你的簡歷來提問發散的,如果你寫了一大堆但沒一樣深入理解的話,也是白搭。當然除了項目,怎麼把項目突出在簡歷上也是個技術活兒,有機會再說這個。另外,最好不要覺得公司青睞什麼我就去學什麼簡歷上就寫什麼。第四,如何進入BAT或者大公司。
其實這個問題我沒有什麼資格回答,也可以直接忽略。因為我面試過BAT出來的開發,自己也有BAT的朋友,所以談談我個人的看法吧。我覺得題主想進入BAT,如果技術不是特別NB,需要努力,也需要一定運氣成分。從努力這個層面來講,就是讓面試官看到你的態度和潛力。多做下往年的筆試看下面試題也是會有幫助的,可以適當思考一些相關的問題,比如我為什麼要做前端?不少面試者給我說的理由都是「覺得前端能做出酷炫的效果」,然而他們自身往往做不出酷炫的效果,甚至連基礎概念都不清楚。你要想在眾多人群中突穎而出,肯定就不能是一些撿來的思想。並且你要貫徹你真正的看法。PS:面試這東西真不好說,每個公司甚至面試官本身的喜好就不相同。比如某廠的總監校招的時候必定會問一個問題,就是「你的夢想是什麼」。對於應屆生來說進入BAT確實是個不錯的選擇,但是任何事情不要看得太絕對。任何公司都有利有弊,也不要覺得沒進入大公司就會少了機會沒有鍍金。人生那麼長,放輕鬆就好。最後祝題主能找到滿意的工作,自學前端的路上,你也並不孤獨:)這個問題不打算匿名,目前自學前端,一路走來磕磕絆絆,目前做過一次外包。。
個人信息:答主一枚野生程序員,管理類專業,大三。
目前處於找突破點路上。
目前打算:
1、編程語言:不斷熟悉js的特性,同時熟悉python,shell2、編程工具:熟練掌握gulp、webpack3、項目經歷:做一個SAP,具體內容目前暫定公益目前行動:1、結合深入理解JavaScript和JavaScript高級程序設計,來深入JavaScript。2、寫爬蟲來熟悉python數據結構;結合《Flask Web開發:基於Python的Web應用開發實戰》,來寫後端。3、結合《鳥哥的Linux私房菜基礎篇》和一天一點Linux來熟悉shell,掌握常用命令即可,前端開發有需求再學shell。(目前,進度完成)加油,有幸同行。持續更新。自學前端也不是沒有任何競爭力。還是要看你對前端技術的掌握程度。由於沒有工作經驗以及項目作為基礎。那麼你面試的時候,你會有兩輪面試,一個是靠你的基礎知識是否紮實,第二個就是看你的操作能力是否熟練。如果這兩個都不錯的話,那麼公司一般會覺得你是個可培養之才,就會要你。
我做後端的,最近也在了解前端技術,給你一點建議吧,重要的在前面:1. javascript 必須精通又精通。面試筆試很佔優。而且,這個是你做前端的最紮實基礎2. 目前比較火的前段框架,搞熟悉一個:angularjs, react, ionic ,用其中一個開發一個完整的小應用。將來可以做演示。3. 可能是你工作兩三年後要考慮的:向後端發展學習java,python之類。學習android,swift開發。全棧工程師路線。
培訓出身…水平目測你比我強點…在上海找工作中
恩,非計算機專業的話,計算機原理、演算法、數據結構這方面的確是軟肋,大公司挺看重這些的,我也是因為這個被幾家公司拒掉了,沒辦法,只有惡補了。。。編程這條路沒捷徑的。與題主共勉。
你好,我也是轉行,學校情況也跟你一樣。
我說一下我個人情況,咱倆可以交流一下。我前端學的沒你這麼多,主要是後端學習,然後今年8月份出去找實習,入職一家較有名的公司。接著由於缺人,公司就安排我做了前端,於是我自學了一個多月前端,現在入職不到一周,個人感覺實習可能真的沒有自學快,我現在提交的兩個需求都是改css,沒什麼技術含量,完全就是再填別人的坑。但是可能公司里就是這樣,另外就是公司里大神真的多,我的老大是個全棧,目前項目幾乎都是他負責,我們組還有個前端大神,最新的框架react等瞭然於心,如果有問題,問他們完全不用擔心無法解決。因為轉行,我也很矛盾,很迷茫,實習開始之前的學習計劃也被打斷,所以關注這個問題,希望大神能給出指導。推薦閱讀:
※是什麼讓你在前端行業堅持下去,或者什麼讓你發現你是真的熱愛它?
※如何評價hax(賀老)的《前端們,賀老 Live 面試你了!》live ?
※2017年前端前景如何?
※請問如何實現網頁loading跳轉,隱藏物理地址,每次訪問頁面,域名後面都是隨機字元串?
※如果把前端開發當做一款遊戲一樣,需要打怪升級,合理分配技能點,大家認為你自己升級路線是什麼?