竟然有1年多没有写东西!今天终于强迫自己更新了一篇。

我自己既是公司校招的面试官,也经历过自己孩子的小升初的过程。应聘者和招聘者的焦虑,我都深有体会。
问我:我们学校是你们的唯一选择吗?
我问:我们如果发offer了,你真的会来么?
问我:我们学校今年迁新校区了,有点远,你们想好了吗?
我问:我们只有杭州北京两地可选,你可以接受吗?
发offer的人,害怕自己发了offer,候选人却不来。要拿offer的人,怕自己拿不到最好的offer。劳动力和市场的匹配,是一个长久存在的难题。因此我去调研了一下,已运行了多年的美国住院医生匹配项目,The Match。它使用的匹配方法,是一个获得2012年诺贝尔经济学奖的理论方法。

The match[1],是美国全国的医学院学生,进入住院医培训阶段的一个“找工作”的过程。每年一次。步骤大致是:

  • 学生到R3系统(Registration, Ranking, and Results (R3) System)注册
  • 学生找各家医院面试
  • 学生提交自己心仪的医院/科室的,排序。比如我想去十几家医院,排第1的是xxx,第2是xxx。医院也提交自己心仪的学生的排序。
  • R3系统根据一个算法,算出结果

2021年,NRMP系统中,共有38106个职位,申请人数量是48700。经过NRMP,有94.9%的职位都能匹配上。每年match结束之后,NRMP会出一个总结报告。报告中会介绍,哪些专业需求量大,匹配情况如何等等。比如2021年,Top 3需求是,内科、家庭医生、小儿科。这篇[2]是2021年的总结报告。

The match算法的原理不复杂,这个链接[3]里有解释。它的思路是:
for 循环 (以申请者为index) {
从每个申请者的最顶部的志愿开始(比如刚开始就是第1志愿),找对应的职位
如果第1志愿的职位,面试官没有看上这位候选人,也就是说不在面试官的排序列表中,那么第1志愿失败
如果第1志愿,在面试官的排序列表中,但排在前面的人较多,已经超过面试官的HC数量,那么第1志愿也失败
否则,第1志愿暂时获得match
}end of for

这种算法获得了2012年的诺贝尔经济学奖,称为“The theory of stable allocations and the practice of market design”,属于博弈论相关的研究方向。有一篇文章[4],比较通俗的讲解了这个算法的贡献。这种算法除了用在住院医匹配项目,还被使用在,肾脏移植匹配(病人和捐献者匹配)、相亲问题(男女匹配)、择校问题(纽约和波士顿地区学生和公立学校匹配)等等。这些匹配问题,都有一个共同特点,其中没有金钱/价格的因素。需要移植肾脏的病人即使出价再高,也不能因此优先获得肾源。相亲男女,如果没人选你,你也无法降价甩卖。

感觉这种算法应该很适合用于,国内的小升初过程,和大公司的校园招聘。在公司招聘时,比如像华为、阿里、中国移动等大型公司,通常有多个部门,招聘相同专业的学生。于是会出现,不同部门抢同一个学生,卷!或者强制学生只能面试一个部门。这样的怪操作。

但不知道为什么没有得到应用。一个可能的原因是,成本太高。学生要做很多轮面试,应聘很多职位,才能列出自己的优先级排序。而面试官,同样需要面试很多学生。比如美国的某位教授[5],就批评了这个劳民伤财的The Match Program。

在github上能搜到一些算法实现[6][7]。不过这个算法具体的实现,还是得结合实际问题。

参考文献

  1. https://www.nrmp.org/
  2. https://www.nrmp.org/wp-content/uploads/2021/08/MRM-Results_and-Data_2021.pdf
  3. https://www.nrmp.org/intro-to-the-match/how-matching-algorithm-works/
  4. https://publicacions.iec.cat/repository/pdf/00000237/00000019.pdf
  5. https://gme.med.ufl.edu/files/2014/04/Trash-the-Match.pdf
  6. https://github.com/edma2/nrmp/blob/master/match.go
  7. https://github.com/isayha/nrmp-algorithm/blob/main/assignment1_part2_CPSC482_isayharaposo.py