🧶

Software Engineering Theory Matrix

Lets dive deep into different subjects to understand how wide is your knowledge & memory.. And lets keep it short with 2 minutes per question so we can cover it all. Its ok to skip if you don't know

Questions per level

AreaPhase 1 (junior, mid)Phase 2 (mid, senior)Phase 3 (senior+)Property
Teamwork, Communication,Business processes,FeedbackOwnership and Drive• Did you have any conflicts at work in the past?
â—¦
over technology, misunderstanding of context, PR reviews, different views on arch solution?
â–ª
How did you resolve them?
•
What work processes are you used to?
â—¦
What code style do you use?
â—¦
What is the difference between waterfall, scrum and kanban?
â—¦
What are the benefits and the drawbacks of working in an Agile environment?
•
How does perfect PR look like?
• How requirements and documentation can be expressed and held up-to-date?
â—¦
Tests, readme, api docs, DB diagrams, state
•
Tell us an incident that you caused
•
What is the perfect task description for you? Who should write it?
â—¦
Acceptance criteria / steps to reproduce
•
As company and team grows from 1+ developer to 200+, how should teams grow?
â—¦
Should engineers have narrow specialisation?
â—¦
Should engineers have access to live DB?
â—¦
Should services have internal credentials?
•
At what you should pay attention with PR reviews?
â—¦
bugs, size, complexity, improvements
• What should happen if service goes down in the middle of the night?
â—¦
on-call & alerts
•
How do you make sure that critical bugs in production at night don't keep growing within organization?
â—¦
incident management. lessons learned. CI.
•
What non-functional requirements can you list?
â—¦
Security, Scalability, Consistency, Fault tolerance
•
You need to partially migrate data to another datacenter, but its owned by 5+ teams. How do you do that?
•
Any opensource contributions / maintenance experience?
Untitled
Basic algorithms
Code structures
Frameworks
RegExes
• Whats a pure function?
â—¦
static methods?
•
What are the benefits of MVC?
â—¦
separating frequently changed code, one-way data flow
•
How does CPU work in general?
•
What is space and time complexity?
â—¦
Take your homework or recursive binary tree reversal as example
•
When is dependency injection needed?
• What do you think about ORMs?
â—¦ active record & repository patterns?
• What is
middleware, when is it used?
• How would you write a rough
validation of IP and Email inputs without using libraries or frameworks?
• What patterns do you know?
â—¦ factory, builder, singleton, decorator, proxy, adaptor, iterator, visitor, observer..
- Whats the difference between stack and heap? Where are global variables stored?
- What is the difference between Error and Exception
• Whats finite-state machine?
•
Whats abstract syntax tree?
•
Lets take php, nodejs and go. How are they handling requests in terms of concurrency?
â—¦
php-fpm - pool of workers;nodejs - emulation of concurrency with event loop;go - goroutines, full CPU utilization
•
Lets compare php and C. Both have structures called arrays. How are they different?
•
How do most languages store float vars?
â—¦
Is javascript number type the same as go lang's integer?
â—¦
Why is 0.2 + 0.1 not equal to 0.3?
•
PHP: what is opcode cache, how does it work?
Untitled
Security
Networking
• What popular attacks on web apps do you know and how to defend against them?
â—¦
xss, sql injection, csrf
•
How would you implement user's authentication? How would you store and protect his credentials?
•
How does hashing work?
â—¦
whats a hash collision?
• What are public/private keys and why do we need them?
•
How can developers access production DBs if they have performance problems?
•
Whats an OSI model?
•
whats CORS?
•
whats the difference between HTTP & UDP
•
how does TCP work?
â—¦
TLS
â—¦
IP
•
how does CDN work?
• you have 30 services. Each service has dependencies (npm, composer, go modules, docker etc.). How do you manage security updates?
•
You have password field that is md5 hashed. You need it to be sha1. How do you do that?
â—¦
extra column or schema versioning while migrating
•
Whats are the benefits of OAuth? How does it work?
Untitled
API• If HTTP is stateless, how do websites usually handle user being logged-in?
â—¦
Cookies on client-side + sessions on backend
•
How do websites usually store session?
â—¦
In filesystem / db
•
Whats XML? How is it different from JSON?
• Given a choice of REST API and GraphQL, which one would you choose for a long-term project?
•
Given a choice of decentralized APIs and centralized event bus, which one would you choose & why?
•
How do you version REST APIs?
•
How do you restart a service if its serving HTTP requests?
• What format do you use for documenting API?
â—¦
swagger, graphql, json-schema
•
How do graphql subscriptions work?
•
Ever heard of SOA(P)? How is it different from REST & GraphQL?
•
Whats XSLT, XSD, Xpath? How is it superior or inferior to JSON?
Untitled
Data processing
Databases
SQL
• What is an index? When it is required and when to avoid?
•
How do you design DB schema?
â—¦
Whats data normalization?
•
What are foreign keys for? Whats referrential integrity?
•
What is sharding?
•
Whats types of database engines do you know?
•
How do you change database structure in production?
•
Can we run every API call in a huge transaction?
• How / why can deadlocks appear?
•
Whats the difference between LEFT JOIN, INNER JOIN and OUTER JOIN?
•
What are views for?
•
When one should use or not use triggers?
•
What is map-reduce? What is it needed for? What engines allow it?
•
Whats does HAVING do in SQL?
•
What do you know about encodings and collations?
• What do you look for in the EXPLAIN plans of your queries?
•
Whats the difference between Lock wait timeout and Deadlock found?
•
Whats a query hint?
•
How does UNICODE work?
•
What limitations of mysql do you know about?
•
What are isolation levels for?
•
How does binary tree search work?
Untitled
System design
Architecture
Message Queues
• You need to scale horizontally. How do you route requests to different processes?
•
How do you discover services?
•
You need to process files after they are uploaded. How do you do that?
•
How does perfect log entry look like?
•
We have the same service deployed to EU and US. It must display same data which is updated 10 times a day at most. Where/how to store data?
• How can we prevent DoS?
â—¦
limit concurrent HTTP connections
•
How can we prevent backend abuse? 
â—¦
limit DB connections, max payload size
•
How to handle 100, 1000 etc concurrent requests? What to keep in mind or how to achieve it?
•
Whats pub-sub?

