A week ago, I gave a technical test to a junior candidate who was applying to our company as a rust junior dev. I presented the following statement and asked them to solve it within 30 minutes.
Develop a dynamic Fibonacci algorithm so that when the user presses 7, it prints the Fibonacci of 7, when they press 9, it prints the Fibonacci of 9, and when they press q, the process terminates.
I provided them with a keyboard input handling code template to save time on that.
cargo add k_board
fn main() {
for key in k_board::Keyboard::new() {
match key {
k_board::Keys::Letter('q') => break,
k_board::Keys::Number(7) => //fi7,
k_board::Keys::Number(9) => //fi9,
_ => (),
}
}
}
Unfortunately, the code he provided was failing to print the Fibonacci sequence, and it was also not clearing the console.
Question: Can a junior developer solve the problem I provided in 30 minutes? Or has it only been a developer with little skill?
I'm reading your comments and receiving your own code perspective!
Top comments (2)
In my own view, one should be off the hook for not clearing the console. It is a plus, for sure, but it is not something related really to the task at hand.
On the other hand, if you are already giving them code to read the keyboard, the problem really is a step removed from the keyboard realm. What I mean to say is to focus on what you want to test more than just one scenario I have thought of beforehand. Do you need from a candidate mere basic Rust skills? Knowledge of basic algorithms like Fibonacci's? The ability to perform a given task? Sometimes one does not need an accurate answer to recognize if a candidate is suitable. Choose what you need to test (more than one thing, of course) and make for yourself a checklist. Even copying from stack overflow is a skill, because one has to know the good answer to copy, and not the first one (or the most starred)
In any case, if someone would answer to me: we can optimize the calls in the match, like so:
For me that answer alone is more valuable than clearing the console.
What I mean is: make a list of things you are searching for in a candidate, over and beyond the mere technicalities, and check out for them.
Of course, this is my own perspective. I am a solo coder, so far, but if I would need to hire someone in the future, that is what I would do to screen the candidates.
awesome point, I agree with that