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

海康威视今年的薪资和岗位。

沉默王二  · 公众号  ·  · 2025-01-04 14:44

主要观点总结

本文主要介绍了关于海康威视的薪资调整、岗位情况、面试难度以及相关的技术知识点,包括Java并发编程、乐观锁、悲观锁、自旋锁等。

关键观点总结

关键观点1: 海康威视的薪资调整情况

海康威视调整了年假规则和薪资普调制度,绩效特别高的才可能小幅加薪。

关键观点2: 海康威视的岗位情况

海康威视的岗位需求以软件开发和技术支持为主,通过数据展示了不同学历背景在该公司获得的薪资情况。

关键观点3: 面试难度及Java相关技术知识点

文章介绍了海康威视的面试难度,并详细解释了Java并发编程、乐观锁、悲观锁、自旋锁等概念,同时说明了适用场景和劣势。

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

文章提供了编程学习资源,包括二哥的编程星球、Java面试指南专栏、微服务实战项目等,同时鼓励大家加入学习圈子,共同学习进步。


正文

大家好,我是二哥呀。

我上网浏览了一些关于海康威视的帖子,尤其是这次的全员会,透漏了 2 个不那么体面的讯息:

  • 年假规则调整,优先休法定年假,法定的休完了才能休司龄假;
  • 薪资普调的时代过去了,以后绩效特别高的才可能小幅度加薪。

认真读了大家的评论,能感受到不小的负面情绪。有说体面厂没落了,有说快倒闭了,有说去海康威视就是“饥不择食”。。。

每个人都有发表自己意见的权利,所以我不会选择杠,而是通过数据给大家盘点一下海康威视的薪资和岗位,让大家通过最直观的信息去感受一下,再下结论。

先说 25 届的秋招薪资,我是通过 offershow 统计的,涉及到测试、开发、算法、技术支持。

  • 硕士 211 非科班,测试岗,开了 15k,还有 2-4 个月的年终奖,base 杭州
  • 硕士 985,开发岗,开了 24k,12% 的公积金,月工资包含 20% 的绩效奖,base 杭州
  • 硕士 985,AI 算法,开了 25k,不能 A,base 杭州
  • 硕士海归,技术支持岗,开了 15k,实习工资不打折,base 杭州
  • 硕士 211,应用软件开发,开了 16k,西安比杭州低了 2k,base 西安

能看得出来,海康威视的薪资和小米南京地区的差不多,20k 是个坎,大部分能开在 15k、16k,和互联网大厂虽然没法比,但比其他行业仍然是“体面”不少。

尤其适合双非本、双非硕的小伙伴,没能拿到大厂 offer 的小伙伴;千万不要因噎废食,自己宁愿没 offer 也不愿意去,那可真就贻笑大方了。

我不是为海康威视讲好话,而是真真切切希望大家都能上岸。25 届校招依然在进行当中,软件开发、技术支持岗的需求是非常靠前的,像软件开发岗,Web、C/CPP/C#、Android/IOS、Java 方向都有可以。

接下来,我们就以《Java 面试指南》中收录的海康威视面经同学 4 为例,来看看体面厂的面试难度。

背八股就认准三分恶的面渣逆袭

题目不多,难度也不大,基本上围绕着我给大家强调的 Java 后端四大件中的 Java 并发编程篇展开。

海康威视面经同学 4

Redis部署

我是直接在本地部署的单机版,只需要下载 Redis 的安装包,解压后运行 redis-server 命令即可。

也可以通过 Docker 拉取 Redis 镜像,然后运行容器。

docker run -d --name redis -p 6379:6379 redis

java中锁种类

按照锁的使用方式来分类的话,Java 中的锁可以分为两大类:悲观锁和乐观锁。悲观锁的代表就是 synchronized 关键字,乐观锁的代表就是 CAS。

使用乐观锁时有线程过来修改数据,此时应该怎么做

此时可以重新读取数据并再次尝试更新,直到成功为止或达到最大重试次数。

读取数据 -> 尝试更新 -> 成功(返回成功)
               |
               -> 失败 -> 重试 -> 达到最大次数 -> 返回失败

类似这样:

class CasRetryExample {
    private static AtomicInteger counter = new AtomicInteger(0);
    private static final int MAX_RETRIES = 5;

    public static void main(String[] args) {
        boolean success = false;
        int retries = 0;

        while (retries             int currentValue = counter.get();
            boolean updated = counter.compareAndSet(currentValue, currentValue + 1);
            
            if (updated) {
                System.out.println("更新成功,当前值: " + counter.get());
                success = true;
                break;
            } else {
                retries++;
                System.out.println("更新失败,进行第 " + retries + " 次重试");
            }
        }

        if (!success) {
            System.out.println("达到最大重试次数,操作失败");
        }
    }
}

什么场景下用乐观锁,什么场景下用悲观锁?

乐观锁,是个乐观派,总是假设对共享资源的访问没有冲突,线程可以不停地执行,无需加锁也无需等待,通常使用 CAS 的技术来保证线程执行的安全性。

多用于“读多写少“的环境,避免频繁加锁影响性能。

自旋锁是什么,自旋锁会一直等待吗

自旋锁是指当线程尝试获取锁时,如果锁已经被占用,线程不会立即阻塞,而是 通过自旋 ,也就是循环等待的方式不断尝试获取锁,通常依赖于 CAS 来实现。

线程1        线程2
   |            |
   | 获取锁成功   | 尝试获取锁
   |------------>|(锁已被占用,自旋等待)
   | 释放锁      |
   |   |            |

默认情况下,自旋锁会一直等待,直到获取到锁为止。但是,在实际开发中,通常会设置自旋次数或者超时时间。如果超过阈值,线程可以选择放弃锁或者进入阻塞状态。

自旋锁的劣势是什么?

如果锁被占用时间过长,会导致线程空转,浪费 CPU 资源。

对协程的了解,为什么协程比线程还有更低的资源消耗

协程被视为比线程更轻量级的并发单元,可以在单线程中实现并发执行,由我们开发者显式调度。

我们可以使用 CompletableFuture 来模拟协程式的异步执行任务。比如说我们创建两个 CompletableFuture 对象来异步执行两个简单的数值返回任务。这两个任务都会休眠 1 秒钟来模拟耗时计算。

然后我们使用 thenCombine 方法来合并这两个任务的结果。最后,我们通过 get 方法等待最终结果的完成,并打印出来。

class CompletableFutureExample {

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        // 异步执行任务1
        CompletableFuture future1 = CompletableFuture.supplyAsync(() -> {
            try {
                Thread.sleep(1000); // 模拟耗时操作
            } catch (InterruptedException e) {
                e.printStackTrace();






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