My Facebook University Engineering Program Essays

I believe mobile technology can empower community builders in two main ways:
Mobile technology helps build communities of tech learners and builders. I know that the most popular software products in the world are all built by a community and for a community with an enormous amount of mentoring and learning involved. I’ve first learned how to code in JavaScript and build software with the Hack Club community. With the help and encouragement of my mentors, I turned my open source browser game, Shouty Flap, into an iOS game. It soon got quite popular among Hack Club students. For me, the fact that I am sure what I’ve built has potentially made at least a small number of students think that “if she came in barely knowing how to code and built this in a day, I can build it too” is truly exciting and empowering. This is why I am striving to become a community-oriented tech builder.

Mobile technology helps build communities of tech users. No piece of useful technology is built without valuing the voice of the user and putting the needs of the user at the center. Sadly, we still have a long way to go in genuinely valuing the inputs from students as a community. My college’s official student course registration system was not only not mobile-friendly but also painfully difficult to use. A group of students had formed a coalition calling for a better system until the introduction of SCU-Classes, a schedule builder in the browser developed voluntarily by two students provided a temporary solution. Unfortunately, with the graduation of the developers, mobile SCU-Classes didn’t work out because of worries of the app’s compromised usability in mobile. So our students had to continue the fight for a mobile course reg system. Recently the administration finally decided to build a mobile version of the course registration system. What I appreciated the most from this story was the power students gained to fight together because of mobile tech. I feel extremely fortunate to be in the middle of a highly progressive community built by people who believe in the power of tech, and I am eager to join this rank of builders and engage in my communities through the medium of mobile technology.

P.S. To Facebook hiring managers: consider hiring a higher proportion of folks from non-target, non-tier 1 schools. You’re losing out on too much amazing talent and passion. It costs you money and reputation. Just saying.

My technical interview experience with Dropbox, Twitter, Amazon, Box (2017-18)

Dropbox [90min] [OA]

Grid Illumination: Given an NxN grid with an array of lamp coordinates. Each lamp provides illumination to every square on their x axis, every square on their y axis, and every square that lies in their diagonal (think of a Queen in chess). Given an array of query coordinates, determine whether that point is illuminated or not. The catch is when checking a query all lamps adjacent to, or on, that query get turned off. The ranges for the variables/arrays were about: 10^3 < N < 10^9, 10^3 < lamps < 10^9, 10^3 < queries < 10^9.

This problem was quite hard for an internship OA. I got it in first semester freshman year with next to zero coding practice, not to mention reading up CTCI to learn the “right way” to solve problems.

Tips: Use time accordingly to plan solution.

Twitter [easy – medium] [45min] [onsite]


1 Given two numbers as strings, output their sum as a string.

Straightforward. For this question, be careful in the way you handle the carry. Make sure to consider a lot of different cases when testing.

2 Given an array of integers with duplicates, find the int that isn’t a duplicate (this int is guaranteed in the input array). followup: given that your solution will be used as a backend utility function, how to design a return value for invalid inputs?

You can approach it with a straightforward hash map and expect the interviewer to follow up asking for improvement in space complexity (hint: use bit manipulation). For the followup example answers are exception handling mechanisms or constants. I bombed the followup because I simply did not know how to answer it with a lack of design knowledge, but it seems like most of the time interns don’t get this kind of questions.

Behavioral: why major, what’s your proudest achievement, talk about a challenge you’ve encountered in group/team setting

Tips: Follow the process strictly but(!) also listen closely and communicate frequently with interviewer.

Amazon [easy] [OA * 2 + video interview]


debugging and logical questions (straightforward but time goes by really fast so manage it well!)


  1. amazon fulfillment center, find two boxes whose weight is less or equal to maximum weight

Classic combinatorial optimization, a variant to the knapsack problem.

  1. amazon data center, round-robin style access, find average waiting time of all clients

This problem was very hard in the sense that there were a lot of things one needs to keep track of when crafting a solution. You need a crystal clear understanding of the problem and plan your solution meticulously.

*Rumors say that if you did exceptionally well in OA2 they will skip the last round of interview and give you an offer

1-on-1 video interview [45min]:


Introduce yourself

Tell me about a project you’ve worked on with a tight time frame and how you got it done on time

General software engineering knowledge:

What is the difference between an array and linked list?

What is a foreign key in database?

What is TCP? How is reliable data transmission implemented?


1 Find the nth Fibonacci number

I bombed this question because I tried to recall an optimal bottom-up solution but was blanking out on the details of it. After being stuck for about 10 minutes I had to go back to the basic recursive solution, talked about optimization with memoization but ran out of time to actually implement it. I was sure that this left a bad impression; it showed the interviewer that I was unorganized and hasty by trying to jump to code without thinking through my solution first.

2 Check if a string is palindrome

Straightforward. Make sure you can go beyond the solution using something like reverse()

Tips: Don’t pretend to know something that you don’t actually. Never, ever try to come up with an optimal solution upfront without being 100% sure how it works and how to explain it. Start by talking about a naive solution and build it up elegantly to better solutions.


