views:

296

answers:

6

Hi,

recently I had a job interview where I had to present self-written code and explain the programm architecture and design, had to take a look at company source code, explain what I understand of this source code sections presented (it was the domain model of an application) and had to modify the code to let the program work a little bit different. At least I had to solve a mathematical problem on a whiteboard - first with an iterative approach and then with a recursive approach. Besides the recursive one, from my feeling all went well. Complexity estimation was a question for the whiteboard solutions.
So far that was my toughest interview at all.

Now I am invited for a second technical test where they would like to give me 30 minutes to understand foreign source code and after that they will ask questions regarding the presented source code.

I would expect questions regarding to the code function, obvious problems and complexity estimation. But actually I am not sure how to prepare.

Is there anything I could have missed regarding to the question types? Any idea on how to prepare well for such tests?

Thanks in advance

cheers Michael

+3  A: 

Read more code. The Internet is full of simple and complex open source projects that should give you plenty of opportunity to practice understanding new code bases.

Ryan Graham
Will do so. Can you name some things I should have especially an eye on? I mean some things I should try to check and understand while reading foreign code besides the ones I already named?
marksml
I think it's a matter of experience and exposure to a broad set of programming styles. Try finding a couple projects that are similar to each other and look at how their approaches differ. Eventually patterns will appear.
Ryan Graham
+3  A: 

That's tough. you can't really study for it. But you could do some prep work.

  • Make sure you understand the language the code is written in
  • Brush up on design patterns (Factories and the like) so you can quickly recognize them and don't need to spend time learning them from the code
  • If you can, know what the software does ahead of time. If it facial recognition? CRUD Web App?

If you want to practice, read open source code to get yourself in the mindset of skimming code and trying to piece it together.

Tom Ritter
Its Java - have written apps using it for 8years. The app is a composite one. Desktop and web UI combined with a core server. I will do open source code reading. Thanks Tom.
marksml
A: 

maybe have someone rewrite a piece of code so that the variable names are jibberish and then quiz you on it.. i am guessing that this is going to be the only thing different with foreign code?

Samuel
I don't think he means code where the identifiers are in Klingon. He means code he's never seen before -- how quickly can he get up to speed with code that's not his? He's being asked to sight-read, for which the only preparation is to practice sight-reading.
Rob Kennedy
Excactly thats the test. Thanks Rob.
marksml
A: 

As long as you know the language - that is have done some programs with the specific language - there's nothing I think how you could prepare. Understanding of syntax and language can be asked for without presenting code, so I think it's more a "can he handle complexity and how does he react under stress" thing. So try to cool down. My best presentations / interviews I always had when I had no high hopes in it. Something like "I won't get it , so let's try and learn" ... . That way I was somehow relaxed - my way to success. So I would try to stop the usual excitement - although that's hard and - at least for me - I had not always success in calming down.

Anyway, that's me, keeping my fingers crossed.

Sascha

Sascha
Thanks Sascha, will do so and see if it works. Sounds like a good approach in any case.
marksml
+1  A: 

If you are lucky, then you can be invited for a 3rd and 4th technical test. By then you can put "technical test taker" on your resume:)

I would have warning bells going off in my head if I were you because the company couldn't get their act together to adequately interview you on the first visit. Except, maybe if it was to interview with a different group at the same company because you might be a better fit there. Too me, it shows that they don't consider YOUR time valuable. Thus, your needs will be treated like-wise if you get hired by that company.

Dunk
I think that having multiple interview rounds is a good thing, especially if each time you have different interviewers. It shows that they are careful to hire only the right people.
Esko Luontola
"If even two of the six interviewers thinks that a person is not worth hiring, don’t hire them." http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html
Esko Luontola
Its a startup with a team of at the moment 10 people where 5 are actually belonging to the dev team. I quite sure the dev team lead hasn't done that much interviews and will ensure he is not making a wrong decision as I would be then 1/6 of the dev team.
marksml
For the second round thing: I also consider it a good sign, I am wondering why he is doing this nonetheless especially because we already did a similar test in the first interview. Screening foreign code, explain and do some modification. I did that and it was fine that time as of his feedback.
marksml
I don't see how they are going to find anything new about you in the 2nd interview that they could not have found out in the first interview. Too me, it shows disregard for your time as you probably had to use a vacation day at your current job to interview with them to begin with...
Dunk
now they expect you to use a 2nd vacation day. I understand the desire to hire the right person, but multiple interview days is not the right answer.
Dunk
+1  A: 

My suggestion would be to do a little research on coding styles and code reviews as I suspect what may happen is that you could be expected to "read between the lines" and summarize some code or explain your approach for adding some new functionality or how would you refactor this?

I would likely considering practicing your translating answers with someone where you could pull examples off the w3Schools site and try to explain things in a concise and accurate manner. Rehearsing is key here as it is your communication skill being tested more than your ability fix or write code.

Lastly, don't forget that you may be able to ask some questions before you see the code and it may be worthwhile to ask what methodology do they use for developing software so that your answer may be suited well for that style of development if they prefer Agile, Waterfall, XP, Scrum or something else.

JB King
They are using a scrumlike approach. I checked that in the first interview. I think reading between the lines and summarizing some code parts will be part. thank JB.
marksml