Explain the SOLID principles with a practical example from Spring Boot. How does JPA/Hibernate manage transactions and what's the difference between @Transactional and programmatic transaction management? What is the difference between ArrayList and LinkedList? When would you use each in a Spring Boot application? How does Spring Boot auto-configuration work, and how can you override or customize it? Describe the bean lifecycle in Spring and how dependency injection works with different scopes (singleton, prototype, request, session).