Help me handle doing a programming interview in an unfamiliar language!
October 3, 2013 11:43 AM   Subscribe

I've been invited to interview for a software development internship at a company I would really like to work for. However, after I'd said yes, I received the detailed outline of the interview, including a test partly in a language I have yet to learn. How can I best prepare in a short amount of time?

I've an interview in several parts, one of which is a practical test in Java, JavaScript, and CSS. (There's a technical interview part too.) Unfortunately, I don't know Java, though I would love to learn it – I've been learning to program in Python. My CV and application letter are entirely truthful and there's no false claim, thankfully.

I am going to do the interview, because I would love to work for this company and feel it would be stupid to rule myself out at this stage (and I could commit to learning Java before the job would start), but I'm tempering my expectations as I'm a career-changer and I am sure they're getting plenty of full CS grads with Java applying too.

So, with about one and a half DAYS to prepare myself, what should I do?
- I just got Programming Interviews Exposed and am going to use it to get myself primed on algorithms and common problems
- I am going to prepare myself for the cultural/experiential questions to fit their needs
- I am going to revise my JavaScript and CSS

It seems utterly insane and pointless to try learning Java in such a short time – I'm at 'Hello, world' right now – and I assume it would be better to do it in either pseudocode or Python. If possible, I will ask, and be prepared for either.

If you are a developer or have hired software development interns, what would you advise? And could anything overcome that fundamental gap?
posted by carbide to Computers & Internet (8 answers total) 3 users marked this as a favorite
 
As someone who has given technical tests (SQL) in the past, I'd suggest pseudo code it. Your resume and the interview should explain the lack of java. Emphasize quick study and how you feel your background is such that learning Java won't be a tremendous hurdle.
posted by ish__ at 11:52 AM on October 3, 2013 [1 favorite]


You shouldn't attempt to learn Java. You should absolutely do it in Python or psuedocode and talk through it/explain. That would not phase me as an interviewer in the slightest.
posted by wrok at 12:11 PM on October 3, 2013


Try to get familiar with some basic syntax and functions. I'd focus on being able to read/trace some javascript so that you can at least determine what the code is supposed to do. I agree that your best bet is writing pseudocode (tidily written with good indentation to show them you value cleanly written code), but maybe if you can incorporate at least SOME Javascript-like stuff in to it.

Having recently had to mentor a very unskilled programming intern, being able to TRACE CODE and know how to read code to understand what it does (whether or not you're familiar enough with the language to be able to write it yourself) is intensely valuable and says to me that you are at least wired right for the job. I firmly believe that you have to be wired a certain way to be a good programmer, there has to be some natural inclination, and you need to show them that you are wired right. Being able to read and understand code that you are unfamiliar with and that is in an unfamiliar language will look good. Being able to write well structured, well thought out, efficient pseudo code also looks good. Not trying to bullshit me and being honest about your inexperience with that language is a huge effing gold star, especially if you can also show me that you have made an effort to gain at least some familiarity with it, maybe telling me why you think you'd be able to pick it up quickly, where it is similar to what you have already done, etc.

If you had those three things (good tracing and code reading ability, able to write solid and logical pseudocode, honesty about what your skills actually are) I'd probably still seriously consider you. Show them you think like a programmer. If it was between you and some other programmer who was familiar with javascript but wrote terribly formatted crap code, I'd pick you hands down. I can teach you the language, that's easy. It is a lot harder to teach someone how to think like a programmer.
posted by PuppetMcSockerson at 12:12 PM on October 3, 2013 [3 favorites]


I would review OO concepts back and forth several times. I doubt a company would you expect to code in a language you are not familiar with.

I would also familiarize with java code, at least be able to understand what the code is doing.
posted by wongcorgi at 12:14 PM on October 3, 2013 [1 favorite]


wongcorgi makes a really good suggestion. Being comfortable with object oriented programming is important.
posted by PuppetMcSockerson at 12:15 PM on October 3, 2013 [1 favorite]


Java has a reputation as a "bondage and discipline" language that imposes a lot of rules on the structure of your programs. There's no way you can learn all those rules in time. Sadly, some Java interviewers in the world will want to hear you list them - but those people probably suck to work with anyway.

I agree you should go over object oriented principles. Make sure you understand classes, objects, methods, data members, etc. They will probably ask you to write up a class structure on the board. Be prepared for classic examples like card game, vehicles, animals, shapes, etc.
posted by scose at 12:22 PM on October 3, 2013 [2 favorites]


Be upfront about your language experience at the interview itself. A decent interviewer will find the edge of your knowledge quickly and is unlikely to be impressed by whatever you can learn in couple of hours of cramming.

Stick to pseudocode or python during the interview. Brush up on general software concepts - OO design, as mentioned, run time (think big O), debugging techniques (what's the last interesting bug you dealt with?), maybe UI design/usability (since you mention CSS being involved). Practice some coding, but don't bother trying to memorize specific algorithms.

The lack of Java may not be a big deal; plenty of places are looking for intelligence first and specific skills second. On the other hand, lots of people do know Java, so don't be too discouraged if they pass on you. You might have better luck somewhere that uses a less common language.

My general assessment when interviewing software interns is that if they can code (not necessarily in the language they'll be working in), they can do some basic problem-solving (given internet access, can you figure things out, or am I going to spend the summer googling things for you?), and they're socially competent for the hour or so we converse (neither super-nervous nor insincerely perky), they have a good shot.
posted by orangejenny at 7:13 PM on October 3, 2013


Response by poster: Thank you all. I went with not trying to cram Java (though I made sure I could recognise syntax for a few basics like defining a method), and it turned out I could do the relevant part of the test in Python – Java came up more in the technical interview, actually. I suspect I didn't get it, which is a pity, but it was enjoyable and really useful to do.
posted by carbide at 10:59 AM on October 7, 2013 [1 favorite]


« Older Negotiating salary when you're not precisely what...   |   Can I make it as a freelance mechanical... Newer »
This thread is closed to new comments.