Questions
20 of 24
1What are the SOLID principles? Explain each briefly.
2Explain the Single Responsibility Principle (SRP) with an example.
3Explain the Open/Closed Principle (OCP). How do you achieve it without modifying existing code?
4Explain the Liskov Substitution Principle (LSP). What happens if it's violated? (Square/Rectangle problem)
5Explain the Interface Segregation Principle (ISP). Why are fat interfaces bad?
6Explain the Dependency Inversion Principle (DIP). How does it relate to Dependency Injection?
7What is the difference between Aggregation and Composition?
8What is the Factory Pattern? How does it help in achieving OCP?
9What is the Abstract Factory Pattern? How does it differ from Factory Method?
10What is the Strategy Pattern? How does it replace complex conditional logic?
11What is the Observer Pattern? Where is it used in real life? (Event handling, Pub/Sub)
12What is the Decorator Pattern? How does it add functionality dynamically?
13What is a Singleton Pattern? What are the thread-safety concerns and how to handle them?
14What is an Anti-Pattern? Can you name a few? (God Object, Spaghetti Code, Golden Hammer)
15What is "Coupling" and "Cohesion"? Explain the relationship between them.
16What are Generics/Templates? How do they improve type safety and performance compared to casting?
17What is Type Erasure (Java) vs Reified Generics (C#)?
18What is Variance in Generics? (Covariance and Contravariance)
19What are Extension Methods (C#) or Default Methods (Java)? When should you use them?
20What is Reflection? How can it be used to break Encapsulation? What are the performance costs?
21What is the "Law of Demeter"? (Don't talk to strangers)
22Explain "Tell, Don't Ask" principle.
23What is the DRY principle? How does OOP help achieve it?
24What is the YAGNI principle?
20 / 24

What is Reflection? How can it be used to break Encapsulation? What are the performance costs?

Difficulty: 4/10

Reflection

Reflection allows a program to inspect types and, depending on the language and runtime permissions, access members dynamically at runtime. It powers frameworks such as dependency injection, serializers, ORMs and test frameworks. Reflection can weaken encapsulation when code accesses private members through runtime metadata or bypass mechanisms. It can also have performance and maintainability costs because operations may require metadata lookup, dynamic invocation and reduced compiler optimization compared with direct calls. Modern runtimes often optimize or cache reflective operations, so the actual cost should be measured rather than assumed.

javascript
  1. 1

    Reflection can inspect classes, methods, fields, constructors and annotations.

  2. 2

    Frameworks use it for dependency injection, serialization, ORM mapping and testing.

  3. 3

    It can bypass ordinary encapsulation depending on runtime and access rules.

  4. 4

    Dynamic invocation can be slower than direct invocation.

  5. 5

    Reflection can increase startup time, memory use and complexity.

  6. 6

    Cache metadata or method handles/delegates where appropriate for hot paths.

  7. 7

    Use reflection deliberately at framework boundaries rather than as a default application programming technique.

Follow-up Questions

  • How do ORMs use reflection?
  • Can reflection access private members?
  • How can reflection performance be improved?
  • What are alternatives to reflection?
Share

Share via WhatsApp, X, Facebook, LinkedIn or copy link. Open Graph preview enabled.