晦还明 level
获赞
0
粉丝
0
关注
0
看过 TA
63
北京航空航天大学
2024
Java
IP属地:辽宁
暂未填写个人简介
私信
关注
一面自我介绍没记得问了八股,好像是聊了几句项目相关就开始问场景题了1.假设有一个轮播位需要展示三种广告ABC,但是按照某种权重展示,比如A广告出现的概率是1/6,B出现的概率是2/6,C出现的是3/6。不要求概率完全准确,但是要求大体准确。第一反应是一致性哈希。A对应一个虚拟节点,B对应两个C三个。被问到如果需要加入D广告怎么处理。自然答了一致性哈希的经典八股数据迁移少,不满意,追问如果加入100个节点数据要重新迁移,一致性哈希优势丧失。回答可以空余出哈希环上的一半准备节点增加,质疑实操性和准确性。于是换方案。ABC分别维护一个变量记录展示次数。抛出两个问题,首先是否维护变量过多每次获取所有变量的值计算概率都要瞬时锁住所有值可能对性能有影响,其次是在出现概率都小于预设概率如何决定展示哪个广告。回答可以按照预设权重展示,所有出现概率都小于预设概率的广告中选择预设权重最大的广告展示。但是维护变量过多的问题无法解决。于是又换了方案。维护两个变量,一个是上一次展示的广告,另一个变量是上一次展示的广告出现次数。如果出现次数等于预设权重,便更换展示广告的类别。这样自始至终只需维护两个变量。后来由于讨论耗时较长面试官说思路没问题便过了。2.设计一个日志收集算法。最开始没理解问题,交流之后明白题面。有10台机器组成了一个集群,每台机器上的日志不相同,如何实现收集。回答使用RPC调用,日志收集器通过RPC通信实现每个机器日志的收集。反问RPC如果出现丢失怎么办。使用TCP可靠传输。每个机器日志过大呢?可以考虑在业务低峰期进行一次全量同步,然后增量同步即可。追问增量同步实现方案?每台机器维护offset记录自己的日志同步进度。还有一个问题是如果有机器宕机消息丢失怎么办,给了一个多副本的方案,应该也是碍于时间原因没有继续讨论。3.做SQL题。一张订单表,order列,status列三种取值分别为0、1和2。首先计算三种状态的订单。groupby很容易。追问,怎么计算status为0的订单占所有订单数的比例,只允许一条SQL。最后没想出来,给了一个子查询的方案描述了思路。还有很有意思的问题,计算机现在就业已经是红海这件事如何看待,以及准备做什么样的行动。回答技术的广度和深度选择深度,追求不可替代性。
投递携程等公司10个岗位
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务