这是我第一次在 b 站直播分享,录屏地址 https://www.bilibili.com/video/BV1Fz4y1u79v ,主要是从我的求职经历以及面试经历角度聊了一些关于 infra 找工作的注意点,并回答了同学一些现场问题。
🐎 求职准备
软素质
💁♂️ 沟通。面试时无论是经历描述,系统设计甚至写代码,沟通都是第一位的,这是面试各个环节顺利展开的前提。
把一件事说清楚:
- 上下文:先和面试官对齐上下文,不要默认他比你知道的多。
- 条理性:背景 → 需求 → 方案 → 挑战点 → 结果
- 简洁性:就跟写文章一样,多过几遍就好了。
🧠 思维。主要是抽象和联想。
- 抽象。也可以说是归纳,或者叫知识聚簇。以树来做类比,就是遍历几个子节点,抽象出其共通的父节点的特质,然后进而推演出新的子节点。比如调度问题(CPU 调度、分布式任务调度)。
- 联想。也可以说是关联,或者叫跨域跳联。以图来做类比,就是对于几个连通子图,在新的维度上给其建立通路。比如文字是思想的一种序列化。
作者:木鸟杂记 https://www.qtmuniao.com/2023/08/19/live-show-infra-interview 转载请注明出处
硬素质
🧑💻 代码功底。初级的就是数据结构和基本算法;中级的包括代码组织和工程经验。
- 数据结构:数组、链表、栈、堆、二叉树、哈希表、图
- 基本算法:六种排序算法、分治算法、贪心算法、回溯算法、图算法、背包问题;LeetCode
- 代码组织:接口、封装、开闭原则
- 工程经验:降低复杂度、理解上下文;最小可用原型、CDCI、单测、Review
🏬 知识体系。以点带面的拎出计算机的知识体系。
- 操作系统。主要围绕计算和存储。计算就是围绕 CPU 而来,进程线程协程,调度策略和算法;存储就是计算机的存储层次体系,依离 CPU 由近到远有寄存器、Cache、Memory、SSD/HDD、Network。
- 计算机网络。TCP/IP 五层协议模型。离用户由近到远,应用层(你用的各种 APP、网页)、传输层(TCP,Socket)、网络层(IP,路由算法)、数据链路层、物理层。分层思想、拥塞控制算法、滑动窗口思想等等。浏览器中输入一条 URL 的到返回网页的基本过程。
- 数据库。不同建模方式:关系、KV、图、时序等等。数据库常见组件:Parser、Binder、Planner、Optimizer、Execution、Storage。
- 分布式系统。核心问题将数据或者计算摊到多机,并解决多机带来的延迟和容错问题。多机 → 数据集分片→ 多副本 → 一致性(主从、共识协议)。跨分片 → 分布式事务。
📺 编程语言。每个语言都有自己独特的特点,但是有一些思想和模块是共性的:生命周期(时间)和作用域(空间)、一等公民(基本类型、类和函数?)、并发编程、标准库、字符串和文件等等。
- C++
- Rust
- Golang
- Java
📝 过往项目。对于应届同学来说,就是如何找到合适的项目(实习、公开课、开源);对于社招同学来说,就是如何筛选呈现。
📜简历打磨
格式
格式是对简历的第一印象,也是最容易提升的地方,因此要花一些时间,多过几遍:
- 对齐。各种经历、项目上的标题、日期、公司等模块一定要对齐。
- 一致。比如所有模块标题都用四个字、列表中多个项目句式相同、经历的叙述方式相同。
内容
如何对过往经历和个人亮点进行呈现。
- 取舍。根据面试公司的方向对经历进行有计划的裁剪。
- 简洁。经历叙述不要啰嗦,保持一致性。
- 逻辑。所有信息的罗列一定要讲究内在逻辑。
➕ 其他资料
我之前的一些面试相关文章:
- 分布式存储面试经验
- 数据库面试的几个常见误区
- 影响我写代码的三个 “Code”