笔者非科班出身
2022年7月8日下午五六点收到11日上午的二面邀请短信。
面试官没有让我做自我介绍。面试过程:
(1)一道智力题:现有质量140克的食盐和7克、2克的砝码各一个,如何把食盐分成90克和50克?至少需要使用几次天平?(网上有答案)
(2)一道算法题:给定一个包含 0 和 1 的数组,如果允许把其中的 k 个0(k 已知)变成1,请找出把 k 个 0 变成 1 后,数组中全为 1的最长连续子数组的长度。(某扣1004题)
思考了好一会,跟面试官说了自己的大致想法,面试官让我开启共享屏幕,用编辑器编码实现。
笔者使用的方法是两次遍历:外层依次遍历每个元素,内层遍历:从当前元素开始,往后遍历,找到第 k + 1 个 0 时停止(假设此时下标为 idx),计算从当前元素到停止的位置的长度 idx - i + 1,更新最终结果。注意是到第 k + 1 个 0 时停止,而不是第 k 个0,这个细节笔者编码时犯了错误,面试官提醒了一下,最终代码还有一丢丢就完毕了,但是面试官提前让我结束了。
(3)问了笔者所在的课题组和从事的科研项目的相关情况,以及是考研还是保研等琐碎的事情。
(4)问了我做的科研工作的深度。
(5)问了一下简历上的前端项目是跟着网上的视频或开源项目学做的吗?前端是自学的吗?对某个技术栈有什么深入了解吗?(随机应变地答)
面试结束,耗时约30-35分钟。
二面的面试官看起来有些严肃,哈哈哈,问的问题不多,好在有准备智力题,自己也有一些算法和数据结构的知识基础,建议平时多看网上的智力题,比如赛马、天平称盐、找质量不正常的球等等;多刷算法题(我还看到了面试官的另一个算法题:二叉树的最近公共祖先,某扣网上有原题)。后续如果有三面通知,会更新本帖。
后续:7月14日下午收到7月15日下午的三面通知,三面内容详见下一个帖子:
2023届TPLink提前批软件工程师(深圳)-前端方向三面