学生时代的最后一天
今天,是我学生时代的最后一天。
小学、初中、高中、本科、研究生,我目前人生 80% 的时间都以这个身份度过。身份转换的强烈惯性让我到现在都没有走向社会的实感,照样睡到自然醒,照样习惯了起床后互相吐槽的舍友,照样对食堂千篇一律的菜谱不屑一顾……直到蓝色的帽穗划过我的头顶。
感谢我的家人们,在我毕业的最后几天赶来北京为我庆祝,希望我真正成为你们的骄傲;感谢我的室友们,包容我在生活中的种种缺点,和我一起走过了三年求学时光;感谢我的老师和母校,给我一个足够高的平台去追求自己想做的事;感谢我的朋友们,在我困顿迷茫的时候为我出谋划策。
感谢各位,现在,我要走进人生的下一阶段了,未来的时光还请多多关照!
我的 2024 秋招&春招面经点此
我的 2024 秋招&春招面经
随着我正式毕业,马上将成为一名崭新牛马,我暂时有时间来整理一下自己的秋招&春招面经了。大大小小 20 几轮面试后,暴露出了我最严重的缺点:对于自己的认知和能力过于自信(主要是认知)。这里我就不再对这些面试经历做一些主观评价了,单纯是一些客观的面试内容,希望能对各位有所帮助。
利益相关,关于字节跳动的相关内容不会给出细节
面试结果
公司
岗位/部门
进度
字节跳动
部门 1
✔ OC
腾讯
云架构平台 - 对象存储
❌ 录用评估挂
阿里控股
技术风险平台 - 可观测
❌ 二面挂
美团
本地核心商业 - 美团买药
✔ OC
阿里国际
AliExpress - 运营平台
❌ 一面挂
蚂蚁
蚂蚁国际 - 效能平台
❌ HR 面挂
阿里淘天
阿里妈妈 - 工程技术
❌ 二面挂
华为
华为云
✔ OC
阿里淘天
业务技术 - 直播技术
❌ HR 面挂
腾讯
WXG - 企业微信
❌ HR 面挂
字节跳动
部门 2
✔ OC
关于我阿里云的转正 offer,可以参考我的 2024 暑期实习面经。
详细面经字节跳动 部门 1共 ...
在 Rust 中使用多个线程交替打印 ABC
在我先前的文章中,我通过 Java 实现了使用多个线程交替打印 ABC。刚好最近在学习 Rust,于是就来尝试一下如何它来解决这个简单的问题。
类似地,我通过原子变量和互斥锁两种实现方式来完成这个任务。Rust 的实现与 Java 相比在细节上有着更多需要注意的地方(即非常多坑点),但最后写完后还是让我不得不佩服 Rust 的设计理念。强大且规则严格的编译器虽然在写代码的时候有些痛苦,但比起黑盒的 GC 的确是更加让人安心,是一门真正能让代码苦手也能写出高质量代码的语言。
完整代码下面直接贴出全部的代码,后续其它小节将对每个实现进行详细的分析。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687use std::sync::atomic::{AtomicUsize, Ordering};us ...
引用计数 GC 算法:为什么都用上 Python 了还要手动关闭对象?
和 Java 不同,引用计数是 Python 主要的垃圾回收算法(下文均指 CPython 解释器)。需要首先明确的是,包括 Python 在内的任何高级语言的垃圾回收机制都是非常复杂的,实际上,Python 的垃圾回收也包含了分代机制等复杂的概念,本文只关注引用计数这方面的内容。
问题描述引用计数 GC 算法,简单来说,就是当一个对象被引用的次数为 0 时,才进行回收。
1234567891011121314class A: def __init__(self): print('Object created') def __del__(self): print('Object deleted')def func(): a = A() # 对象 A 实例被局部变量 a 引用,引用计数为 1 return ab = func() # 对象 A 实例被全局变量 b 引用,引用计数为 2print('exit')
1234alrisha@Pisces:~/code/python$ ...
我的 2024 年
三个词总结我的 2024,大概就是 工作、论文和白忙活
很快就来到我第三个年终总结了,其实前几天我还在思考到底要不要按时写,因为看似有很多要说,但就像今年的关键词里说的一样,到头来也是白忙活 🤦。但是好不容易坚持下来了,还是坚持写写吧,一旦断更就不知道是不是还有下次了。
对我来说,2024 年全年的趋势,可以说是欲抑先扬。各位也可以发现我从 7 月份开始就暂停更新我的博客了,除了没有时间,实际上也是没有内容。秋招、中期、论文、专利,不仅让我不停内耗,实际上没有一个给我带来正反馈,至少在下半年是如此。
工作年初的时候,我在找暑期实习的过程可以说是我今年过的最顺利的一段时间,具体内容各位可以参考我这篇博客。实际上,我在阿里云的暑期实习体验也很好,nice 的团队、风口的项目、坚实的公司背书,但也可能正是这些体验让我在秋招时迎来了较大的心理落差。
BAT 和互联网的一众大厂我在秋招时基本都投过了简历,也基本都通过了面试,但最后的结果却都让我不是非常满意。在整个 24 年阿里云实习生比赛中拿了第三名,但转正一看待遇比不上身边任何一个人,我确实无话可说。必须承认,只有真正在找工作的时候 ...
当容量不是 2 的幂次方时,HashMap 是怎么处理的
在 HashMap 中,table 容量初始值为 16 。且每次插入新元素后,如果需要扩容,都是通过 << 1 运算将容量乘以 2。那么什么时候会出现容量可能不是 2 的幂次方的情况呢?
通过 putAll 方法将一个 Map 的所有元素添加到另一个 Map 中。这时 HashMap 的容量不仅很大概率不是 2 的幂次方,而且不一定能够通过一次 << 1 运算得到合适的容量。例如,原始 Map 容量为 4,添加的 Map 容量为 8,那么扩容后容量 $table.length = 4 << 1 = 8$,而需要的容量为 12,远不能满足需求。
通过 IO 流反序列化 HashMap 。基本问题和 putAll 一样,都是一次左移无法满足需求
那么 HashMap 就应该设计一个算法,计算这种一次左移无法得到的容量大小。这个问题换句话来说,就是:
给定一个 int 类型的整数 n,如何求出不小于它的最接近的 2 的整数幂 m,比如给定 10 得出 16,给定 25 得出 32?
直观地,我们会想到通过对数换底公式 $log_ ...
深入解析 HashMap 的哈希算法
HashMap 是 Java 中常用的一种数据结构,它实现了 Map 接口,用于存储键值对。HashMap 的底层实现原理是数组和链表/红黑树,通过哈希函数将键映射到数组中的某个位置,如果位置上已经有元素,则使用链表进行存储。
HashMap 的扩容机制是 HashMap 中的重要的算法,它通过调整 HashMap 的容量来控制 HashMap 的大小,以减少空间浪费和提高查询效率。一般来说,每次扩容,HashMap 存储链表/红黑树的数组的长度都会变为 2 倍。在 HashMap 实现中,这个数组是一个成员变量 table。
为什么要这么设计?我们首先要知道一个好的 Hash 函数至少应该满足什么条件:
均匀分布 :经过哈希函数的计算,每个元素应该尽可能均匀地分布到数组中。具体地说,要保证每个 table 下标都有可能命中
快速计算 :哈希函数的计算应该尽可能高效
离散分布 :哈希函数的计算结果应该尽可能的离散,减少碰撞。具体地说,要保证每个 table 下标中的元素数量都差不多
带着这些条件,我们看看 Java 的 HashMap 具体是怎么实现的。 以下源 ...
简述 OAuth 2.0 鉴权架构
什么是 OAuth 2.0 ?为什么我们需要它?OAuth 2.0 是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方应用。
一个最简单的例子就是支付宝的免密支付。例如我在订阅微博会员按月自动续费服务时,需要获得支付宝授权,因为本质上这个操作是用户在 A 服务(微博)上授权 B 服务(支付宝)的数据,而 A B 服务之间并没有直接的信任关系。
那么问题来了,在支付宝的研发侧视角看,我应该怎么确保这个微博用户真的请求了他自己的支付宝账户数据?微博对我而言是一个不可信的第三方,我怎么知道它没有伪造请求?这需要我们有一种机制来确保用户的授权请求是合法的,这也就是 OAuth 2.0 的主要作用。
OAuth 2.0 架构摘自 RFC 6749:
资源映射,以上文支付宝授权为例:
资源拥有者:C 端用户
客户端:微博
认证服务器:支付宝认证服务器/第三方可信认证服务器
资源服务器:支付宝服务接口
资源:支付宝用户信息、支付宝免密续费服务等
具体流程如下:
用户打开客户端以后,客户端要求用户给予授权。
用户同意给予 ...
如何通过 SSH 远程连接另一台 Windows 主机中的 WSL
有这样一个场景,我在 Windows 主机 A 上,想要通过 SSH 连接到 Windows 主机 B 上的 WSL。
1234主机A (Windows) -----> 主机B (Windows) | V WSL (在主机B上)
Google 了一圈,找到了一个比较靠谱的方案(原文):
Latest WSL2 has systemctl support and can automatically map sshd’s connection to the Windows host. No need to redirect port.
Make sure Windows OpenSSH works.
In windows, run wsl --update to make sure use latest WSL.
In WSL, run sudo apt-get install openssh-server to in ...
我的 2024 暑期实习面经
时间来到 5 月份,经历了 10 家公司 21 场面试的洗礼,我持续两个月的高强度暑期实习面试也总算可以说是告一段落了。这篇文章的主要目的是记录我这两个月以来的面试经历和总结感悟,既为我后续的职业规划做参考,也希望能稍微帮上一些有缘看到它的朋友。如果各位对我的简历感兴趣,也可以点击页面右上角的“关于”查看。
以下部分是我对我这几轮实习面试总体的总结,如果希望直接看具体面经请点这里。
总结
公司
岗位/部门
进度
备注
阿里云
ECS 弹性计算
❌ 主动拒了二面
提前批,和中间件部门冲突
腾讯
TEG 广告工程部
❌ 一面挂
腾讯
TEG 腾讯网络研发部
✔ OC
阿里云
云原生中间件
❌ 三面挂
美团
优选事业部
❌ 一面挂
美团
SaaS
✔ OC
淘天
阿里妈妈
❌ 三面挂
快手
基础平台
❌ 一面挂
阿里控股
资采产品技术部
❌ 主动拒了 HR 面
阿里云
创新业务中心
✔ OC
蚂蚁
-
❌ 简历挂
蚂蚁认为我的简历适合做架构和中间件,但是蚂蚁的架构部门今年似乎不怎么招实习生了(也很有可能是我还不够格 ...