京东零售开奖,大概率都拿的满。。

科技   2024-11-25 11:34   山西  

这几天京东零售校招的薪资爆料让我眼前一亮。图上的“31×19”,再加上硕士985的背景,属实是一发王炸了💣。

在北京,后端岗给到31K月薪,再乘以19个月,有点豪横。
网友表示,大概率拿满。这个咱程序员最懂了。年底绩效考核能不能保住“满绩”,其实就是个玄学。领导满意度、组内项目表现、加班频率,这些都是“变量”。

但从大厂校招的行情来看,起薪摆在那儿就已经很有吸引力了,毕竟不是所有人都有机会拿到这样的offer🌟。
说到底,拿到这个薪资的,基本功和履历得过硬。京东看中硕士985背景和后端技术栈深度,不是没道理的。
大家怎么看?欢迎讨论呀~

算法题:无重叠区间

嗨,大家好。
今天咱们聊一个经典的算法问题:无重叠区间
问题长这样:给你一堆区间,比如 [[1, 2], [2, 3], [3, 4], [1, 3]],问你最少得去掉几个区间,才能让剩下的区间互相不重叠。对,重点是最少删除

思路分析

这个问题一看就得用贪心法则(Greedy Algorithm)。贪心的核心在于啥?你得想办法每一步都“贪”得好,最终求一个全局最优解。

贪心的切入点

  1. 从区间的终点下手:为了让剩下的区间尽可能多,应该选择区间结束得最早的那个,留出更多的空间给后面的区间。
  2. 按终点排序:把这些区间按照它们的结束时间升序排序,这样方便我们快速找到结束最早的区间。

动手写代码

来,撸代码:
import java.util.Arrays;

public class NonOverlappingIntervals {
    public static int eraseOverlapIntervals(int[][] intervals) {
        if (intervals.length == 0return 0;

        // 1. 按区间的结束时间升序排序
        Arrays.sort(intervals, (a, b) -> Integer.compare(a[1], b[1]));

        int end = intervals[0][1]; // 初始化第一个区间的结束时间
        int count = 0// 需要移除的区间数

        for (int i = 1; i < intervals.length; i++) {
            if (intervals[i][0] < end) {
                // 当前区间的开始时间 < 前一个区间的结束时间,说明有重叠
                count++;
            } else {
                // 没有重叠,更新结束时间
                end = intervals[i][1];
            }
        }

        return count;
    }

    public static void main(String[] args) {
        int[][] intervals = {{1, 2}, {2, 3}, {3, 4}, {1, 3}};
        System.out.println("需要移除的最少区间数: " + eraseOverlapIntervals(intervals));
    }
}

怎么理解这段代码?

  1. 排序:首先我们用 Arrays.sort 按结束时间给区间排了序。
    比如输入 [[1, 2], [2, 3], [3, 4], [1, 3]],排序后变成 [[1, 2], [2, 3], [1, 3], [3, 4]]。
  2. 遍历:然后从头到尾扫一遍区间。
  • 如果下一个区间的起点小于当前区间的终点,说明它俩有重叠,那就得删掉一个;但你也不能删着玩,删哪个?当然是删后面的区间(毕竟你是按结束时间排的,越靠后的区间越不友好)。
  • 如果没重叠,就更新当前的“终点”为这个区间的结束时间。
  • 计数:每碰到一个重叠,就让 count 加 1。

  • 举个例子走流程

    假设输入 [[1, 2], [2, 3], [1, 3], [3, 4]]:
    • 排序后:[[1, 2], [2, 3], [3, 4], [1, 3]]。
    • 第一个区间 [1, 2],当前终点是 2。
    • 第二个区间 [2, 3],起点 2 >= 终点 2,没重叠,更新终点为 3。
    • 第三个区间 [3, 4],起点 3 >= 终点 3,没重叠,更新终点为 4。
    • 第四个区间 [1, 3],起点 1 < 终点 4,有重叠,删掉,count + 1
    最终答案:最少需要删除 1 个区间。

    Tips

    1. 如果面试官再问优化,思考一下能否更高效地排序,或者扩展到类似问题,比如求最大不重叠区间数。
    2. 面试的时候千万别忘了讲解思路,这段代码逻辑虽然不复杂,但面试官听你咋分析问题是关键。
    好了,今天就到这,算法题并不可怕,关键还是多练。
    对编程、职场感兴趣的同学,可以链接我,微信:coder301 拉你进入“程序员交流群”。
    🔥东哥私藏精品 热门推荐🔥

    东哥作为一名超级老码农,整理了全网最全《Java高级架构师资料合集》

    资料包含了《IDEA视频教程》《最全Java面试题库》、最全项目实战源码及视频》及《毕业设计系统源码》总量高达 650GB 。全部免费领取!全面满足各个阶段程序员的学习需求。

    Java面试那些事儿
    回复 java ,领取Java面试题。分享AI编程,Java教程,Java面试辅导,Java编程视频,Java下载,Java技术栈,AI工具,Java开源项目,Java简历模板,Java招聘,Java实战,Java面试经验,IDEA教程。
     最新文章