- Algorithms and Data Structures
- Programming Paradigms (OOP, AOP, functional, imperative, declarative)
- Design principles (e.g. Separation of concerns, Single responsibility principle, Principle of least knowledge, Evolutionary design)
- Architecture documentation
- Diagraming notations (UML, Crow's Foot, etc.)
- Templates (e.g. arc42, architecture decision records)
- Visualization approaches (e.g. C4)
-
Backend, web frontend and, optionally, mobile development
- Popular languages and frameworks
- Performance (e.g. popular causes of bottlenecks and profiling methods)
- Security aspects (e.g. usual attack vectors and counter-measures)
- Debugging tools and techniques
-
Platform-specific questions
- Backend
- Layering/Componentization
- Multi-threading and concurrency
- Mobile
- Cross-platform development (e.g. Xamarin, React Native, Ionic)
- Backend
-
Low-level Aspects of Architecture
- Peculiarities of operating systems
- Memory Management
- Inter-process communication
- Network Protocols (at least TCP/IP to HTTP(S))
- Architecture styles and types (client/server, layered architecture, service-oriented architecture, domain-driven design, event-driven architecture)
- Application Integration Patterns
- Remote invocation (API's)
- Protocols (e.g. Rest, RPC, GraphQL)
- API design (e.g. api first, versioning)
- Messaging
- Queues and Topics
- Events
- Remote invocation (API's)
- Non-Functional Aspects (Availability, Scalability, Reliability)
- High availability (e.g. eliminating single points of failure, redundancy)
- Scaling and load balancing
- Performance (e.g. requirements and metrics)
- Application resilience
- Business continuity
- Security
- Authentication
- Authorization (e.g. role-based, row-based security, column-based security)
- Popular protocols (e.g. Saml, oAuth, OpenID Connect)
- Single sign-on
- Data encryption and key management
- SQL
- RDBMS (e.g. Oracle, MS SQL, PostgreSQL, MySQL; practical experience with at least one of these)
- SQL (DML, DDL, Stored Procedures and specifics of mainstream DBs)
- NoSQL
- Types (e.g. document, graph, time-series, column, key-value)
- Popular DBMS
- Comparing SQL and NoSQL databases (advantages and trade offs, areas of applicability)
- Consistency models (e.g. ACID, BASE)
- Data versioning approaches (e.g. patching, migrations)
- Advanced questions:
- Big data processing (architectures, technologies, four Vs)
- Full text search/fuzzy search (DBMS-native and third-party technologies)
- GIS data processing and available technologies (DBMS-native and third-party)
- Partitioning and replication
- ETL ((concepts of data landing, staging, concepts of virtual DWH))
- Encryption
- Project setup
- Epic/story breakdown
- Initial estimating
- Team setup: skills, roles, initial capacity
- Development methodologies (e.g. scrum, kanban)
- CI/CD
- Test automation
- Code style
- Metrics (e.g. coverage, complexity, code analysis)
- Multi-stage environments
- Release management
- Zero downtime deployment
- QA (validation, verification disciplines)
- Automatic and manual testing
- Integration tests
- E2E tests
- Performance tests
- Visual regression tests
- Security testing (penetration, vulnerabilities)
- UAT
- Engineering practices (e.g. unit testing, pull requests, code review, pair programming, VSC best practices)
- Operations
- Monitoring
- Logging
- Alerting
- Distributed system monitoring and traceability
- Operation scenarios (i.e. what to do in case of a particular failure)
- Hosting types (on-premise, cloud or hybrid)
- Virtualization:
- Virtualization types
- Software-defined networks
- Virtual Machines
- Containers
- Cloud
- Automated Infrastructure setup
- Distributed system architecture patterns (retry, circuit breaker, idempotency)
- Abstraction levels
- IaaS
- PaaS
- SaaS
- CaaS
- Serverless (FaaS and BaaS)
- Identity service providers (e.g. social logins, Azure Active Directory, Cognito, Cas, Okta etc.)
- Monitoring solutions (e.g. Application insights, Elastic Stack, Prometheus)
- International/government rules and legal issues that can affect applications' architecture
- Data protection (legal aspects of)
- Types of software licenses and their impact on applications' technology stack
- Architecture-related requirements collection
- Architecture and design documentation preparation
- Presentation of architecture and design to business people
- Ability to develop a project from scratch in solo mode
- At least Upper-Intermediate level of English