专栏名称: 沉默王二
技术文通俗易懂,吹水文风趣幽默。学 Java,认准二哥的网站 javabetter.cn
目录
相关文章推荐
中国证券报  ·  新纪录!90.2亿人次! ·  11 小时前  
卓奇365食品网  ·  昆明发布春季校园食品安全风险提示 ·  20 小时前  
卓奇365食品网  ·  昆明发布春季校园食品安全风险提示 ·  20 小时前  
中国证券报  ·  分歧出现!700亿资金有变 ·  3 天前  
上海证券报  ·  如何破招商内卷?临港出招 ·  3 天前  
中国证券报  ·  今天,A股两大主线走强 ·  3 天前  
51好读  ›  专栏  ›  沉默王二

深信服今年的薪资。。

沉默王二  · 公众号  ·  · 2024-10-17 14:04

主要观点总结

本文主要介绍了深信服公司薪资情况、面试指南及编程学习资源等话题。

关键观点总结

关键观点1: 深信服公司薪资情况

作者介绍了深信服公司对不同学历的薪资统计,包括硕士后端开发、本科后端开发等不同职位的薪资情况,并提到该公司对双非本的学生更加青睐。

关键观点2: 编程学习资源推荐

作者推荐了一个名为二哥的编程星球的学习资源平台,该平台提供编程学习指南、Java项目实战、LeetCode刷题、简历精修等功能,并鼓励读者加入其中,与其他球友一起成长。

关键观点3: 计算机科学基础知识介绍

文章中还涉及了一些计算机科学基础知识,如深信服Java线下面试的问题,以及关于字符串轮询、数组交集、JVM变量存储位置、物理内存与虚拟内存的区别等概念的解释。


正文

大家好,我是二哥呀。

深信服也开奖了,有人欢喜有人悲,有说这是什么牛马公司,985 硕给开到 20 出头的年包,有说这就是自己梦里想得到的薪资。

伟大的罗素先生曾说:参差不齐乃幸福本源。所以,满足自己预期就可以了,别为难自己,开心点。😄

为了让大家心中有数,我花了半个小时给大家盘点了一下深信服 25 届已开奖的薪资,已收录在《 Java 面试指南 》中,里面还有很多其他公司的薪资统计,感兴趣的小伙伴可以直达参考一下。

  • 硕士 211 后端开发开到 22k,12-18 个月
  • 硕士 985 后台开发,也是 22k,不太满意
  • 硕士双一流 研发工程师,给到 19k,还是 x 领跑计划
  • 双非本 985 硕 系统虚拟化,年包 40+,算是 sp,已经发了签字费
  • 硕士 211 后端开发,给到劝退价 19k,果断拒了
  • 985 硕 后端开发,只给到 15k,也是果断拒了
  • 本科双一流 后端开发,开到了 24k,非常给力,比前面的所有人都高

整体看下来就是,深信服不太适合高阶学历的选手(🤣),给的薪资待遇远不如互联网大厂。反而双一流本科给到了一个意外的薪资,难道说,深信服对双非本的同学更加青睐?

去年星球里就有双非本的球友拿到 16k,这比 985 硕的 15k 还要多 1k,可见学历的含金量在深信服上并没有体现出来(足以证明一点,深信服非点击就送的学历厂)。

10 月下旬,拿到多个 offer 的小伙伴基本上都要开奖并且释放 offer 了, 手头上还没有 offer 的选手这时候就要注意了,注意了,注意了

该出手时就出手,这个时候正是好机会。

另外,看了很多深信服的面经,我发现,线下面越来越多了,究其原因就是线下面试考察的都是真实水平,不容易作弊,相对来说,对于那些一直真心实意在准备的同学也会更友好一点。

那今天我们就以《Java 面试指南》中收录的同学 3 深信服 Java 后端线下一面为例,来看看这 30 分钟内面试官都问了哪些问题,好心中有数(不再是纯粹的八股,会有一些手撕)。

深信服 Java 线下一面

手撕: 长字符串(纯数字)轮询把第一位放到最后一位, 问哪个数最大?

将数字字符串的第一位移动到最后一位,意味着每次将字符串首位的字符移到末尾,依次得到不同的字符串组合。

对于原始字符串:"23132",轮询后的组合:

  • 第一次轮询结果 "31322"
  • 第二次轮询结果 "13223"
  • 第三次轮询结果 "32231"
  • 第四次轮询结果 "22313"

从这些轮询结果中可以看出,字典序最大的字符串是 "32231"。题解方法:

