>>> 戳我直接看全本<<<<
种面试官特面无表:“嗯,答得错。个问题——么判断个链表环?”
指针,”林默脱,“个指针每次步,另个每次两步,如果相遇,就环。”
“如果环,到环?”
林默正回答,突然起网个段子,忍嘴角微微扬。
张劲松注:“么,个问题很好笑?”
,”林默,“个段子——面试官问到环,应聘者答:用HashMap,如果某个节点被第次访问到,。”
镜男皱眉:“虽然也能解决问题,但空复杂度太,面试么答——”
,”林默打断,“所以么答。标准解法指针相遇,把其个指针放回节点,然两个指针都每次步,再次相遇方就。”
完,还补句:“原理推导,需推导遍吗?”
镜男变得些微妙,像茬却到茬
张劲松旁边着,嘴角显。
,”摆摆,“基础题就到儿吧。点真格。”
个女始提问。
,正着林默。得很清秀,戴着丝边镜,刚从毕业没研究,但神里却透着股锐利。
叫苏瑶,端组负责。”顿,“个实际问题。”
林默点:“请。”
商系统,零点候,个瞬流量峰。假设们用MySQL数据库,么保证,库超卖?”
个典型“秒杀系统”问题,林默过类似课程设计。
刻回答,而反问:“您理论最优方案,还实际方案?”
苏瑶挑眉:“两个区别吗?”
,”林默,“理论最优方案,把库Redis里,用Lua脚本保证原子性,然用消息队列异步处理订单。但实际落候,考虑Redis挂么办,消息队列积压么办,还考虑用户验、防刷、限流、级——,代码量能翻倍。”
苏瑶愣,然
笑,之冰冰质消散半,像个普通姐姐。
如果让设计,?”
林默:“分。”
“第限流,同个用户秒只能点单按钮,防止脚本狂刷。”
“第,用Redis缓,用Lua脚本扣减库,保证原子性。扣减成功步,扣减失败直接返回‘卖完’。”
“第,把成功扣减库请求入消息队列,务异步处理订单创建、支付等逻辑。如果订单创建失败,回退库。”
顿,补充:“当然,最基础版本。如果求更,还考虑Redis集群、数据致性、点key等问题。但得,面试限,您也记。”
苏瑶嘴角抽抽:“……嫌弃记性好?”
,”林默认真,“怕您嫌。”
旁边镜男终于逮着,嗤笑:“过,个问题——刚才方案里,如果Redis扣减库成功,但消息队列处理失败,库么回退?”
林默自己挖坑呢。
:“个分两种况。”
“如果消息队列本没挂,只业务处理失败,消费端捕获异常,然调用个补偿接,回退Redis里。”
“如果消息队列挂,或者消息丢失就需用定任务,定期对账——把Redis里成功扣减记录数据库里真实订单对比,介入或者自补偿。”
镜男追
>>> 戳我直接看全本<<<<