4 Replies - 1839 Views - Last Post: 19 June 2013 - 07:34 AM

Tackle the Coding Interviews or Take Another Route?

Posted 18 June 2013 - 11:18 AM

I keep applying for these internships at local startup companies, and I feel like I do well enough in the first parts of the process -- the cover letter/resume part (seeing as I tend to be a rather skilled writer) and the behavioral interview. Where I seem to fall down, though, is the technical part of the interview. I tend to flounder at this part -- the knowledge questions and the coding questions -- even when it's relatively simple stuff.

I've provided more information below, but the gist of it all is that I have trouble recalling information and expressing myself in a clear and organized fashion, I'm not good at coding on the fly without reference materials, and the terms and interactional modes of the interview tend to interfere with my cognition and foster anxiety in me. You can read the more detailed info or skip to the end! />/>

Spoiler

If it's a knowledge question, I'm trying to wrack my brain to remember all the details and articulate them clearly. I'll usually know what the thing is but fail to recall details and/or fail to deliver it in a straightforward and organized fashion. Like, I know the principles of OOP (inheritance, encapsulation, and polymorphism) and could even tell you, but it feels like the interviewers want me to quickly fire off a perfect executive summary. "First, inheritance, which entails... Second, encapsulation, which involves... And, finally, polymorphism, which entails blank, blank, and blank" You get the idea. When I am quiet for a moment, trying to recall, I often get further prompts (which, in fact, tend to disrupt and derail my thought process) and/or responses like "Never mind, don't worry about it"...often in a seemingly impatient manner.

Then, the coding questions, which are problematic for me for at least two reasons:

First, while I know the syntax, and can build stuff in the languages I know, to do this I sometimes need to look up a particular class, method, or keyword, depending on the problem domain and whether I have worked with a particular part of the language before. For example, I don't always know the specific class, method, and parameter list right off the top of my head. When I can use my reference materials, I am usually right on. Yet, in these scenarios where I have to depend 100% on memory, I flounder while trying to remember that specific class or method (that I may not have used in a long time.)

Second, the manner of delivery. They want me to do it on a whiteboard and talk to them while doing it. In order to understand my thinking process, so I hear. For me, this feels uncomfortable and awkward, even on a purely physical level because I'm having to reach upwards with the marker at the top and then bend over as I reach the bottom. Also, trying to talk and problem-solve at the same time tend to cancel each other out. Upon receiving the question, a problem-solving "thread" starts running in my mind, but then, between trying to interact with the interviewer and do on a whiteboard what I could do more efficiently on paper, that "thread in my head" gets derailed. (In my mind, this is like placing a painter in front of a canvas, tying her painting hand behind her back so she has to use the non-dominant hand, supergluing together the fingers on the other hand, and saying, "Okay, now paint us a ____.")

There are a number of reasons for this:

