什麼樣的前端才是大公司要的前端?

幾個月前我還是個頁面仔,工作的內容無非是寫寫頁面切切圖,用到最高級的技能頂多就是jquery啊,less啊,ajax都不怎麼會用.
但是後來辭職了,想成為一個合格的前端,就開始自學.
到了目前為止,算是掌握了:
原生js(包括閉包,繼承,原型鏈這些內容);
css:關於盒模型和由其引致的bug的處理又好了不少,能處理一般兼容性問題;
構建工具:會用點基本的gulp;
http:基本的報文結構跟狀態碼都知道.

說完了掌握的,說說自己沒掌握的和不足吧:
ajax:知道ajax要怎麼用,但是因為沒有能力搭建伺服器端的關係,一直沒什麼實操;
nodejs:因為不怎麼想學php,所以想以nodejs作為主力的後端語言,但從來沒接觸伺服器方面的東西,不知道什麼學習路徑比較好;
框架:在沒有做具體項目,不明白項目需求之前不知道有沒有必要學angularjs ,vuejs一類的框架.

自己希望能去到一些前端工程化意識強的大公司,能有一個完整的技術體系和複雜的產品邏輯可以讓人不斷地受鍛煉不斷地進步.
想問下除了我上面描述的以外,我還應該去學習什麼其他方面的東西或者需要對哪一方面進行更深入學習,那樣我才能成為一名大公司合適的前端


小公司,前端團隊才20幾個人。來冒昧回答下。
團隊大部分人都是我親自從各個地方拉來面試,然後通過,然後培養起來的,這點還是有點心得的,不過這裡不想詳細展開。

在我們的招聘中,一般第一句就是這樣的:

  • 技術熱情,對技術問題深究的態度,善於總結,喜歡思考解決問題的各種方法和思路,能夠自己快速解決各種技術問題。(這條不符合的就不要投簡歷了)

很寬泛的,但是我卻認為是很重要的,我非常看重這一條,甚至超過對你的技術和經驗的考察。
我面試的時候一般不會問具體的技術細節,例如閉包是什麼,寫個排序演算法,寫個三欄布局什麼的。其實如果你符合了上面說的那一條,這些問題對你來說只是隨手google一下就能掌握的東西,問了意義並不會太大。
創業公司,有時候技術真的沒法搞的太高大上,我們需要的不是專家,而是能夠從0開始,自我成長,自我約束,認同團隊理念,懂得總結分享的人。然後我們儘力聚集越來越多擁有相同價值觀的人,當然我們也會偶爾引入幾個專家級別的開發,用外力來促進大家的成長,但是更多還是靠自我的驅動,我們提供的是一個氛圍和環境。

我們現在一般有2面,第一面是我,第二面是總架構師。我喜歡跟對方聊一些新技術,他們的理念,使用什麼的,聊做過的項目,聊對一些事情的看法。架構師那裡則喜歡直接問你技術問題,甚至在紙上寫代碼。感覺還是配合的挺完美的。不過通常我這裡過了,架構師那一關基本也算是過了,只是對你水平的一個考量。

具體關於招聘的描述,可以看一下我們團隊博客的文章:《加入我們團隊(前端NodeJS)【有圖有真相】》作者:芋頭 來自大搜車前端團隊博客


最近此類問題在知乎上看到很多,我覺得可能很多在找工作的同學都走進了一個怪圈,一直想知道我究竟要會哪些工具,懂哪些知識,才能拿到好的 offer。我不敢說這是一個誤區,但我想談談我的一些看法,可能不盡正確,也算提供另外一種思路吧。

同樣知道和不知道題主所說的這些知識的人,得到的大公司的評價可能差得非常多。我想說的不是面試的運氣,而是如果有人覺得大公司面試面的是你會不會這個工具那個工具,那麼這麼想的人的認知本身可能就和大公司的期望存在不小的差距。

