Because of a reference from someone working in-house, I got an online assessment directly. The problem was easy, “Try to implement a comparator so that we can sort an array consists of some objects based on some specific rules”. I received positive feedback after 8 days which was very sluggish to be honest.
Next was a phone interview, after a brief chat, I started to solve the coding question “Given an integer array and a target, find a combination of integers so that it can be aggregated to the target, you can use each integer arbitrarily”. The brutal force way of using Depth-First-Search might be coming into your mind easily, and if the target isn’t so large, you can also try a dynamic programming approach.
I was told failed 4 days later without any specific feedback :(
First phone interview was arranged with the manager. We spent half an hour on behavior questions, the coding question was the same as Regular Expression Matching. I wrote a backtracking algorithm with Depth-First-Search as fast as I can just want to save more minutes for testing.
I received positive feedback several days later. Next step was a video conference. Can’t remember the coding problem very clearly, but basically, kinda of “Given a list of bank transactions, your job was to find the fraudulent ones according to some specific rules”. Some OOP principles are needed to make your program more flexible.
I was told failed the next day, then something interesting happened, another recruiter set up a phone interview for some other role. I did apply for not just one role of course, but the second phone interview was unexpected.
I didn’t perform well and the worst thing was I even forgot the coding question totally. So my application stopped here.
Morgan Stanley (Shanghai)
Phone interview was quite easy, after 10 mins talking about behavior questions, I was asked many fundamental questions related to Linux, such as “What’s a zombie process? Ways of IPC? Basic git commands?”. The recruiter invited me for an onsite interview the next day.
Round 1: Nothing particular, still some sort of Linux related questions, then I was asked to write a producer-consumer demo on white paper with Golang.
Round 2: Dive into the resume.
Round 4: Talking to the hiring manager. It was a nice chat, but I was really tired at that time.
Extra round (several days after onsite): A phone call with boss’s boss :) just some behavior questions. The feedback was great and I got the offer successfully.
I did an online application arbitrarily and would never think of receiving olive branches from this giant unicorn. So the journey begins.
I think the phone interview was quite easy due to some related experience I had. After brief greeting and introduction, we went to a quick system design directly, “Given a coordinate, find K nearest bus stations”. Okay, the problem can be reduced to two smaller ones. First, use Geohash to index each station. Second, for each query, find out all these stations near your current geographic grid and find top K with heap which can be done within O(NlogK). The next coding question was group anagrams, which can be solved with a counter easily.
After one week I guess? I was told to fly to Amsterdam for a whole day back-to-back onsite interview. 12 hours, damn, never have I ever been flying such a long distance. And for better coding experience, I brought my own laptop.
Round 1: Design Instagram.
Round 2: Coding, Minesweeper.
Round 3: Hiring Manager, tons of behavior questions.
Round 4: Coding, similar to number of islands, but write two functions:
setOne(row, column) and
Round 5: Design Netflix.
To be honest, this is totally an unexpected offer, which means a lot to me indeed. Amsterdam is quite a gezellig city :) It will be so fun of living there.
I started this application in early April, the real job position locates at the London office. There was only one coding question during the first phone interview “Given a binary search tree, output a double linked list with its inorder traversal”.
I did well so there was an impending fly to London. But unexpected things happened all the time in our life, right? Due to headcount restriction, my application was suspended here.
Now it comes to October, yes you are right after totally half a year, it’s ok to continue this long-term application. But it now becomes a US/Singapore location based position which depends on whether or not you can get an H1b visa.
So second phone interview, two questions: “Valid palindrome” and “Compute sparse vector dot product”.
My onsite interview was arranged in Singapore HQ. Due to the incorrect flight booking name by the agent, I didn’t get on the scheduled plane! Damn, I should double check my email before leaving for the airport. But I insisted on going. So I asked the agent to change another flight on the same day immediately. Departured from HGH at 11:15 pm and arrived SIN at 04:30 am the next morning, and guess what, the interview starts at 8:00 am, such an exciting onsite interview, right?
Round 1: Coding, Given some library names along with their requirements, for each query. find an ordered library sequence, i.e. if A requires B and C, query(A) should return [B, C, A] or [C, B, A].
Round 2: Design Facebook post search system
Round 3: Coding Maximum Swap
Round 4: Career Conversation, nothing particular but many typical behavior questions.
I didn’t expect myself to get this offer because of some mistakes from system design round. And certainly, receiving a rejection letter after 3 weeks proves that my initial intuitions are right.
Well, I think that’s it, for the year 2018. Pretty much over my initial expectation.
Hope this post helps you get your next desirable job :)