Not using them after learning (because we've advanced to other material, where this stuff is abstracted behind interfaces, classes, and methods)

Not enough time devoted to drilling, rehearsing, practice (due to work and trying to also have a life outside of work and school)

Some potential cognitive issues that might affect how I store, retrieve, process, and present my knowledge (to the interviewer). Issues around short-term working memory, verbalization, etc.

I'm 3 semesters into my grad program, where I have been making consistent A's. I've also had fellow students come to me for help with their work, such as a couple of friends who I helped with pointer arithmetic in a C class; during that same C class, for one assignment, I even came up with a solution that was more memory-efficient than the professor's recommended approach. Surely, I know something, or else the previous statements would not be true. Yet, in these interviews, I often feel as if I come off as a babbling idiot, and I wonder if the interviewer is secretly channeling Simon Cowell -- in his demeanor and thoughts, if not his actual words.

As such, I am trying to find a solution that will end with me having a career that I like. The first "branch" of thought here involves finding ways to prevail at the interviews, for which I have some ideas:

Develop a list of subject areas and concepts and use a combination of outlines and flash cards for studying for the purposes of quick recall.

Study books about coding interviews with practice problems.

Perhaps see if I can negotiate the terms of the coding interview, around issues such as process and presentation

Of course, my experience with the practice problems often results in the following: I read the problem and work out a solution, only to flip to the answers section (to check my work) and see a much, much more elegant, efficient, and sophisticated solution that never would have occurred to me in a million years. My solution (which works in quadratic time) versus the book's (which works in linear time). So, if I go this route, how do I even get to the point where those elegant and sophisticated solutions just come to me? I mean, is there some "master list of hacks" out there that I should be studying?

The second "branch" of thought involves alternatives that do not require the interviews, such as becoming a freelance web developer, finding work at a non-software company, or even starting my own startup company. You know, where I don't have to prove myself by standing in front of a whiteboard and writing an algorithm to "reverse the node order in a binary search tree, in place." But I have my concerns about the viability of those options, as well.

Your thoughts are welcome, and thanks in advance to any and all respondents!

Replies To: Tackle the Coding Interviews or Take Another Route?

Re: Tackle the Coding Interviews or Take Another Route?

Posted 18 June 2013 - 02:29 PM

Perhaps you could be honest with them. Tell them what you wrote here, but mention that interviews make you nervous and that you have a hard time solving problems on the spot. I have no way of being certain about what the effects of that would be, but I imagine it'd vary from person to person. If I were the interviewer I'd be inclined to give you a chance, rather than to throw you out. As for the rest of your questions, that's really a personal matter. I'd start with some larger company first to gain more experience before I go and try to start something on my own.

Re: Tackle the Coding Interviews or Take Another Route?

Posted 18 June 2013 - 02:44 PM

Try thinking out loud more. They want to know how your brain works, so give it to them. Talk them through it.
If you need to, practice with a friend. Take something like the early euler problems or the basic sort routines or something, and stand up and explain how you'd go about solving them. Or, if you want a great source of logic problems, get ahold of Smullyan's "What Is the Name Of This Book" and go through the Island Of Knights and Knaves problems.

You're smart enough, you know the material, you just need to get used to delivering it, and working it out on the fly. Don't try to memorize your way out of it - you've already got enough access time issues, you don't need more hay in your haystack.

Re: Tackle the Coding Interviews or Take Another Route?

Posted 18 June 2013 - 02:46 PM

Make sure you have a portfolio of original code that they can review. I don't think the interviewers care whether or not you get the naming of a certain function correct; they just want to see that you can come up with a solution on the spot (unless you're talking about some super-language/library-specific role). I think you're suffering from being a smart perfectionist. While I hate this term, you're probably "over-thinking" things. My advice: Just forget about any specific syntax and focus entirely on the logic. Write in English or semi-pseudo-code, if that's the only way you can express your algorithm. It doesn't have to be a perfect, optimized algorithm; it just needs to work and make sense.

Re: Tackle the Coding Interviews or Take Another Route?

Posted 19 June 2013 - 07:34 AM

You are in grad school and probably haven't done many interviews.. you know existing on assignments and the all important numerical feedback. Shocker you would find interviews intimidating and scarey.. What were you expecting as a greenhorn to the process?

No need to get all flummoxed and go off trying to beat around a hedge row of bushes by "[negotiating] the terms of the coding interview", or being spooked by the whole process too much. Honestly if someone tried to negotiate the coding interview I would smile, see what they wanted to do, have them display what ever they knew, and then still have them do the problems I wanted. You are a year and a half into a grad degree applying for internships - do you really think you can dictate terms? Relax - you know what you need to fix so do it.

So you are a little shy and get the stage fright - it happens to everyone. Trying to cover it with some hand-waving story about how you are some perfectionist and pseudo deep story about threads derailing in your brain. Naw - that's called stage fright. Pure and simple. Anything more and you start to sound like one of those self indulgent grad student and who wants to be one of _THOSE_ ? Ha.

If you have issues then get some pals and have them ask you to do basic programming problems on a white board while talking about what you are doing. The other option is what you mentioned - study interviews books and build up the whole experience more.. well enough to make you feel more secure about what you are doing, but not enough to drive some sort of mental wedge in about the impossibly spooky interview so you get panic attacks and pee a little bit. Have some self confidence with a dose of perspective.

Honestly your two branches are pretty funny. The first is to dive into this like it was a homework assignment. Throw more research at it! Yeah! Hide in that infinitely regressive problem by building up a secure wall of books and research papers around you. The second is to run away.

Both are okay options, but realize you are applying for startup companies. Folks who need people to do more than one thing at a time as well as folks who can disgorge the information they are holding. Mostly fluid and changing. If you are having problems with the talk and walks, or just clamming up, perhaps an internship there is not the best idea. Why not look at a more established company? Startups are not for everyone and thinking they are the end-all / be-all, for internships is just silly. Try other companies so you are not stuck in this odd choice of hiding in more research or running away.