I didnt get very far through Twilios interview process, so I cant comment much on the topic.
Experience: Iapplied online, and about a month later, HR contacted me to set up a phone interview.
I expected the challenge to be easy since it was, after all, a pre-phone screen. I thought it was pretty hard, but you can be the judge yourself (Facebook Interview Question). I started answering the question in PHP for 20 minutes, at which I realized I had more experience coding these types of data structures in C and decided to switch over. It was a poor choice. I didnt finish the problem in time and didnt get a next round.
Describe database normalization: what are the requirements, different normal forms, why is normalization important, etc.
As a brief overview, the next stage in the process is to find a project for you. This process can take three weeks to complete and there is no guarantee that we will be able to find a project or extend an offer. We promise to do our best to match you up!
The next round was a coding phone interview. In this interview, they asked me to implement a Foursquare leaderboard in a scripting language. Essentially, I had to create a class that stored the number of points a user earned in each of the past 7 days, implementing methodsaddPoints(user, points)andgetTotalPoints(user).
Fog Creek had arguably the best interview process out of all these companies. HR responded to emails quickly, their questions were challenging but doable, and they provided great amenities when I visited the office. Their system was methodical and thorough. Even though I didnt receive an offer, I believe I demonstrated my skills as a programmer the most accurately in Fog Creeks interviews. It makes sense that Fog Creek would have an outstanding interview process: their CEO Joel Spolsky has literally written abookon hiring tech talent. Im not surprised they consistently createawesome products.
, write a function that returns the index of the last occurrence of the most frequently occurring character.
Below, I describe the interview processes of all these companies. To potential applicants, this article will provide all the questions I received in these interviews, and it should be a helpful resource for interview preparation. For all coding phone interviews (where I didnt sign an NDA), I include theactual codewritten during the interview.
Experience: I applied at the Twilio website and received an email back from HR the very next day. I had two 30-minute phone interviews and didnt receive an offer.Example questions:
From what I experienced, their questions focused less about data structures/algorithms and more about web development and databases.
[redacted at the request of Fog Creek]
Write a function that transforms a string such that sequences of consecutive underscores become a single underscore. E.g.\ (_hello___world__ = _hello_world_)
If youre wondering, I decided to accept the offer from Foursquare.
In the second interview, I spoke with a Google employee who managed a server farm and worked on the firmware for Googles proprietary server hardware. During the interview, he did 90% of the talking, taking most of the allotted time explaining how awesome his job was. In grandiose terms, he described in full detail the facility where he worked, and explained how petabytes of cached searches were stored in his servers. He only asked me a couple questions, and they seemed to be questions aimed towards Electrical Engineers (E.g. questions about decreasing power consumption in his hardware). I used my meager knowledge of physics and EE to give vague answers, but he responded well to them.
Experience: I applied through the Campus Career Center website and had a 45 minute on-campus interview. Then, I was asked to go to the office in New York for an onsite interview, which ended up being 2 60-minute sessions. All the coding questions were small C string manipulation problems. Nothing required more than 8-10 lines of code. Example questions:
I added a property that saved the timestamp of the last time a users point-array was updated or read. Upon a new read/update of the point-array, a method would calculate how many days has passed since the last read/update and shift the point-array accordingly.
My first solution was a seven-bucket array that stored the number of points the user earned in the past seven days. When a user earned points, those points would be added to the 0th bucket in the array. At midnight, a cron job or some other function would shift all the point values to the right and a 0 point value would be placed at the 0th index.
The first interview didnt involve coding; it was more of a technical discussion. First, the interviewer and I each gave 5-minute introductions describing own backgrounds and the projects we were working on. Then, for the next half hour, we discussed a several CS topics. A couple things we touched on:
Here on a few of the lessons I learned through the college interviewing process:
and converts series of consecutive identical characters to the number of consecutive characters and the character itself. E.g. (aaabbbbcccccdde = 3a4b5c2de)
Experience: After applying online at theirwebsite, I received an email response from HR setting up a phone interview within 2 days. I had two 45-minute coding phone interviews using EtherPad, after which HR sent me an email inviting me to the New York office for an in-person interview.At the Fog Creek offices, I had 4 separate 60-minute interviews with Fog Creek developers.
As part of the project matching process I will share your information with our intern hosts. The intern hosts will review your information and will notify me if they feel you are a potential fit for their project or team. Provided we receive host interest I will schedule you for a 30 to 45 minute host interview. This interview will be via phone and is intended to explore how strongly your skills are matched for the project. While hosts conduct these interviews in different ways you should be prepared for this to be a technical interview (as many hosts do wish to further explore how your technical skills map to their projects).
After the phone interviews, I wasnt happy with the questions asked. I didnt think they allowed me to demonstrate my knowledge of Computer Science. There were no questions about data structures or algorithms, and the only clever thing I managed to do was quickly Googling an answer to one of the questions. I was hopeful, but not very confident about my chances.
I can only provide anecdotal evidence, but I believe my interview experience at these firms provides insight on their hiring philosophies.
All the questions they asked at Bloomberg were of the variety you would find in Programming Interview Prep books. As a company, this is a dangerous practice; using well-known questions increases the probability of bad hires. A mediocre programmer could memorize the examples given inProgramming Interviews Exposedand do very well in a Bloomberg interview. To make things even worse, I was asked thesame first questionin both my on-campus and in-house interviews (it was the consecutive underscore question). It took me a few minutes to solve the first time, but of course the second time I wrote down the answer immediately. For a large company like Bloomberg, that is simply lazy. I doubt it was a coincidence; I bet Bloomberg employees are given a booklet of sample interview questions to ask applicants.
Yale censored a students course selection website. So I made an unblockable replacement
Experience: I applied online in the first week of October. Over two months passed and I didnt receive a response, so I reached out to my friend who had interviewed at Facebook the year earlier. He gave me his recruiters contact information and I reached out to her. Immediately, she responded saying that they had too many applicants, so I would have to solve a timed 45-minute programming challenge on InterviewStreet as a pre-phone screen.
Interview preparation books are good, coding for fun is better- Most of the questions interviewers asked me were not types of questions covered in interview prep books.Really good questions will involve some data structure or function youve never seen before. In my Fog Creek interview, the interviewer asked if I had heard of a Gap Buffer before. When I responded no, he said good, proceeded to describe a Gap Buffer and asked me to implement one. Interviewers want to see how you handle something new. This is why coding for fun is valuable; when I build something new for fun, at least 25% of my time is spent on Google and StackOverflow learning how to do X, Y and Z. Through this practice, youlearn how to learnnew things quickly.
(UPDATE: To address the concerns of some readers who brought up the ethical concerns of using Google in a phone interview, I have a point of clarification. After I finished that UTF encoding problem in my interview, the interviewer asked where I got the check-bit macro (he saw me paste it in). I told him I got it from StackOverflow. It didnt seem to concern him.)
Still, interview preparation books/articles can be helpful. Here are some resources that I used before my interviews:
Experience: I applied online at the Googlewebsite, then received an email from HR about three weeks later setting up two consecutive 50-minute phone interviews (with a 10 minute break in-between). I signed a non-disclosure agreement, so I wont give the exact questions. Both of these interviews were very different from my experiences with other companies.
In the first interview, the interviewer called me 20 minutes late, so the 50-minute interview became a 30-minute interview. He asked a low-level coding question involving UTF encoding. When I first heard the question, I had no idea how to know to answer it. I didnt have much experience manipulating individual bits, so I slowly anddeliberately repeated the question back to him, to make sure I understood what he was asking. I quickly Googled how to use bitwise operators in C and found this wonderfulcode snippeton StackOverflow that made the problem easy to solve. I wrote a solution with time to spare, and the interviewer seemed content with my answer.
. I was surprised they asked this since it was explicitly mentioned in JoelsGuerrilla Guide to Interviewingas a good interview question.
I applied for internships at several tech companies this year, including Google, Facebook, Foursquare, Dropbox, Twilio, Bloomberg, and Fog Creek.
This is a long post (~3000 words), so feel free to skip the companies that dont interest you.
Googles interview process is clearly a flawed system, and the absolute worst part of their system is the matching phase. It seems this matching pool is very useful and convenient system for the hosts; the hosts get to select interns that have skills tailored to their needs. However, the matching phase is an agonizing process for the interns. After about a month in the matching phase,I turned down another offer (since the deadline passed), taking a huge risk in order to have a possibility at a Google internship.After turning down the other offer, I was in the matching pool for another ten weeks, at which point I had given up all hope on getting a job offer from Google. Somehow, things worked out.
Position: Financial Software Engineer Intern
I was in the matching phase for over three and a half months before a host selected me for a third interview, not the three weeks my recruiter described. Being matched with a host was a huge relief; during my period in limbo from November to mid-February, I decided to turn down another offer for the chance of getting a Google job.
I hope you enjoyed my inaugural post in the blogosphere. I havent seen any articles outlining the differences between tech companies interview processes before, so I decided to write one myself.
A couple weeks after these two interviews, HR contacted me again and,to my surprise,they told me I made it to the final round. My recruiter sent me this email explaining how the last round works:
Describe different types of database indicies (primary, unique, index, etc). When do you use each of these indicies and how do they differ at the data structure level.
Apply early and dont be timid- My sophomore year, I didnt apply for summer internships until February. By that point, a lot of tech firms had already made their summer hires and I didnt get a job at a top tier tech company. My junior year (this year), I sent in all of my applications by the first week of October. If the companies dont get back to you, find the email of a recruiter and send them a message. Use any contacts you have. Does your cousins half-brothers uncle work for Facebook? Reach out to him and ask for a connection to HR. You have nothing to lose by asking.
The way this next round works is unique to Google. All applicants who make it to this stage are put in a matching pool. What this means is that all of these applicants (their resumes, candidate profiles, scores from past interviews, etc.) are put into a database. Potential hosts can search through this database, filtering results by programming languages, GPA, scores, etc. Each host gets to pick the specific intern that he wants to be matched with for the summer. Often, this host will select a bunch of applicants for a third round of interviews, then choose an intern out of that batch.
A couple weeks after the second phone interview, I received an offer.
Experience: Going into the year, I wanted to work for Dropbox more than any other company. They are growing at an incredibly rapid pace, I use their product religiously, and they solve a computationally interesting problem. I applied online and didnt receive a response. After two months of waiting I dug around the Dropbox website and found the emails of two recruiters. I emailed them both, sending a specially written cover letter and my resume. I got nothing back. Not so much as an email acknowledging my existence. Such a bummer.
Create a Tweet Search Engine that allows you to insert Tweets into a database and search for Tweets by word or phrase. No relational database should be used; all data structures should be stored in de
Have a side project- I know, everyone says this. But seriously, do it. Every company above asked me to describe an interesting past programming project. Having a side project will make your introduction spiel more interesting, it will show you are passionate about programming, and it will give you experience solving real problems. Talking aboutmy startupnever failed to impress interviewers.
After seeing this, the interviewer explained that as the userbase gets large, running a daily cron job would be computationally expensive, and asked for a better solution.
What is the difference between the stack and the heap?
Fog Creeks questions were the most mathematical and data-structure heavy out of all of the companies where I applied. All the interviews involved ANSI C coding questions, and they involved building some pretty cool functions. Here are some of the questions asked:
Beating the Scribd AI Challenge – Implementing Traits through Heuristics