你可以完全不會 less,如果你把 sass 玩得很溜。你可以把 http 狀態碼背得爛熟於胸,但這未必就給你加分多少,因為完全可能是面試前五分鐘現記的。沒錯,掌握的知識點、會的工具多,總是加分項,但除非你是天才,大多數人的精力總是有限的。所以面試官問這些,並不是擔心你進來來不及學某某工具(大公司一般都等得起,前提是你是值得等的人),而是因為結果是很好的展現過程的手段:通過你學習的成果,反推你是怎麼學習的,反推你是怎樣的人,從而判斷是不是符合公司價值觀和需要的。

所以,除了這些工具,更應該關注的是自己的軟實力。可能有人覺得說到軟實力就很虛很裝很扯,說得好像程序員只有代碼是真本事一樣。其實會這麼想的程序員大多是對自己的軟實力沒自信罷了。

我不打算介紹面試時候包裝自己的技巧,並不是因為我小氣打算自己留著用…而是這就像談戀愛一樣,為了良好的第一印象可以選擇和對方有共鳴的方面去表現,但是切忌為了爭取機會而說一些和自己價值觀不相符的地方。坑到公司人家大不了開除你,你本來就是幾千幾萬分之一,坑到自己代價多大啊?
我聊過的 BAT 幾個老大對軟實力方面都是非常看重的,事實上如果他們這都不看重,我會懷疑這個團隊到底靠不靠譜。尤其是因為作為校招生,就算學校里做過什麼真實的項目,跟公司的業務比起來都算不上什麼經驗的。所以沒有實際經驗可以看出能力的時候,當然就看潛力了。
但這潛力一定是要落到實處的。怎麼說呢?比如如果你說「你問的這些庫我都知道但都沒用過,因為我太忙了。不過我學習能力非常強,我進團隊馬上就能學會的。」如果我是面試官,我會對這樣的答案非常懷疑,我比較偏結果主義者,我會懷疑,如果你真學習能力強,都學了這麼久了,怎麼也應該做出點什麼好玩的東西了吧,至少怎麼也應該學到點什麼了吧。相比這樣的答案,當我不會的時候,我會說明我的時間都花在學什麼上面了,有哪些思考,有哪些收穫,有哪些可能是和那些我沒學到的庫相通的或者互補的。我覺得這些背後的思考才是所謂的學習能力的佐證,而不是說「我學習能力很強的,兩三天就能學會」就能有的說服力。
除了學習能力,還有非常多的軟實力,比如溝通能力思考能力等等。這些我就不細說了,因為一兩年內似乎很難見效的,或許這更是這些軟實力難能可貴的地方吧!就我個人而言,我覺得比較好玩也沒想到的事是,十幾年主持晚會的經驗帶給我的鍛煉最近非常顯著也意外地讓我覺得很受用。因為這種多年的鍛煉,不僅僅是對口才,更多的是敢於表現自己的勇氣,和善於表達自己的方式,以及永遠的台上三分鐘台下半年工的覺悟。
這些軟實力可能臨時抱佛腳不太現實,但我這裡是想提醒那些軟實力還不錯的同學,別忘記展現自己的這一面。

最後,安得 offer 千萬發,大庇天下軟狗俱歡顏。


社招的話要有實際項目經驗。然後是基礎知識的理解。比如你說的那些閉包原型連,哪怕是背的。有面相對象編程的能力,有後端開發經驗,或者做過,溝通能力,其他的均是加分項,不是必要條件。

最後是合適的定位和薪酬,別說我還真見過啥也不會就張嘴要25k的,一年多經驗,哪怕基礎過關了,我想要,跟上面一說,性價比不高,你也夠嗆。

當然,很多大公司是會有臨時項目的,缺幹活的,有些大公司是缺精英的,帶團隊帶兄弟們裝逼一起飛的,所以對自己定位也重要。

我這是大實話…


加班狗來答一波。
從樓主額問題措辭想來應該是學習了一段時間新鮮期過了,有點迷茫才問出這個問題。
送幾句話吧:
1. 就面試來言(至少從我的面試經驗)來看,實際上大公司因為容錯率比較低,會給不少buffer,所以面試而言只要基礎、演算法、程序設計上思路清晰,都可以給過了,當然加上一些項目經驗和自己的思考證明你是一個只會寫代碼的就更好了;反而小公司人力容錯成本需要控制,所有更加小心,所以樓主面試大公司就勇敢上吧,並不難。
2. 另外,技術這種東西,前後端都是,無他,唯多花時間爾;
3. 接第二條,感慨一下,其實很少有去了大公司慢慢變得牛逼的,反而是自我驅動變得很牛逼了被挖到大公司的居多...所以樓主不要期待說我進了xxx就會很好,誰在xxx一定很牛逼。

