前端小白需要學到什么程度可以找工作?
點擊上方 前端瓶子君,關注公眾號
回復算法,加入前端編程面試算法每日一題群
我自學入行的前端,已經(jīng)是一個有五年兩家大廠工作經(jīng)驗的老司機了。回顧了一下我的前端自學入坑的經(jīng)歷~希望能幫到初學者,少走彎路。
零、入門
大二的時候斷斷續(xù)續(xù)的看了一些網(wǎng)站開發(fā)的知識,但是一直學不會,門外徘徊。直到某一天,一個老師找到我?guī)兔S護一個學院的網(wǎng)站,還說有錢可以拿。雖然心動,然而我啥也不會呀,但是老師告訴我說只需要改改文字和顏色就行,我信了...
從此走上了一條不歸路。迫于答應的事情一定要辦到,我每天廢寢忘食的學習網(wǎng)站開發(fā)維護相關的知識。大約經(jīng)過了半個多月,我覺得自己好像行了。
維護一個網(wǎng)站需要學習:
服務器
就是一臺運行在機房有獨立公網(wǎng)IP的電腦?,F(xiàn)在,個人學習可以對應云服務器,阿里云ECS。
域名
想要通過域名訪問服務器,需要添加DNS解析
Web服務
那時服務器是windows系統(tǒng),用的IIS?,F(xiàn)在,主流的就是Linux系統(tǒng)和Nginx了,按照官方文檔安裝好Nginx,使用默認配置,基本上一個Web服務就跑起來了。作為一個前端,學到這個程度就夠用很多年了
一門后端語言
當時的網(wǎng)站是一個學長用asp.net開發(fā)的?,F(xiàn)在可以選PHP、Python,還可以選Nodejs
數(shù)據(jù)庫
當時用Access。對應到現(xiàn)在,可以從MySQL或者MongoDB開始學習,增刪改查學會就夠用
網(wǎng)頁開發(fā)相關
就是HTML、CSS和JavaScript。其中最難的兩個點大概就是CSS布局和DOM操作,初期這個是可以從網(wǎng)上CV的
代碼管理
這個項目連代碼管理工具都沒有,直接一個文件夾
服務器和后端的知識,如果只是了解個皮毛的話,并不需要花費多少時間。但這些基礎知識意義重大,可以讓一個前端開發(fā)者清楚的了解到自己在一個項目中到底是在做什么,不至于迷路~
自學方法
-
看書 -
搜索引擎 -
大牛們的技術博客
當時網(wǎng)絡上的資源沒現(xiàn)在這么多,主要靠看書。去圖書館借了很多相關的技術書,其中大部分書都是又古老又垃圾的,得到一個結論,歪果仁寫的技術書普遍比較有貨。很多大牛們的技術博客,對我?guī)椭艽蟆?/p>
迫于資源匱乏和缺少指引,當時走了很多彎路。如果到現(xiàn)在,
-
書籍的話我推薦只需要一本紅寶書就夠了 -
網(wǎng)站資源,w3school和MDN Docs這兩個也足夠了 -
大致的看一些理論之后,真實的參與到一個已有的項目里去,修改和維護。關于CSS布局和DOM操作,很多難以理解的理論一下就懂了 -
學再多理論和練習,都不如親自實現(xiàn)一個具體的項目
大約達到這樣一個狀態(tài):一般項目的任何需求如果不會實現(xiàn)的都能通過搜索引擎或者翻書來解決,基本就算入門了。如果不追求去大廠做大項目的話,其實學到這就可以開始工作了~
一、關于實習
校招前的暑假里我還去一家小公司實習過兩個月,雖然也是做網(wǎng)站開發(fā),每天認真干活,但在那家公司幾乎什么都沒學到,除了各種API用得更熟練了,技術上零成長。唯一的收獲大概就是讓我下定決心已定要去一家大公司。當然小公司做的產(chǎn)品也并不簡單,同樣功能俱全,只不過還是用的比較原始的開發(fā)方式~
-
看來很多開發(fā)者工作了幾年沒有任何成長也是極有可能的。
至此,就可以做一個普通技術團隊的主力軍了~
二、校招面試的那一個多月
校招的過程基本就是被慘虐的過程,幸運的是我投的公司基本都給了面試機會。好多的概念都是第一次在面試上聽說,基本前幾次面試都是去聽新概念的。
SEO
搜索引擎優(yōu)化,這個一聽就能理解,做過個人網(wǎng)站的都知道。對應到前端開發(fā)就是使用一些方法,配合搜索引擎錄入網(wǎng)頁里的信息。
W3C規(guī)范
原來每天看的那些文檔和書,它們的祖師爺就是W3C。
閉包
這恐怕JavaScript開發(fā)者遇到的第一個沒有那么直觀就能理解的概念。平時的個人小項目開發(fā)里幾乎從沒用到,也沒見過,一直沒能理解。只能強行背答案了。
性能優(yōu)化
性能優(yōu)化是個什么鬼,能實現(xiàn)功能就不錯了。回來上網(wǎng)查了別人總結的資料,發(fā)現(xiàn)這么做確實能優(yōu)化性能,網(wǎng)頁更快,這個理解起來就沒那么難。一些書上面會有總結,但都不如網(wǎng)絡上的八股文來的直接和完整。
深拷貝淺拷貝
可以理解,但一直沒找到使用場景。
原型鏈
用來實現(xiàn)繼承的,沒用過,而且太麻煩,強行背答案。
事件代理
也叫事件委托,是基于事件冒泡和捕獲來實現(xiàn)的一種綁定時間的方法。練手項目里都是直接綁定事件的,從沒想過要用事件代理,但是這樣的概念,聽說后也就很快理解了。
盒模型、清除浮動、居中對齊
CSS的問題似乎比較少。
正則表達式
在項目中從未用過,不過看看文檔也就知道了。
常用基礎知識
數(shù)組、字符串的一些常見方法。由于我平時小項目還是寫的比較多,這些基本用的很熟練了。
ajax和跨域
無刷新局部更新內(nèi)容,這個也好理解。
常見算法,時間復雜度
這是大廠必問的,當時把常見的幾個排序算法復習了一遍,基本就滿足要求了。
實現(xiàn)一個jQuery的$函數(shù)
什么?jQuery還能自己寫...原來這個也是可以自己去寫的,好像也不太難。
還有一道記憶深刻的題,某個產(chǎn)品每天有一個億的用戶訪問,服務器扛不住了怎么辦?
我...是來面前端的呀!
在校招面試這段時間里主要是對知識體系的補充。了解到一些之前從未關注的概念,然后快速的學習,如果理解不了的就先背答案。有了一定基礎后,理解這些概念并不會太難?,F(xiàn)在網(wǎng)上會有各種面經(jīng)和文章,上面的這些概念恐怕已經(jīng)問不住現(xiàn)在的畢業(yè)生了?,F(xiàn)在的校招算法問紅黑樹,手寫Promise,競爭是越來越激烈了。
以前問jQuery,現(xiàn)在應該就是問React、Vue框架了。歷史在重復。
三、正式工作
正式工作之后,才發(fā)現(xiàn)雖然同樣是寫JavaScript,但是和以前個人操作是完全不一樣的。
-
上班的第一天就深刻理解了從沒理解過的閉包,因為項目代碼里全是閉包。一是為了限定作用域,二是當做對象來使用。現(xiàn)在有了ES6場景會少很多,最能幫助理解的就是節(jié)流函數(shù)和防抖函數(shù)了 -
公司有自研的框架,涵蓋了jQuery的功能,手寫jQuery也能理解了。所以面試造火箭也不是沒有道理 -
代碼規(guī)范,單引號和雙引號,要分號還是不要分號,縮進用4個空格還是2個,團隊大了,一起維護項目,這些都是需要約定的 -
原來在人多的團隊,SVN的分支和merge功能是這么用的,真香 -
前后端分離、CDN,靜態(tài)資源和動態(tài)內(nèi)容不是放在同一個服務器,為了分流,CDN有好幾個域名 -
自動化的打包工具,代碼打包壓縮和分割都是自動化的,而這些工具都是團隊里的大佬用Nodejs開發(fā)的,崇拜 -
性能監(jiān)控,1s打開網(wǎng)站、性能優(yōu)化這些都是有KPI的 -
ajax和前端路由基本把Web應用的體驗提升到極致 -
安全相關,防止XSS攻擊,輸入和輸出的內(nèi)容都需要經(jīng)過處理 -
表單校驗,正則表達式都是要根據(jù)需求自己實現(xiàn)的,再也沒法從網(wǎng)上找到答案直接CV了
大部分知識,如果只是使用的話,其實沒有什么學習成本,見過了也就知道了。
接下來就是一段做螺絲釘?shù)慕?jīng)歷了。經(jīng)過了前面的學習和校招的磨礪,道理我都懂,但是真正在一個大項目里做了第一個功能,才發(fā)現(xiàn),原來100行代碼真的能引發(fā)200個bug...
總結
至此,就是一個專業(yè)前端開發(fā)團隊的新力軍了~
從小項目到大項目,流程的要求變高、方案要求變高、代碼規(guī)范要求變高,性能的要求變高,用戶體驗的要求變高,需要解決的問題跟著變多,但是Web開發(fā)技術的基礎并沒有變,還是HTML、CSS和JavaScript。
來自:Simba同學
https://juejin.cn/post/6953159480087429134
