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的面试结果通知 (无 (我) 标识,停止生成)