Appraisal
Topics
General Development Questions
Programming basics - 18
- [ ] Paradigms (procedural, OOP, functional, AOP)
- [ ] Algoritms (trees, graphs, arrays, lists, queues, stacks, maps)
- [ ] Data structures (trees, graphs, arrays, lists, queues, stacks, maps)
Result: mini conspect
OOP - 18
- [x] Concepts (Base principles: encapsulation, inheritance, polymorphism. Classes and Objects, State and Behavior, Abstraction and Implementation, интерфейсы VS абстрактные классы)
- [x] Assosiacion vs. Inheritancy (наследование VS делигирование)
- [x] OO principles (SOLID (SRP, OCP, LSP, ISP, DIP), maybe more)
- [ ] Object model design (Application modules: grouping data and application logic by types, dependences)
Result: mini conspect
AOP - 18
- [x] Concepts (концепция, когда использовать, плюсы и минусы)
- [x] Frameworks (PostSharp,Aspect.NET, Castle Dynamic Proxy…)
- [x] Contracts (Contract programming)
- [ ] Attributes usage in AOP (Using attributes. DataAnnotation namespace. Using in ORMs, in WCF, in IoC)
Result: conspect
Design patterns - 18
- [ ] Patterns in general, GoF patterns
- [ ] MVC, MVP, MVVM, HMVC
- [ ] Entity design (Entity vs VO vs DTO)
- [ ] IoC and DI
Result: conspect
Unit testing (Unit vs functional testing, how to use, UT framework, TDD, mocks) - 18
- [x] Purpose and types (Coverage, principles, unit/integration/functional/ testing)
- [x] UT frameworks (MSTest, Nunit, xUnit)
- [x] Mock/Stub conception (mocks/stubs, dummy, fake object)
- [x] Mock/Stub frameworks (Moq, Nmock, Fakes)
- [x] TDD
- [x] Data driven tests
Result: conspect
Debbuging, tracing and logging (Approaches, when useful, tools and libraries) - 18
- [x] Debugging in Visual Studio (Various debugging options, breakpoints, watches etc.)
- [x] Remote debugging (How to use and when)
- [x] Tracing (Why use, BCL support, configuration, tracing vs. logging)
- [x] Logging in applications (Purpose, levels, performance issues)
- [x] Logging frameworks (Log4NET, BCL logging (base class library), ETW etc.)
Result: conspect
Source control
- [x] Source control basic
- [x] Branching/Merging strategies
- [ ] Integration
- [x] Git
- [x] TFS
- [x] Other source controls
Continuous integration and build tools
- [x] Continuous integration understanding and experience
- [x] TFS Build
- [x] MS Build
- [ ] Other
Localization / Internationalization
- [ ] L10n and I18n
- [ ] Localization
- [ ] Internationalization
- [ ] Culture-specific issues
- [ ] Resources
Performance optimization and profiling
- [ ] Overall optimization process
- [ ] How to measure
- [ ] Computational algorithms complexity
- [ ] Typical problems and fixes
- [ ] Performance and memory profiling
Security
- [ ] General security questions
- [ ] Encryption
- [ ] Signature, certificates and PKI
- [ ] Security analysis basics
- [ ] Windows security
- [ ] Authentication/authorization in IIS
- [ ] 3rd party authentication
- [ ] Web user tracking options
- [ ] Passing authentication info
- [ ] Authorization frameworks
- [ ] Web services security
- [ ] ETL security
- [ ] Secure keys storage
- [ ] UAC
Deployment
- [ ] Where to install
- [ ] IIS application setup
- [ ] IIS deployment automation
- [ ] Scalability and performance issues
- [ ] DCOM deployment
- [ ] Docker and microservices
- [ ] Windows Installer (MSI) and WiX
- [ ] Where to install
- [ ] Service installation
- [ ] x86/x64 issues
- [ ] ClickOnce
- [ ] UWP (Universal Windows Platform) deployment
Architecture
UML
- [ ] purpose and usage
- [ ] class diagram
- [ ] sequence diagram
- [ ] component diagram
- [ ] activity diagram
- [ ] deployment diagram
- [ ] tools
Other modeling languages
- [ ] ER models
- [ ] Business process
DDD - in the process
- [ ] DDD Concepts and Process
Result: conspect
BDD
- [ ] BDD Process
- [ ] BDD Tools
Client-Server architecture
- [ ] Architecture creation
- [ ] Client-server options
- [ ] SOA
- [ ] Microservices
- [ ] Special architecture
- [ ] Application and deployment architecture
General competencies
- [ ] Testing and quality concepts
- [ ] Process
- [ ] Problem solving
- [ ] Requirements
- [ ] Estimations
- [ ] Reporting (process)
General Language questions
General Language questions
- [ ] Object and other base types
- [ ] Equals, hash Code
- [ ] Immutables
- [ ] Casting and conversion
- [ ] Classes and interfaces
- [ ] Anonymous and dynamic types
- [ ] Properties and fields
- [ ] Methods
- [ ] Generics
- [ ] Class instantiation
- [ ] Serialization
- [ ] Input/output
- [ ] LINQ
- [ ] Extension methods
- [ ] Operators overloading
Collections
- [ ] Lists and arrays
- [ ] HashTable, HashSet, Dictionary
- [ ] Sorting
- [ ] Enumerator and enumerables
- [ ] LINQ extensions for collections
Exceptions
- [ ] Hierarchy
- [ ] Try - catch - finally, stack unwind
- [ ] Inner exceptions and rethrow
- [ ] Exceptions vs. error codes
Indeirect function call
- [ ] Delegates (incl. anonymous)
- [ ] 2nd order functions
- [ ] Standard event pattern
- [ ] Lambdas
- [ ] Expressions building and usage
Platform-specific features
- [ ] Pinvoke
- [ ] Interprocess communication
- [ ] Assembly location
- [ ] Config files
- [ ] Datasets
- [ ] Date/time API
Multithreading
- [ ] Threads and processes
- [ ] Data sharing and locking
- [ ] Core synchronization objects
- [ ] High-level synchronization objects
- [ ] Deadlock etc.
- [ ] Async/await
- [ ] Tasks, schedulers, thread pool
- [ ] Execution contexts
- [ ] Asynchronous programming models
XML
- [ ] Well formed / valid, encodings
- [ ] XML Schema
- [ ] Xslt
- [ ] Xpath
- [ ] Parsers
JSON
- [ ] JSON Syntax
- [ ] JSON parsers
Text processing
- [ ] String classes
- [ ] Encodings
- [ ] Unicode
- [ ] Regexp
Memory management
- [ ] Heap and stack
- [ ] References
- [ ] Disposal
- [ ] Garbage collection
Metadata
- [ ] Metadata concept
- [ ] Attributes
- [ ] Reflection
Libraries
[ ] RxLib
[ ] NodaTime