I'm getting back into the interviewing business, as I just recently left my job to pursue greater things and to work on my own projects. Which should be everyone's ultimate goal in life I think. But that's for another post. The interview was reschedule 5 times, not a single time by me I will add. A date was decided, and while earlier in the day than I would have liked, I agreed. I woke up early, made two cups of coffee to clear the old cobwebs and started to work on some projects I have lined up to prep myself for the possibly arduous task of explaining to an adult why linked lists are so damn awesome. Overall, I had mixed feelings on how this interview went.
It comprised of me and 3 devs over the phone, which already set alarms off. Some questions I thought were definitely good.They opened up discussion and were relevant to the position. Others, were just randomly worded, hard to understand riddles that made the interviewer sound cool. I'll break down the interview here. Maybe I learned a thing or two about how to answer questions for next time.
Name 3 data storage objects?
My answer: Uhhh...a hard drive? A text file. And a database?
Coworkers answer: Uhh..A brain, A flash drive, magnetic tape? :/
The expected answer was: List, Array, HashTable, Graphs, Trees, etc etc..
Essentially a data structure. Such a simple question. When I heard data object, I thought of numerous other things. Like my answer above. Also the System.Data namespace in .NET which contains objects that "store data". This question took an awkward amount of time, as we slowly discovered what we thought we were talking about, and nothing was learned on either side. Except that I know how to add an item to a List object.
List<string> strings = new List<string>();
I'm a genius.
Given a 2D array maze, how would you solve the maze?
Several questions immediately came up.
1. What's a 2d array maze look like?
2. What is my starting point?
And again, this isn't a data intensive job position. I doubt that anyone there has ever used a shortest path algorithm for anything.
This is what the 2d array looks like apparently:
x x x x x 0 x x x
x x x x x 0 x x x
x x x x x 0 0 0 0
x x x x x x x x x
common real world problem for mischievous rodents
So we'll be able to access the elements like this:
a = x;
a = x;
and so forth
I'll have to assume we're starting at the "entrance"
Regardless of how its stored, I had an approach to it. Start at the beginning, look all around, if a node isn't visited, then visit it and mark it as such, continue doing the same for all future nodes, if nothing is left then backtrack until you find an unvisited node and continue the process. Eventually you'll get to the end.
Follow up question
How would you speed that up? At this point I was ready to feign a terrible disease and hang up the phone.
It wasn't all time consuming and frustrating.
Some questions had substance and told alot about what I can do and have done.
1. What's the biggest software problem you tackled?
There are countless stories that I can talk about here. Implementing a chat application in 1 week without knowing anything about the web. Making websites comply with security standards last minute. Full site conversion from one language to another.
2. What are some problems you can encounter when dealing with multi-threaded applications?
Debugging, race conditions, deadlocks. Lots of fun stuff.
3. What kind of interview questions do you ask people?
I like to keep it simple and ask about relevant things that the person will be working on. I ask for css layouts. Best practices. DB performance questions, etc. Another post coming soon about my favorite questions to ask.
These questions took up the rest of the interview. And they went well in my opinion. Lots of back and forth, lots of new questions, stories were shared and things were learned. That first half however, that felt like my 2nd year of college, and I'm sure helped no one but the interviewer boost his own ego.
Two weeks passed and they actually called me back up for a 3rd interview, which I sooo look forward to, so I can write about it. Keep on the lookout.
Walter Guevara is a software engineer, startup founder and currently teaches programming for a coding bootcamp. He is currently building things that don't yet exist.