木鸟杂记

大规模数据系统

20230819 Bilibili Job Interview Live Stream

This was my first live stream sharing session on Bilibili. The recording is available at https://www.bilibili.com/video/BV1Fz4y1u79v. I mainly talked about key points for landing an infra job from the perspective of my own job search and interview experiences, and answered some live questions from viewers.

🐎 Job Search Preparation

Soft Skills

💁‍♂️ Communication. During interviews, whether describing experiences, doing system design, or even writing code, communication is the top priority—it is the prerequisite for the smooth progress of all interview stages.

Explain something clearly:

  1. Context: First align the context with the interviewer. Don’t assume they know more than you.
  2. Organization: Background → Requirements → Solution → Challenges → Results
  3. Conciseness: Just like writing an article—go through it multiple times.

🧠 Thinking. Mainly abstraction and association.

  1. Abstraction. Also called induction, or knowledge clustering. Using a tree as an analogy, it means traversing several child nodes, abstracting the common traits of their parent node, and then deducing new child nodes. For example, scheduling problems (CPU scheduling, distributed task scheduling).
  2. Association. Also called connection, or cross-domain linking. Using a graph as an analogy, it means for several connected subgraphs, establishing pathways between them in a new dimension. For example, text is a serialization of thought.

Author: Muniao’s Miscellany https://www.qtmuniao.com/2023/08/19/live-show-infra-interview Please indicate the source when reposting

Hard Skills

🧑‍💻 Coding fundamentals. The basics are data structures and basic algorithms; intermediate level includes code organization and engineering experience.

  1. Data structures: arrays, linked lists, stacks, heaps, binary trees, hash tables, graphs
  2. Basic algorithms: six sorting algorithms, divide and conquer, greedy algorithms, backtracking algorithms, graph algorithms, knapsack problem; LeetCode
  3. Code organization: interfaces, encapsulation, open-closed principle
  4. Engineering experience: reducing complexity, understanding context; minimum viable prototype, CI/CD, unit tests, code review

🏬 Knowledge system. Outline the computer science knowledge system by connecting dots to form a bigger picture.

  1. Operating Systems. Mainly around computation and storage. Computation revolves around the CPU—processes, threads, coroutines, scheduling strategies and algorithms; storage is the computer’s memory hierarchy, from closest to farthest from the CPU: registers, Cache, Memory, SSD/HDD, Network.
  2. Computer Networks. TCP/IP five-layer model. From closest to farthest from the user: Application layer (various apps and web pages you use), Transport layer (TCP, Socket), Network layer (IP, routing algorithms), Data link layer, Physical layer. Layering concept, congestion control algorithms, sliding window concept, etc. The basic process from entering a URL in the browser to the web page being returned.
  3. Databases. Different modeling approaches: relational, KV, graph, time-series, etc. Common database components: Parser, Binder, Planner, Optimizer, Execution, Storage.
  4. Distributed Systems. The core problem is distributing data or computation across multiple machines, and solving the latency and fault tolerance issues that multiple machines bring. Multiple machines → data set sharding → multiple replicas → consistency (master-slave, consensus protocols). Cross-shard → distributed transactions.

📺 Programming languages. Every language has its own unique characteristics, but there are some concepts and modules that are common: lifecycle (time) and scope (space), first-class citizens (basic types, classes and functions?), concurrent programming, standard library, strings and files, etc.

  • C++
  • Rust
  • Golang
  • Java

📝 Past projects. For fresh graduates, it’s about how to find suitable projects (internships, open courses, open source); for experienced hires, it’s about how to select and present them.

📜 Resume Polishing

Format

Format is the first impression of a resume, and also the easiest aspect to improve, so spend some time and go through it multiple times:

  1. Alignment. The titles, dates, company names and other modules in various experiences and projects must be aligned.
  2. Consistency. For example, all module titles use the same number of characters, multiple items in a list use the same sentence structure, and experiences are described in the same way.

Content

How to present past experiences and personal highlights.

  1. Selection. Trim experiences purposefully according to the direction of the company you are interviewing with.
  2. Conciseness. Don’t be verbose when describing experiences; maintain consistency.
  3. Logic. All listed information must have internal logic.

➕ Other Resources

Some of my previous interview-related articles:

  1. Distributed Storage Interview Experience
  2. Common Misconceptions in Database Interviews
  3. Three “Codes” That Influenced How I Write Code

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

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

wx-distributed-system-s.jpg