阿里面试题——如何实现微信“附近的人”功能?
一个面试题
如果让你实现微信的“附近的人”功能,你会怎么做?
初期实现:客户端固定时间发送经纬度(x,y)到服务器s,服务器存储每个登陆的用户的经纬度到表t中,表t按照经纬度分表,将地图分成一个个的小格子。当用户店家“附近的人”时,对用户(x,y)进行计算,最多一次查询其中的4个格子(子表),计算两点间距离获取结果(有点像桶排序)。性能上可以将表t替换为内存结构,容灾即可。从实际的微信提供的功能来看,附近的人并不太多,估计是其对地图划分的格子很小。