JavaScript >> Javascript 文檔 >  >> JavaScript

所以你想以寫 JavaScript 為生? [轉帖]

2007 年 10 月,Hans Brough 發表了一篇題為“所以你想以編寫 JavaScript 為生?”的博文。 Hans 在這篇文章中付出了很多努力,聯繫了我自己和其他幾個人,以獲取有關 JavaScript 開發招聘過程的報價和見解。通過一系列不幸的事件,這篇文章最終在原來的網站上丟失了。我當時告訴他,如果他找到草稿,請告訴我,我會轉發給後代。

就在最近,漢斯聯繫了我,讓我知道他找到了該帖子的副本。以下是漢斯的原創文章,經許可轉載。它有點過時了,但仍然是一本不錯的讀物,看看我們已經走了多遠。

漢斯·布勞(Hans Brough)

如果您正在面試涉及 Javascript 開發的工作,您需要知道什麼?隨著異步 JavaScript 的興起和通常流暢的支持接口的興起,客戶端開發的狀態已經改變,雇主對候選人有什麼樣的期望?這些是我在一位朋友向我指出 Meebo 上的一個有趣的職位發布後問自己的問題,其中包括一些關於邏輯運算符、DOM 怪異的 JavaScript 謎題……好吧,我應該說的就是這些,以免留下任何提示。無論如何,我認為是時候進行現實檢查並詢問開發社區的成員他們希望候選人能帶來什麼。

當我向 Ajax Girl 和 Meebo 的聯合創始人 Elaine Wherry 詢問她的謎題問題是如何發揮作用時,她這樣說:

在過去的幾年裡,似乎每個人都願意用一點 Javascript 來弄髒自己的手。正如 Elaine 上面所暗示的,使用該語言的人來自廣泛的背景,這幾乎可以肯定地保證了廣泛的經驗水平和解決問題的方法。

Simply Hired 的高級軟件工程師 Neelesh Tendulkar 通過名為“buzz”的編程練習來解決這些差異,幫助他了解候選人解決問題的方法。

在某些時候,您將被詢問有關涵蓋基本編程本身之外的主題的語言的詳細信息。您需要了解的內容當然取決於您申請的職位,但每個人都應該了解基本的 DOM 操作。 Dojo 工具包的貢獻者 Tom Trenka 是這麼說的

《Professional JavaScript for Web Developers》的作者 Nicholas Zakas 也說了幾乎同樣的話:

這假設您對文檔對像模型的組合方式有所了解。可以肯定地說,在進行面試之前,您應該能夠查看給定的頁面並在心理上遍歷它的結構。至少您需要對頁面上的元素節點如何相互關聯有一個基本的了解。一旦您開始向頁面添加行為,這可能是討論語義正確的標記如何讓您的生活更輕鬆的一個很好的起點。

正如 Nicholas 所說,另一個必須知道的主題是跨瀏覽器處理事件和事件處理程序:

我認為,如果您在一家不涉足異步編程(又名 Ajax)或構建高流量 Web 應用程序的網店工作,您可能能夠通過對上述內容的紮實知識以及對 xhtml 的深入了解而擺脫困境和CSS。正如 Tom 所提到的,“即使沒有大師級別甚至中級的理解,仍然可以使用 JavaScript 完成很多中途的編碼”

假設您想從事構建 Web 應用程序的工作,那麼還有一些必須知道的內容可以添加到我們的列表中。這裡再次引用尼古拉斯關於阿賈克斯的一句話:

如果您正在進行 ajax 調用,那麼您很有可能需要了解回調函數。準備好討論什麼是回調函數,為什麼是回調函數以及如何高效地編寫回調函數。此外,請準備好談論像 Neelesh 這樣的支持性問題:

另一個需要了解的主題是 Javascript 中的面向對象編程。如果您要成為構建 Web 應用程序的團隊的一員,那麼重用性和可擴展性等考慮因素至關重要。湯姆對這個話題有這樣的看法

這也意味著能夠討論 javascript 基於原型的繼承與其他語言中使用的類繼承。談論 Javascript 中的繼承可以很快進入池的更深端。首先,您可能會被問到一個更簡單的問題,正如 Corbis 的高級應用工程師 Eric Todd 所提到的,

這是一個很好的指標問題,可以判斷客戶端是否對 Javascript 中的對像有任何感覺。另一個是簡單地讓他們列出一些 javascript 的核心對象,這些對象可能看起來很傻,但肯定會指出他們在語言知識上的任何明顯差距。

我喜歡探討的一點是對象表示法,因為它可以深入理解 Javascript 中的對象。這些例子不需要很複雜就能很好地工作。例如,我可能會向候選人展示以下對象字面量:

var candidate = {name:{first:'hans',last:'<wbr>brough'},age:'15'};</wbr>

我要求他們演示如何訪問它的屬性、添加方法或以其他方式修改對象。更好的是,讓他們演示如何以不同的方式創建相同的對象。這是一個簡單的示例,您可以根據應聘者的經驗構建或分支到相關主題。例如,如果他們不知道對象字面量是什麼,那麼這可能表明候選人沒有在異步腳本中使用 JSON 字符串。這也是湯姆指出的另一個“必須擁有”的一個很好的起點:

總而言之,鑑於當今 web 應用程序中 javascript 的現代用法,掌握 javascript 中 OOP 的基礎知識是一個絕妙的主意。

您應該準備討論的另一個問題是使用 Dojo、Prototype 等庫或 Script.aculo.us 等效果庫的任何經驗。現在有這麼多圖書館,至少有人一定會問你你的偏好。儘管正如 Nicholas 指出的那樣,它們不應該充當太多的拐杖

所以總結一下這個小研究項目,這裡有一個簡短的清單,列出了你在面試 JS 開發工作時需要知道的最低要求:

  1. 解決問題、調試和基本 CS 技能
  2. DOM 操作
  3. 事件和事件處理,包括 IE 模型和 W3 模型之間的差異
  4. 異步編程 (Ajax)
  5. 面向對象編程包括設置基於原型的繼承
  6. 熟悉流行的 JS 庫

請記住,這不僅僅是關於你知道多少。這是 Neelesh 的臨別想法。


Tutorial JavaScript 教程
  1. 使用 JavaScript 進行服務器輪詢

  2. JSX 簡介

  3. 如何使用 es6 從 JSON 數據生成表

  4. JavaScript 面試編碼問題 — 1

  5. 開始使用 React 和 TypeScript 的現代方式

  6. 如何使用 Svelte 創建一個簡單的應用程序

  7. Node.js 面試準備

  1. DO Hackaton 日誌 #2

  2. 無法在 D3 JavaScript 庫中獲取點擊事件

  3. 類型 Harmony 的重載函數

  4. 讓我們嘗試構建一個可擴展的系統

  5. 如何使用 React 將文件(圖像/Pdf/Zip/等)上傳到 Strapi

  6. 如何用 PureScript 替換 React 組件

  7. 利用查詢函數上下文

  1. AWS Fargate:使用 Express 和 Docker 創建 Node.js 服務器

  2. 2020 年的 JAMstack:為什麼(以及如何)開始

  3. 使用 js-coroutines 以 60fps 的速度輸入時進行搜索

  4. 😃 將表情符號選擇器添加到 React 應用程序中的輸入字段 [簡單方法]。