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