Re: [請益] 一個全端工程師,最少要有什麼程度?

看板Soft_Job (軟體人)作者 (普通人)時間6年前 (2019/07/17 14:36), 編輯推噓20(20071)
留言91則, 28人參與, 6年前最新討論串6/6 (看更多)
全端工程師這個詞是最近十年才出現的 我的感覺是因為前端技術的發展迅速 導致傳統web開發技能樹在前端大幅增加 在SPA流行之前,web開發技能很單純就是後段語言 加上HTML & 基本CSS JS在那個年代差不多只是用jquery跑簡單的UI 一個專案可能數萬行後段程式碼 前端的JS只有幾百行 在這樣的時空中,web工程師實際上重心放在後端語言 隨著SPA興起,前端框架與技術的進步 現在的前端開發已經不再是簡單的事情 需要專精的人才去處理 前端工程的複雜度早就不亞於後端工程 而全端工程師的誕生我認為與相關工具的進步直接關聯 由於各種工具的輔助,大量節省工程師的時間成本 才可能會有全端工程師這樣的職位 我個人認為全端工程師真正的價值 不是一個人可以同時做兩件事 而是由於對兩端都有涉獵 因此可以從系統整體面相規劃設計 例如在實現功能的時候可以設計出彈性的API 規格 此外在中小型團隊中,可以依照任務目標靈活調派人手 目前在我工作的團隊中,每個人都是全端工程師 最基本的門檻是 前端技術方面,了解JS基礎特性 後端技術則是著重於基本演算法 系統設計方面要能夠考慮到大型系統的運作及延展度 我自己面試別人的時候都還會問一個 JS 題 意外的是大概2/3的人答不出來,但是這個題目 是我覺得全端工程師在前端技術上的最低門檻 題目是 for(var i = 0; i < 5; i ++) { setTimeout( function () { console.log(i); }, 0); } 問:輸出為何? 再問:如何輸出0到4 至於後端問題我通常找leetcode medium 問 此外我們面試絕對不會問框架問題 因為我們認為優秀的工程師不應該受框架限制 而是能夠快速學會任何框架 而且我們用的框架是內部設計 問了三大框架問題也沒用 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 73.92.178.88 (美國) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1563345398.A.287.html

07/17 15:26, 6年前 , 1F
let?
07/17 15:26, 1F

07/17 15:32, 6年前 , 2F
樓上答對了
07/17 15:32, 2F

07/17 15:39, 6年前 , 3F
IIFE
07/17 15:39, 3F

07/17 16:38, 6年前 , 4F
輸出4 4 4 4,var改成let
07/17 16:38, 4F

07/17 16:47, 6年前 , 5F
[0,1,2,3,4].forEach(n => console.log(n))
07/17 16:47, 5F

07/17 18:20, 6年前 , 6F
ES6以前用IIFE
07/17 18:20, 6F

07/17 18:20, 6年前 , 7F
ES6以後用let
07/17 18:20, 7F

07/17 18:27, 6年前 , 8F
DOM基本操作呢?CSS呢?資料庫基本觀念呢?
07/17 18:27, 8F

07/17 18:28, 6年前 , 9F
全端最囧的地方就是面試方可以拿任何一方面的”基
07/17 18:28, 9F

07/17 18:28, 6年前 , 10F
本觀念”來考被面試者 因為那是基本觀念呀
07/17 18:28, 10F

07/17 18:30, 6年前 , 11F
你拿資料庫優化的基本觀念來考後段強前端弱的求職
07/17 18:30, 11F

07/17 18:30, 6年前 , 12F
者當然可以電他
07/17 18:30, 12F

07/17 18:30, 6年前 , 13F
*前端強後端弱
07/17 18:30, 13F

07/17 18:31, 6年前 , 14F
你拿javascript closures跟event loop來考CSS強者也
07/17 18:31, 14F

07/17 18:31, 6年前 , 15F
可以電他
07/17 18:31, 15F

07/17 18:33, 6年前 , 16F
你拿leetcode medium/hard搞不好也可以電Tyler mcgi
07/17 18:33, 16F

07/17 18:33, 6年前 , 17F
nnis之類的JS大法師 (我是不知道他演算法多強啦)
07/17 18:33, 17F

07/17 18:37, 6年前 , 18F
考來考去不如大家回歸前端vs後端 至少範圍清楚一點
07/17 18:37, 18F

07/17 18:59, 6年前 , 19F
請問為啥是4444呢
07/17 18:59, 19F

07/17 19:08, 6年前 , 20F
google js closure就知道為什麼
07/17 19:08, 20F

07/17 19:12, 6年前 , 21F
Godbye45你已經死了 XD
07/17 19:12, 21F

07/17 19:31, 6年前 , 22F
不是55555嗎
07/17 19:31, 22F

