Interview knowledge

Tags

#engineering 94 #system-design 43 #ai 27 #database 24 #career 12 #interviewing 10 #management 5 #market 5 #me 3 #communication 2 #engineering-management 2 #interview 2 #agentic-programming 1 #api 1 #business 1 #economy 1 #leadership 1 #moc 1 #networking 1 #python 1 #role 1

#engineering

  • Access pattern driven modellingGrowing

    Rather than modelling your data model based on what it is (relations, etc.). Model based on how the application will need to query it (key value, top 50, complex search, etc.) Optimise…

  • Adding a dependency to a service adds network overheadGrowing

    Server operation time + network overhead. For example, Redis operations are quite fast (couple of ms), there will always be network overhead.

  • Agent friendly codebaseSeedlingfurther reading
  • Agent routingGrowingfurther reading

    One way to do AI Multi Agent could be to route the request to the right model depending on the complexity needed, at least to save costs. https://blog.bytebytego.com/p/how-smart-model-routing-can-cut-llm.

  • Agentic EngineeringGrowingfurther reading

    Reviewing code is a skill that won't go away. No shortcut to it, get good the old school way. Take the time to write the project description and code structure yourself, it…

  • AI - Single agent vs multi agentGrowingfurther reading

    Frontier models are good by themselves (ie Claude Code) Single agent (could) need more human in the loop to review, where multi agent could review itself.

  • AI Loop EngineeringGrowingfurther reading

    Smolagents vs langgraph. To test the output of your models, you can rely on both deterministic and non-deterministic guardrails (LLM as Judge). Remember that AI outcome is not deterministic so it's safer…

  • AI multi agent patternsGrowingfurther reading
  • API AuthenticationGrowing

    Maybe not straight user ID in api. Jwt json web token contains signed json data about the user, like what role they have. Every request contains a signature that the server can…

  • API Circuit breakersGrowing

    Failing fast is better than failing slow. Circuit breakers allows not calling services that are broken so that they're not overloaded. Half open allows letting a few requests through to see if…

  • API DesignSeedling
  • API GatewayGrowing

    Api gateways can combine results from different apis into one. Routing: https://www.hellointerview.com/learn/system-design/deep-dives/api-gateway.

  • API Rate limitingGrowing

    Django rate limiter? In memory per server. You don't get a global picture tho. Or separate service but extra latency. Most common is to have it with the api gateway. Rate limiting…

  • API retriesGrowing

    Good to handle the odd error. Beware of overloading already failing services with even more load. API Circuit breakers will help.

  • API short vs long timeoutsGrowing

    Set long timeouts intentionally, services should be fast, unless it is purposefully (can't do otherwise) slow.

  • AvailabilityGrowing

    Availability patterns. There are two main patterns to support high availability: fail-over and replication. Fail-over. Active-passive. With active-passive fail-over, heartbeats are sent between the active and the passive server on standby. If…

  • AWS AuroraEstablished

    Separates compute from storage. Leverages s3 as elastic storage, making it scale way beyond what traditional dbs can do. For example, for PostgreSQL it starts struggling around 100GB to 1TB. With aurora,…

  • Batch processing vs stream processingGrowing

    In old existing product data, it was stream processing, processing one spider item at a time. whereas in dogs, it was batch processing, processing 'big' sqlite files.

  • CachingEstablished

    Cache = trade off speed vs freshness. You can also use the CDN as a cache for api results. Short term. Ok if only a few. Consider how often it changes, how…

  • Caching patternsEstablished

    Cache aside: app checks cache and fetches from DB on miss then updates cache. Read through: app checks cache, the cache will automatically fetch from the DB if missing. The difference between…

  • Cassandra DatabaseGrowing

    Cassandra is masterless. Cassandra has no Database ACID support. Bias towards Availability. Write heavy. Zero downtime needed (in traditional master/slave, there is a small downtime if master is down for the failover…

  • CDN - Content Delivery NetworkGrowing

    Spread out servers that store copies of content. Page load will be faster as there will be a server closer to the user's location, usually. These usually store and cache content like…

  • Coding interview when AI is allowedEstablished

    make adr folder. make agents.md and tell claude.md to read that to be ai agnostic. write preferences to agents.md, ie testing pure functions or disallow running certain commands. but keep it light…

  • Coding interviews where you have to present what you didGrowing

    What did I build? Why did I structure it this way? Why this database? What assumptions did I make? What are the failure cases? What did I test? What doesn't it handle…

  • Coding topics to refresh before an interviewGrowing

    Be comfortable with: dictionaries / sets / lists. comprehensions. iterators/generators. collections. sorting. exceptions. context managers. dataclasses. typing. JSON. HTTP. files. async basics. or. descending: Remember the distinction: creates the entire list. Whereas:

  • Common System Design PatternsGrowing

    Database Replication and read replicas. Something something geolocalisation. Postgres has extensions for this.

  • Connection PoolingGrowing

    Connection pooling allows avoiding TCP handshake overhead. Keep some connections ahead.

  • ConsistencyGrowing

    Weak consistency. After a write, reads may or may not see it. A best effort approach is taken. This approach is seen in systems such as memcached. Weak consistency works well in…

  • Consistency vs AvailabilityGrowing

    Consistency = every read gets most recent write. Availability = the system responds even if it's not the most recent data. For example with Ticketmaster, consistency is way more important, but for…

  • Cron jobs to fix data vs TTLGrowing

    Depending on the data you need to fix, if it's simply releasing something, then a TTL on a row is better.

  • DatabaseSeedling
  • Database ACIDGrowing
  • Database indexGrowing

    Removes the need for a slow sequential scan. B-tree is the most popular, allows range queries with almost O(1). Hash index (key mapping) is definitely fast and O(1) but can't do range…

  • Database ReplicationSeedling

    Synchronous is slower, but ensures stronger consistency.

  • Database ShardingEstablished

    Write-heavy: Too much data for 1 instance (storage or write per second) Read-heavy: when read replicas or caching are not enough. Global queries will be slower. Complexity to operate and keep data…

  • Database typesSeedling
  • Distributed configuration managementGrowing

    Distributed configuration management, zookeeper is a bit outdated but good for this. Example: The API Gateway keeps an open connection to config server and pushes changes straight away. Other not as good…

  • Distributed transactionsGrowing

    2 phase commit and saga patterns are the most common ways to solve this. You can have a coordinator plan across services and commit all at once, but this is fragile if…

  • DocumentDB vs DynamoDBGrowing

    Amazon DynamoDB and Amazon DocumentDB are both fully managed NoSQL databases on AWS, but they are built for entirely different data models and architectural needs. Choose DynamoDB if you need predictable, single-digit…

  • DynamoDBSeedling
  • ElasticSearchGrowing

    It builds an inverted index to make searching documents by terms quickly. Example: taylor: (event1, event2) Tokenization in Elasticsearch is the process of breaking a stream of text characters down into smaller,…

  • Engineering manager core skillsGrowingfurther reading
  • Event Driven SystemGrowing

    Dealing with important events that needs to be stored forever (ie refund events) When you need replayability of events (reprocess historical data) Real-time data processing.

  • Forward proxy vs Reverse proxy vs API GatewayEstablished

    Forward proxy: next to the client before reaching internet. Reverse proxy: server side to go to the right server. API gateway: reverse proxy that does more than routing. it handles auth, rate…

  • Generic vs Concrete software designGrowing

    What worked for others in other scenarios might not work for you. Concrete system design discussions are best done by the people involved in working in the system. It'll be more specific.…

  • GraphQLGrowing

    This is good for when clients need to choose which fields to use and make complex joins in 1 query. With graphql, it's easy to introduce the n+1 query problem where you…

  • Horizontal scalingSeedling

    Horizontal scaling only works if servers are stateless aka, server needs to treat the request as if the user came in here for the very first time.

  • How AI changes the software engineer roleEstablishedfurther reading

    Good foundation is still key. AI is a signal amplifier, not just a tool. It will amplify the good and the bad. System design is still very important (some say that hyper-generalists…

  • How AI does not change in the software engineer roleGrowingfurther reading

    We still think in black boxes and inputs/outputs like before. Collaboration is still key (in theory). We still think in processes rather than language syntax. Systems thinking. Refactoring. Engineering with ai is…

  • How much coding should an engineering manager doGrowingfurther reading

    Title is misleading, there is no "should". The best managers are not removed from the craft for too long.

  • How much data is a user in a database roughlyGrowing

    1KB ish. Some common fields: But what takes most space is database overhead, index, page, etc.

  • How to best use AI in engineeringGrowingfurther reading

    Treat AI as a slow and non-deterministic (AI outcome is not deterministic) worker that can get things wrong, don't use it for critical paths like auth. A good chef that delegates is…

  • How to choose a databaseEstablished

    PostgreSQL. Strengths: transactions, joins, constraints, flexible queries. Weaknesses: horizontal scale/sharding complexity, not ideal for huge analytical scans. DynamoDB. Strengths: massive scale, predictable low-latency key access, operational simplicity. Weaknesses: access-pattern-driven modelling, limited relational…

  • How to evaluate good engineers in the AI eraGrowingfurther reading

    Code is cheap now. Good manually crafted code is harder to stand out in the flood of AI slop. But now everyone can generate lots of code.

  • How to keep control of your codebase in the AI eraGrowingfurther reading

    Technical debt is visible but comprehension debt is not. Don't ship it if you don't understand it. Code is fast, but slow down to keep a good mental model if necessary.

  • Idempotency keyGrowing

    Client generates an ID to send to the server that is unique when making operations. In case of failures or retries, this ensures operations on the server side are done only once.

  • Immutable data vs mutable dataGrowing

    An image or a song would be immutable data. The access pattern for those is a lot of reads, very few writes. These would be best stored in a system where it's…

  • Impact of AI on junior engineersGrowingfurther reading

    If junior developers don't experiment and learn from getting things wrong, they won't develop judgement and become senior. It's important that AI doesn't replace your thinking. Juniors feel more empowered, 50% velocity…

  • Impact of AI on writing codeGrowingfurther reading

    In Youtube - Yannick Dalbin – Ce que 1 an à laisser l'IA coder m'a appris sur le métier de développeur, he says that if there's an issue with what the model…

  • Interviewing othersGrowing

    Can they do the job? Not necessarily right, now but you need to know that they can learn how to do it. Unless you have constraints that they need to be performant…

  • Kafka vs SQSGrowing

    Kafka wins when: You need persistence. Strict ordering at scale. Stream processing. SQS+SNS wins when: You're ok with the AWS structure and minimal operations. Retry + DLQ built-in. Ordering does not matter…

  • LangchainSeedlingfurther reading

    useful for production apps that leverage llms beyond calling openai/claude with an api and show the results. this is useful if you need things like subagents doing different things (searching, etc.), orchestration,…

  • LatencySeedling

    Latency is the time to perform some action or to produce some result.

  • LeetcodeSeedling

    https://www.techinterviewhandbook.org/grind75/.

  • Levels of agentic programmingGrowingfurther reading

    Use AI for code reviews when the risk is low.

  • Load BalancerEstablished

    Single point of contact for user requests. It does health checks for all servers to know if some have issues. Distribution: Round Robin: simple and sequential. IP hashing: allows the same user…

  • Managing sessionsGrowing

    Session database. django-session. Having a session database rather than storing in the server's memory, allows avoiding sticky sessions. It's best to have sessions expire so that the data gets cleaned eventually. When…

  • Message queuesEstablished

    operations too long for a live server, get feedback to users quickly. reduce load on a live server. when you want the ability to scale differently for different tasks (ie retrievers need…

  • PostgreSQLGrowing

    read: 20k queries per second. write: 10k writes per second.

  • PostgreSQL vs DynamoDBGrowing

    When I'd use DDB: if key value access is enough. I need heavy write (more than 10k writes per second) automatic and managed sharding. What you're giving up with postgres: relations and…

  • PostgreSQL vs MySQLGrowing

    MySQL is thread per connection, where PostgreSQL is process per connection. MySQL is seemingly faster for lots of concurrent simple reads. PostgreSQL takes up more memory, but handles complex queries better with…

  • Pre-signed urlsGrowing

    Pre signed urls rather than streaming through api servers with bigger timeouts. This frees servers to do other things, this is supposedly a secure way to get clients direct access to blob…

  • Programming interviewSeedling
  • RAG - Retrieval-Augmented GenerationGrowingfurther reading

    A model has to: find every one of those. realise they're related. ignore 99% of everything else. remember them all. compare them. That's basically Retrieval-Augmented Generation (RAG), except your retrieval system is…

  • RedisGrowing

    Redis is great for data that needs to be accessed by key quickly. Especially if that data is temporary with the TTL feature, like a cache a ticket locking system. It would…

  • Redis vs MemcachedGrowing

    Memcached is supposedly a bit faster as it is multi threaded. Redis has better support of more data types. Redis has optional disk persistence.

  • Relational DatabaseGrowing
  • REST frameworkGrowing

    REST favours plural nouns. Use path parameters for mandatory parameters, and use query parameters for optional ones. Rest is good for public facing Apis, easy to reason about. Http for external is…

  • REST vs GraphQLGrowing

    When is GraphQL is a good idea? When flexibility of what data to retrieve is important, but it is possibly rarely worth the overhead.

  • Reverse proxySeedling

    A reverse proxy is in front of a server. Intermediary so that clients never talk directly to servers.

  • Reverse proxy vs API gateway vs load balancerEstablished

    An API gateway is a specialized type of reverse proxy. The easiest way to differentiate them is by their core focus: a load balancer focuses on scale, a reverse proxy focuses on…

  • Role - Product EngineerSeedlingfurther reading

    Is it basically doing Role - Software Engineer in the real business world?

  • RPC methodsGrowing

    RPC tends to be more for internal service communication. REST has a bit more overhead with http. Rpc tends to use more efficient formats like protobuf and grpc rather than http. This…

  • Saga choreography vs saga orchestrationGrowing

    Either each service triggers the next one, or there is an orchestrator managing the whole thing. Queen was an orchestrator whereas in PIMS, it was choreography style, retriever triggers transformer, etc.

  • ScalabilityGrowing

    A service is scalable if it results in increased performance in a manner proportional to resources added. Generally, increasing performance means serving more units of work, but it can also be to…

  • Search optimised databaseGrowing

    It usually builds an inverted index for fast querying, like: Tokenization: Tokenization is the process of breaking a piece of text into individual words. This allows you to map from words to…

  • Search systemsGrowing

    Postgres is fine to begin with for basic search. Select where like term. When would somethint else be more relevant ? Wildcard search are slow tho, it'll scan the whole db. But…

  • Stateless vs Sticky sessionsGrowing

    Sticky session means it'll only work if the user has time come back to a specific server. Stateless means server needs to treat the request as if the user came in here…

  • Sync between databasesGrowing

    For example between search and main db. When introducing another database, they need to be synced somehow. Easiest: write to both in app code (what if it fails and also makes it…

  • System DesignEstablished

    Hello interview in a hurry is the best resource: https://www.hellointerview.com/learn/system-design/in-a-hurry/introduction. Book - Designing Data-Intensive Applications (haven't extracted all notes yet)

  • System Design PrimerSeedling

    https://github.com/donnemartin/system-design-primer. They have Anki flashcards too.

  • ThroughputGrowing

    Throughput is the number of such actions or results per unit of time. Generally, you should aim for maximal throughput with acceptable latency.

  • WebSocketSeedling
  • WebSockets vs SSE vs API pollingGrowing

    WebSockets is 2 way open connection. SSE (Server Sent Events) is one way. API usually have a timeout of 30-60 seconds, configured by an outside system, often. If the operation you're doing…

#system-design

  • Adding a dependency to a service adds network overheadGrowing

    Server operation time + network overhead. For example, Redis operations are quite fast (couple of ms), there will always be network overhead.

  • API Circuit breakersGrowing

    Failing fast is better than failing slow. Circuit breakers allows not calling services that are broken so that they're not overloaded. Half open allows letting a few requests through to see if…

  • API DesignSeedling
  • API GatewayGrowing

    Api gateways can combine results from different apis into one. Routing: https://www.hellointerview.com/learn/system-design/deep-dives/api-gateway.

  • API Rate limitingGrowing

    Django rate limiter? In memory per server. You don't get a global picture tho. Or separate service but extra latency. Most common is to have it with the api gateway. Rate limiting…

  • API retriesGrowing

    Good to handle the odd error. Beware of overloading already failing services with even more load. API Circuit breakers will help.

  • API short vs long timeoutsGrowing

    Set long timeouts intentionally, services should be fast, unless it is purposefully (can't do otherwise) slow.

  • AvailabilityGrowing

    Availability patterns. There are two main patterns to support high availability: fail-over and replication. Fail-over. Active-passive. With active-passive fail-over, heartbeats are sent between the active and the passive server on standby. If…

  • Batch processing vs stream processingGrowing

    In old existing product data, it was stream processing, processing one spider item at a time. whereas in dogs, it was batch processing, processing 'big' sqlite files.

  • CachingEstablished

    Cache = trade off speed vs freshness. You can also use the CDN as a cache for api results. Short term. Ok if only a few. Consider how often it changes, how…

  • CDN - Content Delivery NetworkGrowing

    Spread out servers that store copies of content. Page load will be faster as there will be a server closer to the user's location, usually. These usually store and cache content like…

  • Common System Design PatternsGrowing

    Database Replication and read replicas. Something something geolocalisation. Postgres has extensions for this.

  • Connection PoolingGrowing

    Connection pooling allows avoiding TCP handshake overhead. Keep some connections ahead.

  • ConsistencyGrowing

    Weak consistency. After a write, reads may or may not see it. A best effort approach is taken. This approach is seen in systems such as memcached. Weak consistency works well in…

  • Consistency vs AvailabilityGrowing

    Consistency = every read gets most recent write. Availability = the system responds even if it's not the most recent data. For example with Ticketmaster, consistency is way more important, but for…

  • Cron jobs to fix data vs TTLGrowing

    Depending on the data you need to fix, if it's simply releasing something, then a TTL on a row is better.

  • Distributed configuration managementGrowing

    Distributed configuration management, zookeeper is a bit outdated but good for this. Example: The API Gateway keeps an open connection to config server and pushes changes straight away. Other not as good…

  • Event Driven SystemGrowing

    Dealing with important events that needs to be stored forever (ie refund events) When you need replayability of events (reprocess historical data) Real-time data processing.

  • Forward proxy vs Reverse proxy vs API GatewayEstablished

    Forward proxy: next to the client before reaching internet. Reverse proxy: server side to go to the right server. API gateway: reverse proxy that does more than routing. it handles auth, rate…

  • Generic vs Concrete software designGrowing

    What worked for others in other scenarios might not work for you. Concrete system design discussions are best done by the people involved in working in the system. It'll be more specific.…

  • GraphQLGrowing

    This is good for when clients need to choose which fields to use and make complex joins in 1 query. With graphql, it's easy to introduce the n+1 query problem where you…

  • Horizontal scalingSeedling

    Horizontal scaling only works if servers are stateless aka, server needs to treat the request as if the user came in here for the very first time.

  • Idempotency keyGrowing

    Client generates an ID to send to the server that is unique when making operations. In case of failures or retries, this ensures operations on the server side are done only once.

  • Kafka vs SQSGrowing

    Kafka wins when: You need persistence. Strict ordering at scale. Stream processing. SQS+SNS wins when: You're ok with the AWS structure and minimal operations. Retry + DLQ built-in. Ordering does not matter…

  • LatencySeedling

    Latency is the time to perform some action or to produce some result.

  • Load BalancerEstablished

    Single point of contact for user requests. It does health checks for all servers to know if some have issues. Distribution: Round Robin: simple and sequential. IP hashing: allows the same user…

  • Managing sessionsGrowing

    Session database. django-session. Having a session database rather than storing in the server's memory, allows avoiding sticky sessions. It's best to have sessions expire so that the data gets cleaned eventually. When…

  • Message queuesEstablished

    operations too long for a live server, get feedback to users quickly. reduce load on a live server. when you want the ability to scale differently for different tasks (ie retrievers need…

  • Pre-signed urlsGrowing

    Pre signed urls rather than streaming through api servers with bigger timeouts. This frees servers to do other things, this is supposedly a secure way to get clients direct access to blob…

  • REST frameworkGrowing

    REST favours plural nouns. Use path parameters for mandatory parameters, and use query parameters for optional ones. Rest is good for public facing Apis, easy to reason about. Http for external is…

  • REST vs GraphQLGrowing

    When is GraphQL is a good idea? When flexibility of what data to retrieve is important, but it is possibly rarely worth the overhead.

  • Reverse proxySeedling

    A reverse proxy is in front of a server. Intermediary so that clients never talk directly to servers.

  • Reverse proxy vs API gateway vs load balancerEstablished

    An API gateway is a specialized type of reverse proxy. The easiest way to differentiate them is by their core focus: a load balancer focuses on scale, a reverse proxy focuses on…

  • RPC methodsGrowing

    RPC tends to be more for internal service communication. REST has a bit more overhead with http. Rpc tends to use more efficient formats like protobuf and grpc rather than http. This…

  • Saga choreography vs saga orchestrationGrowing

    Either each service triggers the next one, or there is an orchestrator managing the whole thing. Queen was an orchestrator whereas in PIMS, it was choreography style, retriever triggers transformer, etc.

  • ScalabilityGrowing

    A service is scalable if it results in increased performance in a manner proportional to resources added. Generally, increasing performance means serving more units of work, but it can also be to…

  • Search systemsGrowing

    Postgres is fine to begin with for basic search. Select where like term. When would somethint else be more relevant ? Wildcard search are slow tho, it'll scan the whole db. But…

  • Stateless vs Sticky sessionsGrowing

    Sticky session means it'll only work if the user has time come back to a specific server. Stateless means server needs to treat the request as if the user came in here…

  • System DesignEstablished

    Hello interview in a hurry is the best resource: https://www.hellointerview.com/learn/system-design/in-a-hurry/introduction. Book - Designing Data-Intensive Applications (haven't extracted all notes yet)

  • System Design interviewEstablished

    Allocate specific time slots: 5m for requirements, 20m for high-level design, 15m for deep dive, and 5m for wrapping up. Define requirements and use cases. functional requirements first, and non-functional requirements if…

  • System Design PrimerSeedling

    https://github.com/donnemartin/system-design-primer. They have Anki flashcards too.

  • ThroughputGrowing

    Throughput is the number of such actions or results per unit of time. Generally, you should aim for maximal throughput with acceptable latency.

  • WebSocketSeedling

#ai

#database

  • Access pattern driven modellingGrowing

    Rather than modelling your data model based on what it is (relations, etc.). Model based on how the application will need to query it (key value, top 50, complex search, etc.) Optimise…

  • AWS AuroraEstablished

    Separates compute from storage. Leverages s3 as elastic storage, making it scale way beyond what traditional dbs can do. For example, for PostgreSQL it starts struggling around 100GB to 1TB. With aurora,…

  • Cassandra DatabaseGrowing

    Cassandra is masterless. Cassandra has no Database ACID support. Bias towards Availability. Write heavy. Zero downtime needed (in traditional master/slave, there is a small downtime if master is down for the failover…

  • DatabaseSeedling
  • Database ACIDGrowing
  • Database indexGrowing

    Removes the need for a slow sequential scan. B-tree is the most popular, allows range queries with almost O(1). Hash index (key mapping) is definitely fast and O(1) but can't do range…

  • Database ReplicationSeedling

    Synchronous is slower, but ensures stronger consistency.

  • Database ShardingEstablished

    Write-heavy: Too much data for 1 instance (storage or write per second) Read-heavy: when read replicas or caching are not enough. Global queries will be slower. Complexity to operate and keep data…

  • Database typesSeedling
  • Distributed transactionsGrowing

    2 phase commit and saga patterns are the most common ways to solve this. You can have a coordinator plan across services and commit all at once, but this is fragile if…

  • DocumentDB vs DynamoDBGrowing

    Amazon DynamoDB and Amazon DocumentDB are both fully managed NoSQL databases on AWS, but they are built for entirely different data models and architectural needs. Choose DynamoDB if you need predictable, single-digit…

  • DynamoDBSeedling
  • ElasticSearchGrowing

    It builds an inverted index to make searching documents by terms quickly. Example: taylor: (event1, event2) Tokenization in Elasticsearch is the process of breaking a stream of text characters down into smaller,…

  • How much data is a user in a database roughlyGrowing

    1KB ish. Some common fields: But what takes most space is database overhead, index, page, etc.

  • How to choose a databaseEstablished

    PostgreSQL. Strengths: transactions, joins, constraints, flexible queries. Weaknesses: horizontal scale/sharding complexity, not ideal for huge analytical scans. DynamoDB. Strengths: massive scale, predictable low-latency key access, operational simplicity. Weaknesses: access-pattern-driven modelling, limited relational…

  • Immutable data vs mutable dataGrowing

    An image or a song would be immutable data. The access pattern for those is a lot of reads, very few writes. These would be best stored in a system where it's…

  • PostgreSQLGrowing

    read: 20k queries per second. write: 10k writes per second.

  • PostgreSQL vs DynamoDBGrowing

    When I'd use DDB: if key value access is enough. I need heavy write (more than 10k writes per second) automatic and managed sharding. What you're giving up with postgres: relations and…

  • PostgreSQL vs MySQLGrowing

    MySQL is thread per connection, where PostgreSQL is process per connection. MySQL is seemingly faster for lots of concurrent simple reads. PostgreSQL takes up more memory, but handles complex queries better with…

  • RedisGrowing

    Redis is great for data that needs to be accessed by key quickly. Especially if that data is temporary with the TTL feature, like a cache a ticket locking system. It would…

  • Redis vs MemcachedGrowing

    Memcached is supposedly a bit faster as it is multi threaded. Redis has better support of more data types. Redis has optional disk persistence.

  • Relational DatabaseGrowing
  • Search optimised databaseGrowing

    It usually builds an inverted index for fast querying, like: Tokenization: Tokenization is the process of breaking a piece of text into individual words. This allows you to map from words to…

  • Sync between databasesGrowing

    For example between search and main db. When introducing another database, they need to be synced somehow. Easiest: write to both in app code (what if it fails and also makes it…

#career

#interviewing

#management

#market

#me

#communication

#engineering-management

#interview

  • Coding interviews where you have to present what you didGrowing

    What did I build? Why did I structure it this way? Why this database? What assumptions did I make? What are the failure cases? What did I test? What doesn't it handle…

  • Culture interviewEstablished

    Scope (scale of the work) Ownership (initiative and driving outcome, sometimes outside your scope, SLI/SLO, incident handling) Ambiguity (making decisions with incomplete info, turning unclear goals into clear requirements, complex project) Perseverance…

#agentic-programming

#api

  • API AuthenticationGrowing

    Maybe not straight user ID in api. Jwt json web token contains signed json data about the user, like what role they have. Every request contains a signature that the server can…

#business

#economy

#leadership

  • Shipping projectsGrowingfurther reading

    It's not when it's deployed, it's when it's acknowledged by leadership and socially celebrated. If you ship something users hate and makes no money, but your leadership team is happy, you still…

#moc

  • + InterviewingGrowing

    Ability to demonstrate trade-offs. This is especially relevant in the AI era. Interviewing is hard: Its harder to prove someone that you can do something, than just doing the thing everyday.

#networking

  • WebSockets vs SSE vs API pollingGrowing

    WebSockets is 2 way open connection. SSE (Server Sent Events) is one way. API usually have a timeout of 30-60 seconds, configured by an outside system, often. If the operation you're doing…

#python

  • Coding topics to refresh before an interviewGrowing

    Be comfortable with: dictionaries / sets / lists. comprehensions. iterators/generators. collections. sorting. exceptions. context managers. dataclasses. typing. JSON. HTTP. files. async basics. or. descending: Remember the distinction: creates the entire list. Whereas:

#role