So our project iLafayette has been going for a while and it’s time we kinda reveal it in more details to the whole campus. Khine and I plan to have a talk about it next Wednesday (April 21st) in AEC 500 at noon so drop by if your interested. I’m also graduating so we’re definitely seeking students helping out with this project including designing interfaces, icons, navigations and features.
We are planning to kinda make a “trailer” about our app but in the mean time you can check out the features right here. We do offer prototype build and instructions and if you wanna pop it on your iPhone and test it out.
Also Haruki and I are having another talk tomorrow in AEC 500 at noon about our MetaDB project so I’d really appreciate if you can come and support us. MetaDB is essentially a CMS that manages sensitive images and their metadata (author, title, description and such). The talk would be a little bit technical so just a heads up.
Now move on! I just had my 1st interview with Facebook and I think I did ok. Here’s how it goes:
We started off with the normal introduction stuff. The interviewer told me that it’s gonna be half technical half behavioral. Then he started with a behavioral question:
1. What are you passionate about? I told him about learning new technology and rapid-prototyping, turning ideas into reality and also support those statements with my iLafayette project and MetaDB
2. Can you talk a bit more about the iPhone project you just mentioned? I started describing the needs, features and designs and how we came up with it and what we wanna do with it.
3. Can you talk a bit more about the technical aspect of the project? So I mentioned how the app is divided into widgets and each mines its own data. I also pull out an example about directory search and how we plan to rank information differently (like name will be rank higher than email/phone number so that name will be searched first) and how data got parsed.
4. Any technical challenges? I talked about working in a small team of 2 people with a long list of features, also the school is changing its infrastructure so we’re just prototyping UI/UX first, then design the backend later. I also mentioned we had to deal with multiple different APIs like Drupal, Banner Self-Service and such.
5. What do you see Facebook in 5/10 years? I talked about the ability to integrate into different social media networks, ability to write a lot of plugins and apps, improvement in chat window and also UI/UX cause Facebook kept giving me random error pop-ups.
6. Technical: How do you find a small string in a big string? We used collabedit to code and it’s actually pretty smooth. It has code highlighting for a lot of languages. I talked about the naive solution of iterating through every character and check the substring from that character. I started coding with a simple Java functions, put in all boundary cases and stuff.
7. Technical: Now how do you find a small string in a file? Pretty much the same thing except for reading from input stream instead. I used an array buffer which iterates through and read each substring. He mentioned I can read 1 char instead of the whole substring. I told him about the fact that array is static and I have to shift all characters back 1 to make space for the new char so generally it’s the same. He suggested me to choose a different data structure. I said I’ll use LinkedList and just keep track of head and tail pointer then there’s no shifting and it’s also faster. Keep in mind there’re also extra overhead in wrapping the char in Node element.
Besides, I also mentioned that there’s no point checking if the number of characters left is less than the query itself so I put in the length check. He asked me to explain it and I mentioned the tradeoff of having extra condition checking but it might be worth it if the query is long and the file is small.
8. Technical: How do you recursively check for a small string in a folder? I kinda made a mistake here of identifying the wrong base case. I thought it’s the case when there’re no subfolders inside the folder but I figured out I was wrong and made the fix. I started coding and iterate through all items in the folder and just recursively calling the check function in that. The base case is that the folder is just a file.
I kept track of a found boolean while iterating through and he asked why I needed it, shouldn’t I just return directly and I was like “yeah that’s right”… but hold on, I changed my mind and explaining to him that if I return directly then it’ll return false when not found at the 1st item without iterating through so he was like oh yeah I understand now. I apologized for not explaining in details.
And that was it! I later figured out a bug that I should have set found boolean to false initially instead of true but it was too late. I should have explained about the linkedlist a bit more. Well nervousness kicked in and I made mistakes. Hopefully this will be helpful to whoever is doing technical interview. Drop a comment if you guys want, I’d really appreciate it. I was also contacted by Google again today and I’ve set up a phone call with them tomorrow. Yup, that’s what’s up!
In the mean time, have fun and keep on rolling!!