全员绩效奖金清零!员工炸锅,网友最新猜想靠谱吗?

广联达年终奖事件

广联达的全员年终奖归零事件,前段时间闹得沸沸扬扬。

首先给在听说这件事之前,并不知晓「广联达」的同学科普一下:

广联达科技股份有限公司立足建筑业,围绕工程项目的全生命周期,为客户提供数字化软硬件产品、解决方案及相关服务。公司业务覆盖设计、造价、施工、运维、供采、园区,以及金融、高校、投资并购等领域,涵盖工具软件、解决方案、大数据服务、移动APP、云计算服务、智能硬件设备、产业金融服务等多种业务形态。

没错,广联达是一家上市公司,此前也一直被誉为「建筑软件开发龙头企业」。

目前的人数规模接近 <math xmlns="http://www.w3.org/1998/Math/MathML"> 1 1 </math>1 万人。

先来给从没吃过这 🍉 的同学简单交代一下之前的情况:

  1. 广联达在没有任何文件通知的情况下,靠人传人的方式,通知到所有员工,今年年终绩效奖金为 <math xmlns="http://www.w3.org/1998/Math/MathML"> 0 0 </math>0,首波舆情直接爆发
  2. 广联达总裁办发内部邮件,采取缓兵之计,澄清所谓的年终绩效清零的并非针对所有员工,没有起到舆情冷却作用
  3. 隔三差五就有人出来骂,要么是分享公司现在普遍的躺平气氛,要么是分析公司这么做的目的

有一位去年领了大礼包走的前广联达同事分享感受:

这位在广联达工作了六年的老广(广联达员工的自称)提到,广联达这一波年终奖清零事件,其实早有苗头。

早在两年前,广联达就以「绩效改革」为由来变相降薪,让大家重签合同,把原来的 14 薪,调整为 12 薪 + 绩效。

然后到了年底,再通过绩效不好作为理由,将原本的 2~3 个月年终奖直接打对折。

之后,有越来越多的在职的广联达员工出来爆料。

既有给出更为详细的公司绩效调整时间线的:

也有提到现在取消的所谓年终奖,本来就是之前入职时谈好的部分工资:

诸多爆料都印证了上面那位老广的说法为基本事实。

从通过人传人宣布全员年终归零到现在,已过去数周,广联达也基本处于人心涣散的状态:

...

而根据目前最新的推测,广联达所做的所有操作,目的都是为了提高企业利润,来满足解除限售期要求,都是为了减持。

根据该帖子内容,如果要满足 2023 年的解除限售要求,广联达的净利润需要不低于 12.5 亿

首先,通过取消员工奖金或降薪裁员,来提高企业利润率,是可以的,且很常见。

过去几年互联网大厂之所以能够在大环境如此恶劣的情况下,还能保证净利润,很大程度也是利用该手段。

降本增笑嘛,光是谐音梗都听腻了。

广联达是上市公司,我们可以很容易找到最近一个季度的财报:

截止至 2023 年第三季度,净利润为 2.78 亿,同比下降 57.5%。

其中第三季度的净利润为 2430 万,同比下降 81.2%。

从最近一个季度的净利润值来看,盈利能力下降态势明显,不太可能依靠第四季度翻盘来满足 12.5 亿的解除限售要求。

第四季度的净利润尚未公布,但根据数据不难推算出,缺口大概是接近 9 个亿。

那么前面那位网友的推测「高管为了减持,通过取消全员年终来提高净利润」是否成立。

9 个亿的缺口,近 1W 人的员工规模,那么人均需要贡献 9W 的年终奖来提高净利润。

再结合前面帖子说的,年终奖差不多是 2 个月的工资水平,也就是这 1W 人的月工资均为 4.5W。

这个数字不至于说离谱到不可能,但还是存疑的。

但假设真的是为了减持,我只能说:广联达遭遇的骂名还是太轻了点,股价都跌成这样了,不想回购想减持。

缅 A 不愧是全球第一的融资市场,遥遥领先。

简单来说,广联达不当人是真。

