题解 | 微服务架构下的深层依赖链路漏洞影响面分析

微服务架构下的深层依赖链路漏洞影响面分析

https://www.nowcoder.com/practice/a8416ddac26b427c97d8a8c6a7d14779

with recursive temp as (
    select 
    s2.service_id,    -- 注意区分s和s2   s用于确定Payment_Gateway为锚点,s2为每次查找迭代的对象
    s2.service_name,
    1 as dependency_depth,
    concat('Payment_Gateway->',s2.service_name) as dependency_path
    from service_dependencies sp
    join services s on s.service_id = sp.callee_service_id   -- 关键的两步骤,第一步确定Payment_Gateway为初始的被调用对象,它的id是等于sp里的被调用id
    join services s2 on s2.service_id = sp.caller_service_id  -- 下一次随机迭代的s2.service_id是sp的主调用对象
    where year(first_call_date) = 2025 and s.service_name = 'Payment_Gateway'

    union all

    select 
    s2.service_id,
    s2.service_name,
    t.dependency_depth + 1,
    concat(t.dependency_path,'->',s2.service_name)
    from temp t
    join service_dependencies sp on sp.callee_service_id = t.service_id  -- 上一阶段的t.service_id,变为被调用对象
    join services s2 on s2.service_id = sp.caller_service_id   -- 下次迭代的s2.service_id,又变为了主调用对象
    where year(first_call_date) = 2025
)
select * from temp
order by dependency_depth,service_id,dependency_path;
-- 理清主调用对象和被调用对象之间的关系,如何迭代是关键

一次把过程彻底搞清楚,相信练习时间长了,这类问题可以轻松拿下。

#面试___岗的必刷题单#
全部评论

相关推荐

03-06 20:09
贵州大学 Java
King987:你这个学历找个中大厂刷实习经历都是可以的,但是项目要有亮点才行,这个什么外卖就不要做了,去找找最新的项目,至少涉及高并发或者是新型的AI技术mcp rag啥的 ,我在出简历点评,但是你这个没什么好点评的,内容太少,而且含金量太低。自己改一改吧,或者看一下我的项目地址中,那里有大厂最近做过的实习项目
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务