Provide a valid email address to receive FREE chapters in PDF format

EMail:

Interview Questions for Software Architects

These are not straightforward technical questions.  Technical questions with concrete answers are more appropriate for another forum.  The questions and sample answers here reflect tradeoffs between technical, analytic, process, and interpersonal skills.  Therefore, each of the questions features the answer I would give followed by discussion.

Software Architecture Interview Questions and Answers - Day 1 of 31

You have a large new project that you are the first person assigned to.  What are your initial concerns and initial actions?


My initial actions would be to establish the key organizational factors that will facilitate the success of the projects.  We can summarize these actions with the acronym VRAPS.


"V" is for "Vision".  You need to establish clear guidance for he project's definition of success.


"R" is for "Rhythm" in which you determine the milestones for key deliverables.  Dates are not as important as milestones in the initial stage of the project.  The milestones do not need to include working code deliverables, but should always be concrete deliverables.  This might include artifacts such as feasibility studies or requirements documents in addition to code.


"A" is for anticipating problems.  This is a key area where the experience of a seasoned architect is key. Potential problems will span technology, analytical, process, and interpersonal domains.  For a seasoned architect, technology and analytical anticipation is reasonably assumed.  It is also true that most problems in a project result from process and interpersonal issues, so those would be the key focus areas for problem anticipation.


"P" is for partnering.  This is the most important of these five concerns when starting on a large new initiative.  You will never be able to complete a large new initiative on your own.  More importantly, there will be times when you will be asking others for extraordinary efforts and to devote their valuable time, keeping in mind that these necessary stakeholders do not report to you.  Critically, you cannot rely on relationships that you have not developed in advance, so a competent architect cultivates relationships ahead of time, spending perhaps 15% of his time just on relationship-building.


"S" is for simplification.  Most new software systems are - by necessity - very complex.  You want to keep systems as sample as possible, but no simpler.  Having said that, every simplification results in exponential reduction of effort and improvement in reliability.  Key concerns here are producing a "minimum viable product" first, avoiding "gold-plating" the requirements, and being judicious about choossing appropriate technologies for their fitness rather than their coolness.



You have a high transaction volume web site that is working very slowly in production, but the problem is not urgent.  What areas would you turn your attention to first?


If the problem is said to be occurring in production, but is not known to be occurring in test now, the first thing we will need to do is determine if the problem can be replicated in test.  Generally speaking, if we have not seen the problem in test it is because the scenario has not been attempted in test or, more often, that we have not that much data in test.  As we first approach the problem, we just want to know if such a test environment is available to reproduce the problem.  We will not act on this information, but we will come back to that later.


The next step in the diagnosis will be to look at whatever measurements are available.  When assessing a performance problem, a bit of speculation can be helpful, especially in the context of previously observed behaviors with the architecture, but we always want concrete measurements before we take action.


Some measurements will typically be available from the production environment by default, but we will want to leverage operating system tools and custom tools to get more information from each of the systems in the chain of systems that are exchanging data.  This will allow us to at least isolate the individual platform or subsystem that seems to be having the most negative effect on overall system performance.  That isolation is key because it will allow us to focus our efforts.  More importantly, it will allow us to engage specific team(s) of subject matter experts.


For each tier of the systen, we will want to obtain information for four items - CPU consumption, memory consumption, disk accesses, and network transfers.  Network transfers generally do not bottleneck for modern systems, but we nonetheless want to take at least a cursory review of the network access. 


Generally speaking, we will find that one or more of the four key potential resource bottlenecks is "saturated".  By "saturated", we typically mean that the resource is being consistently used at more than 80% of it's capacity.  It is a common misconception tht the resource has to be used at 100% to be slowing the system down or that any kind of spiking to 100% utilization implies a problem.  Rather, if the resource is being used over 80%, there is typically a lot of spiking, but some spiking is natural.


Once we have isolated the specific "saturated" resource, we can then use specific analysis that is customized to the isolated module to do further analysis.


If we isolate a problem to the database level, there are many specialized techniques that we can pursue.  This is important to keep in mind, as the most common source of performance problems is a database.


If we find a slow algorithm on the applicaton tier or JavaScript, the next logical step is typically to do further isolation with a profiling tool.


