TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: How to study for system design that doesn't include front end/back end?

38 pointsby 3a2d292 months ago
I got a system design interview where I was asked to build a pricer for a financial product, then expand it to multiple pricers that might share inputs.<p>This was not the typical system design interview where you have to deal with APIs &#x2F; load balancers &#x2F; latency &#x2F; etc<p>I have studied that a lot, but what about these type of general interviews?

14 comments

t-writescode2 months ago
APIs are just building blocks and blobs of single-ish responsibility. It&#x27;s good to ask lots of different questions to understand the actual question being asked, what the desired capabilities of the thing being asked are, etc.<p>From there, you should be able to start laying out the different components and how they interact.<p>Edit: here&#x27;s some areas of consideration when designing a system:<p><pre><code> * what does this thing do? * what are the expected inputs and outputs of the whole system? * what operations are we wanting to be able to perform against it? * how frequently will each of these operations be done? * how quickly do we want a response from this whole system? * what different sorts of integrations do we expect for this system? Any? * how often do we expect the system to change? * where do we expect to expand the system the most in the future? What will that look like? </code></pre> I&#x27;m sure others will have many, many more things to add
simonw2 months ago
One general tip is to always ask (credible) clarifying questions. A lot of interviewers look out for this - they want to see you dissect the requirements a little bit, not just jump straight to solving the problem based on a bunch of assumptions you&#x27;ve made that might not be correct.
评论 #43361345 未加载
creakingstairs2 months ago
IMO domain knowledge is crucial here. I don’t know anything about pricier or financial products so hard to reason about the system.<p>But to give a general advice, I’d approach it by trying to break down the domain into concepts, then think about how those concepts can be turned into abstractions. Then you can think about relationships between those abstractions and engineering solutions for those relationships.<p>Also, systems all take inputs and produce outputs. Validating those would be another interesting aspect given its finances related.
flashgordon2 months ago
Depends on how to study. Ive been working on this for years. Many people just jump into a solution (or what they think is a solution) to the problem (or what they think is the problem). And this usually triggers interviewers who are looking for that gotcha moment. So you have to treat it as a careful game of getting requirements, setting expectations, managing time, communicating and more.<p>Source - I sucked at system designs for a good 5+ years until I had a ah-ha moment thanks to a couple of questions an Uber interviewer asked me (that interview sucked but I found my mojo after that). And back in that time I did not have the plethora of resources that are available now (not even mentioning GPT&#x27;s ability to come up both problems and solution formats).<p>The key to these interviewers isnt just study but actually practicing mock problems. There are tons of those these days. Another way to learn is to - teach. Start writing up posts for each Design X kinda problem where you would lay it out as if you were presenting it in an interview, ie Requirements, Entities, APIs, High Level Design, Scalability Barriers, Deep Dives etc. Keep at it. A few failures isnt that bad.
评论 #43359010 未加载
评论 #43359116 未加载
malux852 months ago
Most of the time the interviewer is determining how you think, whether they can interact with you easily, how you react to uncertainty, how you react to feedback, how you react to a superior saying “I don’t know”, your resilience in the face of incomplete information, your calmness under stress, and then finally, your final solution given the time constraints and pressure you are under.<p>The goal is not really to get an A+++ on the final product (although that’s nice) but the goal is to communicate that you work well under non-ideal conditions and you’re not a total F*ing nightmare. So take a big breath and engage that lovely neocortex and let your intellect be driven purely by curiosity, a desire to do good, and kindness, and you will get far.
cgio2 months ago
Based on description I read this more like a framework rather than system design. Are the different pricers for the same product? Is there a dependency graph between pricers and&#x2F;or their components (e.g. a MC simulation as input, an intermediate model for calibration, a database query for rates)? Is this an ad-hoc pricer? What is the use (e.g. for risk you might run the same across thousands scenarios etc.) This would not classify as general interview to me. To have an interesting discussion you need subject matter expertise, otherwise you merely define a function signature…
sgentle2 months ago
I learned a lot about event-driven distributed systems by just building things with ZeroMQ. Even if you don&#x27;t end up using it, learning its messaging patterns and the decisions behind them can give you a pretty solid mental framework.<p>The ZeroMQ guide really takes you through it in detail, for example check out Figure 19 here for a parallel job queue with cancellation: <a href="https:&#x2F;&#x2F;zguide.zeromq.org&#x2F;docs&#x2F;chapter2&#x2F;#Handling-Errors-and-ETERM" rel="nofollow">https:&#x2F;&#x2F;zguide.zeromq.org&#x2F;docs&#x2F;chapter2&#x2F;#Handling-Errors-and...</a>
nextts2 months ago
System design has tonnes of YT videos. Watch them.<p><a href="https:&#x2F;&#x2F;m.youtube.com&#x2F;@SDFC" rel="nofollow">https:&#x2F;&#x2F;m.youtube.com&#x2F;@SDFC</a><p><a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;@jordanhasnolife5163" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;@jordanhasnolife5163</a><p>Pricer would have some kind of human interface. Even if just CLI that called API endpoint using some kind of SSO staff authentication. Then it is just a back end.
austin-cheney2 months ago
There are two aspects to systems design.<p>* Flow control - This is the logical path the software takes from input, through computation, to output.<p>* Division of effort - This isn’t your division of labor but the organization of parts to account for reuse, documentation, testing and so on.<p>With enough practice writing and refactoring original software you just build a vision for it through repeated practice. If that isn’t you then this job may not be a good fit for you.
评论 #43360365 未加载
rahimnathwani2 months ago
Maybe &#x27;Design of computer programs&#x27;? <a href="https:&#x2F;&#x2F;www.udacity.com&#x2F;course&#x2F;design-of-computer-programs--cs212" rel="nofollow">https:&#x2F;&#x2F;www.udacity.com&#x2F;course&#x2F;design-of-computer-programs--...</a><p>Or study some of Peter Norvig&#x27;s code for solving poker hands, sudoku etc.?<p>It&#x27;s not obvious how to build abstractions at the right level, or to change those abstractions as requirements change.
deadbabe2 months ago
When you get a question like this, you just reduce everything down to database design.<p>Most systems are just wrappers around a database. You can tell because if you take away the database the system does nothing useful.<p>Financial products are exclusively priced in databases.
评论 #43358548 未加载
yapyap2 months ago
That’s back end no? unless you have to make a GUI for it, then it’s front- and backend.
评论 #43359435 未加载
chaz62 months ago
It has been said that a system is not the sum of its parts, but the product of the interactions between its components. I hope someone can remind me who said this.
评论 #43368165 未加载
harrall2 months ago
System design is about connecting together black boxes that meet requirements. A black box is something with a certain defined behavior but you don’t necessarily care how it works.<p>Imagine if you got tasked with building an airport but you’ve never built an airport. Well, you’d have to first clarify requirements: What kind of planes? What’s on these planes? What kind of cargo? How many flights per year?<p>As you learn more about requirements, you need to start solving them, but remember to keep it at a black box level. Let’s say your airport will be moving both cargo. How will cargo come in? How will cargo get out? We probably need a “cargo movement sub-system.” A cargo conveyor sub-system is still a black box — you don’t yet know details but you do know, at this very early point in questioning, that you need “a system that moves cargo between the loading bays and the plane.” You don’t even know if it’s going to be a conveyor system or humans manually driving cargo yet. However, you are well on your way to building an airport system.<p>You keep at this and keep delving down deeper until you go from design to implementation. This is the process of how you build anything in any field.