...完,繼續碼代碼去了,勞資還沒下班呢。


當然是「專業」。幹活「專業「的,在中國非常稀缺,即使是大公司也難免魚目混珠。


不瀉藥!沒人葯我!
先說自己的經歷: 小公司前後端都做=&>大公司核心前端組=&>創業公司前端負責人
先打趣一句啊:有時候大公司缺人(迅速擴張期),會招N多人,其中不乏一起些水貨跟著風就進去了(比如內推,看走眼的情況時有發生,畢竟就那麼點時間),所以你不必認為進到大公司的人都牛逼的不行,也不用因為自己沒進去大公司而懊惱。

針對你題目裡邊的描述中,我覺得你還處於迷茫期,你還處於不知道要學什麼的階段。學東西,不是一個框架會用即可。就拿你描述裡邊的jquery來說,用誰都會用,不就文檔裡邊的那些個用法嘛,你說不懂ajax,你可以試著這樣去學:ajax是什麼,為什麼會有ajax,ajax的優缺點=&>ajax怎麼使用=&>jquery的ajax是實現方式是什麼=&>jq的ajax代碼這樣寫的好處與弊端是什麼 。當你做完這整一條的時候,試著單擼出一個簡單的ajax庫出來,然後看看別的框架的區別是什麼。 看,以後面試的時候說ajax,你的回答的語氣不是自信滿滿恨不得把技術細節都講給面試的人聽嗎(當然了,他聽不聽是一回事:)

其實我上面說一堆,無非也只是想你在看一個框架一個庫之類的,別只看用法,關心一下這個框架怎麼寫的。看多了你會發現很多東西是相通的。你覺得牛逼的東西都是基礎的東西靈性地堆積起來的。

當你能靜下心來關注一些本質的東西,我覺得你就處於一個飛速發展的階段了。知道自己要學什麼,而不是大公司需要我學什麼。

PS:對於有些大公司來說,業務是第一位,技術輔助於業務。所以在你能做出選擇的時候,盡量多去打聽一下你心儀公司的前端都在幹什麼,比如說我的話,我就絕對不去一些內部系統項目的組~就是不喜歡,口亨!

PPS:別那麼屌絲,大公司注重流程,在一般情況下,技術能決定你是否能進,然而會不會做人做事,能決定你做得開不開心順不順利~ 在你沒進之前,修鍊心態,學會正確地做事也是灰常重要的。

以上,希望能幫到你。


現在的前端不比傳統技術行業的碼農,我認為最重要的是有著一顆對生活充滿熱情的滾燙的心。
是的,聽起來像是不著調。但實質裡面反映了很多作為前端人需要具備的軟能力。

就如雯莉所言,除開學習能力,溝通能力思考能力等都是非常難得的軟實力。這些都是一個人的綜合修養,與技術無關,更類似情商的表現,但卻是重要的。

我們是程序員,更要做一個有追求的技術人。

你只有熱愛生活,有一雙挖掘美的眼睛,一雙熱與創造的小手,才能使你走在不斷改變現狀、創造奇蹟的道路上。
如上都具備,或接近,那麼所謂的學習能力,思考能力,大概都不是事。

當然如果你只熱衷當一名碼農,那這些自然是你瞧不上的。


上月初拿到百度工程效率部前端相關職位社招的offer, 本月9號入職,感覺這個背景下對於回答樓主的問題還是比較合適的。

