General Questions for Software Developer Candidates
October 2, 2024 · 634 words · Peter Dieleman | Edit Post
(open) Have you ever worked with sprints? What is your opinion of scrum?
(open) Have you been involved in architectural decisions? Can you give an example of a situation where you had to choose between option A and option B? Did you encounter any issues/regret when implementing your choice later on?
example: using a SQLite database for our frontend, but our platform doesn’t support adding stateful applications (statefulsets)
What are microservices and why do people use them?
Microservices are an architectural and organizational approach to software development where software is composed of small independent services that communicate over well-defined APIs. These services are owned by small, self-contained teams.
Why: …
What are some common downsides/issues of microservices?
A: generally too small
A: too many companies use them just because Big Tech does
A: generally no clean interfaces, often find yourself touching 2 or 3 different repositories to get
a feature implemented.
A: big, non-tech, but can often not leverage some of the intrinsic benefits:
scaling: services that are for internal use only will almost never need extreme scaling
re-usabilty: some business logic is extremely specific and will never be used outside of the original Business unit that requested it.
On LLMs / AI / Machine learning:
Are you using chatGPT/copilot/etc in your daily work? Why (not)?
Can you describe some issues with AI in case you are controlling a real life object (robot)?
Can you describe some limitations of AI/machine learning in case you are modelling the real world?
Are you familiar with any of the following acronyms? Explain the one you are most familiar with or find the most important.
YAGNI
KISS
DRY
SOLID
(scenario, open) you are working in a small team of 3 developers on a complicated layered stack that receives continuous updates and bugfixes (by other parts of the company). You are developing a prototype and do not have a ‘production environment’ that you automatically deploy to. You have finished your work apart from 1 small issue. Do you rather:
a. merge to main - what are some issues you anticipate?
issue 1:
issue 2:
b. continue working for another 3 days - what are some issues you anticipate?
issue 1:
issue 2:
List at least 3 different purposes of merge requests?
manual quality check
shared understanding of changes to codebase
ask input for changes to parts of codebbase that are unfamiliar/outside of your skillset (early stage, draft)
keeping historical record: git itself only keeps track of changes but does not keep track of discussions.
running automatic checks (CI)
(a/b) What is your personal style of development, do you rather use libraries or services written by someone else (a), or do you rather write code yourself (b)?
yourself –> what are some potential downsides?
downside 1:
downside 2:
others –> what are some potential downsides?
downside 1:
downside 2:
What important when a product manager or client asks for a very specific new feature, or even a specific technical solution?
Speak up, ask why, why, why. Often there is either a better or more time-effective technical solution, or an underlying problem can be solved in a more elegant way.
(quick) what git feature do you currently use most in your main project, and why?
cherry-pick
merge
rebase
Have you ever been responsible for writing and maintaining extensive documentation?
(open) Where do you prefer to document and why?
Why would you use continuous integration?
What is the difference between unit testing and E2E testing?
While designing an api, when do you use streaming or REST?
What are the benefits of microservices compared to a monolith?
What is the difference of OpenAPI and gRPC? What serialization formats do they use?
Why would you containerize your service? (e.g. Docker)
What do you need orchestration for? (e.g. Kubernetes)