木鸟杂记

分布式系统,数据库,存储

20230819 B 站求职面试直播

这是我第一次在 b 站直播分享,录屏地址 https://www.bilibili.com/video/BV1Fz4y1u79v ,主要是从我的求职经历以及面试经历角度聊了一些关于 infra 找工作的注意点,并回答了同学一些现场问题。

🐎 求职准备

软素质

💁‍♂️ 沟通。面试时无论是经历描述,系统设计甚至写代码,沟通都是第一位的,这是面试各个环节顺利展开的前提。

把一件事说清楚:

  1. 上下文:先和面试官对齐上下文,不要默认他比你知道的多。
  2. 条理性:背景 → 需求 → 方案 → 挑战点 → 结果
  3. 简洁性:就跟写文章一样,多过几遍就好了。

🧠 思维。主要是抽象联想

  1. 抽象。也可以说是归纳,或者叫知识聚簇。以树来做类比,就是遍历几个子节点,抽象出其共通的父节点的特质,然后进而推演出新的子节点。比如调度问题(CPU 调度、分布式任务调度)。
  2. 联想。也可以说是关联,或者叫跨域跳联。以图来做类比,就是对于几个连通子图,在新的维度上给其建立通路。比如文字是思想的一种序列化。

作者:木鸟杂记 https://www.qtmuniao.com/2023/08/19/live-show-infra-interview 转载请注明出处

硬素质

🧑‍💻 代码功底。初级的就是数据结构基本算法;中级的包括代码组织工程经验

  1. 数据结构:数组、链表、栈、堆、二叉树、哈希表、图
  2. 基本算法:六种排序算法、分治算法、贪心算法、回溯算法、图算法、背包问题;LeetCode
  3. 代码组织:接口、封装、开闭原则
  4. 工程经验:降低复杂度、理解上下文;最小可用原型、CDCI、单测、Review

🏬 知识体系。以点带面的拎出计算机的知识体系。

  1. 操作系统。主要围绕计算和存储。计算就是围绕 CPU 而来,进程线程协程,调度策略和算法;存储就是计算机的存储层次体系,依离 CPU 由近到远有寄存器、Cache、Memory、SSD/HDD、Network。
  2. 计算机网络。TCP/IP 五层协议模型。离用户由近到远,应用层(你用的各种 APP、网页)、传输层(TCP,Socket)、网络层(IP,路由算法)、数据链路层、物理层。分层思想、拥塞控制算法、滑动窗口思想等等。浏览器中输入一条 URL 的到返回网页的基本过程。
  3. 数据库。不同建模方式:关系、KV、图、时序等等。数据库常见组件:Parser、Binder、Planner、Optimizer、Execution、Storage。
  4. 分布式系统。核心问题将数据或者计算摊到多机,并解决多机带来的延迟和容错问题。多机 → 数据集分片→ 多副本 → 一致性(主从、共识协议)。跨分片 → 分布式事务。

📺 编程语言。每个语言都有自己独特的特点,但是有一些思想和模块是共性的:生命周期(时间)和作用域(空间)、一等公民(基本类型、类和函数?)、并发编程、标准库、字符串和文件等等。

  • C++
  • Rust
  • Golang
  • Java

📝 过往项目。对于应届同学来说,就是如何找到合适的项目(实习、公开课、开源);对于社招同学来说,就是如何筛选呈现。

📜简历打磨

格式

格式是对简历的第一印象,也是最容易提升的地方,因此要花一些时间,多过几遍:

  1. 对齐。各种经历、项目上的标题、日期、公司等模块一定要对齐。
  2. 一致。比如所有模块标题都用四个字、列表中多个项目句式相同、经历的叙述方式相同。

内容

如何对过往经历和个人亮点进行呈现。

  1. 取舍。根据面试公司的方向对经历进行有计划的裁剪。
  2. 简洁。经历叙述不要啰嗦,保持一致性。
  3. 逻辑。所有信息的罗列一定要讲究内在逻辑。

➕ 其他资料

我之前的一些面试相关文章:

  1. 分布式存储面试经验
  2. 数据库面试的几个常见误区
  3. 影响我写代码的三个 “Code”

我是青藤木鸟,一个喜欢摄影、专注大规模数据系统的程序员,欢迎关注我的公众号:“木鸟杂记”,有更多的分布式系统、存储和数据库相关的文章,欢迎关注。 关注公众号后,回复“资料”可以获取我总结一份分布式数据库学习资料。 回复“优惠券”可以获取我的大规模数据系统付费专栏《系统日知录》的八折优惠券。

我们还有相关的分布式系统和数据库的群,可以添加我的微信号:qtmuniao,我拉你入群。加我时记得备注:“分布式系统群”。 另外,如果你不想加群,还有一个分布式系统和数据库的论坛(点这里),欢迎来玩耍。

wx-distributed-system-s.jpg