有 13 年 coding 背景,而目前在 Spotify 裡當軟體工程師的 Mattias Petter Johansson,日前在 Quora 提問:「你怎麼用五個問題判斷一個人是不是 JavaScript 工程師?」,以下這五個問題是他得到的答案,內文以第一人稱編譯。

請注意,這個問題僅適用在懂 Javascript 這個知識的人上,並不是要判斷他們的一般程式語言知識背景程度。所以其實這些問題是很難去想出來的,如果你不能回答以下五個問題也別太擔心說你不是玩 Javascript 的料,只是暗示你還不是一位高手高手高高手,還需要好好加油!

  • Q1:你能解釋出什麼是 apply 函數嗎?

這只是稍微的陳述一下,懂的人能不用太多的話來回答這個問題,而如果無法,那他們就會跟你講一拖拉庫的東西。只要有寫一個或超過兩個 Library 而不用其他 Library 來建立的 JavaScript 工程師他們都會懂這個問題在問什麼。

附帶一提:很多人會覺得一定得把第一題放進問題中,站在我的立場上我非常明白這是一定要放的!因為假使你不會用 apply ,你將會錯過這程式語言最強大的函數,這也是在暗示還沒獨立建立過一個 Library 的你,當之後你在建立 Library 時你一定要記得最常使用的 apply 函數!

  • Q2:你能跟我解釋一下什麼是 map 嗎?

對於任何 CompSci 人來說都知道其實 Map 是一個極致好用的功能性撰寫程式觀念, 如果有人不認識這個觀念那就代表著他們缺乏對於資訊工程領域的了解或者是缺乏對於程式語言的了解。此外,這個也在解釋你在跟人談論程式語言時是不是很有 sence !如果真懂 map 問題的人,不仿就再問問有關 reduce 方法。如果你不懂什麼是 map ,這代表著你在功能性撰寫程式程度是零!但千萬別放棄治療,建議你從這快開始你的學習之旅:A dirt simple introduction to higher order functions in JavaScript.

  • Q3:能解釋什麼是 bind 嗎?

這個其實是個好問題,因為這個已經是一個比 this 更深層的觀念,你可以用這個在很多的面試者上進行基礎訓練,就像是個大 subject。當一個工程與你討論到這個話題時你對他也會產生高度的興趣,如果面試者回答這個問題答得非常好時,不仿你可以再問問看他們 prototype 。

  • Q4:解釋一下什麼是 closures 

這是一個對於聲稱有相當背景工程師的好問題,但並不代表是有 JavaScript 的背景。Closures 是一個通用撰寫程式的觀念但在 JavaScript 的世界裡卻非常重要。如果他們非常懂什麼是 Closures,他們也大致上有相當足夠的 JavaScript 底子了。

  • Q5:你可以說說有關你曾經從面對 JavaScript 問題到成功解決的故事嗎?

這個就將會告訴你這個人他有多了解 JavaScript 了,值得留意的是他們應該會開始讚美 Google 的開發工具,但理論上是不會占用太多的時間。

如果你對於以上這幾個問題還不是非常的駕輕就手,也別氣餒!因為這只是在跟你說,其實程式語言世界裡還有很多的事情是值得你去挖掘的,而且只要你真的有心去學習,相信你一定會學到超多超酷的知識!

(資料來源:Medium;本文作者:Mattias Petter Johansson;圖片來源:sh1mmer,CC Licensed)