# DGM Interview with Salah
### Talk about the various types of rendering in React, focusing on the advantages and disadvantages of each.
- client components
- server side rendering
- server components
- static site generation
### Discuss strategies for handling deployment of multiple services.
The website is made up of a few different services:
- database
- various backend components (handling queries from frontend, handling queue messages and updating database accordingly)
- headless CMS that defines pages and components
- frontend code that generates pages based on that CMS and backend queries
How would you go about managing development and deployment of all of these to ensure a reliable production system?
### Write a function that performs an immutable update on a field of an object.
- The function may not modify the object.
- If the update function returns an identical value to the one held in the original object, the function must return the original object.
```typescript!
type Fn<A,B> = (x: A) => B;
const modify = <T extends object, K extends keyof T>(key: K) => (mod: Fn<Readonly<T[K]>,T[K]>) => (obj: Readonly<T>): T => {
const unmodifiedObj = JSON.parse(JSON.stringify(obj))
unmodifiedObj[key] = mod( unmodifiedObj[key] )
return unmodifiedObj[key] === obj[key] ? obj : unmodifiedObj
};
const a = {hello: "world"};
modify("hello")(x => x.toUpper()) -> {hello: "WORLD"}
```