07/17 19:38, 6年前 , 23F
我是覺得養成好習慣先寫個變數不好嗎?
07/17 19:38, 23F

07/17 20:26, 6年前 , 24F
這是 function scope 跟 EC 的問題吧
07/17 20:26, 24F

07/17 20:31, 6年前 , 25F
不是5566嗎
07/17 20:31, 25F

07/17 20:31, 6年前 , 26F
i 宣告在global 時間到之後 event loop 執行 callbac
07/17 20:31, 26F

07/17 20:32, 6年前 , 27F
k 印出 i 。中間有用到包閉嗎
07/17 20:32, 27F

07/17 20:49, 6年前 , 28F
要包閉才能拿到 i sor
07/17 20:49, 28F

07/17 20:55, 6年前 , 29F
也有些人認為前端的重點在 CSS 切版啊,這個要寫的優雅也不
07/17 20:55, 29F

07/17 20:56, 6年前 , 30F
是件容易事,我覺得就像 cloud 說的那樣,因為東西太多了,
07/17 20:56, 30F

07/17 20:56, 6年前 , 31F
放棄js 改用 c# 同事表示兩個蠻像的
07/17 20:56, 31F

07/17 20:56, 6年前 , 32F
很容易被電。
07/17 20:56, 32F

07/17 20:58, 6年前 , 33F
這題也很多可以深入的啊,比如 callback 時間不要設 0 改成
07/17 20:58, 33F

07/17 20:58, 6年前 , 34F
i,問你為什麼輸出不是 0 5 5 5 5 而是 5 5 5 5 5?
07/17 20:58, 34F

07/17 20:59, 6年前 , 35F
這樣就是一個小陷阱了。
07/17 20:59, 35F

07/17 20:59, 6年前 , 36F
五樓說的解答也滿足題意,可是大概不是面試官想要的答案
07/17 20:59, 36F

07/17 21:06, 6年前 , 37F
面試最重要的不是考倒對方,基礎的確是重點就是
07/17 21:06, 37F

07/17 21:07, 6年前 , 38F
個性比一切都重要,一個會背答案,實戰力+態度超弱也遇過
07/17 21:07, 38F

07/17 21:08, 6年前 , 39F
一個太強融不進團隊的也不適合
07/17 21:08, 39F

07/17 22:45, 6年前 , 40F
這種考題雖然考到爛了 但平常沒在用還是答不出來XD
07/17 22:45, 40F

07/17 23:34, 6年前 , 41F
(function(i){console.info(i);})(i)
07/17 23:34, 41F

07/17 23:35, 6年前 , 42F
只能推max
07/17 23:35, 42F

07/18 00:56, 6年前 , 43F
寫了n年js還沒踩過closure的坑,這種觀念題已經過時了
07/18 00:56, 43F

07/18 00:56, 6年前 , 44F
吧?
07/18 00:56, 44F

07/18 01:00, 6年前 , 45F
最近看到一題有趣的題目
07/18 01:00, 45F

07/18 01:00, 6年前 , 46F
[1, 7, 11].map(parseInt)
07/18 01:00, 46F

07/18 01:26, 6年前 , 47F
3樓害我思考了一下為什麼是4,這題我不會踩到closure
07/18 01:26, 47F

07/18 01:30, 6年前 , 48F
不過會在12345和55555猶豫,原因是我會忘記javascript
07/18 01:30, 48F

07/18 01:31, 6年前 , 49F
是單線程加上setTimeout(0)我會誤以為是立即執行
07/18 01:31, 49F

07/18 01:32, 6年前 , 50F
但看題型我又會懷疑故意考closure,剛去查才發現
07/18 01:32, 50F

07/18 01:33, 6年前 , 51F
setTimeout(0)是立即排進序列,而非立即執行...
07/18 01:33, 51F

07/18 01:36, 6年前 , 52F
所以因為單線程,所以不會是隨機由小到大的1~5
07/18 01:36, 52F

07/18 01:36, 6年前 , 53F
setTimeout(0)非立即執行,所以會等for結束才執行
07/18 01:36, 53F

07/18 01:39, 6年前 , 54F
再加上var i被hosting,所以全部都是5,1題3個細節...
07/18 01:39, 54F

07/18 06:54, 6年前 , 55F
don't use var
07/18 06:54, 55F

07/18 08:37, 6年前 , 56F
.map(parseInt) -> .map(Number) 這是考平常沒在用的細節
07/18 08:37, 56F

07/18 08:58, 6年前 , 57F
這是在考平常不會去踩的坑 跟台灣馬路一樣
07/18 08:58, 57F

07/18 09:30, 6年前 , 58F
樓上 是的 完全是平常根本避免踩的坑
07/18 09:30, 58F

07/18 10:00, 6年前 , 59F
坑就在var 不過現在平常都用let或const了
07/18 10:00, 59F

