So I’ve talked to Facebook today and get myself a phone screen interview (if things go as they’ve promised). My new resume seems to get positive feedbacks most of the time, things like “wow I’ve never seen that before, that’s cool” so I’m pretty happy with that. I actually accidentally went to talk to EMC Corp twice without realizing and they remember me due to my resume. SCORED!!
Anyway the career fair was very busy and hectic but definitely the best source to get interviews. Although most companies don’t offer working VISA, they do have international branches and offices and stuff like that so it’s totally worth it. The 2 career fairs I went to, one in like October, one just now are really really helpful. The 1st one is called SHPE (Society of Hispanic Professional Engineers)
Most big companies are there: Microsoft, Google, Cisco… They also give privilege to people applying through SHPE. I was scouted by a Google recruiter from SHPE and thus got the interview after that. You can go register at http://www.shpe.org
The one I just went to is NSBE (National Society of Black Engineers):
NSBE also has a lot of companies there although I don’t feel like its as big as SHPE. Personally for CS major students like me there’re more software companies there (Apple, Facebook, McAfee) so it was pretty cool. Even Goldman Sachs and Citi were there but their recruitment season for IT passed already.
So for engineers interactions at career fairs are way more technical than the usual general-purpose one. They kinda screened you on the spot right then and there so if you come unprepared you’re out of the game. BTW if you’re lost, start talking out loud about what you’re thinking and you might get hints. Some of the general questions I got were:
1. So tell me about this experience (pointing at one of the projects in my resume): This is an easy question to see if you b.s on your resume so I just talked about all the details and technical challenges and how it’s gonna proceed in the future once I graduate.
2. What do you know about our company: Do some research beforehand and it should be a breeze.
3. Tell me the difference between a LinkedList and a normal array (Facebook guy asked me this): this is a CS101-type question and most people actually forgot. In classroom projects, designs are more important than data structure optimization that we actually never had to make that choice. But you can’t say that. You MUST know data structure well, when to use what, what the pros/cons and such.
4. So I have a stream of queries and I wanna figure out which word appears twice, how do I do that? (Amazon guy asked me this) Another basic screen type of question. It’s a stream of queries so it’s so you’d better not store them in some array/list cause look-up time is definitely a pain. You also wanna find the word that appears twice really fast so you wanna pick some data structure that allows constant look-up. Yeah punch them into a hashtable/map/dictionary and problem’s solved.
5. I have 250Gb of numbers and I wanna find the number that appears twice, how do I do that? (Microsoft asked me this) Yeah the same hashtable/map/dictionary is not gonna work here cause you won’t have enough memory to store 250Gb of numbers. So now what, intuitively you’ll definitely wanna split them up. Well so after that how do you find the number that appears twice? Well sorting would definitely help. What sorting algorithm allows you to split up the numbers and sort? Yeah you’ll wanna use Merge Sort.
6. Write me a function that produces Fibonacci sequence, any better way to do it? (Bloomberg asked me this) So if you’re CS you definitely know how to produce Fib sequence, recursively, in exponential time. And exponential time is also known as forever. Now how do you improve that simple function? One way to do it is to store numbers in a hashtable so that you don’t have to recompute. This is called Dynamic Programming (DP). A better way to do it is to only store the 2 previously-computed value cause you only need those 2 to determine the next Fib number. Another optimization is to use tail-recursion so that the compiler won’t have to return to each method, but escape from recursion directly. See, 1 simple question can lead to a pretty intense discussion.
I HIGHLY recommend this book: Programming Interviews Exposed
It’s a MUST-READ for CS major students before interviews. Even Google and Microsoft recommend this book to me to prepare for their interviews (although those were mad hard). Also join TopCoder and start practicing. It’s a very good practice site.
Alright I’ll post a bit more about programming questions later. Have fun and keep on studying!!