我自己也曾經面試過不少人(都是初級前端職位,目前所在的公司待遇檔次根本招不到中高級的前端),下面按照自己認為的重要性順序談幾點:

  1. 基礎能力:大公司的團隊很多時候還是比較欣賞學院派的研究精神的,紮實的基礎是這方便特質的一種體現(對於樓主來說基本javascript編程語言語法和封裝+應用)。
  2. 運用能力:例如樓主提到自己了解HTTP-code之類的,由於nodejs的出現,嘗試用nodejs測試一下你所了解的東西顯得很容易。個人覺得在前端工作中,沒有實踐的知識點都不是能夠理解的,更別談掌握。
  3. 領域擴展:前端領域不是一個脫離web開發之外的領域,基礎還是web,你說連一個WEB伺服器都不去搭建起來,顯得太說不過去了。而且當下前端的職責範圍已經包含了web開發的各個環節和角落,幾乎除了 核心業務邏輯、SQL優化、集群處理、伺服器負載(還有考慮資源優化等問題)等,都得插上一腿。
  4. 工程化思想: 鑒於樓主所說的注重工程化,首先自己得有這樣的思想,在工作過程中,需要達到一定的經歷和經驗,發現和體會在軟體開發過程中可能工程化(軟體代替人工完成的軟體開發環節,包括開發、聯調、測試、構建、發布等)的部分。
  5. 工具化能力: 基於工程化思想,你可以根據自己已有的知識體系(nodejs幾乎成了當下的首選,當然如果你的其他語言java/python等能力也不錯的話也可),嘗試自己完成一些這些可被工程化的環節。
  6. 當然以上1點,只是針對你想要做工程化相關的工作時候需要做的入門,如果不是做這些工作,你了解一下就可。

最後打一個廣告, 我通過nodejs構建的一套工具,具備基本的伺服器功能(Nginx), 支持類似serverPage的模式寫服務端代碼,自帶了一些前端開發各環節的工具(資源復用、單域/多域代理調試、資源合併壓縮等基本構建能力、less/coffee/sass/jade等實時響應等功能和一些css3前綴啦、實時更新啦、url二維碼啦、css-sprite等小插件)http://f2e-server.com


我是覺得最重要的還是信息量的掌握。就像題主知道一個合格的前端必須掌握http,ajax等,了解了一些js框架,這就比很多菜雞強了。

讀的書,看的博客,寫的代碼多了,眼界就開闊了。面試的時候,要和面試官展現你的知識深度,比如問你一個WebView你能和面試官扯各種安卓ios兼容處理,各種終端與WebView通信的原理之類(??ω?)?嘿。

以上


我在大公司見過兩種不同的前端。

第一種前端是跟著產品團隊的。產品團隊里的前端周圍有設計師、產品經理、運營以及後端等等。如果不是一個前端很重的團隊,隊伍里可能只有1~2個前端。在這種情況下,前端在隊伍中常常需要維護多種頁面,比如國慶要出個活動,你得做個活動頁;後端有個數據統計系統,需要你寫個前端頁面來展示和操作等等。產品團隊輸出的是業務,這種時候你不需要太高超的前端技巧,你的同事也不怎麼懂前端的專業知識,大家在意的是你能不能迅速做出東西來。

第二種前端是跟著技術團隊的。所謂技術團隊,也不一定就是很牛逼的編程技術,UED這種組,實際上就是一個技術團隊(當然也是設計團隊),技術團隊中前端數量比較多,可能會有3~5個甚至更多。在這種情況下,前端接到的工作往往來自多個不同的業務,而且可能對業務並非特別精通。我所觀察到的是,每個前端會固定的跟若干業務,可能是產品相關的業務,也可能是隔壁後端組的公司內部系統相關的業務。而且過若干個月,可能這些業務中的某些就不再需要前端,然後前端就會切換到其他業務去。技術團隊輸出的是技術,技術團隊有自己的前端技術氛圍,你的前端實力不僅要體現在業務上,更要得到周圍前端同事的認可。現今React這麼大火的情況下,你做的業務如果都是jQuery拼出來的,同事們可能內心裡會給你不是很高的評價,你的領導或許會覺得你不夠上進。所以說,這種時候你需要不斷更新自己的技能,大家很在意你是不是技術大拿。

這兩種團隊面試前端的側重點是略有區別的,當你投簡歷或者自己內心裡選方向的時候,要明白對面大概是一種什麼情況。

