Tuesday, May 26, 2020

40+ Best Microservices Interview Questions To Get Hired With - Algrim.co

40+ Best Microservices Interview Questions To Get Hired With - Algrim.co The use of microservices is gaining in popularity when you think about advanced technology-driven products and services. As the need for uptime and advanced features continues to expand, engineers are relying more on microservices. In a nutshell, microservices allows engineers to think about specific features and functionality for a set scope of code, all of which other engineers can work on, improve and deploy. Meanwhile, not affecting other parts of the product or feature set which might be being used at that very time. It gives some degree of clarity to the engineering and also allows teams to address one specific part of their product for which they want to improve at that moment or in their agile planning. Usually, microservices allow code to be very lightweight. They are a series of features all working for each other, doing specific tasks. This means that code can be significantly less lines because it is really only trying to solve one part of the equation versus trying to ensure all parts of the connectivity of the application are occurring. Below are the best microservices interview questions and answers I could think of. As you go through these questions, please know that these are mock questions for advanced microservices engineers. If you are applying for a distributed systems position, these interview questions will still apply to you. I would brush yourself up on microservices before applying for a distributed systems position. For the most part, these methodologies are very similar. That is specifically, microservices and distributed systems. You should always try to answer interview questions with your own words. Spend time with a friend to go through them and attempt to find your own confident answers to each question. Then, you'll be prepared for your next technical job interview! Good luck. Before we begin, you might want to watch this clip introducing microservices by Boris Scholl. I found it very helpful to see some of the benefits of microservices covered in this clip. I think this could be very helpful for you as you start your employment path. Microservices Interview Questions Table of Contents 1. How would you describe what microservices are? 2. What are some of the main differences between microservices and monolith (SOA) application structures? 3. Tell me what some of the elements of microservices is. 4. Tell me in your own words, some of the ways you’d describe how a microservice works.br/> 5. Can you tell me what the spring cloud is. 6. What are some of the problems Spring Cloud is trying to solve? 7. What is the spring boot? 8. Tell me what containers are and why they are often used in Micro-service architectures? 9. What is Docker and how it is used along with microservices? 10. What are the core engineering uses of Docker? 11. What are the various types of tests you might run on an application that is built using microservices? 12. Tell me what some of the main advantages to microservices is. 13. Tell me what some of the disadvantages of microservices are to you. 14. What are the challenges faced while using microservices? 15. Tell me what client certificates are as it relates to microservices. 16. What is the general intent behind PACT when it comes to a micro-service type of architecture? 17. What is OAuth? 18. What is Conway’s Law? 19. Can you tell me what Contract Testing is and how it relates to microservices? 20. What is end-to-end testing as it relates to microservices? 21. What is the meaning or value of semantic monitoring within the microservices architecture? 22. Can you tell me what the CDC is. 23. Can you tell me what some of the Reactive Extensions are in microservices. 24. What does the term “Continous Monitoring” mean and why is it important to microservices? 25. How is it possible to monitor several microservices for different indicators such as Health? 26. What does service registration and discovery mean? And how is it implemented when it comes to spring cloud? 27. What does it take to achieve Server side load balancing with the use of Spring Cloud? 28. What is Eureka and why is it important to the development of microservices? 29. How do independent microservices communicate with one another? 30. How would you describe what DRY is in a microservices architecture? 31. What is the importance of Restful APIs when it comes to microservices? 32. Would you want to create state machines between microservices? 33. What is the role of the architect or engineer when it comes to Micro-service Architecture? 34. What is Canary releasing? 35. Can you please tell me what continuous integration means? 36. What is the difference between Stub and Mock conditions while in the development environments? 37. What Netflix projects are great to use for microservices? 38. How do you setup Service Discovery for microservices? 39. How would an engineer try to eliminate non-determinism in unit tests? 40. Can you tell me what Bounded Text is and how it relates to microservices? 41. Tell me what two-factor authentication is and why it’s important. 1. How would you describe what microservices are? Microservices or microservice architecture is an architectural style that is used in the software development of large systems. It builds the application as a group of independent services around a business domain. To understand this, you need to think about bees and how they make their honeycombs. Bees build combs by arranging hexagonal wax cells; they begin with a small part using gathered materials and build up into the large beehives that we harvest honey from. The systematic arrangement of these cells creates a definite pattern which in turn makes a strong foundation which holds the hive together and prevents it from collapsing. The theory behind this is that each wax cell is independent of the other yet is also related to the other independent cells. This is an ingenious structure because it means that when one cell is damaged the other cells remain perfectly fine; that way, the bees can repair the damaged cells without having to tear down to the entire beehive. Microservices are, therefore, an architectural plan that contains many small services where a single micro-service is restricted to one business application. Together, these microservices form a more complex application that meets the business needs as a whole. We can take the example of an online shop; it has separate microservices for different parts such as order-processing, shopping carts, user-accounts, and order processing. These are parts that are essential for an extensive online shopping website, and thanks to the microstructure, when one piece is not working the rest will still function as normal which makes it easier for employees to fix without having to take down the entire website. Therefore, if the product-catalog is not working, you can still track your order. 2. What are some of the main differences between microservices and monolith (SOA) application structures? A monolith is like the direct opposite of the microservices structure; all the elements are dependent of each other and so if one fails all of them fail. Below is a diagram of the monolith structure using the example of an online shop. All the collaborating elements combine into one application. Unfortunately, such a structure is not as sturdy because if one part of the shop fails, then all of it fails and it would have to be temporarily shut down to fix the part. This is not the case with a micro-service structure; the online shop can be fixed without having to shut down the site. 3. Tell me what some of the elements of microservices is. Decoupling- the services within a given system are highly decoupled meaning that the application as an entity can be built, scaled, and altered easily without affecting other services. Componentization- one of the largest benefits to microservices is that they are treated as independent elements. This means they can be updated rapidly and with ease. Capabilities- microservices are simple because they focus on one ability each. Delivery- microservices allow the regular releases of software through planned automatic deployments, utilizing testing and approval criteria. Autonomy- developers and teams can build independently off of each other meaning that the process is done quickly. Responsibility- microservices are personal; they choose to treat applications as products that they are responsible for rather than projects. Decentralized Governance- when working with microservices the aim is to focus on the right tool for the right job. This means that there is no technological or standardized pattern; developers are therefore free to choose the best tools to solve their problems. Agility- microservices support agile development much easier than other application structures, which allows new features to be developed and deployed quickly and easily. 4. Tell me in your own words, some of the ways you’d describe how a microservice works. The architecture of a micro-service has components as follows: Clients- clients are users from different platforms using different devices to send requests. Identity Providers- the providers are the engineers who authenticate the clients’ identities and issue out security tokens for each identity. API Gateway- this is where client requests are handled. Static Content- this is storage or a place for all the assets or static assets. Management- this balances the node services and identifies any potential failures in the system. Service Discovery- this is a tool that essentially acts as a guide, linking the communication between microservices. Content Delivery Networks- also known as “CDN’s”, this is the distributed network of servers that deliver data requested by a micro-service potentially. Remote Service- this mostly enables the remote access to be able to get onto the network. 5. Can you tell me what the spring cloud is. Spring cloud is the building blocks of micro-service structures and Cloud. It is the operational and engineering infrastructure microservices use for Service Discovery, a Configuration server, and Monitoring. Spring could also offer many other open source projects such as Netflix. Spring cloud uses Spring Boot style starters; many use-cases are supported by it including Cloud Integration, Dynamic Reconfiguration, Service Discovery, Security, and Client-side Load Balancing just to mention a few. @EnableEurekaServer is the annotation that allows people to register microservices to the spring cloud while the @EnableDiscoveryClient annotation is the gateway for clients to query Discovery server to find microservices. 6. What are some of the problems Spring Cloud is trying to solve? Developing distributed microservices using spring cloud solves some problems such as: Reduces performance issues- using spring cloud allows the use of various operational overheads which in turn reduces performance issues. Complexity linked with distributed systems- thing such as latency, bandwidth issues, security issues and overall capacity. Load balancing- spring cloud improves the sharing of system or application workload among various computing resources like network links and central processing units. Service Discovery- service discovery allows application processes and services to operate within a cluster, thus being able to find each other and communicate. Solved redundancy issues- these are common in distributed systems. 7. What is the spring boot? This is a ready production-grade framework that is currently being developed and kept by Pivotal Inc. as a Spring-based application. It is used to create applications that stand alone, and the servers will be inside the runtime dependency libraries in embedded servers because they will be inserted. Management of the data source connections will be easier because it will use single configuration files that can connect to any type of database with ease. This can be made possible with the use of the started project by using Project Build tools such as Maven or Gradle. 8. Tell me what containers are and why they are often used in Micro-service architectures? Containers are defined in micro-service terms as the packaging of all the components that are required into a single package to make it independent of all other parts or operating systems by virtualizing its runtime environment. Containers are used with microservices because they help to make them loosely coupled and readily available; they make the microservices also easy to deploy and maintain. A container helps the application to speed up in a short time; the Windows Container contains Hyper-V container which functions in such a way that the host container is not linked or shared with the Hyper-V containers. 9. What is Docker and how it is used along with microservices? Docker which is also known as the process of containerization that makes the process of operating system level as virtualization. It is a computer program that is used to package and run the containers. After the containers are packaged, they will sit on top of the Docker; afterward, all the containers will run via a single OS kernel. The result of this is lightweight than the existing virtual machine level operating system processes. The Docker contains a daemon that is the manager of containers in the Docker. Docker has high-level APIs (Application Programming Interfaces) for exposing lightweight APIs to be used will be able to run the isolated processes. 10. What are the core engineering uses of Docker? There are many different applications of Docker including: It allows easier and simpler configurations of the server and ops setup. It offers productive and practical development methods. It has the advantage of continuous monitoring of the service (for downtime or other). It ensures that there is continuous and smooth deployment. It offers the rapid prototyping and ease of development. It has consolidated server features, making a robust package. It is very easy to manage and overall a well designer application. 11. What are the various types of tests you might run on an application that is built using microservices? When you are working with microservices, testing is inevitable and complex because there are many microservices trying to solve a part of the holistic problem, all needing to work together. Because of this, each one needs to be tested on different levels; three different levels to be precise. They are as follows: Bottom level- here there are technology0 facing tests such as performance tests and unit tests. These tests are fully and easily automated. Middle level- on this level there are tests for exploratory testing such as usability tests and stress tests. Top level- on the highest level is the acceptance tests which are fewer in number as compared to the other two levels. The acceptance criteria and tests help the engineering teams to understand and verify software features as working and functional. 12. Tell me what some of the main advantages to microservices is. There are several significant advantages of microservices such as: It allows you the freedom to use different technologies instead of limiting you to just one or two. This is because microservices can easily mix with other databases and libraries with ease. Because each micro-service focuses on a single capability, should it fail, it will not bring down the whole system. The micro-service will be fixed without interrupting the others. Microservices has a smaller code base which makes it easy to maintain. It provides better support for a small team to manage more. As we have established it also supports individual deployable units. It encourages regular software releases. It provides core security as each of the microservices is independent. Through it, several services can be developed parallel to each other and deployed as such. It reduces overall development time. Generally speaking, scalable and reliable. More flexible and easy to develop within a shorter time frame. Often times, less code. 13. Tell me what some of the disadvantages of microservices are to you. Microservices, however great is not perfect. They are subject to flaws as listed below: Unfortunately, the use of microservices increases troubleshooting challenges. It also becomes tough to achieve a stiff consistency across services. Due to remote calls, there is an increase in delay. In turn, there is also an increased effort for configuration and other necessary operations. It becomes challenging to manage transaction safety; this is a crippling disadvantage. Moreover, it becomes challenging to track data across different boundaries. It is also hard to code between services. 14. What are the challenges faced while using microservices? Using microservices has its challenges just like using monolith and SAO. The problems you will come across include: Using this type of architecture means that you need to ready for operations overhead. Also, for heterogeneously distributed microservices you will require the help of professionals to support it. It is a heavily involved model because its features are distributed. There is always a big need for an end to end testing. A distributed system makes it hard to debug and trace the issues. Required cultural changes in across teams like Dev and Ops working together even in the same team. 15. Tell me what client certificates are as it relates to microservices. These are digital certificates or signatures created by a server or computer. They are utilized by client or an engineers system for making secure and authenticated requests to a remote server. These play a significant role when it comes to mutual authentication designs and they give strong assurance to the identity of the requester. 16. What is the general intent behind PACT when it comes to a micro-service type of architecture? PACT refers to an open source tool which allows for testing interactions between the server and client in an isolated environment (staging environment). Integration may increase in its levels of reliability. It can be used to test the consumer driven contracts. It may also be used to implement consumer Driven Contract within microservices. 17. What is OAuth? OAuth stands for open authorization protocol. This would allow for the access of resources for the resource owner through providing client applications on the HTTP services such as the third party providers, GitHub and Facebook. With this feature it is possible to share the user information stored on one site with another site (usually yours) without having to ask the user for new credentials. 18. What is Conway’s Law? It states that an organization, which designs a system may produce a design whose structure is a copy of communication structure of the firm. The regulation conveys the fact in order for the software module to adequately function, the complete team needs to be in communication as well. That means the structure of the system is reflective of the social boundaries of the organization, which came up with it. 19. Can you tell me what Contract Testing is and how it relates to microservices? A contract test, according to Martin Flower, is a test at the end of the external service that verifies if it meets the contract as expected by the service. A contract test usually doesn’t test on the user behavior of the servic. It tests the inputs and outputs of the service calls within the required attributes and the response latency which throughout is within the allowed limits. 20. What is end-to-end testing as it relates to microservices? End-to-end testing validates each process (usually a user process) within the workflow as to whether it is functioning in the right manner. This type of testing makes sure the system works together as a whole (a holistic test) and thus satisfies all of the requirements set forth by the engineer and ultimately the end user. 21. What is the meaning or value of semantic monitoring within the microservices architecture? Semantic monitoring combines automated tests with the operational monitoring of the application. It also allows one to find the reasons why the business is not attaining more profits than before. 22. Can you tell me what the CDC is. The term CDC stands for a consumer driven contract. It is a pattern for the developing microservices such that the external systems may utilize them. 23. Can you tell me what some of the Reactive Extensions are in microservices. The Reactive Extensions, which is also known as Rx, is a design pattern. It allows for the collection of results by calling different microservices and then compiling the response. Rx works great with distributed systems that work in an exact manner. 24. What does the term “Continous Monitoring” mean and why is it important to microservices? Continuous monitoring is one of the means used for searching for issues or risks to the system as a whole. It is the process for which engineers can ensure that all systems are functioning as expected. 25. How is it possible to monitor several microservices for different indicators such as Health? Spring Boost gives actuator end points to monitor the different metrics for the individual microservices. These endpoints become significant towards getting information concerning applications such as if they are up and if their components like database are working in the appropriate manner. One of the difficulties though concerning actuator end points is there would be a need to individually hit the end points for the applications in order to know their health or status. Imagine microservices entailing 50 applications so the admin would have to hit the actuator end-points for all of the 50 applications. To deal with this, there will be an open source project, which is located at Built on top of Spring Boot Actuator. It provides a web UI in order to allow for the visualization of metrics of different applications. 26. What does service registration and discovery mean? And how is it implemented when it comes to spring cloud? When you start a project, there are probably configurations in the properties file available. As more of the services are developed and deployed, the adding and modification of these properties gets more and more complex. There are services, which may go down, and others may change. this manual changing of the properties may also lead to issues. In this case, Eureka Service Registration and Discovery assists in these scenarios. as the services are registered to the Eureka serer and lookup done by calling the Eureka Server, any of the changes within the service stations does not need to be handled and is taken care of. 27. What does it take to achieve Server side load balancing with the use of Spring Cloud? Server side load balancing may be achieved using Netflix Zuul. Zuul in this case is a JVM based router and server side load balancing by Netflix. It gives single entry to the system that allows the browser, mobile application or other user interfaces to consume the services from different hosts without having to manage cross origin resource sharing or (CORS) and the authentication for one. It is possible to integrate Zuul with some of the other Netflix projects such as Hystric for the purposes of fault tolerance and Eureka for self-discovery or utilize it in order to manage routing the rules, filters and the load balancing across the system. 28. What is Eureka and why is it important to the development of microservices? Eureka refers to a Netflix Service Discovery Server. Eureka Server utilizes Spring Cloud, which is a great example of the benefits to microservices. 29. How do independent microservices communicate with one another? This is dependent on the needs of your project. Though a lot of the time, the developers may utilize HTTP/ REST with JSON or Binary protocol. On the other hand, they can utilize any of the communication protocols to do so. 30. How would you describe what DRY is in a microservices architecture? DRY is an engineering term that stands for ‘Don’t Repeat Yourself’. It encourages the engineering theory or concept that by reusing code, systems don’t become bloated. This can result in the development and sharing of libraries or code snippets, which would then results in lightweight applications that can scale. 31. What is the importance of Restful APIs when it comes to microservices? A micro-service architecture is based on the engineering core concept that by all of the available microservices are able to work and communicate to each other in order to build the holistic or core functionality. To achieve this, each of the microservices has to have a way to interface with eachother. This is why an API is important to enable the microservices. 32. Would you want to create state machines between microservices? Each Micro-service should be able to own its own database as an independent and deployable application. This allows for the creation of a state machine in the process. Yes, it is definitely possible to specify the various states and application events for a particular function the micro-service provides. It is possible to define an order of which the microservices are executed. An order may have different states as part of that definition. The order states can then be independent events within the order micro-service, if the engineering is in need of that. 33. What is the role of the architect or engineer when it comes to Micro-service Architecture? The architect within microservices does the following: They assist in deciding the zoning or the placement of the components. By doing so, they make certain those components are cohesive. They decide the technology roadmaps and outlines of the overall system. They code with developers and learn what programmatic challenges are causing a slowdown for the team. They make recommendations for tools and technologies to the team, which are continuously building the microservices forward. They give technical governance so the teams within their development would follow the Micro-service principles. 34. What is Canary releasing? This is an approach to reduce the risk of introducing new software versions within the process of production. This is done through slowly rolling out changes to small subsets of users before it is given out to the infrastructure thus making it available to every individual. 35. Can you please tell me what continuous integration means? Continuous integration refers to the engineering process of automating a build of an application and the testing of code each time a engineering team member commits changes to their repository. This type of a workflow encourages engineers to think about the sharing of their code and unit tests by merging the changes into a shared version control system. Once that is done the application is usually released to a master branch. 36. What is the difference between Stub and Mock conditions while in the development environments? Stub Provides fixed behavior under the right condition. Provides a dummy object which assists in the running of a test. Any other behavior of the stub is never tested In an example, for an empty stack it is possible to create a stub which just returns true for empty () method. This is a dummy object in which particular properties are initially set: The behavior of this object would be dependent on the set properties The behavior of the object may also be tested. You can set the age of a user as 12 and then test for isAdult() method which will either return true for the age that is greater than 18. The Mock Customer object would work for specified conditions. 37. What Netflix projects are great to use for microservices? Eureka created by Netflix is the Netflix Service Discover. Netflix Ribbon. It gives different algorithms for client-side load balancing, which is helpful in assisting with your scale plan. Spring provides smart RestTemplate for service discovery and load balancing through the use of @loadbalanced annotation. 38. How do you setup Service Discovery for microservices? Spring Cloud support allows a number of ways to implement service discovery. The most popular though entails the use of Eureka. Spring Cloud would provide several annotations to make it easy to use and hide the majority of the complexities. 39. How would an engineer try to eliminate non-determinism in unit tests? The non-deterministic tests are those, which are not reliable. So it could happen that they pass and sometimes they may fail. When they fail as well, they are made to rerun in order to pass. The following are some of the means by which to remove non determinism within tests: Isolation Time Resource leaks Remote Asynchronous Quarantine 40. Can you tell me what Bounded Text is and how it relates to microservices? Bounded context refers to a central coding practice or pattern within Domain driven design. It is the focus of the DDD strategic design section, which concerns dealing with large models and teams. DDD handles the larger models by dividing them into bounded contexts and then ensuring that their relationships are clearly defined. 41. Tell me what two-factor authentication is and why it’s important. Two-factor authentication allows for two levels of verification to an account during a login process. Most recently we’ve seen two factor authentication have a cell phone check, where a user is asked to receive an SMS or text message and they are given a numeric code they put into the system. This then validates the users identity from a second layer of protection. Conclusion and Preparing for Microservice Interviews If you are still feeling underprepared to interview at a technology company that is utilizing distributed systems or microservices, there are a few ways to get a little more prepared. In particular, you can try to replicate an application that already exists, using microservices. Consider this an experimental project of yours that you can showcase during your interview. Usually, during your interview, you'll have the opportunity to share some previous work experience. And having that project is one way to make sure your future employer knows you are a fit for the position. It can be harder to come up with a new application idea and try to build towards that. So usually what I recommend is replicating something that's easy to understand and that the person interviewing you may already have used. Enthusiasm, confidence and the ability to go above and beyond is the way to truly set yourself up for success in your interview session.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.