This post is for Job seekers in cloud-native SaaS development roles of Engineering and Architect titles, nowadays patterns and interview questions are common for senior engineering leadership and architect roles for most companies. Only in senior positions like engineering leadership, behavioral and situational questions are added.
The first thing I want to tell, be ready for rejections (very frequent when you start looking after a long time and at any stage) because interviews are very subjective. Take every rejection very positively and try to find out by yourself what went wrong, work on that and forget about that company for the cooling period and get ready for the next as there are tons of options in the market.
Below are things you should do for a Job hunt in India.
Make a Resume With Impact Statement
Your resume is the first thing to give you a break during a shortlisting by Talent Acquisition( TA) team. It should be not very much lengthy(even for very senior positions). A 1-3 page resume is sufficient.
Try to make a resume with the following information in the given order
1- Name and contact information with LinkedIn and GitHub URL
2- At the start, it should have a bullet point summary of your total experience, and current role, with a focus on what role you are applying for. There should be a maximum of 5 bullet points. The First 2 points must have some impact statement to represent your achievements and caliber.
3- Skillset details related to cloud-native SaaS development like programming languages, development platforms, RDBMS, NoSQL, cloud platforms, architectures, patterns, DevOps tools, Enterprise tools, Engineering leadership, and people management skills.
4- Experience Listing with the latest/related 3-5 projects with some impactful points companies.
5- List out the rest of the companies with 1-2 liners
6- Education and Certifications
Your LinkedIn profile should be a complete resume. In the About section put your Profile summary with impact statements and current skills related to what job you are looking for.
Your GitHub profile is also significant with a complete resume. Try to create some related sample projects to showcase your skills, projects, architectures, DevOps scripts, and even articles that will help. If you really like to write try to write on Linkedin posts and @medium.
Where and how to search for Jobs?
Jobs | LinkedIn, Opportunities – Instahyre and Jobs – Recruitment – Job Search – Employment – Job Vacancies – Naukri.com is sufficient to search for jobs.
Insthyre recommendations are very good and serious recruiters will connect with you. LinkedIn job applications on company sites are also good.
Try to get a referral from your friends and acquaintance. Don’t hesitate in connecting with recruiters/managers directly on LinkedIn and chat with them and share your resume directly. This shows that you are seriously interested in that company.
Subscribe to LinkedIn Premium it’s free for 1-3 months, it will give you better job recommendations, insights, and free InMail to directly send emails to the recruiters.
There are some listings for which companies are advertising for months, apply on those also but don’t expect any call as they might be looking to hire someone but not seriously.
Before starting Discussions with recruiters
If you are not ready/good at telling stories about your skills, work, or experience. Then make a write-up of answers about some common questions/general questions and make sure what and how much you are looking for ;).
- Tell about your self like total experience, current role, and responsibilities, Skillset, what kind of project you are working on, your current team size and structure
- Max relevant experience
- Max team size handled
- What is your current Salary package and what is your expectation
- If a recruiter is not told about their recruitment process then ask them explicitly how many rounds are there, how many coding, design rounds, how many managerial rounds, and any other things they want to tell. This will help you to prepare in advance.
General Interview Process Nowadays
It starts with a recruiter will call you and trying to get basic information regarding your current company, role & responsibilities, skillsets, compensation, expected compensation, and whether you are open to relocating or not. He might be asking for your updated resume over email and one confirmation over email for your interest in that company. After this recruiter will share your profile with the hiring team for resume screening and if your CV is shortlisted then he will call you to set up your interviews.
In general, most companies have 5-7 technical rounds followed by HR.
The First 2 rounds will be for coding and design in some companies they give one offline coding problem.
After these, there will be a hiring manager and more technical rounds with senior team members and if everything goes well then there will be an HR round.
Every company has a different hiring interview process but for sure there will be a minimum of 5 technical rounds, some might have fewer.
Be ready for anything to be asked by the interviewer in any round. If you are thinking everything is going fine but at some point in time HR call you and asks for one more extra round then be prepared for rejection.
Always ready for rejection without any reason.
Important Things to Do During Interviews
After each and every interview send one email to the recruiter and ask for your interview feedback. If you don’t get a reply then after 2-3 days give him to call or just WhatsApp him for feedback.
This will help you and the recruiter to get your feedback from the panel and process further because there can be a number of reasons like the interviewer was busy and forget to share your interview feedback and the recruiter proceeds with another one.
Do this without hesitation and this is your right as you have given a 1-hour interview.
In interviews in your introduction, you must tell how you do to keep yourself self up to mark with current tech trends and learn things.
The Interview Preparation
If you are looking for a Software Engineer, an Engineering leadership (Director/VP of Engineering), or a Sr Architect role you should be prepared for the coding round. For senior roles also there may be one formal coding round or in the initial round, they will check your coding (Hands-on) skills.
In every round(by most of the interviewers) you are asked to give your brief introduction and he will tell you about his also. I will suggest phrasing out a good introduction aligned with a current role with impact statements. Try to add that you keep learning new things to keep yourself updated …
You will be also given an opportunity to ask questions to the interviewer and you must ask questions in your mind like tell me about this role, project or can you tell me about a typical day of this role in this company, etc.
My primary programming stack is Java-related so I am writing in the context of Java only in this part.
So for coding interviews do the practice of easy and mid-hard coding questions on leet code or hacker rank up to Sr Engineering Manager Roles.
Don’t start writing immediately, first discuss the problem to clear your doubt and explain your approach to how you are going to solve this, after this start writing the code.
For SR roles, they may ask to write programs on a linked list, binary tree, or standard simple algorithms-related questions on your PC or online coding editors.
So please practice writing codes using an online editor and install one of the editors to write code on your laptop.
In Java, you can be asked to write programs using Java Collections, Thread, and Concurrency.
In Java, you should be hands-on with Map, Set, Cuncuurent, Thread, Synchronization techniques, Mutex, Semaphore, Cyclic Barrer, CountDown Latch, Locks, Executors, Tasks, etc.
In the Coding round, you may be asked to create a Spring boot REST project structure (Hexagonal DDD structure) ref below posts.
Design Round and Techical Round(s)
There can be one or more rounds of design. This will be starting again with your introduction and his self-introduction ( some might skip). After this, you might be asked to explain your current or any other exciting project.
So in the design round, you may be asked to explain the design of your project or the interviewer can ask you to design for a problem.
The problem can be anything like designing Facebook, Instagram, Uber, Netflix Gmail, Amazon, etc. or you can be asked to design a file uploader, Rate limiter, API Gateway, Auth server, and the interviewer will keep adding functionality.
You should be hands-on with any architecture drawing tool like draw.io or any other you are comfortable with and it should be open on your PC and you ask your interviewer whether you can explain by sharing your screen.
You can also be asked to explain your project architecture.
In any case, you should be able to explain your project clearly. It would be best if you started by explaining what is your project/product about (mean what it does), giving some use case examples is good to start with.
After this, you need to explain your project’s high-level architecture for this you can use draw.io or any other tool.
To explain your project architecture you can create one reference architecture of your project(s) and keep it ready on your PC and ask the interviewer “If you don’t mind, can I use my current project reference architecture to save time and explain it to you in a better way“. If he agrees then you can open and share your project architecture and explain it.
Make sure you know each and every piece of your project architecture, used technologies, and patterns.
Non Functional requirements are major focus areas in design interviews like Security, Scalability, High Availability, Resiliency, Disaster Recovery, Performance, Continuous deployments, Data security, isolation of data in a multi-tenancy environment, etc.
Here are some of the technical questions asked in design and technical rounds
Tell me about your current project.
Prepare a good introduction of your project, it should provide a complete use case of the main functionalities like what problem this solution is solving, architecture, used tech stacks, team size, and what was the impact of the project.
Example: My current project is a multi-tenant SaaS for device management, monitoring, CMS, and accounting. It also provides deep business insight to the customers.
This service is deployed in multiple regions of the AWS public cloud and we used Microservice architecture. For microservice, we used managed Kubernetes with Docker, AWS Managed IoT, and Kafka for device communication for the backend we used Spring boot and Python, for datastore we used AWS aurora with multi-region replication and AWS Cassandra global tables. For the front we used Angular.
We used 12-factor app principles to develop and deploy these services with fully automated testing and deployment pipelines.
This service reduces by 70% onboarding time and decreased by 40% operations cost.
A total of 15 people are working on this project 2 architects, 2 engineering managers, 2 DevOps engineers and the rest are full-stack developers.
Explain your current project architecture.
To answer this question, you need a great verbal ability or you can share your screen and use any drawing tool like draw.io.
I will suggest making and keeping the reference architecture(Not actual) of your projects ready. Ask the interviewer before sharing your screen that you have one reference architecture of your project, does he want to see that and discuss that as it will save time and make a clear understanding?
What are the major/key challenges you faced in developing a SaaS project from scratch?
This question can be asked in any interview round except pure coding rounds.
As an Engineering leader/Architect, you should be able to list out all major challenges and solutions/methods to overcome those challenges. Many good technical engineers/architects don’t see any challenges because they solve them easily but you should know those challenges.
Here is a list of some key challenges
- Identification of all stakeholders
- Finalizing functional requirements and signoff from all stakeholders
- Creating delivery milestones
- We are selecting and developing the correct cloud infrastructure architecture, cloud patterns, and styles that can fulfill all FR and NFR(s). As we will use the public cloud, security will be the most challenging NFR. Finalize high-level design
- Selecting the correct development methodology (waterfall, prototype, agile, or hybrid)
- Selecting correct technology stacks to develop services that are most suitable to develop all FR and NFR
- Building development team(s) and setting up DevOps team and pipeline from the start, automation for testing, and quality control
- In the case of agile development prioritization of tasks is the most challenging and important aspect to manage
- Continuous delivery and deployment are also very challenging in the case of new service development
- It is finally setting up the operation and support team.
How you have taken architectural decisions in your project?
How you will choose the technology stack?
Why you have decided to use microservices?
Advantages and disadvantages of microservices?
Read the Drawback section of Microservice Architecture pattern (microservices.io)
Read the Challenges section of Microservice architecture style – Azure Application Architecture Guide | Microsoft Docs
What are the 12-factor app principles?
Can you tell me about micro-service patterns you are comfortable with?
Read from A pattern language for microservices and tell what you have used or are comfortable with.
In your projects how do you handle inter-service communication?
Tell the mechanism you have used.
- Async communication and Sync communication.
- Async communication is done via some message broker (SQS, Rabbit MQ, Kafka, etc) by the use of Topics.
- Sync communication is done via calling the REST API of another service, this requires service discovery.
- So make sure you know both methods.
Actually, there are four types of patterns used for inter-service communication, read from here
- Remote Procedure Invocation – use an RPI-based protocol for inter-service communication
- Messaging – use asynchronous messaging for inter-service communication
- Domain-specific protocol – use a domain-specific protocol
- Idempotent Consumer – ensure that message consumers can cope with being invoked multiple times with the same message
What are the differences between async and sync inter-service communication?
Refer above section
How are your services doing service discovery?
It depends, on what platforms and techs you are using to run your microservices infra. You need to know which you have used and the concept behind service discovery (DNS).
- Service Discovery in a Microservices Architecture – NGINX
- Service registry pattern (microservices.io)
- Service Discovery – Amazon Elastic Container Service
- Services, Load Balancing, and Networking | Kubernetes
- Service discovery and DNS | Kubernetes Engine Documentation | Google Cloud
- Spring Cloud Kubernetes
Which platform you have used for microservice orchestration?
Tell me about yours, and you should know that platform 🙂
- AWS ECS Farget
- AWS EKS
- Your own K8S
What is a service mess?
Do you know about event sourcing? What are the key benefits and when and how to use event sourcing?
How you will manage transactions across microservices?
By creating transaction two-phase commits and Saga
What is a two-phase commit?
Why one should avoid two-phase commits in microservices architecture?
Refer to the above 2 and read Patterns for distributed transactions within a microservices architecture | Red Hat Developer
How you will design security in Microservice-based SaaS on the public cloud?
There are many fronts of security, if you have a LinkedIn learning account then do the following training. Securing microservices (linkedin.com)
You can also read cloud security best practices of Azure Security best practices and patterns – Microsoft Azure | Microsoft Docs
Tell me about some API design best practices.
This documentation is clean, simple, and almost complete Web API design best practices – Azure Architecture Center | Microsoft Docs
What is API governance? How do you do API governance?
What tool you are comfortable with for designing and documenting API?
The expected answer is Swagger and you should know how to use it with the Spring framework now known as OpenApi. API Documentation & Design Tools for Teams | Swagger
Explain to me the SOLID principles
Everyone should know this.
Composition, which you will prefer and why?
What is the Spring framework?
What is Springboot? Difference between Springboot and Spring?
Springboot with an embedded Application server, deployable as a single fat jar. Comes with several auto configurations. Suitable for containers and process-based scaling. Read more here Spring Boot
List out some key and important Spring libraries.
All are listed here Spring | Projects
What are spring security, Spring batch, Spring actuator, and spring cloud?
Read from the link given above
Design a typical Spring REST application, list out the arrangement of packages
Check out one of the spring sample project url-shortener-msa/token-service at dev · sheelprabhakar/url-shortener-msa (github.com)
What’s the difference between OLAP and OLTP?
Online analytical processing (OLAP) and online transaction processing (OLTP) are two types of data processing systems that help businesses store and analyze their data. They have different purposes and characteristics. OLAP systems collect and aggregate data from various sources, such as websites, applications, smart meters, and internal systems. They allow users to perform multidimensional analysis on the data, such as slicing, dicing, drilling, and pivoting. OLAP systems are designed for complex queries and analytical reports. OLTP systems store and update transactional data in a consistent and efficient manner. They handle high volumes of transactions, such as orders, payments, reservations, and inventory updates. OLTP systems are designed for fast and reliable operations.
What are the key differences between RDBMS and NoSQL?
How you will make a decision to choose between RDBMS and NoSQL.
Well explained in a youtube video in this post CodeKarle: Choosing the best Database in a System Design Interview
Tell me about Cassandra, what are the key features of Cassandra? Explain the architecture and working of Cassandra.
Difference between Cassandra, MongoDB, and ElasticSearch?
Google it and try to find out
How you will design the Cassandra cluster spread across regions in a public cloud?
Explain the uses of more than one master replication in a relational database.
Multi-master replication is supported by many leading RDMS. There are advantages and disadvantages as it’s against the RDBMS principle. So you need to do proper study about this topic.
This will be asked in Banks and Fintechs.
Readout Oracle documentation Master Replication Concepts and Architecture (oracle.com)
You can do this using a virtual box and Ubuntu To do hands-on practice follow this How To Configure MySQL Group Replication on Ubuntu 16.04 | DigitalOcean
Explain the uses of Read-only replication in the relational databases
These are simple things, find out by yourself.
How to use write/read and read-only Datasource for a relational database in Spring application?
What is database sharding? What are the ways to shard databases? Its advantages and disadvantages?
Database sharding is a type of horizontal partitioning that splits large databases into smaller components, which are faster and easier to manage. A shard is an individual partition that exists on separate database server instance to spread load. Auto sharding or data sharding is needed when a dataset is too big to be stored in a single database.
As both the database size and number of transactions increase, so does the response time for querying the database. Costs associated with maintaining a huge database can also skyrocket due to the number and quality of computers you need to manage your workload. Data shards, on the other hand, have fewer hardware and software requirements and can be managed on less expensive servers.What is database sharding? | Microsoft Azure
Oracle’s sharding overview is a good place to learn Oracle Sharding Overview
What is database partitioning?
Partitioning is powerful functionality that allows tables, indexes, and index-organized tables to be subdivided into smaller pieces, enabling these database objects to be managed and accessed at a finer level of granularity.Partitioning Overview (oracle.com)
You can refer to these two documentations or can learn from any other database vendor’s documentation.
Postgres is another great open-source and free option with inbuilt support for partitioning. Much larger enterprise using Postgres enterprise edition. PostgreSQL: Documentation: 10: 5.10. Table Partitioning
What is the difference between database partitioning and sharding?
Database partitioning is dividing database table(s) and other objects into one or more physical partitions on single or multiple servers in a generic way. This method is used to achieve performance and scale database servers.
Database Sharding is used to divide the database table and other objects based on one key known as the shard key. Generally in sharding, we use multiple servers to create a database, and each node is known as a shard. In sharding data is stored together in the same server based on the shard key.
For Example, sharding can be used to achieve multi-tenancy where the data of one tenant is stored in one shard.
Both Sharding and partitioning are used in RDBMS and NoSQL databases.
For further info, you can refer mysql – Database sharding vs partitioning – Stack Overflow
What is ElasticSearch Hot-Warm-Cold Architecture?
Have you used the message queue? Can you tell which one you have used?
You should know the one you have used, or just learn which you want to use. There are many.
- Apache Kafka
- Amazon SQS | Message Queuing Service | AWS
- ActiveMQ (apache.org)
- Messaging that just works — RabbitMQ
- Pub/Sub for Application & Data Integration | Google Cloud
Rabbit, Kafka, and SQS are mostly used.
How to handle scaling problems in the message queue?
How you will implement integration in microservices when several replicas of a single service are running?
Use Fanout pattern to replicate notifications on each node. Application integration patterns for microservices: Fan-out strategies | AWS Compute Blog (amazon.com)
Explain Kafka architecture and key uses and benefits
Tell me the difference between Kafka and other message brokers.
Message brokers are topic-based public and subscribe platforms and they support an array of protocols and all of them are push-based except Kafka.
Kafka is a pull-based broker with persistent support that can be used as storage(very for for event stores). Messages can be replayed using consumers. It also supports the partitioning of topics to provide horizontal scaling. It also has many open-source and enterprise connectors, you can almost use any data source as a source and sync.
How you will design a Kafka cluster spread across the region?
What are the different caching middlewares you have used?
There are two types of server-side cache available in-process cache and distributed cache. Both types support in-memory caching optionally with persistence support.
memcached – a distributed memory object caching system is a simple key/value store
Redis is really a heavy weight loaded with many features
How Redis cache is different from others?
To get a good understanding check this Redis vs. Memcached | AWS (amazon.com)
What is a time-series database, Give an example of time series data-based system.
Time-series database is a database system that is optimized to store and operate more efficiently based on timestamp keys. This provides a greater ability to measure changes in events based on time or series of times.
Stock Market is the best example of a use case for a time-series database.
Application log monitoring systems can also befall in this category or any system which changes are supposed to measure based on time is a good use case of time series database.
Apache Druid is one of the most powerful, Modern, build-for-cloud, and open-source time-series databases with a lot of connectivity options.
eXtremeDB and InfluxDb are other powerful commercial time-series databases.
TimeScale is another relation kind of time series database based on Postgres RDBMS. This database is built for a massive scale and used by one of the leading Indian stock trading platforms Zerodha, Walmart, Apple, etc.
Prometheus is another open-source time-series database used for matrix and insights, used by many large cloud service infra and operation monitoring services.
What is cloud computing? What are the differences between IaaS, PaaS, and SaaS? What is a hybrid cloud?
I don’t see any reason to write an answer to this question here and now really being asked in interviews, but one should know the differences between these.
But I will recommend one document to get a clear and better understanding. One should check out this. It has all three IaaS, PaaS, SaaS.
What are the types of cloud deployment models available?
Currently, four types of cloud deployment models are available.
Read Cloud Computing Deployment Models – Types & Comparison (rishabhsoft.com), explained in a great way.
Tell me about the disadvantages/drawbacks of the public cloud.
The major drawback of using the public cloud is the lack of control and security of your data and services. In the case of any government compliance, it is difficult to use the public cloud. There can be many but control (scaling, billing, change to another, operations, etc), security, compliance, and privacy is the most challenging.
What is serverless computing?
Serverless computing means executing code, managing data, and integration without managing servers. The server is still used but they are managed by a provider. Cloud providers take care of everything like provisioning, scaling, HA, etc and they charge on the basis of the use of resources.
Examples: AWS Lambda, ECS Forget Serverless, Aurora Serverless, SQS, SNS, etc.
What are the disadvantages of serverless services provided by cloud providers?
There are many benefits of Serverless architecture but there are some drawbacks also.
- Dependency on vendor
- Dependency on Underlaying platforms like AWS aurora underlaying Mysql or Postgres version
What is managed service?
Managed cloud services are services that offer partial or complete management of a client’s cloud resources or infrastructure. Management responsibilities can include migration, configuration, optimization, security, and maintenance.Managed Cloud Services: Pros and Cons – Cloudian
How you will choose between Serverless, managed, and self-managed services?
It depends upon the requirement and how he wants to operate his services. Based on the required services, and platforms one can compare all pros and cons of all three and make his decision.
Tell me about VPC( Virtual private cloud ), what are the building blocks of a VPC?
As the name suggests, VPC is a private network in a public cloud. It can be made of a no of public and private subnets across availability zones. This provides isolation from other organizational resources.
Tell me the difference between public and private subnets.
The main difference between private and public subnets is the route for 0.0.0.0/0 in the associated route table.
A public subnet routes 0.0.0.0/0 through an Internet Gateway (IGW). Instances in a public subnet require public IPs to talk to the internet.
A private subnet sets that route to a NAT instance. Private subnet instances only need a private IP and internet traffic is routed through the NAT in the public subnet. You could also have no route to 0.0.0.0/0 to make it a truly private subnet with no internet access in or out.
The warning appears even for private subnets, but the instance is only accessible inside your VPC.
How to deploy multi-region Active-active service?
What are the services you have used in AWS/GCP/Azure?
Make your own list and tell that to the interviewer.
How to deploy microservices? What are the options available to deploy microservices in AWS/GCP/Azure?
For deploying microservices containers are the most used options but you can deploy using other options also. There are the following patterns for deploying services, one can choose one or a mix of any of the four for a larger system:
- Multiple service instances per host
- Single service instance per host
- Service instance per VM
- Service instance per Container
In AWS one can User AWS ECS Farget, EKS, Lambda, and self-managed K8s cluster or self-managed EC2 cluster to deploy microservices. One can also use Docker Storm as an orchestrion for Microservices.
These kinds of options are available with all cloud providers, specially K8S managed and serverless options are widely available to deploy microservices.
How you will secure your microservice in the public cloud?
I will recommend doing the following training to understand microservices security. You can learn from other sources also.
Explain the architecture of K8S.
Tell me about the Docker container
Read Docker documentation, Docker overview | Docker Documentation
How you will create a CI/CD pipeline for cloud-native service, and explain all the best practices you follow.
Managment & Leadership Round(s)
Again this round will start with introductions and the interviewer will ask about your current role & responsibilities and projects. In this round also you may need to explain the design of your current project or even if this is the hiring manager round then he can ask any technical question including system design.
Here are some management and leadership questions asked in these rounds.
Tell me about your team and organization structure?
As an engineering manager/leader how you will start the development of a new SaaS project?
As an Engineering Manager/Leader can you tell me what are key challenges in the development of big multi Tenant SaaS?
How you will handle/fix issues in production?
How do you do logging and how logs can be used?
Explain the complete development process you follow in your company
How you will control the quality of your project?
Tell me about all the automation tools you and your team using?
What are the DevOps tools you are using to develop cloud-native SaaS?
What is your project’s release cycle?
Which development methodology do you follow, are you familiar with agile development?
What you will do to achieve your project delivery if your management asked to prepone its schedule without increasing the budget?
How you will identify and manage all stakeholders of the SaaS products?
How you will manage the technology dept in your project?
Tell me about KPI’s you follow for your project development.
How you will measure your project is successful?
What are your thought processes behind hiring? What are some key things you will look into candidates?
How does your typical day look like?
How do you manage your and others’ time?
How you will manage low performers?
How you will manage a high performer?
How you will manage conflict between 2 high performers?
Tell me a situation when you solved a really tough technical issue.
Have you ever been confronted with your boss or higher management?
Have you fired anyone from your team? What do you think about layoffs?
Tell me about your leadership style?
How do you keep yourself updated with the latest tech stacks
What kind of deployment model do you follow in your project? Explain to me Green Blue deployment? How to handle DB changes in Green blue deployments? When you don’t suggest doing blue-green deployment?
How do you plan disaster recovery of a public cloud service?
For any Microservice related question, I will recommend reading articles listed at the following locations