项目库
课程 & 毕设Microsoft · 软件工程师 · 2021

毕业设计:一个四个人做、但只有我能讲清楚的教室预约网页应用

分享者:M. Delgado · 前 Microsoft 应届软件工程师

分享者在 Microsoft 应届生面试里把这个毕设当成主打项目来讲,后来拿到了 offer。

走进这场面试

4 个当年真实追问 · 1 个 hard · 约 12 分钟

答完每一题,才翻开当事人当年的接法。

他们当时是怎么讲的

一个四人组的毕业设计,做的是校园教室预约应用。面试里有意思的部分不是技术,而是在一个活儿分得并不均匀的团队里,把我到底做了什么给理清楚。

展开全文

毕业设计里,我们四个人做了个预约图书馆自习室的网页应用。React 前端,Node/Express 写的 API,后面接 Postgres。名义上我们平摊工作;实际上有两个人慢慢就掉队了,大部分后端加上部署都落到了我和另一个人身上。我负责预约逻辑和冲突检测,也就是:别让两个人把同一间教室在重叠的时间段里都订走。我的第一版做了个很朴素的检查,结果有竞态,两个请求可能都通过了『空不空』的检查,然后都插入进去了。我用数据库约束解决了它——在时间段上用了排他约束(exclusion constraint),让数据库直接拒绝重叠,而不是在应用代码里去防这个。我们给教授演示过,还有几个图书馆员给了反馈,但它从来没真在图书馆里跑起来。面试里最难的一刻,是被要求把我个人的贡献从团队里拆出来,还不能把队友甩在车轮下。我尽量讲事实:这是我提交的东西,这些我会说交给他们更清楚。面试官似乎对我怎么谈这个团队更感兴趣,而不是那个排他约束本身。

当年真实被问到的

你是怎么防止两个人在同一时间订到同一间教室的?

中等

你们怎么分工的,你具体写了哪些东西?

简单

有个队友没出力。你当时是怎么处理的?

困难

如果真有学生大规模用这个,最先崩的是什么?

中等