温哥华那边最近面试MLE真挺卷的…我朋友上个月在Yaletown一家做AI基建的startup面的,算法题就卡在leetcode 221——最大正方形。他说面试官没让他写暴力解,直接说“assume you’re deploying this in prod”,得用dp优化空间到O(n),还得现场跑test case。他当时手抖把base case写成dp = 1 if matrix==‘1’ else 0,结果matrix是list of list of int…当场改了三遍。后来复盘发现温哥华不少tech公司(比如Hootsuite后端组、Slack温哥华office)都喜欢拿这题考边界处理,特别是空矩阵、单行、全0这些edge case,光过样例不够,得讲清楚为什么dp = min(dp, dp, dp) + 1。
python代码其实不难,但得注意别用numpy——他们明确说“no external libs”,纯原生list comprehension。我帮他重写了遍,用两行压缩状态:prev_row = * (n+1),curr_row = * (n+1),滚动更新,面试官点头了。不过他说温哥华气候太潮,自己在家练题时总犯困…建议找Granville Island附近安静点的cafe,比如Beaucoup Bakery二楼,插座多、wifi稳,比家里强。
另外提醒下,温哥华MLE岗现在基本都要求system design同步考,哪怕junior level。他第二轮就被问“how would you scale the square detection to 10M x 10M binary image stream”,不是纯算法题了…得扯到分块处理、GPU加速、甚至考虑AWS EC2 g5实例的显存限制。反正别光刷leetcode,本地环境搭个docker跑跑真实数据流更管用。