• App uses DB + MQ. How to make sure data is not lost?
•
How can you sync data in different tabs or browsers for the same user without page refresh?
â—¦
How can you check for user data in the exchange?
•
What is KTable?
•
Whats Kafka streams? redis streams?
Untitled
Code quality
Observability
• How would you test an elevator?
•
What types of tests do you know? Which did you write?
•
How would you prepare user accounts in DB for integration tests?
•
How can you automatically measure how good your code is?
â—¦
LOC, cyclomatic complexity, number of defects
•
What code coverage is acceptable?
•
How would you test that on deal creation API endpoint for authenticated user, a webhook call is made?
• How can you find slowest part of the app?
•
How do you find bug cause if multiple services in production are involved?
•
How do you debug a running service?
•
What is spy, stub, mock?
•
Where is typescript useful?
•
give an example for service level objective
• Whats the difference between average, median, p95, percentile?
• How does
distributed tracing work?
• How does
debugger work?
• What should you look at while
performance-profiling a process?
• What
metrics should you monitor?
â—¦ health, errors, resource consumption, requests, product metrics
- prometheus data types
Untitled
Build & Deploy• Whats the difference between git and svn?
â—¦
decentralized / centralized
•
How do you safely deploy your changes into production with 0 downtime?
â—¦
FTP? git commit? deployment pipeline?
•
What is docker?
•
Why would you need a build tool?
â—¦
grunt, npm run, ant, make
• You have a name that needs to be split to first and last name. How do you roll it out without any downtime?
•
What is kubernetes? How does it work? Why big companies adopt it?
•
What is git rebase for?
â—¦
rewriting history
• How to roll out multiple services with shared DB/schema with 100% availability?
â—¦
in multiple deployments & DB migration files
Untitled