又一次看到京东高调宣布加薪的消息,距离京东上次加薪仅仅过去 2 个多月。
这次京东科技宣布「技术研发岗」将给出平均 20 个月的薪酬。
配合其最近开奖,开出 offer 的同学表示「高到离谱」,薪资太逆天了。
这波京东薪资已经高的让人有些怀疑人生了,看到很多在校生喜不胜收,我反而有一些担忧。
世界知名股神巴菲特有句名言:"别人恐惧我贪婪,别人贪婪我恐惧",中国也有句老话叫做"事出反常必有妖"。
讲真的,从现象来看,就像是王婆卖瓜,不过是自卖他夸,说到加薪这事,我们梳理下京东今年的大动作。
1、2021 年 7 月 1 日开始,京东用两年时间将员工平均年薪由原来的 14 薪逐步涨至 16 薪,直接加 2 个月年终。 2、2024 年 1 月 1 日起,京东采销年固定薪酬大幅上调 100%; 3、2024 年初,超 2 万名京东一线客服员工,平均薪酬上涨超过 30%; 4、2024 年 8 月,京东 2025 校招启动,开放 18000 个岗位,校招生薪酬再次上调平均 20%。 5、2024 年 9 月 13 日,京东再次宣布零售和其他部门,两年时间,再由 16 薪逐步加到 20 薪。 6、2024 年 11 月 11 日,京东科技宣布「技术研发岗」将给出平均 20 个月的薪酬。
你看这波操作下来,无非是想证明,大京东福利给力,我给的起,说明我业绩好我愿意给,这波舆论下来,风评是不是立马拉上来了。
至于实际加没加,那就不得而知了。毕竟不是 base 薪资,最后能不能发,还不知道了,如果是高级大饼,那我只想说,这饼,吃吃就得了。
现在,我个人觉得吧,真正想为员工谋福利,那就干脆高调宣布,我司不允许加班,下班后和工作相关的事一律不许做。
那才真是值得打工人歌颂,至少我没看到有哪家公司有这个胆量。
目前这行情啊,基本上选择 offer就涂两点,要么就图个 WLB,要么就图个基本工资高。
注意这里说的是月Base,也就是你每月的月工资,而不是年终、股票等一系列镜中月水中花。
因为到头来,你大概率就会发现那些说的天花乱坠的福利,真的还不及到手的钱来得实在。
...
今天来一道京东开发考过的面试算法题,给枯燥的牛马生活加加油😂。
题目描述
平台:LeetCode
题号:215
题目描述:数组中的第 K 个最大元素
给定整数数组 nums
和整数 k
,请返回数组中第 k
个最大的元素。
请注意,你需要找的是数组排序后的第 k
个最大的元素,而不是第 k
个不同的元素。
你必须设计并实现时间复杂度为 O (n) 的算法来解决此问题。
示例 1
输入:
nums = [3,2,1,5,6,4], k = 2
输出:
5
示例 2
输入:
nums = [3,2,3,1,2,4,5,5,6], k = 4
输出:
4
提示
(1 \leq k \leq \text{nums. length} \leq 10^5) (-10^4 \leq \text{nums}[i] \leq 10^4)
解题思路
快速选择法:利用快速选择(Quickselect)算法,这是快速排序的一种变体,能够在期望时间 (O (n)) 内找到第 k
大的元素。通过递归划分数组区域,直到找到目标位置。最小堆:使用大小为 k
的最小堆存储当前最大的k
个元素。当堆中元素超过k
个时,移除堆顶最小值。最终,堆顶元素即为第k
大元素。时间复杂度为 (O (n \log k)),适合较大k
值的情况。
在这里,我们使用最小堆来实现解法。
代码实现
Java 代码:
import java.util.PriorityQueue;
public class Solution {
public int findKthLargest(int[] nums, int k) {
// 创建一个大小为 k 的最小堆
PriorityQueue<Integer> minHeap = new PriorityQueue<>(k);
// 遍历数组,将每个元素加入最小堆
for (int num : nums) {
minHeap.offer(num);
// 如果堆中的元素数量超过 k,移除堆顶元素
if (minHeap.size() > k) {
minHeap.poll();
}
}
// 最小堆的堆顶元素即为第 k 大的元素
return minHeap.peek();
}
}
C++代码:
#include <vector>
#include <queue>
class Solution {
public:
int findKthLargest(std::vector<int>& nums, int k) {
// 创建一个大小为 k 的最小堆
std::priority_queue<int, std::vector<int>, std::greater<int>> minHeap;
// 遍历数组,将每个元素加入最小堆
for (int num : nums) {
minHeap.push(num);
// 如果堆中的元素数量超过 k,移除堆顶元素
if (minHeap.size() > k) {
minHeap.pop();
}
}
// 最小堆的堆顶元素即为第 k 大的元素
return minHeap.top();
}
};
Python 代码:
import heapq
class Solution:
def findKthLargest(self, nums, k):
# 创建大小为 k 的最小堆
min_heap = []
# 遍历数组,将每个元素加入最小堆
for num in nums:
heapq.heappush(min_heap, num)
# 如果堆中的元素数量超过 k,移除堆顶元素
if len(min_heap) > k:
heapq.heappop(min_heap)
# 最小堆的堆顶元素即为第 k 大的元素
return min_heap[0]
复杂度分析
时间复杂度:(O (n \log k)),其中 (n) 是数组的长度。每次插入和移除堆顶元素的时间复杂度为 (O (\log k))。 空间复杂度:(O (k)),用于存储最小堆中的元素。
好文推荐
你好,我是阿秀,普通学校毕业,校招时拿到字节跳动SP、百度、华为、农业银行等6个互联网中大厂offer,这是我在校期间的编程学习之路,详细记录了我是如何自学技术以应对第二年的校招秋招的。
毕业后我先于抖音部门担任全栈开发工程师,目前在上海某外企带领团队继续从事全栈开发,负责的项目已经顺利盈利300w+。在研三那年就组建了一个阿秀的学习圈,一直持续分享校招/社招跳槽找工作的经验,都是自己一路走过来的经验,目前已经累计服务超过 4000 +人,欢迎点此了解一二。