這兩種團隊是我見過最普遍的,也有的公司會讓前端跟著業務走,但多個業務組裡的前端會自行組織成一個非人事行政上的一個小團體,專門交流技術。這樣的情況我覺得是更加利於前端發展的,無論是技術上還是其他方面。

題主問什麼樣的前端才是大公司要的前端,以上是我所觀察到的,希望對題主有幫助。這個答案不僅給你,也留給其他對這個問題有興趣的朋友。

至於你要學什麼技術,我覺得你列出來的你最好都實踐一下,AJAX都還沒熟,我看離題主自己的目標還是有不少距離的。


不請自來 我在兩家大公司呆過 感覺大公司之間 不同職級差別也很大 有些只是招能幹活的 太牛逼了人家可能還不要 怕hold不住你 而有些是招能獨當一面的 這種就屬於越nb越好了

基礎知識和工作經驗當然很重要 這些不牢靠的肯定通不過第一關 除了這個以外 如果是我招人 我會優先看這個候選人的聰明勁和態度 具體來說就是解決問題的思路和經驗 學習能力 還有學習的慾望和對這個行業的熱愛程度 至於會用幾個框架 用過什麼工具 我覺得是相當次要的


臨睡前來一發。
所謂的大公司的前端,每個大公司都不一樣,每個部門看重的也不一樣。例如阿里的很看重編程能力,直接讓你寫代碼解決問題才是王道。百度的以前面過,對基礎的知識比較看重,對某個問題的解決思路很看重。

有的會問css3,有的會問nodejs,有的會問移動端,有的會問面向對象。有的會問你某某功能怎麼實現。各個部門,各個面試官都是不一樣。你要給別人看到你有解決問題的方法。有自己的特點。

自己實習的公司mentor說過看重的是個人能力,不光是編程能力,還要讓面試官看出你的潛力。我在面試現在的公司的那時候,主觀題還是很多的。人家就是想通過溝通來看出你有沒有潛力走在web開發這條道上。

所以說大公司看重你的技術基礎是一方面,還要看出你的個人能力。前端的路很長阿,繼續加油吧!


去年夏天來到杭州,親身經歷了小芋頭君回答中的現場面試。

在深刻體驗了一把之後,結合小芋頭君的回答,我只能給一個「差評」了。

先說結果,我並沒有通過面試。

另一個結果,我反而是來到了所謂的「大公司」網易。網易的面試在大搜車(小芋頭君的公司)的前一天。

更多的信息是,我那時在杭州面了兩天多,最終收穫了4份簡歷(包括網易)。面試不通過(不包括我主動拒了的兩家公司),除了大搜車,還有一家公司。

說這些只是想說明,我自認還是個靠譜的前端,也得到了承認,但顯然,小芋頭君回答中如此「靠譜」的面試卻並沒有對我有認可。那是流程的問題,還是人的問題呢?是面試官的問題,還是我的問題呢?

時隔這麼久,再次來到這個問題下,並不是出什麼「怨氣」,更不是懟小芋頭君。其實是最近幾天,也參與了幾次面試,有點感想而已。

首先說明一點,我曾經給過小芋頭君的回答的「贊」,不會取消。

其實直到現在,對於回答中的一些觀點,也還是認同的。而所以給「差評」,則是「知行不一」。道理大家都懂,可是做起來難啊。

===========================

回到問題,我也寫寫自己的看法吧。

「 什麼樣的前端才是大公司要的前端?」

前端是什麼呢?根據上下文可以知道,應該是做Web前端開發的,使用HTML、JS、CSS這些開發頁面。在我看來,這只是個工種嘛,過去沒有,現在有,以後說不定就消失了。

大公司呢?就是大的公司嘍,相比小的公司,人多、錢多、業務多吧。只是大公司也是右很多小的部分組成,具體看單個部分,應該差別蠻大,獨立來看待的話則和一些「小公司」差不多。所以大公司要的前端,也會是多種多樣的,因為具體招聘的那個「部分」,也會是多種多樣的,甚至並不大。

以上說的都是不確定。

可以確定的是:變化與不同,永遠都存在。

具體問題具體分析,沒有統計則只能憑感覺說出「大多數怎樣怎樣」的話,甚至是「大公司就一定怎樣怎樣」,而這顯然不夠「靠譜」。