Box (Security Automation) [easy, specialized] [OA]


1 Check if a string is valid ipv4 or ipv6 address


3 Parse base url

Tips: Familiarize yourself with Python features. Know how to use regexp.


Practice/communication tips:

* Make sure your interviewer understands every step you take

* Practice problems, see patterns of best solutions (clean code, high performance)

* Be highly comfortable and familiar with one coding language (Python recommended because it’s used pretty ubiquitously at companies for interviews, UNLESS if you’re interviewing with Amazon because only Java and C++ are allowed for OAs)


Good luck and practice often!

Failures and bold steps

After an intense fall of internship applications and going through recruiting processes, I’m finally back!

If I learned anything from it, I think it is the detrimental fact that the experience of people who have experienced rejection and failure has never been valued as much as it should be. Of course, we only want to talk about our successes, not failures because we want to look good in front of other people and feel good about ourselves. And we want to learn from people’s successful experiences in the hope of being closer to succeeding ourselves.

But really, throughout all the years you’ve lived you must have known at least one “Big Head”, haven’t you? Some person who has absolutely no talent or tried nearly as hard as you have, but seems to get all the things everyone’s been dying for at school/work because of pure luck? These people, even though they might be in the exact right position to do so, can’t provide any valuable information for how to try and advance in something for all of us who’ve kept our faith in hard work and persistence. As a student and job seeker I’ve been asking around for advice at career fairs, career experts, industry professionals and online – I can only say I really am disappointed in all the generic job search advice and resume tips (easily obtainable from the Internet) I got from them so far. Don’t let these people’s bullSh*t bother you even a tad bit.

I was informed today that I wasn’t offered an internship at Twitter this summer despite that I have prepared for my interviews for a month beforehand. I had so much fun talking to the best engineers and fellow candidates and absolutely everything seemed to have gone so well. Here’s the important part, though: I watched all of CS Dojo (YK Sugishita)’s videos and went through his Udemy course all as part of my prep. Besides the superb coding interview prep videos, I was awed and fascinated by YK’s story as a former Google software engineer and now a full-time YouTube content maker who dedicated his time to help a growing number of candidates succeed in their next coding interview. Here’s one of his countless inspiring videos on this topic:


I’m not really the only person who deserved all the good things because I worked so hard and the world is unfair to only me. I mean just look at him. Why in the world would he quit his perfect job at Google to making YouTube videos full time which guarantees no decent income? He tried so hard to go through all the trouble of getting a job at Google and then just went and inflicted that “failure” on himself! This makes me believe that any successful person in the long term who has built up credibility and won the trust and likes of others would probably never go around and flaunt their achievements first thing when they make first impressions. And anyone who would accept you no matter what and appreciate whoever you are will never judge you even when you share all your failures with them. This is why YK is such a great mentor and has so many followers. He encourages people to take bold steps. Why can’t anyone who’s in the position of offering guidance to our students be just a little more like him?

From YK, my research and interviews with Twitter engineers, I’ve reflected and learned a million times more from my failures over the past two months than I have from seemingly helpful tips from recruiters at career fairs.

My Twitter Academy Essays

It’s getting closer and closer to internship season. I’m preparing for my onsite with Twitter next month and I want to share my responses to the questions on my application and hopefully this would be helpful for some of you.
#TellYourStory: In 280 characters or less, share with us who you are through a hashtag and explain why you chose that hashtag.

The hashtag I choose is #WeTheStudents. This is a hashtag Hack Club uses, and my friends there are making a movement to change the landscape of how high school students engage with computer science and coding. I am extremely fortunate to be a part of this movement. It has changed many of my longheld personal beliefs: growing up as an only child, I was used to being protected by my parents and believed that students and young people have little to no say in deciding a future for themselves because of the lack of knowledge and/or experience. To me, the title “student” used to indicate powerlessness. But my experience learning to code and interacting with Hack Club’s members liberated me from constraining myself within the circle of my own family; it made me dare to adventure, live differently and always open to new knowledge. Now I am more than proud to be a student because this title signifies that I am forever a learner who uses knowledge/power to empower others and the power multiplies with #WeTheStudents.

#ShipIt: Our engineers are constantly shipping (launching) new features and functionality on the platform. In 280 characters or less, list one idea you would ship that would impact the way diverse users interact with the platform?
Twitter’s accessibility efforts have already greatly enhanced the usability of the platform for disabled groups. For example, Alt Text is one of the best features that enables a blind user to be able to access images on Twitter. However, its usability is compromised when content providers are unaware of this option, when it takes too much effort for them to manually provide the descriptions for every image, or when descriptions provided are not detailed enough. The use of specific machine learning algorithms and image recognition technologies can solve this problem by recognizing elements in the image, thus providing a detailed description. After the basic feature is implemented, further optimizations such as natural language used in descriptions can be done, but content providers can still use the manual input option during the transitioning stage of this feature.