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:
- Context: First align the context with the interviewer. Don’t assume they know more than you.
- Organization: Background → Requirements → Solution → Challenges → Results
- Conciseness: Just like writing an article—go through it multiple times.
🧠 Thinking. Mainly abstraction and association.
- 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).
- 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.
- Data structures: arrays, linked lists, stacks, heaps, binary trees, hash tables, graphs
- Basic algorithms: six sorting algorithms, divide and conquer, greedy algorithms, backtracking algorithms, graph algorithms, knapsack problem; LeetCode
- Code organization: interfaces, encapsulation, open-closed principle
- 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.
- 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.
- 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.
- Databases. Different modeling approaches: relational, KV, graph, time-series, etc. Common database components: Parser, Binder, Planner, Optimizer, Execution, Storage.
- 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:
- Alignment. The titles, dates, company names and other modules in various experiences and projects must be aligned.
- 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.
- Selection. Trim experiences purposefully according to the direction of the company you are interviewing with.
- Conciseness. Don’t be verbose when describing experiences; maintain consistency.
- Logic. All listed information must have internal logic.
➕ Other Resources
Some of my previous interview-related articles:
- Distributed Storage Interview Experience
- Common Misconceptions in Database Interviews
- Three “Codes” That Influenced How I Write Code
