user919lx
235 天前
这是我之前做的面试准备笔记,专门对这个问题,可以看到这个例子其实不算很复杂,给出解决办法后,一个初级程序员也能轻松完成任务。实际上这种问题也不适合说太复杂的内容,因为本质是考察你解决问题的思路,如果内容太复杂,会让面试官过多地思考复杂的内容,而忽略了你清晰的解决思路,如果面试官无法理解你说的内容,反而会让这个问题成为扣分项。不用太担心问题没有技术含量,因为考察技术含量会用其它的问题。
**思路**
1. 明确问题/需求是什么
2. 核心的困难/挑战是什么
3. 寻找解决困难的办法
4. 串联得到完整方案并实施
5. 测试方案结果是否满意,如果不满意,看具体效果决定是采取额外手段补救还是返回 3 推倒重来
**例子**
* 背景:我们有一批企业数据,来源很广泛。我需要每天更新,从中找到每家企业的基本信息的最新数据,并且将企业与其活动记录关联起来。
* 需求描述:
1. 识别同一个企业实体
2. 获得最新的企业信息
3. 获得企业名称变更历史,方便关联
* 挑战
1. 识别同一实体困难:最准确的是企业信用代码,但是仍然有将近 30%的缺口
2. 最新记录某些字段数据可能有缺失
* 办法:
1. 通过多种方式,比如信用代码、组织代码、税号分别关联,尽可能多地确保可靠的联系
2. 通过关联后根据数据更新时间取最新的有效
3. 通过关联来构建企业名称变更历史
* 结果:
* 超过 99%的数据能满足需求
* 小部分公司名存在重复,这是业务上无可避免的,但数量不多,可以打上标记,这些数据需要进行人工进行二次审核,结合其它数据上下文来做判断,避免误判