大家好,我是苍何。
不愧是大厂,给的总是超乎人的想象,看了这么多大厂的薪资,今天我们也来看下字节今年的薪资吧。
基本上今年字节 26-30 k 都属于白菜价段位了,不少的 SSP 开的简直让人心动:
1、后端开发,32k * 15,硕士 985,SSP,地点:上海
2、算法,100w 总包 + 股票,博士海归,SSP 的水平,地点:深圳
3、后端,37 * 15 + 1Q0签字 + 1.5k * 12,硕士 985,算SSP,地点:北京
4、后端,30k * 15,硕士 211,白菜价,地点:北京
怎么样,是不是很心动?有没有很想将这些 money 装进自己的口袋?
大厂的确敢给,很多拿到 offer 的同学反馈,按照苍何一直强调的知识点来复习,问题不大,而且面试的时候碰上对的人和对的问题,这不分分钟 SSP。
说是这样说,其实这里面还有一些重要的前提,就反馈来看,总结出以下几点比较重要:
提前实习,最好也是冲大厂实习,大大加分
除了八股,算法必须准备(特别字节是标配)
项目经历要重点关注,不要烂大街,要有亮点项目
尤其是项目这块,准备几个备着。为了给大家一个能拿得出手的项目,苍何最近稳定下来后,重新启动了 PmHub 的更新,昨晚搞到晚上十二点,终于把体验环境搞好了。
最主要原因是苍何的服务器性能远远支撑不起微服务全部跑起来,给大家看看目前的服务器监控状态,内存直接快打满,磁盘也仅剩 15%不到。
不得不说,微服务还是很吃内存呀,个人整服务器资源真是成本巨高,但反观公司倒是感觉资源很足,苍何最近在公司做 k8s 集群的迁移部署,公司动不动就是 128 G,256 G 这样的大内存,再反观我们可怜的资源,不禁留下了没出息的泪水。
哈哈哈,慢慢来吧,后期我想体验环境就先以单体跑,然后让资源做一些更有价值的事情。
晚上又熬夜写了一篇付费文档,争取要在春节前,将文档更新完毕,也不辜负大家这么久对 PmHub 的期待。
...
回归主题。
今天来一道字节考过的面试算法题,给枯燥的牛马生活加加油😂。
题目描述
平台:LeetCode
题号:50
题目名称:Pow(x, n)
实现 pow(x, n)
,即计算 x 的整数 n 次幂函数(即 xnx^n)。
示例
示例 1:
输入:x = 2.00000, n = 10
输出:1024.00000
示例 2:
输入:x = 2.10000, n = 3
输出:9.26100
示例 3:
输入:x = 2.00000, n = -2
输出:0.25000
解释:2^-2 = 1 / (2^2) = 1 / 4 = 0.25
提示
−100.0<x<100.0-100.0 < x < 100.0
−231<=n<=231−1-2^{31} <= n <= 2^{31}-1
n
是一个整数要么
x
不为零,要么 n>0n > 0−104<=xn<=104-10^4 <= x^n <= 10
解题思路
本题需要实现一个高效的求幂函数。考虑到 nn 的值可能很大或者很小,我们需要优化计算。
优化思路:快速幂法
快速幂法通过将 nn 二进制分解实现幂的快速计算,时间复杂度为 O(logn)O(\log n)。具体步骤如下:
如果 n<0n < 0,将问题转换为求正指数幂:xn=1/x−nx^n = 1 / x^{-n}。
使用循环来模拟二进制分解:
如果当前的 nn 是奇数,将结果乘以当前的 xx。
每次将 xx 平方,同时将 nn 整除 2。
当 n=0n = 0 时,返回结果。
特殊情况
n=0n = 0:返回 1。
x=0x = 0:如果 n>0n > 0,返回 0,否则无意义。
代码实现
以下是基于快速幂的 Java、C++ 和 Python 实现代码。
Java 代码
public class Solution {
public double myPow(double x, int n) {
long N = n; // 避免 n 为负时溢出
return N >= 0 ? quickPow(x, N) : 1.0 / quickPow(x, -N);
}
private double quickPow(double x, long n) {
double result = 1.0;
double currentProduct = x; // 当前的底数
while (n > 0) {
if ((n % 2) == 1) { // n 是奇数
result *= currentProduct;
}
currentProduct *= currentProduct; // 底数平方
n /= 2; // n 右移一位(等价于整除 2)
}
return result;
}
}
C++ 代码
class Solution {
public:
double myPow(double x, int n) {
long long N = n; // 避免 n 为负时溢出
return N >= 0 ? quickPow(x, N) : 1.0 / quickPow(x, -N);
}
private:
double quickPow(double x, long long n) {
double result = 1.0;
double currentProduct = x; // 当前的底数
while (n > 0) {
if (n % 2 == 1) { // n 是奇数
result *= currentProduct;
}
currentProduct *= currentProduct; // 底数平方
n /= 2; // n 右移一位(等价于整除 2)
}
return result;
}
};
Python 代码
class Solution:
def myPow(self, x: float, n: int) -> float:
def quick_pow(x, n):
result = 1.0
current_product = x
while n > 0:
if n % 2 == 1: # n 是奇数
result *= current_product
current_product *= current_product # 底数平方
n //= 2 # n 整除 2
return result
if n >= 0:
return quick_pow(x, n)
else:
return 1.0 / quick_pow(x, -n)
时间复杂度与空间复杂度
时间复杂度:O(logn)O(\log n),通过二进制分解 nn 进行幂运算。
空间复杂度:O(1)O(1),只需常数额外空间。
ending
你好呀,我是苍何。是一个每天都在给自家仙人掌讲哲学的执着青年,我活在世上,无非想要明白些道理,遇见些有趣的事。倘能如我所愿,我的一生就算成功。共勉 💪
点击关注下方账号,你将感受到一个朋克的灵魂,且每篇文章都有惊喜。
感谢大家一直以来的阅读、在看和转发,我会把流量主收益都用来发红包,大家可在公众号页面发送相关暗号关键词获取抽奖,每一篇文章会给到一个不同的暗号,对应的抽奖都是独立的,此篇暗号为【字节】,在后台回复【字节】,即可点击进去参与抽奖!抽奖内容、金额、个数等都无变化,在开奖前参与抽奖,操作均有效。
注意,后台(不是评论区,是后台)回复【字节】即可参与抽奖。
后台回复(不是评论区,是后台)即可参与抽奖。
后台回复(不是评论区,是后台)即可参与抽奖。
就像大家之前回复【八股】一样。