Skip to content

Canva

共 1 條筆記


2026-03-19 11:18

您的瀏覽器不支援 audio 元素。 📑 智慧總結 錄音資訊 時長 :約 0小時 45 分鐘 參與人數 :約 2 人 內容型別 :面試對話 錄音總結 本錄音是Canva對候選人發起的程式語言流利度技術面試,候選人居住在澳大利亞布里斯班,申請Android開發遠端崗位。面試包含規則說明、候選人現場編碼實現目標點選遊戲,面試結束後候選人詢問了崗位遠端政策與日常工作內容,面試官告知結果反饋時間。 基本情況介紹 * 雙方居住與工作背景 :候選人居住在澳大利亞布里斯班昆士蘭科技大學附近,已經在此生活了4年,正在尋找遠端工作。面試官是Canva悉尼辦公室的前端工程師,在悉尼生活了一輩子,Canva主辦公室位於悉尼和墨爾本,布里斯班僅設有聯合辦公點,僅有少量員工。 * 面試基本規則確認 :本次為程式語言流利度面試,要求使用JavaScript完成開發,全程計劃到11:15結束,預留5分鐘給候選人提問。面試要求關閉GitHub Copilot這類AI自動補全工具,允許候選人搜尋語法或查詢文件,不禁止使用ChatGPT查詢資料。候選人需要共享螢幕,同時展示身份證和瀏覽器。 面試題目說明 * 目標點選遊戲的核心規則 :需要實現一款網頁端點選遊戲,目標會隨機在螢幕位置傳送,螢幕上有一個持續倒計時的計時器,玩家點選目標後會給計時器增加時間,遊戲目標是讓玩家堅持儘可能久,直到計時器歸0遊戲結束。 * 規則細節確認 :面試官明確初始倒計時為10秒,每點選一次目標增加0.5秒,候選人理解題目要求後開始開發。 面試準備階段問題處理 * 螢幕共享許可權問題處理 :候選人共享螢幕時,發現Mac系統缺少螢幕和系統音訊錄製許可權,需要退出Zoom重新加入,重新加入後成功共享螢幕。 * AI使用範圍再次確認 :候選人最初打算用ChatBot輔助實現,面試官明確要求不能讓AI直接寫程式碼,AI只能用於查詢文件,考察候選人獨立解決問題的能力。 * 題目複述需求處理 :候選人遺忘題目細節,面試官將題目文字貼上到聊天頻道供候選人檢視;候選人最初對規則理解有誤,再次確認了規則細節。 程式語言選擇 * 候選人更換程式語言 :候選人申請的是Android開發崗位,提出改用Java而非要求的JavaScript進行開發,面試官同意該選擇。 * 開發環境調整 :候選人關閉了程式碼編輯器的自動補全提示,調整了視窗大小,泡麵試官檢視程式碼內容。 核心邏輯開發 * 基礎變數定義 :候選人定義了私有長整型變數儲存剩餘倒計時,初始設定為5000毫秒即5秒;定義私有整型變數儲存總點選次數,初始值為0;每點選一次目標,總點選次數加1,給剩餘倒計時增加100毫秒。 * 倒計時核心邏輯實現 :候選人新建執行緒處理倒計時邏輯,每100毫秒重新整理一次倒計時,透過while迴圈判斷剩餘時間,當剩餘時間小於等於0時退出迴圈,結束遊戲,輸出最終點選次數。 * 語法錯誤修正 :候選人透過javac編譯程式碼時發現多處語法錯誤,調整了大括號、引號和方法修飾符,修正語法問題,之後意識到需要實現UI介面才能執行。 隨機傳送邏輯開發 * 座標類與隨機位置實現 :候選人定義Point類儲存目標按鈕的X、Y座標,定義moveAround方法,使用Java的Math.random生成隨機座標。假設手機螢幕寬度和高度為固定畫素值,生成0到對應尺寸之間的隨機座標,修改按鈕的X、Y座標。 * 隨機程式碼原理提問 :面試官提問為什麼程式碼裡要給螢幕寬高加1,候選人解釋Math.random生成的隨機數範圍是大於等於0小於1,不包含1,加1可以保證能取到最大座標值,面試官認可該解釋。 面試收尾環節 * 時間不足口頭梳理剩餘邏輯 :因為時間臨近結束,面試官要求候選人口頭說明剩餘開發邏輯。候選人說明,會在啟動遊戲時給按鈕初始化位置,每點選一次按鈕後,呼叫moveAround方法修改座標,重新整理UI介面實現目標傳送。 * 候選人提問環節 :候選人確認該崗位是否為完全遠端工作,詢問Canva程式設計師日常工作內容。 Canva工作政策與日常工作說明 * 遠端工作政策 :該崗位是遠端優先崗位,Canva實行靈活工作政策,沒有強制要求坐班,僅要求每年大概一次全員集合活動,其餘時間都可以遠端工作。 * 程式設計師日常工作內容 :Canva每個團隊類似微型創業公司,可以自主選擇工作流程,大部分團隊採用敏捷衝刺模式,開發工程師日常工作是領取Jira任務,開發功能或修復bug,提交PR稽覈,合併後部署,額外會參與會議和麵試工作。不同團隊流程不同,部分團隊僅把Jira作為待辦列表,不做嚴格衝刺管理。 * 面試結果反饋時間 :面試官告知會在2天內,也就是週四之前給出面試反饋。 📅 章節概要 00:00:00 雙方自我介紹與背景溝通 雙方開場互相問候,候選人介紹自己居住在澳大利亞布里斯班昆士蘭科技大學附近,已經在此生活了4年,正在尋找遠端工作。面試官介紹自己是Canva員工,在悉尼生活了一輩子,僅去過布里斯班一次,提到Canva主辦公室位於悉尼和墨爾本,布里斯班僅設有少量人員的聯合辦公點。 00:02:16 工作模式與居家辦公溝通 面試官提到自己近期身體不適,暫時居家辦公,詢問候選人的居家辦公環境。候選人介紹自己有獨立的工作房間,桌面配備大螢幕,寫程式碼工作比較方便。 00:03:38 面試規則說明與確認 面試官說明本次為程式語言流利度面試,考察候選人快速搭建專案的能力,要求使用JavaScript開發,面試全程計劃到11:15結束,預留5分鐘給候選人提問。面試官明確規則:要求關閉GitHub Copilot這類AI自動編碼工具,允許候選人搜尋語法或查詢文件,可以使用ChatGPT或Google查詢資料,要求候選人共享螢幕,同時展示身份證和瀏覽器。候選人確認沒有疑問,準備開始面試。 00:05:03 面試題目說明與準備問題處理 面試官說明面試題目為實現一款隨機目標點選遊戲,明確了遊戲規則。候選人準備共享螢幕時,發現Mac系統缺少螢幕和系統音訊錄製許可權,退出Zoom重新加入後解決問題。重新進入後,候選人最初打算用ChatBot輔助實現,面試官明確要求不能讓AI直接寫程式碼,AI只能用於查詢文件,考察候選人獨立解決問題的能力。 00:08:28 題目細節確認與規則澄清 候選人遺忘題目細節,表示自動轉錄內容消失,面試官將題目文字貼上到聊天頻道供候選人檢視。候選人最初誤解規則,詢問是否是統計限定時間內的點選次數,面試官澄清規則:初始倒計時會持續往下減少,每點選目標會增加倒計時,目標點選後會隨機傳送位置,目標是堅持儘可能久。面試官明確數值引數:初始倒計時10秒,每點選一次增加0.5秒。 00:11:49 程式語言更換與開發環境調整 候選人申請的是Android開發崗位,提出改用Java而非要求的JavaScript進行開發,面試官同意該選擇。候選人關閉了程式碼編輯器的自動補全提示,調整了程式碼視窗大小,泡麵試官檢視程式碼內容,開始寫程式碼。 00:12:45 遊戲核心邏輯編碼實現 候選人開始編寫Java程式碼,定義了遊戲類,新增點選事件方法,定義私有變數儲存剩餘倒計時,初始設定為5000毫秒,定義變數儲存總點選次數,初始值為0,明確每點選一次目標,總點選次數加1,給剩餘倒計時增加100毫秒。候選人新建執行緒處理倒計時邏輯,每100毫秒減少倒計時,透過while迴圈持續執行,當倒計時歸0後退出迴圈,輸出最終點選次數。 00:22:28 編譯問題與需求澄清 面試官要求候選人執行程式碼驗證,候選人使用命令列編譯程式碼,發現多處語法錯誤,調整修正了大括號、引號和方法修飾符的語法問題。候選人意識到需要實現UI介面才能執行,詢問面試官是否需要做完整UI,面試官表示Java UI搭建耗時過長,要求候選人基於已有UI假設繼續編寫剩餘邏輯。 00:31:26 隨機傳送邏輯開發與原理提問 面試官提醒候選人實現目標隨機傳送功能,候選人最初不理解“傳送”的含義,澄清後明確需要修改目標在螢幕的座標。候選人定義Point類儲存目標的X、Y座標,編寫moveAround方法,使用Math.random生成螢幕範圍內的隨機座標,修改目標的座標值。面試官提問為什麼程式碼中給螢幕寬高加1,候選人解釋Math.random的生成範圍是大於等於0小於1,加1才能取到最大座標值,獲得面試官認可。 00:40:24 剩餘邏輯口頭梳理 因為面試時間即將結束,面試官要求候選人口頭說明剩餘開發邏輯。候選人說明:啟動遊戲時會給目標設定初始位置,玩家每點選一次目標後,就呼叫moveAround方法修改目標座標,重新整理UI介面,完成目標傳送,配合倒計時邏輯執行遊戲。 00:42:26 候選人提問與面試收尾 面試結束前,候選人向面試官提問兩個問題,第一個問題確認崗位是否為完全遠端,第二個問題詢問Canva程式設計師日常工作內容。面試官解答後,告知候選人會在2天內也就是週四之前給出面試反饋,雙方結束通話。 ✨ 金句精選 “Each team at Canva kind of operates as its own mini startup, so they’re free to choose their own processes.” (戰略洞見) “This interview is meant to test how familiar you are and how well you can think through a problem and write up a solution for it.” (執行策略) 📋 待辦事項 面試官:在2天內(週四左右)給候選人傳送面試結果反饋 候選人:等待Canva的面試結果通知 (無 (我) 標識,停止生成)