07/18 10:10, 6年前 , 60F
2019年了還在用var的是山頂洞人了吧
07/18 10:10, 60F

07/18 12:53, 6年前 , 61F
問題是大家都得為這種坑做準備 因為面試官就喜歡這
07/18 12:53, 61F

07/18 12:53, 6年前 , 62F
個 不然我團隊上有人寫這種鬼東西一定被我罵
07/18 12:53, 62F

07/18 14:20, 6年前 , 63F
還是不懂為何不同經驗出身的工程師為什麼必須要符合
07/18 14:20, 63F

07/18 14:21, 6年前 , 64F
全端工程師的標準 還有當他已經是專業前端或後端那
07/18 14:21, 64F

07/18 14:21, 6年前 , 65F
還會來應徵全端工程師嗎?
07/18 14:21, 65F

07/18 16:09, 6年前 , 66F
parseInt那個類型的坑踩過一次就不會那樣寫了QQ
07/18 16:09, 66F

07/18 16:13, 6年前 , 67F
但是let的支援度實在是....https://caniuse.com/#feat=let
07/18 16:13, 67F

07/18 16:22, 6年前 , 68F
不是啊,瀏覽器端的支援度差,開發時你照樣可以寫 let,再
07/18 16:22, 68F

07/18 16:23, 6年前 , 69F
透過 webpack 配合 babel 去打包...
07/18 16:23, 69F

07/18 16:24, 6年前 , 70F
不然 TypeScript 怎麼辦?這篇給問題其實也是 TS 寫在文件
07/18 16:24, 70F

07/18 16:24, 6年前 , 71F
裡說為什麼會有 TP 出現,因為 JS ES2015 之前的 xxx 會有
07/18 16:24, 71F

07/18 16:25, 6年前 , 72F
那些問題,那個問題就是其中一個例子…
07/18 16:25, 72F

07/18 17:23, 6年前 , 73F
2019年了朋友 講支援度的是活在沒有babel的時代嗎 而
07/18 17:23, 73F

07/18 17:23, 6年前 , 74F
且我看那個支援度也有94%欸 除非是銀行或公家機關還在
07/18 17:23, 74F

07/18 17:23, 6年前 , 75F
IE史前時代不然現在很少會碰到舊版瀏覽器了吧
07/18 17:23, 75F

07/18 23:34, 6年前 , 76F
我都不習慣用編譯的,Javascript 就是要寫了直接在瀏覽器跑
07/18 23:34, 76F

07/18 23:34, 6年前 , 77F
所以還是用 var,這些問題寫久了知道就會避開了
07/18 23:34, 77F

07/18 23:35, 6年前 , 78F
它也不是沒有邏輯或規則可言,也有很多解決這問題的寫法
07/18 23:35, 78F

07/18 23:43, 6年前 , 79F
如果說 TS, CoffeeScript 這種方言就算了,ES 算是 JS 最常
07/18 23:43, 79F

07/18 23:44, 6年前 , 80F
見也通行的規範了,我覺得 let, var 的爭議只是要不要學新
07/18 23:44, 80F

07/18 23:45, 6年前 , 81F
東西而已,瀏覽器為了市場也會漸漸支援,不然很容易被淘汰
07/18 23:45, 81F

07/18 23:47, 6年前 , 82F
像是 class 的語法糖出來了,還要繼續用舊的方式寫類別嗎?
07/18 23:47, 82F

07/18 23:47, 6年前 , 83F
還是用推出的 class 語法糖,然後也知道 JS 的繼承實作和其
07/18 23:47, 83F

07/18 23:48, 6年前 , 84F
他語言不同就足夠了?
07/18 23:48, 84F

07/19 00:50, 6年前 , 85F
不 babel還是有團隊或公司是不接受的 理由就是不能保穩
07/19 00:50, 85F

07/19 00:50, 6年前 , 86F
我自己也認為他們莫名其妙...
07/19 00:50, 86F

07/19 00:51, 6年前 , 87F
另一個babel會被打槍的狀況是包出來很大一包XD
07/19 00:51, 87F

07/19 13:34, 6年前 , 88F
很大包可以試試polyfill.io之類動態引入的解決方案
07/19 13:34, 88F

07/20 03:02, 6年前 , 89F
這種題目 基本前端沒稍微摸的(就不是UI套套的等級)應該會答
07/20 03:02, 89F

07/20 03:02, 6年前 , 90F
的很亂...另外let var 和 array function 等 這種常用的ES6
07/20 03:02, 90F

07/20 03:04, 6年前 , 91F
應該跟前端有關的工程師都該習慣.(打太快是arrow function)
07/20 03:04, 91F
文章代碼(AID): #1TBi7sA7 (Soft_Job)
文章代碼(AID): #1TBi7sA7 (Soft_Job)