程序员老鬼

各大厂薪资职级对标,你在哪个档?

刚刷到个贴子,各大厂薪资职级的对标表出来了,程序员们一看立马炸开锅,大家都开始对号入座:自己到底是几档?🤑

Image

我觉得这事吧,对程序员来说真的是一面照妖镜。以前总觉得“代码写得多,升职加薪就快”,但真看到这些对标,你会发现,职级和薪资其实更多拼的是稀缺价值和业务影响力,不是光会加班就行。

网友们有的说“自己P7却工资比P6还低”,也有羡慕别人一路绿灯升P8,其实这很正常,每家厂的标准都不一样,别光盯着title,得看自己能输出啥价值。有时候,我们代码敲得再溜,业务没踩准节奏,也就是在原地画圈圈。

从我的角度看,职级对标是个参考,不是焦虑的理由。有时间羡慕别人,不如多琢磨怎么让自己手里的活更值钱一点。【备注:文末可领最新资料】

算法题:访问日期之间最大的空档期

说实话,这玩意儿其实面试还挺常见的,但很多人一上来就给我整花里胡哨的,非得搞个什么红黑树还是动态规划,兄弟,那不是自找麻烦嘛。其实Java里头思路超简单,就是——咱先把日期都丢到一个List里,然后排个序,对吧?然后直接两两比一下,看哪个间隔最大。这就跟你数钱似的,把钱按大小摞好,一个一个数,看哪个差最多。

代码我在我工位上,咖啡喝到手抖的时候写的,特简单:

import java.util.*;

publicclassMaxGapFinder{
publicstaticintmaxGap(List<String> dates){
if (dates == null || dates.size() < 2) return0;

// 转成LocalDate,方便后面处理
        List<Integer> dateList = new ArrayList<>();
for (String date : dates) {
// 这里假设格式是 yyyy-MM-dd
            String[] arr = date.split("-");
int v = Integer.parseInt(arr[0]) * 10000 + Integer.parseInt(arr[1]) * 100 + Integer.parseInt(arr[2]);
            dateList.add(v);
        }

        Collections.sort(dateList);

int max = 0;
for (int i = 1; i < dateList.size(); i++) {
int gap = dateList.get(i) - dateList.get(i - 1);
if (gap > max) max = gap;
        }
// 你要是精确到天,得减一
return max - 1;
    }

publicstaticvoidmain(String[] args){
        List<String> test = Arrays.asList("2024-01-01", "2024-01-15", "2024-01-10", "2024-01-20");
        System.out.println(maxGap(test)); // 输出应该是9
    }
}

你别看我这么写,好多人看到“日期”俩字就开始上LocalDate,parse啥的。我原来也写过那种——不过如果你们日期格式乱,肯定得用LocalDate.parse,要不然一到二月份你就出事。还有,有哥们喜欢用Set去重,其实有重复的直接无视就行,也不影响最大间隔。

场景嘛——我们有一个老系统,都是日志分析,比如用户活跃度啥的。那种一天几十万条访问,老板就想看,“最近大家最长有多久没人访问?”你光看日志一脸懵逼对吧?这玩意一用,老板拍桌子,“嗯,数据靠谱!”

我之前有一次出bug,就是日期没转好,结果算出来最大间隔负数,整了半天才发现有个日期写成20240132了……这种细节超烦。

不过要说优化哈,你数据特别大的时候,其实也不用担心,Java的排序性能一般来说够用。你要真遇到啥亿级数据,可能得分批处理了,不过正常业务里遇不到。

-END-

我为大家打造了一份RPA教程,完全免费:https://www.songshuhezi.com/rpa.html

最后给大家分享一份不错的副业资料,点击下方公众号,回复关键字: 副业 领取,也可以链接我领取,微信:hls404