以下来自于我们CSOahelp真实客户的面试记录,CSOahelp面试辅助老师全程提供解题思路、Follow up 以及详细完整代码; 不用刷题轻松进大厂。
这一轮是 Amazon Virtual Onsite(VO),题目偏实用类,重点考察字符串操作、边界处理和实现稳健性。
面试官一上来就给出了需求,不绕弯子:
“Write me a function that takes in a string and decreases all monetary values in the string by 15%.”
举了两个例子,语气很直接:
// "I spent $100.00 on Amazon this week."
// → "I spent $85.00 on Amazon this week."
// "This candy costs $1.00"
// → "This candy costs $0.85"
❓Clarification(澄清环节)
我的ipad上出现了以下几个澄清问题,我依次向面试官进行了询问:
如果字符串为空,返回空字符串?
如果字符串里没有金额,是否原样返回?
是否可以假设所有金额都是以 $
符号开头?
面试官的答复都很简洁:“Yes” ✅
这一环节确认完,辅助老师已经写完了大量代码,我就可以继续念思路了。
Algorihtm
Sure I think we can basicaly do string parsing, we scan the
string with a pointer, and if we see a money symbal like dollar
sign or for other currencies
we start from there and find the number after the sign,
then we decrease the number by 15% and append to result string
we can continue to do this until the string is finished
can I start coding
解题思路:字符串扫描 + 数值更新
目标是:找到所有金额,打 85 折,保留两位小数。
算法关键点如下:
- 扫描整串文本,识别出美元符号
$
; - 从
$
开始,向后提取紧跟的数字和小数点(如$100.00
); - 将提取出的金额转为浮点数,乘以 0.85;
- 格式化回字符串(保留两位小数),拼接回新字符串;
- 其余字符原样拼接。
这题不需要 regex,用指针遍历更直观、更面试友好。
随后我继续抄写了ipad上的大量代码,获得了面试官的认可,coding结束之后面试官与我开始了时空复杂度分析
时间与空间复杂度分析
- 时间复杂度:O(n)
每个字符仅遍历一次。substring()
、Double.parseDouble()
和String.format()
也都是常数时间操作。 - 空间复杂度:O(n)
使用了一个StringBuilder
保存最终字符串,最多和原字符串等长。
🧠 面试官追问
面试官后来又加了一句:
“What if we want to support euros or other currencies?”
我顺势提到:
- 可以拓展
Set<Character>
支持更多符号,如€
,¥
; - 还可以写一个正则版本来适配不同货币格式;
- 如果涉及汇率转换,还需构建币种到折扣率的映射表。
面试官点头示意 👍,没继续深挖实现细节。
收到面试通过的消息之后,我非常感慨,到现在为止其实我还是不太懂这道题问的是什么,但是由于有CSOahelp面试辅助服务,我成功的又向北美大厂迈进了一步。听辅助老师说,前面入职大厂的师兄姐们都混的不错,因为面试真的难度太高了反而入职工作之后工作很简单很容易做,再加上现在有强力AI,其实入职之后的初级岗位真的不难。现在我非常期待在北美开启新的职场生涯。
如果你也在准备Amazon、Meta、TikTok等大厂的算法与系统设计面试,却不清楚如何拆题和应对各种边界,欢迎添加微信 csvohelp,即可领取北美面试求职通关秘诀。我们也有代面试,面试辅助,OA代写等服务助您早日上岸~
