Skip to content

Latest commit

 

History

History
69 lines (61 loc) · 3.21 KB

TODO.md

File metadata and controls

69 lines (61 loc) · 3.21 KB

OOP

  • OOP - Object-Oriented Programming
  • OOD - Object-Oriented Design
  • OOA - Object-oriented Analysis

Junior

Middle

  • Що таке SOLID? Що означає кожен з цих принципів?
  • Розкажіть про патерни проєктування.
  • Що таке Dependency Injection? Наведіть приклад.
  • Які переваги та недоліки функціонального підходу?
  • Що таке принцип RAII (Resource Acquisition Is Initialization)?
  • Що таке принцип DRY?
  • Що таке принцип KISS?
  • Які переваги композиції перед успадкуванням?

Senior

  • Поясніть принципи SOLID.
  • Поясніть принципи KISS.
  • Поясніть принципи YAGNI.
  • Які є підходи до оптимізації коду?
  • На що варто звертати увагу під час code review?
  • Які є патерни проєктування? Чому не радять використовувати Singleton?
  • Що таке статичний поліморфізм?

C++ and OOP idioms

  • Multiple inheritance (know for what, where can help)
  • RAII idioms
  • Singleton, abstract fabric, publisher-subscriber and other popular patterns
  • PIMPL idiom
  • Virtual destructors (for what, how can help, where need to be careful)
  • Exceptions in custom constructors
  • All details about C++ exceptions in destructors
  • The initialization order of class members
  • Implicit inline methods
  • Which methods each C++ class has implicitly
  • All circumstances with methods overlapping
  • rvalue, lvalue
  • Close work with move-semantic
  • std::forward understanding
  • Order of calling constructors\destructors
  • limitations of conts methods
  • Cases of calls copy-constructor
  • Difference between raw and smart pointers
  • Difference malloc and new
  • Using 'delete' operator for zero-pointers
  • An order of passing function/method arguments
  • C++ operators overlapping
  • Familiar with "slicing" C++ objects
  • Detailed steps of handling C++ exception and actions applied in case of exception handler was not found
  • Where it is not recommended to use exceptions?
  • The order of handling C++ exceptions in case blocks
  • Exceptions in custom constructors
  • All details about C++ exceptions in destructors
  • Writing custom memory allocators
  • Details of using different new operators (placement, std::nothrow, new [])
  • Experience of creating custom C++ polymorph objects
  • Familliar with details of using pure virtual methods, classes
  • Has strong understaning details of using virtual methods, internals of virtual tables, performance issues and lowel implementation
  • Knows all differences of type casts operators: dynamic_cast, const_cast, reinterpret_cats, static_cast and cases when bad_cast exception can arise
  • Solid experince with C++ lambdas
  • Common cache optimization problems (read ahead, volatile key-word)
  • Understanding of basic spin-lock implementation
  • Static / Dynamic polyformism