You have to design a new web site for optimum scalability.  Assume that the system is the size of Facebook.  What are your design considerations?


foo


Can you walk us through a major new application that you designed and how you did it?


foo


What is the typical role of Node.js for modern front end development?


foo

Software Architecture Interview Questions and Answers - Day 2 of 31

Tell us how you handle conflict? How do you handle conflict with managers?


foo


What is your approach to technical mentoring?


foo


You have a team member that does not work well with others.  How do you manage that?


foo


You have been assigned as the architect for a large project.  What does your day-to-day work look like?


foo

Software Architecture Interview Questions and Answers - Day 3 of 31

Can you describe the pros and cons of multi-threading?


foo


Give us some examples of when you have deliberately used design patterns.


foo


How would you use UML to describe the design of a modest application?


foo


What do you do to stay up to date on technology?


foo

Software Architecture Interview Questions and Answers - Day 4 of 31

How much hands-on work do you do?


foo


How do you conduct code reviews?


foo


Our organization already has an optimal architecture?  How will you work within that constraint?


foo


Our organization has a lot of process problems because of the pace of our growth.  How will you handle that? 


foo


How do you properly leverage asynchronous queuing systems?


foo

Software Architecture Interview Questions and Answers - Day 5 of 31

What are your thoughts on continuous integration and continuous delivery?


foo


How do you balance deadlines, quality, and customer commitments?


foo


Where do you see yourself in five years?


foo


Can you walk us through the fundamentals of securing a web site?


foo



Software Architecture Interview Questions and Answers - Day 6 of 31

How do you handle DevOps?


foo


How do handle validation of requirements?


foo


How do you apply computer science principles to the job?


foo


How do you diagnose SQL Server database performance problems?


foo



Software Architecture Interview Questions and Answers - Day 7 of 31

We have a monolithic architecture that we do not fully understand.   What should we do to get this under control?

foo


How do you handle implicit requirements?


foo


What are your thoughts on cloud architecture?


foo


What aspects of the job do you like  best - the technology or the leadership?


foo

Software Architecture Interview Questions and Answers - Day 8 of 31

How do you manage offshore teams?


foo


Describe a situation in which you had to fix a production problem quickly?


foo


There is a documented procedure for introducing changes to production.  You determine the solution to a production problem and the project manager tells you to deploy it immediately.  What do you do?


foo 


How do you handle a difficult client that does not want to take your technical advice?


foo

Software Architecture Interview Questions and Answers - Day 9 of 31

You made a technical decision that you then find out was wrong.  How do you handle that?


foo


Describe deadlocks and how to deal with them?


foo


What are the pros and cons of microservices?


foo


Describe best practices for exception-handling.


foo

Software Architecture Interview Questions and Answers - Day 10 of 31

Explain SOLID principles.


foo


Give us your thoughts on how to leverage automated unit testing the most effectively.


foo


How do you handle estimating?


foo


How do you analyze a software architecture?


foo

Software Architecture Interview Questions and Answers - Day 11 of 31

What is a good set of initial diagrams to describe a software system?


foo


What are antipatterns?  Can you describe one?


foo


Describe how to set up a web farm.


foo


Explain the CAP theorem.


foo

Software Architecture Interview Questions and Answers - Day 12 of 31

Describe ACID and BASE


foo


Describe the three main categories of design patterns.


foo


Compare REST and web services.


foo


Describe how you would move an existing architecture to the cloud.


foo

Software Architecture Interview Questions and Answers - Day 13 of 31

Explain MVC in detail.


foo


Explain dependency injection in theory and in practice.


foo


Describe the process of designing a database.


foo


How do you improve the performance of SQL?


foo

Software Architecture Interview Questions and Answers - Day 14 of 31

Explain service busses.


foo


Explain business intelligence.


foo


Explain appropriate use of caching.


foo


Explain a generic multi-tier architecture.


foo

Software Architecture Interview Questions and Answers - Day 15 of 31

How do you plan for disaster recovery?


foo


How do you do capacity planning?


foo


How do you design for maintainability?


foo


Give an example of how to design a simple object-oriented system.


foo

Software Architecture Interview Questions and Answers - Day 16 of 31

How do you handle prioritization?


foo


How do you handle late changes to requirements without affecting schedule?


