大家好,我是苍何。
看到一位 985 硕士毕业的学生,贴出了自己秋招找工作的情况表,一眼看去拿了一堆 offer,忍不住竖起我粗大的拇指👍。
细致的统计了下,一共 10 个 offer,其中已经开奖的有 6 家,还有 4 家未开奖,这个战绩相当不错了。
开奖的主要薪资情况是:
1、小米,base 北京,薪资 26 k * 15。
2、贝壳,base 北京,薪资 25K * 16。
3、去哪儿,base 北京,薪资 22K * 16。
4、歌尔,base 青岛,薪资 25k * 14 + 10w 年终。
5、海尔,base 青岛,薪资 22 k * 15。
6、海信,base 青岛,薪资 20 k * 16。
从开奖的情况来看,虽说赶不上互联网大厂给的猛些,但也算不错了,北京除了去哪儿给了个白菜价 22 K * 16,其余估计是个小小 SP ?。
但青岛的几个 offer,虽然看起来薪资和北京没法比,但毕竟所属城市是二线嘛,这个薪资在青岛,我觉得算是一个合理的价位。
至于还在开奖中的就看携程和 B 站能不能突破一波了,B 站今年部分开奖的同学反馈,硕士 985,直接能开到 30 K 的薪资。
毕竟 B 站 2024 年 Q3 财报显示,首次实现了单季度盈利,开的猛也是情理之中。
从同学自己的反馈来看,目前进大厂难度就像用键盘炒菜,每一步都难得离谱,但还得硬着头皮整。
bg:山东某 985 计算机本硕,一个竞赛奖,一段中厂实习,秋招海投了 32 家(苏北人,只考虑北京上海青岛),有的简历就挂了,还有一些面试,offer 没少拿,全是小厂,大厂全挂了,估计很多92的硕士和我情况相似,大厂太难了。
山东 985,想留在青岛,估计就是海洋大学了。
说到海洋大学,当初我在青岛上学那会,有一次一根筋的毛病犯了,偏偏要学人家一个人独行,走过海洋大学校园,被那种古朴宁静的环境深深吸引,并锤了自己胸口 2 下,咋不多考几分,来这里感受下氛围?
不过抱怨没用,我又屁颠屁颠的回学校,继续兼职写代码,后来呢,我也圆了一回大厂梦,我发现,人生真是一场马拉松,不到终点,都不好说。
说回主题,可以看到 985 同学虽然没能拿到互联网大厂的 offer,但一顿面试下来,也收获不少中小厂 offer,(ps:凭良心说,这些都不算小厂啦),而且有个 20 K 以上的薪资。
表明,即使互联网唱衰的今天,计算机依旧是我们这些小镇做题家改变命运的机会,至少能有一份体面的薪资可以养家糊口。
我一直很感谢计算机,要是当初没转行,我还是个在工地打灰搬砖的小苍何,每天一包烟,一瓶酒,就这样度过我的余生了。计算机让我接触了不一样的世界,让我可以按照自己的想法活着(至少有热爱)。
另外,目前来说,计算机校招,学校好确实优势很大,大厂基本都是去的好学校招聘。
但即便 985,没两把刷子,offer 也没那么容易拿了,这是现实。
关于面试,苍何这里也把最近亲身的经历,做了一些总结,希望能帮助到大家。
1,简历要随时调整
一旦发现简历被捞起的部门业务偏差太大,那一定是出了关键字问题,我第一次被小米和蔚来捞起都是大数据岗位,只是因为简历中过多体现大数据中心,大数据平台,但实际上并没有做大数据,这就尴尬得浪费大家时间了。
2,多份简历
由于我两手准备,一个纯开发岗,一个管理岗,所以我做了两份简历,好在boss可以同时放两份附件简历,在线简历也记得模版调整,然后其他平台记得来回切换,猎聘上猎头多很多,所以在线简历也要重视起来。
3,敢于拒绝
10 月份,华为 od 疯狂的主动联系,我是对外包很敏感,坚决不会去,所以,直接设置了关键词回复拒绝和屏蔽,大家对不感冒的公司要学会拒绝和屏蔽,防止消息内耗。
4,学会复习
社招的复习,八股一开始我没重视,以为应该不会问吧,结果就尴尬了,后来我重新梳理了知识点,结合经验又过了一遍,我发现八股已经满足不了我了,期间我又看了基本特定方向的书和专栏,比如mysql实战45讲,计算机底层的秘密,技术领导力实战等。
我发现比纯看八股,看书对一个知识的理解会更透彻和深入,也能更系统的思考,帮助是很大的,后面我基本技术面就没挂过了。
5,做好总结
一开始的几场面试,问到不会的很正常,我会在结束后做好记录,然后再复习一次,然后思考这个问题背后的深度,我是做过面试官的,站在面试官的角度去思考问题会不一样的理解。
好啦,你的秋招拿了多少 offer 呢?欢迎评论区讨论。
...
回归主题。
今天来一道复杂点的面试算法题,给枯燥的牛马生活加加油😂。
题目描述
平台:LeetCode
题号:190
题目名称:颠倒二进制位
给定一个 32 位无符号整数,将其二进制位颠倒。
提示:
在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现。因为无符号数和有符号数的二进制表示形式相同。
在 Java 中,编译器使用 二进制补码 记法来表示有符号整数。
示例 1:
输入: n = 00000010100101000001111010011100
输出: 964176192 (00111001011110000010100101000000)
解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,
其二进制位颠倒后表示为 964176192,其二进制表示形式为 00111001011110000010100101000000。
示例 2:
输入: n = 11111111111111111111111111111101
输出: 3221225471 (10111111111111111111111111111111)
解释: 输入的二进制串 11111111111111111111111111111101 表示无符号整数 4294967293,
其二进制位颠倒后表示为 3221225471,其二进制表示形式为 10111111111111111111111111111111。
提示:
输入是一个长度为 32 的二进制字符串。
进阶:
如果多次调用这个函数,你将如何优化你的算法?
解题思路
逐位处理:
初始化一个结果变量
res = 0
。通过循环处理 32 位,每次从输入数字的最低位取出一位,将其添加到
res
的低位。每次处理后,将
res
左移一位,原数字右移一位。
位运算技巧:
n & 1
用于取出最低位;res = (res << 1) | (n & 1)
将最低位添加到res
的低位;n >>= 1
将输入数字右移,逐步处理完 32 位。
优化:
如果函数会多次调用,可以提前预计算 8 位或 16 位的颠倒结果,存储在查找表中,减少逐位处理的次数。
代码实现
以下是基于上述解题思路的 Java、C++ 和 Python 代码。
Java代码
public class ReverseBits {
public int reverseBits(int n) {
int res = 0;
for (int i = 0; i < 32; i++) {
res = (res << 1) | (n & 1); // 将 n 的最低位加入 res 的低位
n >>= 1; // n 右移一位
}
return res;
}
}
C++代码
#include <cstdint>
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t res = 0;
for (int i = 0; i < 32; i++) {
res = (res << 1) | (n & 1); // 将 n 的最低位加入 res 的低位
n >>= 1; // n 右移一位
}
return res;
}
};
Python代码
class Solution:
def reverseBits(self, n: int) -> int:
res = 0
for _ in range(32):
res = (res << 1) | (n & 1) # 将 n 的最低位加入 res 的低位
n >>= 1 # n 右移一位
return res
复杂度分析
时间复杂度:O(1)
因为输入始终是固定长度的 32 位整数,循环处理次数固定为 32 次。
空间复杂度:O(1)
仅使用常数空间存储中间变量
res
和位操作。
进阶优化方案
查找表优化:
预先计算 8 位数字的反转结果,存储在一个大小为 256 的数组中。
每次处理 32 位数字时,将其分成 4 个 8 位块,通过查表快速获取反转结果并拼接起来。
查表方案可以显著减少位操作的计算量,提高效率。
ending
你好呀,我是苍何。是一个每天都在给自家仙人掌讲哲学的执着青年,我活在世上,无非想要明白些道理,遇见些有趣的事。倘能如我所愿,我的一生就算成功。共勉 💪
点击关注下方账号,你将感受到一个朋克的灵魂,且每篇文章都有惊喜。
感谢大家一直以来的阅读、在看和转发,我会把流量主收益都用来发红包,大家可在公众号页面发送相关暗号关键词获取抽奖,每一篇文章会给到一个不同的暗号,对应的抽奖都是独立的,此篇暗号为【offer】,在后台回复【offer】,即可点击进去参与抽奖!抽奖内容、金额、个数等都无变化,在开奖前参与抽奖,操作均有效。
注意,后台(不是评论区,是后台)回复【offer】即可参与抽奖。
后台回复(不是评论区,是后台)即可参与抽奖。
后台回复(不是评论区,是后台)即可参与抽奖。
就像大家之前回复【八股】一样。