Useful Links
Technology
Computer science
Object-Oriented Programming
Object-Oriented Programming Languages
Java
OOP Features in Java
Objects and Classes
Inheritance and Polymorphism
Abstraction and Encapsulation
JVM and Bytecode
Java Virtual Machine (JVM) structure
Role of bytecode in cross-platform capabilities
JIT Compiler and performance optimization
Interfaces and Abstract Classes
Differences between interfaces and abstract classes
Use cases in software architecture
Multiple inheritance via interfaces
Exception Handling
Checked vs Unchecked Exceptions
Try-catch-finally blocks
Custom Exception creation
Java Collections Framework
Lists, Sets, Maps, Queues
Generic Collections
Iterators and Lambda Expressions
Concurrency and Multithreading
Thread creation and management
Synchronization mechanisms
Concurrent package utilities
C++
OOP Features in C++
Classes and Objects
Inheritance, Polymorphism, and Encapsulation
Access Specifiers: public, private, protected
Constructors and Destructors
Constructor overloading
Copy constructors
Destructor usage and memory management
Templates
Function templates and class templates
Template specialization
SFINAE (Substitution Failure Is Not An Error)
Standard Template Library (STL)
Algorithms, Iterators, Containers
Use of STL in efficiently managing data
Pointers and Dynamic Memory Management
Smart pointers: unique_ptr, shared_ptr, weak_ptr
Memory leaks and memory allocation
Operator Overloading
Overloading common operators
Custom behavior definition
Python
OOP Features in Python
Dynamic and duck typing
Class definition and instantiation
Inheritance and multiple inheritance
Modules and Packages
Importing modules and managing dependencies
Python Package Index (PyPI) and third-party modules
__init__.py for package initialization
Magic Methods and Operator Overloading
__str__, __repr__, __add__, __eq__, etc.
Customizing object behavior
Context Managers and the with statement
Python's Data Models
Mutable vs immutable objects
Property decorators: @property, @setter
Metaclasses and their use cases
Interpreted Nature and Performance
CPython, PyPy, Jython, IronPython
Bytecode and the GIL (Global Interpreter Lock)
Ruby
OOP Features in Ruby
Pure object-oriented nature
Class and Module creation
Mixins instead of multiple inheritance
Modules and Mixins
Reusable code with modules
Inclusion mechanism: include, extend
Namespaces management and organization
Dynamic Typing and Duck Typing
Flexibility in method handling
Impact on error-checking and debugging
Blocks, Procs, and Lambdas
Code as data
Closures creation and usage
Built-in Ruby Tools for OOP
Rake and bundler for environment setup
Minitest and RSpec for testing
C#
OOP Features in C#
Everything is an object
Properties, events, and delegates
Value types vs reference types
.NET Framework and CLR
Common Language Runtime (CLR) role
Cross-language interoperability
Compilation process and performance enhancements
Properties and Events
Automatic properties
Custom event accessors
Event-driven programming model
LINQ and Entity Framework
Language Integrated Query (LINQ) for data manipulation
ORM capabilities with Entity Framework
Asynchronous Programming
Async and await keywords
Task-based Asynchronous Pattern (TAP)
Cancellation and timeout handling
3. Design Patterns in Object-Oriented Programming
First Page
5. Advanced Concepts in Object-Oriented Programming