I'm going to be interviewing with a major tech company soon. I'm excited and nervous, obviously. It sounds like the focus will be on coding ability. From the preliminary tests, I feel like I know this stuff but I'm rusty; I've been out of work for a bit, and I'm familiar with all the core concepts, but it sometimes takes me a bit of research to recall specific details--not a good place to be in a whiteboard situation. So I want to brush up before hand.

My contact recommended "reviewing basic data structures and practicing some coding problems you haven’t seen before." That's good, but vague. Any suggestions on where to find stuff like that?

Also, relatedly, I feel like I'm really good at analyzing data (taking a big set of data, which may be inconsistent and/or contain errors, and finding patterns in it), but I know nothing about "data analysis" as a professional field. Any suggestions on how to learn more about that, and (perhaps) bring it up in the interviews?

I imagine it depends heavily on what kind of position you're interviewing for at what kind of shop, but the last time I interviewed for a coding position they threw some pretty basic stuff at me: things like "reverse a string" and "generate a Fibonacci sequence." I was kind of surprised, but I suppose the aim is more to weed out the many candidates who aren't even qualified to do that (and if The Daily WTF has taught me anything, it's that such things are way, way more necessary than you'd think.) The last time someone asked for a sample of my own code, I just gave them a little vector-graphics spaceship demo I'd been working on that demonstrated a working knowledge of basic OOP design, and I got that job.

"'Legacy code' often differs from its suggested alternative by actually working and scaling." - Bjarne Stroustrupwww.commodorejohn.com - in case you were wondering, which you probably weren't.

I also like this article for interview prep. It's written from the perspective of the interviewer, kinda old, and not all companies are the same but I find it is in line with West Coast tech companies' general philosophy and was helpful to me. Good luck!

I can talk from a hiring perspective, but my approach may be a bit unconventional, so take it with a grain of salt.

I've never asked a coding question during an interview.

The project I head up is a fairly widely used app with a large user base. It's also quite complex, and getting the architecture right was non-trivial, even for my colleagues who have deep experience in the particular field.

In advance of the interview, the candidate is asked to install the app and familiarize themselves with it; then to imagine they have to build the app from scratch. They have to design the architecture and an implementation plan in advance, and present it at the interview.

Nobody has ever gotten it exactly "right" (neither did we, the first time around), but the types of issues the candidate considers and the areas where they indicate further research would be needed say a lot about their background: Only engineers who have had practical experience in the area will know to ask certain questions or follow up about certain areas.

I've had a 100% success rate with hiring, which is understand it fairly unusual.

Then again, I'm somewhat lucky to have a really unusual use case where it's hard to fake knowledge.

What advice I can offer is this: Beyond merely preparing for coding problems, do as much research on the company and products as you can. Think carefully about what problems they may still be trying to solve and research areas where you might be able to contribute. Consider what it took to build their existing products and how you would do it if you were in their shoes. Is there anything you think they could have done better? Anything you're impressed with? Anything that you are curious about? The last point is important: The questions you ask about the company and the product, both from a technical and business point of view say a lot about you in the interview. Go informed about that company and go prepare with your own questions; don't merely prepare for coding problems.

WanderingLinguist wrote:I can talk from a hiring perspective, but my approach may be a bit unconventional, so take it with a grain of salt.

I've never asked a coding question during an interview.

The project I head up is a fairly widely used app with a large user base. It's also quite complex, and getting the architecture right was non-trivial, even for my colleagues who have deep experience in the particular field.

In advance of the interview, the candidate is asked to install the app and familiarize themselves with it; then to imagine they have to build the app from scratch. They have to design the architecture and an implementation plan in advance, and present it at the interview.

Nobody has ever gotten it exactly "right" (neither did we, the first time around), but the types of issues the candidate considers and the areas where they indicate further research would be needed say a lot about their background: Only engineers who have had practical experience in the area will know to ask certain questions or follow up about certain areas.

+1 on asking interview questions like this, rather than "how do you implement quicksort?".

On the coding skills side, the best interview question I've ever had was "Here are some of our utility functions. Please write tests for them. See you in an hour."

All the topics are required covered in the programming (based on difficulty they divided the topics into levels).

You don’t feel like stopping in the middle, because it looks like a game rather than simply coding.

Score for each question, which is a function of wrong submissions, time, hints used etc.

Mainly, they provide a neat solution. First, they tell us the solution approach(pseudo code/logic) and even then if we don’t get the solution we can see their solution(they provide three types of solutions- Editorial(neat and understanding), Fastest, Light Weight).

They also group questions of similar type, if you solve one you will get the idea. This way you can also practice similar types questions if you are bad in that part.

They provide you an option to set a daily score, based on this set score they show you the estimate in how many days you can complete the whole preparation with this daily score. They remind you frequently in a day if you haven’t crossed the daily score.