public class MaxRotatedString {
    public static void main(String[] args) {
        String numStr = "23132";  // 输入字符串
        String maxStr = findMaxRotation(numStr);
        System.out.println("最大的轮询结果: " + maxStr);
    }

    public static String findMaxRotation(String numStr) {
        String maxStr = numStr;  // 初始化为原始字符串
        int length = numStr.length();
        
        // 轮询整个字符串,比较每次轮询结果
        for (int i = 1; i             // 生成轮询字符串
            String rotatedStr = numStr.substring(i) + numStr.substring(0, i);
            
            // 更新最大值
            if (rotatedStr.compareTo(maxStr) > 0) {
                maxStr = rotatedStr;
            }
        }
        return maxStr;
    }
}

题解思路:

  • 使用 substring(i) substring(0, i) 来实现轮询操作,即将字符串从第 i 个位置切分为两部分,并将前半部分移到字符串末尾。
  • 使用字符串的 compareTo 方法来比较字典序,如果第一个字符串大于第二个字符串(即字典序更靠后),返回值为正数。

只提供想法 : String[] a 和 String[] b求两个数组相同的元素

第一种:可以将数组 a 的元素存入一个 HashSet,然后遍历数组 b,判断每个元素是否存在于这个 HashSet 中。

通过这种方式,可以快速找到两个数组的交集元素。原理:Set 的特点是存取无序,不可以存放重复的元素。

第二种:使用一个 HashMap 来统计数组 a 中每个元素的频率。遍历数组 b,对于每个元素,检查它在 Map 中的频率,如果频率大于 0,则为相同元素,并更新频率。

第三种:将数组 a 转换为 Stream,使用 filter 函数过滤出数组 b 中也存在的元素,然后使用 collect 收集相同元素。

class ArrayIntersection {
    public static void main(String[] args) {
        // 示例数组
        String[] a = {"沉默王二""沉默王三""沉默王四""沉默王五"};
        String[] b = {"沉默王三""沉默王六""沉默王二""沉默王八"};

        // 使用 Stream API 获取两个数组的交集
        Set commonElements = findCommonElements(a, b);

        // 输出结果
        System.out.println("相同的元素: " + commonElements);
    }

    public static Set findCommonElements(String[] a, String[] b) {
        // 将数组 a 转换为 List,然后使用 filter 来过滤出数组 b 中也存在的元素
        return Arrays.stream(a)
                .filter(element -> Arrays.asList(b).contains(element))  // 过滤条件
                .collect(Collectors.toSet());  // 收集结果为 Set 集合,去除重复元素
    }
}

JVM变量存在堆栈的位置?

对于局部变量来说,它存储在当前方法的栈帧中的局部变量表中。当方法执行完毕,栈帧被回收,局部变量也会被释放。

public void method() {
    int localVar = 100;  // 局部变量,存储在栈帧中的局部变量表里
}

对于静态变量来说,它存储在 Java 规范中的方法区中,也就是元空间(Metaspace)。

public class StaticVarDemo {
    public static int staticVar = 100;  // 静态变量,存储在方法区中
}

操作系统:指针是存在虚拟内存中,问物理内存和虚拟内存的区别

物理内存指的是计算机中实际存在的硬件内存。物理内存是计算机用于存储运行中程序和数据的实际内存资源,操作系统和应用程序最终都必须使用物理内存来执行。

也就是我们常说的那个 8G、16G、64G 的内存条。

虚拟内存是操作系统提供的一种内存管理技术,它使得应用程序认为自己有连续的、独立的内存空间,而实际上,这个虚拟内存可能部分存储在物理内存上,部分存储在 磁盘(如硬盘的交换分区或页面文件) 中。

三分恶面渣逆袭:虚拟内存

虚拟内存的核心思想是通过硬件和操作系统的配合,为每个进程提供一个独立的、完整的虚拟地址空间,解决物理内存不足的问题。

①、每个进程都有自己的虚拟地址空间,虚拟内存使用的是逻辑地址,它与实际的物理内存地址不同,必须经过地址转换才能映射到物理内存。

②、操作系统通过 页表(Page Table) 将虚拟地址映射到物理地址。当程序访问某个虚拟地址时,CPU 会通过页表找到对应的物理地址。

③、操作系统将虚拟内存划分为若干个 页(Pages) ,每个页可以被映射到物理内存中的一个页面。如果物理内存不够,操作系统会将不常用的页暂时存储到磁盘的交换区(Swap)中,这个过程叫做页交换(Paging)。

计算机网络:http请求除了get post的其他所有。







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