专栏名称: 沉默王二
技术文通俗易懂,吹水文风趣幽默。学 Java,认准二哥的网站 javabetter.cn
目录
相关文章推荐
51好读  ›  专栏  ›  沉默王二

对下属推心置腹,可他在偷偷面试却不告诉我。

沉默王二  · 公众号  ·  · 2025-03-24 14:04

主要观点总结

文章主要讨论了一位前同事对下属的培养与信任问题,以及面试保密的重要性。同时,提供了关于跳槽、学习和面试的建议。此外,还讨论了使用JOIN代替子查询在数据库查询中的优势。

关键观点总结

关键观点1: 前同事对下属培养与信任的故事

文章通过前同事的故事,强调了面试保密的重要性,并讨论了工作中信任的建立和破坏。

关键观点2: 关于跳槽的建议

文章提到了跳槽时的注意事项和学习建议,包括在面试期间尽量保密、建立人脉关系和提升技能等方面。

关键观点3: 使用JOIN代替子查询的优势

文章通过对比子查询和JOIN在数据库查询中的表现,详细解释了使用JOIN的优势,包括索引使用、执行计划和性能表现等方面。


正文

请到「今天看啥」查看全文


大家好,我是二哥呀。

昨天有位前同事找我吐槽说:“害,对一位下属推心置腹,把他作为嫡系培养,结果他在偷偷面试却不告诉我,瞬间觉得自己的用心都被白费了。”

我安慰他说,别这样兄弟,人家面试可能只是对公司不满意,对事不对人。

你的一番好意,他肯定是知道的,也会怀着感恩的心态在未来的某一刻回报你,相信我,你绝对是他在职业生涯中为数不多的伯乐之一。

我当初离开公司也不是因为对咱们领导有任何不满,只是需要换个城市工作,迫不得已,这事你也知道。

想开一点。

天底下没有不散的宴席,有时候默默的离开,反而对你和他都有好处。

他找到一份更好的工作,以后你也想跳槽的时候,他肯定也会毫不犹豫的出手内推。

就像咱们,已经“分手”这么多年了,不是有事没事都会聊一嘴嘛(🤣)。

就这样你一嘴我一嘴,聊了快一个小时,前同事也释怀了。

我也一直给大家强调, 面试期间能保密尽量保密,不仅 leader 不能讲,最好同事也不要讲,等一切都尘埃落定了,再透露出风声

道理很简单,你提前和 leader 说了,他可能觉得这么认真在培养你,你怎么还不懂得感恩,还要去看外面的风景。

提前和同事说了,如果他是那种铁哥们,那没什么。但如果并不是你想象中的那么铁,给你背刺一下,受不了的。

最坏的情况就是你面试结果不理想,这边的工作也不受重视了,很有可能年底绩效就背 C 了,两方面受挫。

作为一名牛马打工人,一份相对满意的工作不容易,不要轻易毁了它。

工作党跳槽的话,建议直接上手做项目,在做项目的过程中去补充基础知识。

假如我们来制定一个短期的 3 个月学习计划吧。

第一个月,复盘之前做过的项目,尤其是量化数据,记得扒拉下来写到简历上。

然后沉淀一套自己的知识库模板,把项目中可能涉及到的知识库串讲一遍,做到心中有数。

第二个月,假如你还没有微服务的开发经验,那可以学一下 PmHub,代码也是完全开源的。

涉及到 Redis 缓存、RocketMQ 消息队列、Docker 容器化、Jenkins 自动化部署、Spring Security 安全框架、Nacos 服务注册和发现、Sentinel 熔断限流、Seata 分布式事务、Spring Boot Actuator 服务监控、SkyWalking 链路追踪、OpenFeign 服务调用等等。

深入代码,借助阿里的通义灵码、字节的 MarsCode 等等,系统化的学习。

第三个月,开始背八股(大厂的话就附件上算法这一趴),把面渣逆袭上高频的题目过一遍,然后和公司的项目、微服务 PmHub 项目结合起来,形成一套自己的口述表达。

