1.
Introduction:
a. Experience across companies – engineers
b. Latest project – People, process, technology stack
i. Technical architecture – React, Spring, Devops, Cloud
ii. Your contribution – Spring RESTful
iii. In depth questions on your contribution
iv. Performance
v. If you were to design the app again, what changes would you
recommend?
1. Project learnings (technical)
2. OOPS Concepts
a. A.P.I.E. –
i. Abstraction – hide internal implementation details (interface/abstract
class)… Code to interface, not to implementation.
ii. Polymorphism – method overloading, method overriding (runtime), (Java
operator overloading only intrinsic… +)
List<Integer> list = new ArrayList<>(); // Why write code like this?
ArrayList<Integer> list = new ArrayList<>(); //Why not this?
iii. Inheritance – reusability (Optional) – Smalltalk
Class A extends B implements i1
iv. Encapsulation – data hiding. Private members, public get/set
OO principle: Encapsulate what varies (What we hide, we can change)
b. Strong cohesion, loose coupling, Don’t Repeat Yourself (DRY)
c. SOLID
i. SRP: a class should have only one reason to change
Employee - 1
ii. OCP: open for extension, closed for modifications
iii. Liskov substitution principle – (Power of polymorphism)
Child should be completely substitutable for the parent.
Bird – eat, tweet, fly …. Crow (ok), Pigeon (ok), Penguin (fly? Exception)
iv. Interface segregation
v. Dependency inversion principle: power socket
Fundamental theorem of software engg… all problems can be solved by
another layer of indirection.
d. Class design – Student – private var, public get/set,
i. Constructors – default constructor