所以,歪個題,說下我的看法(畢竟我也算參與了前端招聘):夠用就好

既然只是個工種,招聘的目的主要是在具體的崗位上可以勝任工作,所以,夠用就好。

既然大公司也是各種各樣的部分,情況各不相同,對職位的要求不一樣,所以,夠用就好。

殺雞不用牛刀,一方面是避免浪費,另一方面也是因為牛刀的「稀有性」。

業務簡單,短期來說不會有很大的技術難度和挑戰,那麼一個技術能力一般的前端就夠用了。哪怕是在大公司。

反之,業務複雜,未來還會更複雜,前端工作有很大的技術難度和挑戰,那麼即便是在小公司,不也得需要前端技術大牛嗎。

更何況,小公司也會變大,大公司也可能變小。使得公司發展變化的,不也是人嘛,而前端工程師,也是啊。


最後,寫給自己,也寫給正在看的你吧:

每個人都有適合自己的位置。能力高了,待不下,就換個地方;想去更好的位置,就提高能力。慢慢來,不急,也急不來。


其實基本功全學好了即可,很多公司更在乎你是否願意學習公司需要的新知識,和你的溝通理解能力,其實IT發展到現在,如果初來乍到,登堂入室,爐火純青是三個階段,達到登堂入室應該是最受歡迎的了,有些公司技術難點不多,問題是需要你達到如臂使指


就我們自身的經驗來講, 前端團隊的構建更加隨性,工作氛圍也很自主。
畢竟前端並不能輕易的量化,任何所謂的優化都要建立在長期的觀察與反饋下才能確定是實實在在的更優秀了。
大部分時間產品前端完成後,是靠團隊自身的經驗來確定是否可靠。有關前端的自動化測試我個人認為比較雞肋,構建自動化測試的時間成本足以開發一部分新功能了。在產品初期,瀏覽器或跨平台的兼容性並不是首要因素,根據產品定位可以輕鬆分辨主要訪問人群來制定更為敏捷的開發進程。
對於技術方面,我相信任何公司都歡迎對新鮮技術抱有極大熱情的員工,學習能力是很重要的一個方面。當然前提是對成熟技術有一定把握,比如css,javascript等等。在面試階段,我更注重於前端人才對javascript的理解,而不僅僅局限於使用jQuery或bootstrap。CSS是很重要的一項能力,很多時候比腳本還要重要,我們目前的產品並沒有強制要求使用less,但是不乏有積極的員工使用less工程文件再轉成普通css加入項目。除了腳本和CSS能力,前端人才必須具備一定的美工功底來和UI人員一起協調解決很多實際開發中出現的問題。
總結一下:
腳本開發能力 極為重要
樣式表撰寫能力 極為重要
美感及設計功底 重要
團隊協作能力 重要
用戶體驗感知能力 重要
規範的編碼風格 較重要


就目前面試的經驗來談。
公司一般要求倆個方向的前端。
1.是可以來了之後做項目,寫功能,做測試,這樣的團隊中基本已經有很好的框架體系以及大牛級別的架構師。對面試的要求是基礎知識是否過關,項目經歷。
2.另外一種是需要可以做架構方向的技術人員,這樣的部門需要大部分是能夠自主學些,更新知識,通過新技術給團隊帶來更高效率的人才。
根據以上的兩個方式培養自己,第一點是前幾年要做。第二點需要一點點積累,自我主觀成長要求更高一些。


好多東西要學,好多東西不會


當你寫的html別人再也改不了一個字的時候就可以了


主要還是看公司,工程化強,不是產品設計測試誰一嘴就能加個需求的公司就行,不在於大小,而是公司,業務中能提高自己在代碼上,而不是天天為了些可有可無的東西反反覆復改來改去就行,自己再努把力肯定會進步,當然這種公司少之又少,不管是前端還是後端


樓主問大公司,你們先說是什麼公司的再答好不好? 這麼多答案我怎麼篩選啊?


推薦閱讀:

antd走過了那些坑?

TAG:前端開發 | CSS | JavaScript | 編程 | 前端框架 |