0% found this document useful (0 votes)
6 views4 pages

Course Concepts - Backend

Uploaded by

Polaris Star
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views4 pages

Course Concepts - Backend

Uploaded by

Polaris Star
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Course Concepts - Backend

Project-Related
1. What does this specific piece of your code do?
2. How would your code be affected by a particular change request?
3. What's the process to add a certain feature to your code, and what's the estimated
time/cost in hours/days?
4. During live coding, demonstrate adding a specific feature to your code (only asked when
there's doubt about your coding skills).

Domain-Driven Design (DDD):

1. DDD: Name and explain some concepts and terminologies


2. When Would You Use DDD?
3. What Does the Term "Ubiquitous Language" Refer To?
4. In the first lesson, we used the example of an invoice in different contexts. What DDD
concept were we looking at?
5. What is the difference between a core domain, supporting domain, and a generic
domain? And how do you identify them?
6. What is a bounded context?
7. What is context mapping, and why do you need it?
8. Name a context mapping technique, and what would be the
advantage/disadvantage?
9. What do the terms open/host service, shared kernel, and published language tell
you, and what are the differences?
10. What is an anti-corruption layer, and when would you use it?
11. What is the difference between an anemic model vs. rich model? If you look at code,
how would you recognize a rich model?
12. What is a value object, entity, aggregate, and aggregate root?
13. How did you define your bounded contexts?
14. What is a domain event?
15. An entity has state and behavior? Explain.
16. An aggregate is a consistency boundary. Explain.
17. What characteristics did you take into account while defining your bounded contexts?
18. Why are bounded contexts a good choice to map your microservices architecture?
19. How does DDD facilitate collaboration between domain experts and developers?
20. Why is DDD a good fit for designing a microservices architecture?
21. What are the SOLID principles, and how do they relate to DDD and software design?
Can you provide examples of how SOLID principles apply to DDD?

Hexagonal Architecture:

1. Key Differences Between Hexagonal and Layered Architectures


2. Why would you use hexagonal architecture?
3. Where does the business logic go in a hexagonal architecture?
4. Where does the application logic go in a hexagonal architecture?
5. A JPA entity, where would you put that in your hexagonal architecture?
6. If I ask you to switch out a SQL-database call for a NoSQL-database call, what would
you need to change in your architecture?
7. What is the difference between the driving or the driven side?
8. What is the purpose of the in/out separation?
9. Difference between a port and adapter?
10. Where does a UseCase go, and what can it do?
11. Where is your transactional boundary or Unit of Work pattern implemented?
12. What’s the difference between a Query, UseCase, and Projection?
13. We did not use microservices from the getgo but started with a modular monolith,
giving us an opportunity to use the facade pattern and synchronous events
implemented by Spring Application Events. Explain?
14. `[Link]() == [Link]` - Is this a good approach in the
UseCase code? Why?
15. `[Link]([Link])` - Is this a good approach in the
UseCase code? Why?
16. Clean Architecture and hexagonal architecture. Elaborate.
17. SOLID - explain this concept with an hexagonal architecture in mind.

Messaging, Data, CQRS, Event Sourcing:

1. What is the difference between a command and an event?


2. How do you ensure data consistency and synchronization between microservices in
an asynchronous communication model?
3. Does an event need a reply?
4. Does a command need a reply?
5. What’s the danger of reacting to an event by sending a command? How to mitigate
this?
6. Why is it important to have an event/command catalog?
7. What is event sourcing, and what are its advantages and disadvantages?
8. When is a good time to create a snapshot, and are there different strategies?
9. What is a projection in this context? Give an example.
10. We have seen the ActivityWindow class in our Piggybank. Why did we use it?
11. What is CQRS? Why would you use this technique?
12. What is synchronous and asynchronous communication between microservices, and
what are the advantages and disadvantages of using one over the other?
13. What is an exchange in RabbitMQ, what is a topic, binding, queue, and are there
different kinds of exchanges?
14. What is the difference between at most once delivery, at least-once delivery, and
exactly once delivery, and what does RabbitMQ implement?
15. What are the typical scenarios where CQRS and Event Sourcing provide significant
benefits?
16. What is snapshotting, can you give an example and when is the good time to
snapshot? Or how do you decide to take a snapshot?
17. Event sourcing and projections: explain
Resilience:

1. What can go wrong when calling an external RESTful service, and how can you
mitigate this?
2. Can you explain the circuit breaker pattern? When to use it.
3. What is the rate limiter pattern? When to use it.
4. What is the bulkhead pattern? When to use it.
5. What is the time limiter pattern? When to use it.
6. Can you cache service calls or calls to other microservices? How this this work?
7. We’ve discussed resilience4j during our lessons, why did we touch this?
8. What techniques can be used to handle cascading failures in a microservices
architecture
9. Can we monitor and measure the effectiveness of our resilience patterns in a
production environment?

Security:

1. What would be the resource server in your application?


2. What would the resource server be responsible for?
3. What is the difference between an access token, a refresh token, and an ID token?
4. What is an authorization flow, and can you name one or two examples?
5. What is an IDP, and why is it a good idea to use one?
6. What is an authorization server?
7. How long would you set the TTL of an access token and why?
8. What is the refresh token used for?
9. Do we exchange an ID token with the backend? Why or why not?
10. Why is the password flow the less secure authorization flow?
11. Why did we define that we work STATELESS (session policy) in the backend
security filter chain?
12. If we implemented authorization and authentication is our application safe? Why
(not)?
13. We touched OWASP in our lecture, what was this about in what context?

Testing:

1. Is testing important, and why or why not?


2. Can you test your architecture? Why would I do this?
3. Can you name a couple of tests?
4. Is there a way to run an integration test on a real RabbitMQ, without kickstarting a
RabbitMQ on your machine or testnode seperatly?
5. What is the difference between a stub, mock, captor and a spy? When would you
use what?
6. Can you mock domain objects and why, when would you do this?
7. What tests did you write for your project and why?
8. What’s a stub, and when would you use it?
9. What are considerations when using testcontainers?
10. What is the advantage of using testcontainers?
11. What are the key differences between unit tests, integration tests, and end-to-end
tests, and when should you use each?

Production Readiness:

1. Does the 12-factor app methodology tell you something?


2. Why would you treat your logs as a stream and not use just a [Link]?
3. Why would you like to externalize your configuration?
4. Why would you treat backing services as attached resources?

You might also like