前360员工爆料:和HR要50万的包,最后给了55万,每个月还有 3000 的补贴。。

文摘   2024-12-27 11:02   陕西  

今天又看到一个让人震惊的消息,前360的员工爆料自己在和HR谈薪资时,要求50万年薪,最后居然拿到了55万!

而且重点是,这不是期权,也不是那些虚的股票激励,而是真金白银的薪水,每个月还有3000元的额外补贴!你说说,HR到底是怎么想的?

不得不说,现如今在互联网行业,薪资谈判真的是越来越“直白”了。

想想我们曾经为了那点期权拼了命,结果最后股票估值变成了个笑话。

现在,人家直接拿到的是实打实的现金,不仅工资高,还不需要担心哪一天公司亏损了股票泡沫一破产,连个屁都没剩。

而网友更是猛料:他跟HR要了54万,结果HR给了63万!是的,你没看错,直接多给了9万!😱


这让我想起了之前的那些年,我和HR谈薪的时候,谈到一半总得加个“如果我能升职的话,可以再谈加薪的事儿”。

不过现在看来,只要你足够优秀,直接开个价,HR也会照单全收。

算法题:在系统中查找重复文件

今天我们来聊一个在开发中常见的算法问题:在系统中查找重复文件

作为程序员,我们每天都会与文件打交道。无论是操作文件系统,还是做一些文件处理、备份任务,重复文件的问题总是不可避免。你有没有过这种经历?在开发一个应用时,忽然发现系统中有很多重复文件,导致硬盘空间被无谓地浪费,这时,你是不是有点崩溃?能不能快速高效地找出这些重复文件,成了我们面临的一个重要任务。

首先,我们要清楚,什么样的文件才算重复文件?其实,重复文件指的是在不同目录或者相同目录下,内容完全相同的文件。这就很有意思了,因为文件的名字、路径可能不同,但是内容相同的文件就是重复的。在大部分场景中,我们需要根据文件内容来判断文件是否重复,而不是仅仅依靠文件名。

现在问题来了,我们该怎么高效地实现查找重复文件的功能呢?在这里,我就给大家分享一下思路和实现代码。

第一种思路比较直接:通过比较每个文件的内容来判断文件是否重复。最常见的方法就是通过计算文件的哈希值来对比文件内容。具体来说,我们可以使用 MD5SHA-256 算法来计算每个文件的哈希值,然后用一个 HashMap 存储文件的哈希值和文件路径。如果两个文件的哈希值相同,那么这两个文件就可以认为是重复的。

下面是一个简单的 Java 实现示例:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;

public class DuplicateFileFinder {

    public static void main(String[] args) throws IOException, NoSuchAlgorithmException {
        String directoryPath = "your/directory/path";
        File directory = new File(directoryPath);

        // 使用 HashMap 存储文件的哈希值和路径
        Map<String, String> fileHashes = new HashMap<>();

        // 遍历目录中的文件
        findDuplicateFiles(directory, fileHashes);
    }

    // 遍历文件夹,递归查找文件
    public static void findDuplicateFiles(File directory, Map<String, String> fileHashes) throws IOException, NoSuchAlgorithmException {
        if (directory.isDirectory()) {
            // 获取目录中的所有文件
            File[] files = directory.listFiles();
            for (File file : files) {
                findDuplicateFiles(file, fileHashes); // 递归调用,遍历子目录
            }
        } else {
            // 对每个文件计算哈希值并比较
            String fileHash = calculateFileHash(directory);
            if (fileHashes.containsKey(fileHash)) {
                System.out.println("重复文件:" + directory.getAbsolutePath() + " 和 " + fileHashes.get(fileHash));
            } else {
                fileHashes.put(fileHash, directory.getAbsolutePath());
            }
        }
    }

    // 计算文件的哈希值
    public static String calculateFileHash(File file) throws IOException, NoSuchAlgorithmException {
        MessageDigest md = MessageDigest.getInstance("SHA-256");
        FileInputStream fis = new FileInputStream(file);
        byte[] byteArray = new byte[1024];
        int bytesRead;

        while ((bytesRead = fis.read(byteArray)) != -1) {
            md.update(byteArray, 0, bytesRead);
        }

        byte[] digest = md.digest();
        StringBuilder sb = new StringBuilder();

        for (byte b : digest) {
            sb.append(String.format("%02x", b));
        }
        fis.close();

        return sb.toString();
    }
}

在这个代码中,我们首先计算每个文件的哈希值,然后将哈希值和文件路径存储在 HashMap 中。每当我们遇到一个文件的哈希值已经存在时,就说明它是一个重复文件,于是输出相关信息。

这段代码的关键点就是:哈希值的计算和比对。

但是,面对大量文件时,这种方法有时可能会效率低下。因为每次都要读取整个文件内容并计算哈希值,文件越大,性能越差。尤其是在文件系统中,文件数量极多时,时间复杂度将变得不可忽视。这里有个小段子:想象一下,假如文件非常大,你的程序每次计算哈希值就像一个力气巨大的“运动员”在和大文件“摔跤”,越大越累,效率低得让你想哭。所以我们还可以引入一些优化策略,比如先通过文件大小来初步筛选重复文件,只有文件大小相同的文件才进行哈希比对。

优化思路:

  1. 先按文件大小筛选: 可以先比较文件的大小,只有文件大小相同的文件,才进一步计算哈希值。这种做法可以大大减少计算哈希值的文件数量。
  2. 多线程并发计算: 如果文件数量特别多,可以考虑通过多线程并发来计算文件的哈希值,减少计算时间。

有了这些优化思路,我们就能让查找重复文件的过程更加高效。

总的来说,查找重复文件这个问题看似简单,但其实涉及到的内容还是很有挑战的。通过哈希算法,我们可以比较文件内容的唯一性,借助 HashMap 来高效地存储和查找。面对大量文件时,我们可以通过优化策略来提升性能,减少不必要的计算时间。

-END-


ok,今天先说到这,老规矩,给大家分享一份不错的副业资料,感兴趣的同学找我领取。

以上,就是今天的分享了,看完文章记得右下角给何老师点赞,也欢迎在评论区写下你的留言

程序员老鬼
10年+老程序员,专注于AI知识普及,已打造多门AI课程,本号主要分享国内AI工具、AI绘画提示词、Chat教程、AI换脸、Chat中文指令、Sora教程等,帮助读者解决AI工具使用疑难问题。
 最新文章