Skip to content

程式設計面試

共 2 條筆記


2025-07-22 09:19

您的瀏覽器不支援 audio 元素。 📑 智慧總結 音訊資訊 時長 :約45分鐘 參與人數 :約2人 場景型別 :程式設計面試與工作交流 內容總結 面試相關

遊戲需求理解 :面試官描述遊戲,目標是玩家在限時內儘可能久地存活,遊戲中目標會在螢幕隨機瞬移,玩家需儘快點選目標,點選可增加倒計時時間。面試者起初對規則細節有疑問,經溝通明確每次點選增加0.5秒時間,限時10秒,決定用Java語言實現。

程式碼實現思路 :面試者開始構思Java程式碼,定義類和變數,如設定限時為5分鐘,記錄點選次數、增加時間等邏輯,考慮使用執行緒控制遊戲流程,還提及輸出格式和執行工具。過程中遇到一些語法錯誤,因時間關係,面試官建議先不搭建Java UI,假設已有點選反饋機制,繼續實現按鈕隨機移動功能。面試者思考透過定義按鈕位置類,利用隨機數生成新座標實現按鈕在螢幕上的隨機移動,並更新UI。

剩餘時間處理 :臨近面試結束,面試官讓面試者口頭闡述後續程式碼實現思路,面試者表示在 run play 方法中初始化按鈕位置,點選按鈕時呼叫移動方法,最後更新UI。 工作相關

工作模式 :面試者詢問是否為遠端工作,面試官確認Canva工作政策靈活,雖有辦公室,但可遠端工作,可能一年需到辦公室一次。

日常工作內容 :面試者詢問該崗位日常工作,面試官以自己作為前端工程師為例,介紹團隊使用Jira進行專案管理,採用Sprint模式,日常工作包括處理Jira任務、修復問題、開發功能、進行程式碼審查和合並等,此外還有會議和麵試等工作。不同團隊在流程選擇上有自主性,部分團隊不使用Sprint或僅將Jira作為任務清單。面試官表示會在兩天內(預計週四)給予面試者反饋。 📅 章節概要 00:00:09 開場寒暄與工作地點交流 開場說話人0與說話人1相互問候,說話人0提及在昆士蘭科技大學相關內容,還提到自己在某地生活近四年。說話人1介紹公司在悉尼有主要辦公室,自己在公司六年,還提到公司在其他地方有聯合辦公空間,偶爾看到同事在照片中玩得開心,但那些地方沒有完整辦公室。說話人0表示期待遠端工作,覺得現居地離Cindy有點遠,說話人1稱自己最近生病,在家辦公感覺不錯,同時詢問說話人0在家辦公的設定,擔心在家容易分心。說話人0表示自己有獨立房間,工作方便,還展示了真實的工作背景以及桌上用於寫程式碼的大螢幕。 00:03:38 程式設計面試任務說明 說話人1表明這是一場程式語言熟練度面試,主要測試對JavaScript的熟悉程度,計劃在11:10左右開始,面試時需共享螢幕,能看到說話人0的ID和瀏覽器,面試中禁止使用AI,但可使用智慧IDE或查詢資料。接著描述了一個遊戲需求,遊戲中目標會在螢幕隨機瞬移,玩家要儘快點選目標,有倒計時,點選目標可增加時間,玩家需在倒計時結束前儘可能長時間存活。說話人0因系統音訊許可權問題需退出Zoom重新加入,重新加入後開始討論實現思路。 00:07:12 明確規則與選擇語言 說話人1強調不能過度依賴AI,只能用於查閱文件,目的是測試解決問題的能力。說話人0因轉錄功能消失沒聽清問題,重新確認問題後,思考遊戲規則,提出以在有限時間內最大化點選次數為目標,每次點選增加一定時間,詢問具體時間引數,確定為每次點選增加0.5秒,限時10秒。考慮到崗位是安卓開發,決定選擇Java語言實現該遊戲。 00:12:20 Java程式碼初步構思 說話人0開始構思Java程式碼,定義了公共類和遊戲相關方法,思考如何設定限時、記錄點選次數和增加時間等變數,考慮使用執行緒控制遊戲流程,還提及輸出格式和執行工具,如使用Intellij IDEA執行程式碼。在編寫過程中遇到一些語法錯誤,如括號、引號格式問題,同時思考是否需要建立UI介面。 00:28:26 調整實現方向與繼續思考 說話人1認為搭建Java UI可能耗時較長,建議說話人0假設已有點選反饋機制,繼續實現按鈕隨機移動功能。說話人0詢問如何將Java檔案編譯成可執行檔案,說話人1回應後,兩人進一步確認按鈕在UI中隨機移動的需求,即按鈕會在螢幕上隨機改變位置。 00:32:14 思考按鈕隨機移動實現 說話人0思考透過定義按鈕位置類,設定 x 和 y 座標,使用隨機數生成新座標來實現按鈕在螢幕上的隨機移動,考慮到螢幕尺寸,使用靜態常量表示寬和高,透過隨機數生成範圍並進行計算得到新座標,最後更新UI。 00:40:46 總結思路與工作相關交流 臨近面試結束,說話人1讓說話人0口頭闡述後續程式碼實現思路,說話人0表示在 run play 方法中初始化按鈕位置,點選按鈕時呼叫移動方法,最後更新UI。之後說話人0詢問是否為遠端工作,得到肯定答覆,還了解到公司工作政策靈活,可能一年需到辦公室一次。接著詢問該崗位日常工作,說話人1以自己團隊為例介紹工作模式和流程,並表示會在兩天內(預計週四)給予反饋。 📋 待辦事項 說話人1在兩天內(預計週四)給予說話人0面試反饋。


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的面試結果通知 (無 (我) 標識,停止生成)