foo


How do you design for flexibility?


foo


What are your thoughts on container technologies?


foo

Software Architecture Interview Questions and Answers - Day 17 of 31

How does .NET garbage collection work?


foo


What is service-oriented architecture?


foo


How is a singleton pattern implemented in  .NET?


foo


What are your thoughts on logging and monitoring?


foo

Software Architecture Interview Questions and Answers - Day 18 of 31

What are you favorite software development tools?


foo


How do you handle criticisms of your designs?


foo


You find a major design flaw shortly before shipping a product.  What do you do?


foo


What do you think about open source?


foo

Software Architecture Interview Questions and Answers - Day 19 of 31

Explain LINQ and lambdas.


foo


Explain SQL Indexing pros and cons.


foo


Explain SQL Replication.


foo


How do you scale a generic client/server system?


foo

Software Architecture Interview Questions and Answers - Day 20 of 31

What are the key aspects of computer system security?


foo


What is TOGAF?


foo


When would you use synchronous calls vs. asynchronous calls?


foo


Explain basic administration of Agile  in Team Services.


foo


Software Architecture Interview Questions and Answers - Day 21 of 31

How do you work with Product Managers?


foo


Explain a typical software product lifecycle.


foo


What are the key architectural concerns of user interface design?


foo


How do you handle it when engineers get stuck implementing projects?


foo


Software Architecture Interview Questions and Answers - Day 22 of 31

How do you judge the effectiveness of a developer?


foo


What do you do when you believe you are going to slip a deadline?


foo


What do you do when you are asked to do something that isn't your job?


foo


How do you deal with developers that are withholding information?


foo

Software Architecture Interview Questions and Answers - Day 23 of 31

How long do you think it will take you to learn our systems?


foo


How will you handle support concerns outside of normal business hours?


foo


Many of the engineers under your supervision are willful, ambitious, and don't care much for process.  How do you deal with that?


foo


How do you handle creating requirements without spending too much time?


foo

Software Architecture Interview Questions and Answers - Day 24 of 31

Can you write code?


foo


Do you mind if you find yourself not writing code for a period of time?


foo


There is a tendency in the industry towards less careful system design.  Why is that so?


foo


How can you explain technical things to non-technical stakeholders?


foo

Software Architecture Interview Questions and Answers - Day 25 of 31

What are the decision-making criteria for bringing on a new developer?


foo


You have a web site running on IIS that is returning a 500 error.  What do you do to diagnose the problem?


foo


How do you make a build versus buy decision?


foo


How do you choose between several different vendors for the same product?


foo

Software Architecture Interview Questions and Answers - Day 26 of 31

How do you handle change requests?


foo


How do you deal with a team member who is underperforming?  What is they are a consultant rather than a full time employee?  What is they are new?


foo


How do you achieve consensus in system designs?


foo


What is the difference between architecture and enterprise architecture?


foo

Software Architecture Interview Questions and Answers - Day 27 of 31

What are your thoughts on ORMs in general and Entity Framework in particular?


foo


Why aren't you familiar with technology 'X'?


foo


What are the most important trends in software design during the last 10 years?


foo


What people and newsletters do you follow in the community?


foo

Software Architecture Interview Questions and Answers - Day 28 of 31

Tell me about the design you are proudest of.


foo


What is your dream job?


foo


What kind of work do you delegate and how do you do so?


foo


How do you design a system that must be used by many different types of clients?


foo

Software Architecture Interview Questions and Answers - Day 29 of 31

How do you design a system against the possibility of failure of one of the servers?


foo


What are your thoughts on domain-driven design?


foo


How can you determine if an algorithm is performant?


foo


How do you decide to partition work between a client and a server?


foo

Software Architecture Interview Questions and Answers - Day 30 of 31

What is the difference between a scalable system and a massively scalable system?


foo


What special considerations are there when writing software for other developers to consume?


foo


What are the key concerns when moving from private could to public cloud?


foo


How do you design for reliability?


foo

Software Architecture Interview Questions and Answers - Day 31 of 31

What are your decision-making criteria for adding a new feature to a product backlog?


foo


What are the differences between being an architect for large organization and small organizations?


foo


How do you handle communications with database administrators?


foo


What ae pros and cons of using Angular?


foo