Practical Engineering
open-menu closeme
Engineering
github linkedin rss
  • Calculate number of nodes in a linear network using message passing

    calendar Jan 20, 2024 · 4 min read · Interview  ·
    Share on: twitter copy

    Problem In a connected network consisting of N nodes, each node is connected to either one or two neighbors, forming a line topology. The task is to develop a program that runs on each node, calculating the total number of nodes in the network. Each node is aware of its neighboring nodes and can exchange messages with …


    Read More
  • Nested Map: Breakdown analysis of events and return result as nested JSON

    calendar Jan 19, 2024 · 3 min read · Interview Go  ·
    Share on: twitter copy

    Problem An event consists of multiple properties, each defined as a key-value pair, where the key is a string and the value is of a primitive type such as numbers or strings. Importantly, each event must include a mandatory 'Name' property. Given a list of events, the task is to count the number of events based on …


    Read More
  • Factorial Growth of Subqueries When Using Nested WITH Clauses in ClickHouse

    calendar Jan 12, 2024 · 5 min read · Databases  ·
    Share on: twitter copy

    ClickHouse is a popular OLAP database. It speaks SQL and earns the reputation of "fast and resource efficient". But the support of SQL comes with surprises if not careful. In this blog, I show that a simple query of nested WITH clauses in ClickHouse generates factorial number of subqueries. The simple query …


    Read More
  • Maglev Hash: Consistent Hash with Guaranteed Even Distribution

    calendar Jan 7, 2024 · 5 min read · Distributed System Algorithms  ·
    Share on: twitter copy

    In distributed systems, because there are too many requests to be handled by a single server reliably, requests are handled by a cluster of servers. In order to get high availability, the technique of distributing requests to servers needs to satisfy the following three requirements. Even distribution. Each backend …


    Read More
  • Monotonicity: Sliding Window

    calendar Nov 27, 2023 · 5 min read · Algorithms Interview  ·
    Share on: twitter copy

    A function is monotonic if it preserves the order of its arguments, i.e., if $x \le y$, then $f(x) \le f(y) $. In this post, we look at a class of problems where the argument is an interval. By identifying monotonic functions, we can reduce number of intervals to enumerate by an order of magnitude, from $O(n^2)$ to …


    Read More
  • Monotonicity: Find Largest Subarrays for Each Array Element

    calendar Nov 23, 2023 · 6 min read · Algorithms Interview  ·
    Share on: twitter copy

    Given an array of numbers $A$, for each number $A[i]$, find the largest subarray that contains $A[i]$ and $A[i]$ is the minimum of the subarray. For example, for $A=[2, 0, 3, 5, 1, 1, 0, 2 1]$, the largest subarray for $A[4]$ is $[3,5,1,1]$. Let's represent the subarray for $A[i]$ as the left boundary $l[i]$ and right …


    Read More
  • Set GOMAXPROCS for Go programs in containers

    calendar Nov 22, 2023 · 4 min read · Go  ·
    Share on: twitter copy

    Every Go program has a runtime. The runtime implements garbage collection, concurrency, stack management, and other critical features. We can configure the runtime by setting variables. In this post, we will look at GOMAXPROCS, a variable that configures concurrency. You may get free performance boost by setting …


    Read More
  • A simple and customizable load test tool in Go

    calendar Oct 15, 2023 · 7 min read · Go  ·
    Share on: twitter copy

    We plan to load test our product before public Beta, with two goals in mind. Find out bottlenecks: figure out road maps of performance improvement and prepare for oncalls. Understand how much workload we can support with fixed resources. This shapes the pricing strategy and determines number of Beta partners to …


    Read More
  • Monotonicity: Find the K-th number in two sorted arrays

    calendar Oct 10, 2023 · 4 min read · Algorithms Interview  ·
    Share on: twitter copy

    Given two sorted arrays of integers, $A$ and $B$, find the $K$-th smallest integer from A and B in $O(\min(\log{N}, \log{M}))$ time. $N$ and $M$ are the size of $A$ and $B$ respectively. Without loss of generality, we can assume A and B are of the same length N. Because both A and B are sorted, we can merge A and B …


    Read More
  • Priority Map: A hash map with access of the minimum value

    calendar Oct 9, 2023 · 4 min read · Go Algorithms  ·
    Share on: twitter copy

    I implemented a job scheduler at work recently. Each job has a unique ID and an expiration time. The job ID is immutable while the expiration time may change. The job scheduler schedules the job of the earliest expiration time. Go comes with heap.Interface and map. My first implementation uses a hashmap and a slice …


    Read More
    • ««
    • «
    • 1
    • 2
    • 3
    • 4
    • »
    • »»

Peng Zhang

Software Engineer

Recent Posts

  • Fix Rare Case Where Primary ENI Does Not Serve Default Traffic
  • SELinux Concepts
  • Modern Go idioms
  • A Few Shell Surprises
  • x509: certificate signed by unknown authority? Maybe the cert pool is empty
  • Lessons from an errgroup and Context mishap
  • Avoid panic on expected errors: lessons from operating journald-to-cwl
  • GPG is still in use to verify downloads

Tags

GO 16 LINUX 9 ALGORITHMS 8 INTERVIEW 7 GUIDE 3 CONTAINER 2 DISTRIBUTED-SYSTEM 2 SELINUX 2 WEB 2 BOTTLEROCKET 1 COMPUTER-ARCHITECTURE 1 CONCURRENCY 1 CRYPTOGRAPHY 1 DATABASES 1
All Tags
ALGORITHMS8 BOTTLEROCKET1 COMPUTER-ARCHITECTURE1 CONCURRENCY1 CONTAINER2 CRYPTOGRAPHY1 DATABASES1 DISTRIBUTED-SYSTEM2 EC21 GO16 GUIDE3 INTERVIEW7 LINUX9 SELINUX2 SHELL1 TESTING1 WEB2
[A~Z][0~9]
Peng Zhang

Copyright 2022-  PENG ZHANG. All Rights Reserved

to-top