今儿在面试,面试官问我一道题:通过出勤日志找出最有可能是情侣的两人,当时就逗比了,我哪知道情侣怎么出勤的,当时各种困惑,(原谅我当时逗比了一下,至少我女友不和我住一起也不一起上班),回来的路上想了想,假定情侣是一起上班一起下班的吧,进入正题:
把出勤日志中每天的每个人的记录提取(日期,工号,姓名,上班时间,下班时间),把每两个人的以上5条记录放在一个Couple.class中,然后设置一个阀值(以秒为单位的,懂?),统计每个对象中俩人的上班时间差,绝对值在0-阀值(这个应该设置个容错区间,从0开始递增)之间的记录保留,不在的pass掉,然后统计出保留的记录中属于姓名相同的记录数目,排序,留下记录数目排前50的那两人的Couple(说明他俩同时上班打卡的天数排前50了),然后利用这50对人的下班时间和容错区间大小做辅助判断(这里我感觉就比较专业了
应该是个MR模型--相邻边界模型,但我不是做数据挖掘的,具体这个算法我不会实现),排序,拿到最高的,他俩就有可能是情侣了,也有可能那俩是同性啊,囧!因为好多人都是住一起的嘛!
去错的话还要调用数据库把员工性别提取出来,最好的就是出勤日志中有男女,这样就直接每个人男和每个女两两配对,进行筛选就好了,具体代码就不写了