Skip to content

Latest commit

 

History

History
26 lines (25 loc) · 4.76 KB

File metadata and controls

26 lines (25 loc) · 4.76 KB

Questions about Software Architecture

  • When is a cache not useful or even dangerous? [A]
  • Why does Event-Driven Architecture improve scalability? [A]
  • What makes code readable? [A]
  • What is the difference between emergent design and evolutionary architecture? [A]
  • Scale out vs scale up: how are they different? When to apply one, when the other? [A]
  • How to deal with failover and user sessions?
  • What is CQRS (Command Query Responsibility Segregation)? How is it different from the oldest Command-Query Separation Principle? [A]
  • The so called "multitier architecture" is an approach to design a client–server system aimed to keep physically and logically separated presentation, application processing, data management and other functions. The most widespread of the multitier architectures is the three-tier architecture. Would you discuss the pros and cons of such approach? [A]
  • How would you design a software system for scalability? [A]
  • Someone gave the name "The "C10k problem" to the problem of optimising network sockets to handle over 10.000 open connections at once. While handling 10.000 concurrent clients is not the same as handling 10.000 open connection, the context is similar. It's a tough challenge anyway, and no one is expected to know every single detail to solve it. It may be interesting to discuss the strategies you know to deal with that problem. Would you like to try? [A]
  • How would you design a decentralized (that is, with no central server) P2P system? [A]
  • pubsub vs observer [A]
  • When would you apply horizontal scaling and when vertical scaling? [A] [A]
  • You may recall that Common Gateway Interface (CGI) is a standard protocol for web servers to execute programs (CGI scripts) that execute as Command-line programs on a server, and that dynamically generate HTML pages when invoked by a HTTP request. Perl and PHP used to be common languages for such scripts. In CGI, a HTTP request generally causes the invocation of a new process on the server, but FastCGI, SCGI and other approaches improved the mechanism, raising the performance, with techniques such as preforking processes. Can you imagine why has't CGI eventually win, and was instead replaced with other architectural approaches?
  • How would you defend the design of your systems against Vendor Lock-in?
  • What are the disadvantages of the Publish-Subscribe pattern at scale?
  • What's new in CPUs since the 80s, and how does it affect programming? [A]
  • In which part of the lifecycle of a software performance should be taken in consideration, and how? [A]
  • How could a Denial of Service arise not maliciously but for a design or architectural problem?
  • What’s the relationship between Performance and Scalability? [A]
  • When is it OK (if ever) to use tight coupling? [A]
  • What characteristic should a system have to be Cloud Ready? [A] [A]
  • Does unity of design imply an aristocracy of architects? Putting it simple: can good design emerge from a collective effort of all developers?
  • What's the difference between design, architecture, functionality and aesthetic? Discuss. [A]