This post is for the Job seekers in cloud-native SaaS development roles of Engineering and Architect titles, nowadays patterns and interview questions are common till senior engineering leadership and architects roles for most of the 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 Job hunt in India.
Make 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, 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 platform, 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 very important 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 Jobs?
Jobs | LinkedIn, Opportunities – Instahyre and Jobs – Recruitment – Job Search – Employment – Job Vacancies – Naukri.com are sufficient to search 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 for LinkedIn premium it’s free for 1-3 months, it will give you better job recommendations, insights, and free InMail to directly send email 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, 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 workong, 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 recruiter is not telling about their recruitment process then ask them explicitely like how many round are there, how many coding, design rounds, how many managerial rounds and any otherthings he want to tell. This will help you to prepare you in advance.
General Interview Process Now Days
It starts with a recruiter will call you and try to get basic information regarding your current company, role & responsibilities, skillsets, compensation, expected compensation, and 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 of the companies has 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 Whatsup 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 Preperation
If you are looking for a Software Engineer, an Engineering leadership (Director/VP of Engineering), or 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 might he will tell you about his also. I will suggest phrase out a good introduction aligned with a current role with impact statements. Try to add like 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, 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 on 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. You should start with 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, 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 backend we used Spring boot and Python, for datastore we used AWS aurora with multi-region replication and AWS Cassandra global tables. For the frontend we used Angular.
We used 12-factor app principles to develop and deploy these services fully automated testing and deployment pipelines.
This service reduces 70% onboarding time and reduced 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 round of your interview except pure coding rounds.
As an Engineering leader/Architects, 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 solved them easily but you should know those challenges.
Here is a list of some key challenges
- Identification of all stake holders
- Finalizing a functional requirements and signoff from all stake holder
- Createting delivery milestones
- Selecting and developing correct cloud infrstructure architecture, cloud patterns, styles which can fullfill all FR and NFR(s). As we are going to use public cloud, security will be most challanding NFR. Finalize high lable design
- Selecting correct development methodlogy (waterfall, prototype, agile or hybrid)
- Selecting currect technlogy stacks to develop services which are most suitale to develop all FR and NFR
- Building development team(s) and seeting up Devops team and pipeline since start, automation for testing and quality control
- In Case of agile development prioritization of task is most challanging and impotant aspect to manage
- Contineous delivery and deployment is also very challanging in case of new service development
- Finally setting up operation and suport 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 Drawback section of Microservice Architecture pattern (microservices.io)
Read Challenges section of Microservice architecture style – Azure Application Architecture Guide | Microsoft Docs
What are 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 broke(SQS, Rabbit MQ, Kafka etc) by the use of Topics.
- Sync communication is done via calling 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, 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 about yours, and you should know that platform 🙂
- AWS ECS Farget
- AWS EKS
- Your own K8S
What is a services 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 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 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 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 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 virtual box and ubuntu To do hands-on practice follow this How To Configure MySQL Group Replication on Ubuntu 16.04 | DigitalOcean
Explain uses of Readonly 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 the 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 data of one tenant is stored into 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 replay 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 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 are 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?
Timeseries 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 time.
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 opensource time-series database 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 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, SaaS? What is a hybrid cloud?
I don’t see any reason to write an answer to this question here and now really been 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, privacy is 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
- Dependancy on Underlaying platform 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 required services, 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 organization 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 mix of any of 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 micro services.
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, explain all 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