但如果说此举目的是想减持,通过绩效归零来实现净利润提高,难度较大,毕竟业绩净利润确实没法看了,缺口足足有 9 亿。

但可以肯定的是,广联达走到全员年终归零这一步,说明换帅这一步就走岔了:

...

周末了,来道难度一般的模拟题。

题目描述

平台:LeetCode

题号:1657

如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 :

  • 操作 1:交换任意两个 现有 字符。

    • 例如,abcde -> aecdb
  • 操作 2:将一个 现有 字符的每次出现转换为另一个 现有 字符,并对另一个字符执行相同的操作。

    • 例如,aacabb -> bbcbaa(所有 a 转化为 b ,而所有的 b 转换为 a

你可以根据需要对任意一个字符串多次使用这两种操作。

给你两个字符串,word1word2。如果 word1word2 接近 ,就返回 true;否则,返回 false

示例 1:

rust 复制代码
输入:word1 = "abc", word2 = "bca"

输出:true

解释:2 次操作从 word1 获得 word2 。
执行操作 1:"abc" -> "acb"
执行操作 1:"acb" -> "bca"

示例 2:

ini 复制代码
输入:word1 = "a", word2 = "aa"

输出:false

解释:不管执行多少次操作,都无法从 word1 得到 word2 ,反之亦然。

示例 3:

rust 复制代码
输入:word1 = "cabbba", word2 = "abbccc"

输出:true

解释:3 次操作从 word1 获得 word2 。
执行操作 1:"cabbba" -> "caabbb"
执行操作 2:"caabbb" -> "baaccc"
执行操作 2:"baaccc" -> "abbccc"

示例 4:

ini 复制代码
输入:word1 = "cabbba", word2 = "aabbss"

输出:false

解释:不管执行多少次操作,都无法从 word1 得到 word2 ,反之亦然。

提示:

  • <math xmlns="http://www.w3.org/1998/Math/MathML"> 1 < = w o r d 1. l e n g t h , w o r d 2. l e n g t h < = 1 0 5 1 <= word1.length, word2.length <= 10^5 </math>1<=word1.length,word2.length<=105
  • word1word2 仅包含小写英文字母

模拟

两类操作都不会凭空产生或删除字符,而仅仅是对字符进行互换。

由于操作 12 都不限次数,因此我们只需检查「字符种类是否相同」和「字符频次是否相等」,即可得出两字符串是否接近的结论。

具体的,由于 s1s2 都仅包含小写字母,因此可以创建两个大小为 26 的数组 c1c2 分别对两字符串进行词频统计。

随后进行合法性检查:

  1. 字符种类是否相同:若存在某个字符仅在 s1s2 中出现过,两字符串必不接近,返回 False
  2. 字符频次是否相等:对 c1c2 进行排序,并逐项检查,若存在 c1[i] != c2[i],说明存在词频为 c1[i] 的字符种类数在 s1s2 间并不相等,返回 False

若上述两项检查无误,说明两字符串接近,返回 True

Java 代码:

Java 复制代码
class Solution {
    public boolean closeStrings(String s1, String s2) {
        int[] c1 = new int[26], c2 = new int[26];
        for (char c : s1.toCharArray()) c1[c - 'a']++;
        for (char c : s2.toCharArray()) c2[c - 'a']++;
        for (int i = 0; i < 26; i++) {
            if (c1[i] + c2[i] == 0) continue;
            if (c1[i] == 0 || c2[i] == 0) return false;
        }
        Arrays.sort(c1); Arrays.sort(c2);
        for (int i = 0; i < 26; i++) {
            if (c1[i] != c2[i]) return false;
        }
        return true;
    }
}

Python 代码:

Python 复制代码
class Solution:
    def closeStrings(self, s1: str, s2: str) -> bool:
        c1, c2 = [0] * 26, [0] * 26
        for c in s1:
            c1[ord(c) - ord('a')] += 1
        for c in s2:
            c2[ord(c) - ord('a')] += 1
        for i in range(26):
            if c1[i] + c2[i] == 0:
                continue
            if c1[i] == 0 or c2[i] == 0:
                return False
        c1.sort()
        c2.sort()
        for i in range(26):
            if c1[i] != c2[i]:
                return False
        return True

C++ 代码:

C++ 复制代码
class Solution {
public:
    bool closeStrings(string s1, string s2) {
        vector<int> c1(26, 0), c2(26, 0);
        for (char c : s1) c1[c - 'a']++;
        for (char c : s2) c2[c - 'a']++;
        for (int i = 0; i < 26; i++) {
            if (c1[i] + c2[i] == 0) continue;
            if (c1[i] == 0 || c2[i] == 0) return false;
        }
        sort(c1.begin(), c1.end());
        sort(c2.begin(), c2.end());
        for (int i = 0; i < 26; i++) {
            if (c1[i] != c2[i]) return false;
        }
        return true;
    }
};

TypeScirpt 代码:

TypeScript 复制代码
function closeStrings(s1: string, s2: string): boolean {
    const c1: number[] = Array(26).fill(0);
    const c2: number[] = Array(26).fill(0);
    for (const c of s1) c1[c.charCodeAt(0) - 'a'.charCodeAt(0)]++;
    for (const c of s2) c2[c.charCodeAt(0) - 'a'.charCodeAt(0)]++;
    for (let i = 0; i < 26; i++) {
        if (c1[i] + c2[i] === 0) continue;
        if (c1[i] === 0 || c2[i] === 0) return false;
    }
    c1.sort((a, b) => a - b);
    c2.sort((a, b) => a - b);
    for (let i = 0; i < 26; i++) {
        if (c1[i] !== c2[i]) return false;
    }
    return true;
};
  • 时间复杂度:统计词频复杂度为 <math xmlns="http://www.w3.org/1998/Math/MathML"> O ( n + m ) O(n + m) </math>O(n+m);排序复杂度为 <math xmlns="http://www.w3.org/1998/Math/MathML"> O ( C log ⁡ C ) O(C\log{C}) </math>O(ClogC),其中 <math xmlns="http://www.w3.org/1998/Math/MathML"> C = 26 C = 26 </math>C=26 为字符集大小,进行合法性检查复杂度为 <math xmlns="http://www.w3.org/1998/Math/MathML"> O ( C ) O(C) </math>O(C)。整体复杂度为 <math xmlns="http://www.w3.org/1998/Math/MathML"> O ( n + m + C log ⁡ C ) O(n + m + C\log{C}) </math>O(n+m+ClogC)
  • 空间复杂度: <math xmlns="http://www.w3.org/1998/Math/MathML"> O ( C ) O(C) </math>O(C)

我是宫水三叶,每天都会分享算法题解,并和大家聊聊近期的所见所闻。

欢迎关注,明天见。

更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地 🎉🎉

相关推荐
熊的猫7 分钟前
webpack 核心模块 — loader & plugins
前端·javascript·chrome·webpack·前端框架·node.js·ecmascript
速盾cdn14 分钟前
速盾:vue的cdn是干嘛的?
服务器·前端·网络
hlsd#44 分钟前
go mod 依赖管理
开发语言·后端·golang
四喜花露水1 小时前
Vue 自定义icon组件封装SVG图标
前端·javascript·vue.js
陈大爷(有低保)1 小时前
三层架构和MVC以及它们的融合
后端·mvc
亦世凡华、1 小时前
【启程Golang之旅】从零开始构建可扩展的微服务架构
开发语言·经验分享·后端·golang
河西石头1 小时前
一步一步从asp.net core mvc中访问asp.net core WebApi
后端·asp.net·mvc·.net core访问api·httpclient的使用
前端Hardy1 小时前
HTML&CSS: 实现可爱的冰墩墩
前端·javascript·css·html·css3
2401_857439691 小时前
SpringBoot框架在资产管理中的应用
java·spring boot·后端
怀旧6661 小时前
spring boot 项目配置https服务
java·spring boot·后端·学习·个人开发·1024程序员节