---
# System prepended metadata

title: Technical Interview Daniel Schindler

---

# Technical Interview Daniel Schindler

1. Introduction
    - Self Introduction
    - Candidate Introduction
    - Last Bigger Technical Challenge. How did you solve, what was your problem solving approach?
    - Any Skills Outside of Software Development? DevOps? Data Science? Containerization?
2. Questions
    1. What are the advantages of using a typed programming language? What is the difference between static and dynamic typed programming languages, can you give an example?
    2. What are the main programming paradigms JavaScript/Typescript developer use? What are they?
    3. How do you create a React component? Explain the difference between functional components and class components.
    4. What are React Hooks? Provide examples of some commonly used hooks and explain their purposes.
    5. What is CSS selector specificity and how does it work? Can you give some examples?
    6. Can you explain CSS box model (and its components).
    7. How do inline elements and block level elements differ?
    8. What is SSR. How is it achieved in NextJS. What is the advantage of SSR? When would you pick SSR, vs SSG, vs ISR.
    9. Ways of Client Server Communication.
    10. State Management: when would you use redux vs. react context? When should props be used over context?
    11. What is hydration in react?
    12. What is the virtual DOM? What does it do? Why?
    13. What is the advantage of using Pure Functions? What are side effects?
    14. Declarative vs Imperative Programming
    15. How do you evaluate Performance of a web app? What are the main things you look for when detecting performance issues?
    16. How do you formulate a unit test? How many cases are enough? Which parts of the code should be tested?
3. Coding Exercises
    1. ToDoList: https://jsfiddle.net/hkjnrf5x/
    2. deep clone: https://jsfiddle.net/wrkdqejf/1/
    3. Create a dynamic Form: https://jsfiddle.net/a1u2kfw7/18/
    
```javascript
const MyForm = ({
	fields
}) => {

	const [value, setValue] = React.useState({});

	return (
		<div>
			{fields.map((elem) => (
				<input
					key={elem.name}
					type="text"
					placeholder={elem.placeholder}
					onChange={(e) => {
          	setValue(prev => {
            	const temp = {...prev}
              temp[elem.name] = e.target.value
              return temp
            })
          }}
				/>
			))}
      <button onClick={() => {console.log(value)}}>Submit</button>
		</div>

	);
};

const App = () => {

	const myfields = [
  	{ name: "firstName", placeholder: "Vorname" }, 
    { name: "lastName", placeholder: "Nachname" },
    { name: "location", placeholder: "Ort" }
  ]

	return (
			<div>
				<MyForm fields={myfields} />
			</div>
		);
}

ReactDOM.render(<App />, document.querySelector("#app"))
```

4. More Questions
    1. SOLID
    2. Invesion of Control, why, what is it?
    3. Dependency Injection
    4. SQL vs NoSQL, Vorteile, Nachteile?
    5. REST vs. GraphQL, why?
    6. What is a good designed REST API to you?
    7. Event vs. Message? PubSub vs. Queue. Technology Examples?
    8. Event Sourcing vs. Event Streaming?