不要怕,大多数工作党都是 SQL boy 和 CURD boy,甚至技术还不如校招时期。

相信你一定能行,给自己一个机会,偷偷面一次试试水。

三分恶面渣逆袭

JOIN 代替子查询有什么好处?

第一,JOIN 的 ON 条件能更直接地触发索引,而子查询可能因嵌套导致索引失效。

第二,JOIN 的一次连接操作替代了子查询的多次重复执行,尤其在大数据量的情况下性能差异明显。

----这部分是帮助大家理解 start,面试中可不背----

比如说我们有两个表 orders 和 customers。

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    amount DECIMAL(10,2),
    INDEX idx_customer_id (customer_id)  -- customer_id字段有索引
);
CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    name VARCHAR(100)
);

子查询的写法:

SELECT o.order_id, o.amount, 
       (SELECT c.name 
        FROM customers c 
        WHERE c.customer_id = o.customer_id) AS customer_name
FROM orders o;

JOIN 的写法:

SELECT o.order_id, o.amount, c.name AS customer_name
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id;
对比项
子查询
JOIN
索引使用
内层子查询 WHERE c.customer_id = o.customer_id 每次执行时,可能无法直接利用 orders 表的 customer_id 索引。
JOIN 的 ON 条件 o.customer_id = c.customer_id 可以直接利用 orders 的 idx_customer_id 索引,加速连接过程。
执行计划
子查询会被重复执行(每次外层 orders 行都会触发一次子查询),导致全表扫描。
优化器可能选择通过索引快速关联两张表,减少数据扫描量。例如,先通过 orders 的索引找到 customer_id,再与 customers 主键快速匹配。
性能表现
当 orders 表数据量大时,子查询可能因重复执行导致性能急剧下降。
JOIN 的一次连接操作通常更高效,尤其在大数据量时。

对于子查询,执行流程是这样的:

  • 外层 orders 表的每一行都会触发一次子查询。
  • 如果 orders 表有 1000 条记录,则子查询会执行 1000 次。
  • 每次子查询都需要单独查询 customers 表(即使 customer_id 相同)。

而 JOIN 的执行流程是这样的:

  • 数据库优化器会将两张表的连接操作合并为一次执行。
  • 通过索引(如 orders.customer_id 和 customers.customer_id)快速关联数据。
  • 仅执行一次关联操作,而非多次子查询。

来看一下子查询的执行计划:

EXPLAIN SELECT o.order_id, 
               (SELECT c.name FROM customers c WHERE c.customer_id = o.customer_id) 
        FROM orders o;
二哥的 Java 进阶之路:子查询的执行计划
二哥的 Java 进阶之路:子查询的执行计划

子查询(DEPENDENT SUBQUERY)类型表明其依赖外层查询的每一行,导致重复执行。

再对比看一下 JOIN 的执行计划:

EXPLAIN SELECT o.order_id, 
               (SELECT c.name FROM customers c WHERE c.customer_id = o.customer_id) 
        FROM orders o;
二哥的 Java 进阶之路:JOIN 的执行计划
二哥的 Java 进阶之路:JOIN 的执行计划

JOIN 通过 eq_ref 类型直接利用主键(customers.customer_id)快速关联,减少扫描次数。

----这部分是帮助大家理解 end,面试中可不背----

ending

一个人可以走得很快,但一群人才能走得更远。 二哥的编程星球 已经有 7800 多名球友加入了,如果你也需要一个良好的学习环境, 戳链接 🔗 加入我们吧。这是一个 编程学习指南 + Java 项目实战 + LeetCode 刷题 + 简历精修 的私密圈子,你可以阅读星球专栏、向二哥提问、帮你制定学习计划、和球友一起打卡成长。

两个置顶帖「球友必看」和「知识图谱」里已经沉淀了非常多优质的学习资源, 相信能帮助你走的更快、更稳、更远

欢迎点击左下角 阅读原文 了解二哥的编程星球,这可能是你学习求职路上最有含金量的一次点击。

最后,把二哥的座右铭送给大家: 没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟 。共勉 💪。







请到「今天看啥」查看全文