0% found this document useful (0 votes)
3 views1 page

Java 1

The document outlines key topics related to software engineering, including personal experience with engineering projects and contributions to technical architecture using React, Spring, DevOps, and Cloud. It discusses Object-Oriented Programming (OOP) concepts such as abstraction, polymorphism, inheritance, and encapsulation, as well as principles like SOLID and best practices for class design. Additionally, it emphasizes the importance of strong cohesion, loose coupling, and the DRY principle in software development.

Uploaded by

hemanth babu
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views1 page

Java 1

The document outlines key topics related to software engineering, including personal experience with engineering projects and contributions to technical architecture using React, Spring, DevOps, and Cloud. It discusses Object-Oriented Programming (OOP) concepts such as abstraction, polymorphism, inheritance, and encapsulation, as well as principles like SOLID and best practices for class design. Additionally, it emphasizes the importance of strong cohesion, loose coupling, and the DRY principle in software development.

Uploaded by

hemanth babu
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

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

You might also like