Recently, lots of fresh graduates are applying to Shopee/Garena from Bangladesh. As one of the first Bangladeshi to be working in Shopee Singapore, many people ask me about my interview experience with them. Hopefully, this post will be useful for them.
I worked as a Software Engineer at Shopee from July 2018 to October 2018. I interviewed with Shopee/Garena last year (August 2017), so it has been a while. But from what I heard, the process did not change much since then.
Before we look into the interview process, first let us look into the company itself.
What is SeaGroup?
All information provided here are my opinions and interpretations only. I will advise you to validate the correctness of this information yourself.
SeaGroup is an internet company based in Singapore. It has three products:
- Garena (a gaming platform where you can buy/sell games; kind of like Steam).
- Shopee (e-commerce site like Amazon, Daraz, Pickaboo, Alibaba, Lazada)
- Airpay (kind of like Bkash, Upay, Ipay).
Garena was once considered a Unicorn. Garena then rebranded itself into SeaGroup and went for IPO last year September 2017.
Many people get confused between Garena and Shopee. For example, I was hired by Garena and on my S-Pass (Legal ID of Singapore) it was written that I was employed by “Garena Online Private Ltd”. Yet, I was assigned as Engineer at Shopee. Since Shopee and Garena are sister companies, don’t be surprised if you get shuffled.
So, without loss of generality, I will be just saying “Shopee” instead of “Shopee/Garena/SeaGroup” from now on.
It has multiple buildings as Office in Singapore:
- Two floors at Galaxis Building for Garena.
- Two floors at Ascent Building for Shopee. Before I left, I heard they will be switching to an even bigger office next year due to an increase in employee number, which makes sense considering the large queue in the toilet.
Here are some articles and videos that will give you a sneak peek of the office from inside:
- Shopee Singapore Office Tour
- Workplace Or Home: Garena’s New Penthouse Office Makes You Question Your Current State In Life
- GARENA’S OFFICE! Vlog #86 (21.7.16)
- Inside Garena: a look at the culture of Southeast Asia’s highest valued unicorn
Here are some more “official” news about the company:
- [Apr 2016] At $3.75b, Garena is the most valuable startup in Southeast Asia
- [May 2017] Brief: Garena now calls itself Sea, picks up $550m in new round
- [Sep 2017] It’s official: Sea files for IPO on NYSE
- [Nov 2017] Sea’s a steady ship, but shares drop after first quarterly results as a public company
- [Feb 2018] Sea’s losses widen amid revenue growth; president will step down end-2018
- [May 2018] Sea’s ecommerce gamble may be starting to pay off
- [Jun 2018] Sea Limited Raises US$575 Million in Convertible Notes Offering
How to land the interview?
Just like every other company, there are two ways to get an interview with Shopee: Referral or Direct Application.
I was referred by a friend of a friend of mine. If possible, try to get a referral from someone since it gets more priority than applying directly.
Some companies only hire through referral. They almost fully ignore direct application. But not Shopee! I have seen lots of people getting called for an interview by applying directly. So no need to get worried if you fail to get a referral.
You can apply to Shopee from their Career Page.
Q: Is there anything that boosts your CV’s chance in getting selected for an interview?
A: Having good results in ACM ICPC Regionals boost your chance of getting called for interview. When I referred people at Shopee, I noticed that those who have competitive programming background got their applications processed faster.
The Interview Process
A recruiter contacted me shortly after getting referred by my friend. The recruiter invited me to have a short chat with her.
We can break down the whole process in 5 parts:
- HR Recruiter Chat
- Technical Interview 1
- Technical Interview 2
- VP Interview
All interviews/chat happens on Skype. The interview process is very fast and may end within 7 days once started. So make sure you take your preparation before you apply as you won’t get any time later.
HR Recruiter Chat
It’s just an informal chat. Nothing to be scared of. My recruiter simply asked me questions about my CV, education, country, what am I doing currently.
She seemed really happy about my Competitive Programming career. Apparently, they have seen that competitive programmers tend to better in the job compared to others. Making it to top 10 of ICPC regional boosts your chances of landing an interview with them.
Back then I still had around 8 months left till graduation. I asked if they were willing to wait for me and she said they would wait.
Apart from asking my basic question to me, she explained what their company does and what roles they have open. She also explained the interview process and types of questions I will be asked.
She then asks you when you are free for the technical round. She might ask you to give the technical round immediately after the HR round. If you are not prepared for the technical interview, politely decline and ask for time. The interview process is really fast so you probably will be getting around a week before they schedule the technical interview 1.
Technical Interview 1 Preparation
I had around a week before my first technical interview. I only had google to help me prepare for it. Luckily I found plenty of interview reviews at Glassdoor: Interview Reviews of Garena
I went through every single review in there and compiled a list of topics that they ask in interviews. I found that they tend to ask questions from the following topics:
- Problem Solving
- Operating System
- Memory Management
- Virtual Memory
- Process and Threads
- How TCP Works
- Web Security
- How HTTPS works
- How to store password
- SQL Queries
I will highly encourage you to go through the glassdoor reviews yourself to get ideas about the exact topics.
Anyways, after going through the reviews, I decided to tackle each topic one at a time.
Luckily, even before applying to Shopee, I had been preparing for job interviews in general. As part of the preparation, I had completed almost all SQL problems from HackerRank. With that done, I was less worried about Database section.
Well, I skipped some exercises of SQL towards the end. I think I skipped when I reached “Join” section. But with 90% done, I was kind of confident.
Next, I decided to focus on Networking.
Again, I already had some topics covered beforehand. Basic networking can be learned from here: homenethowto. It’s an amazing website that covers topics like domain address, mac address, how wifi works, DNS and etc. Really good for basic stuff.
But learning how TCP works was a real pain. I had to dive into books. I read the following book: Networking – A top down approach. I obviously didn’t read the full book. I only read chapter 3.
Notes on what I studied can be found here: My Note on TCP/IP. It’s just a short summary of what I read in that chapter. I suggest you read the full chapter and make your own notes for best understanding.
With that, I knew how TCP works and its every detail. Next, I decided to learn how HTTPS or SSL layer works. For that, I read chapter 8.
Learned tons of stuff while preparing for the interview. Fun weeks.
Operating System Preparation
Didn’t get time to prepare for this. Had some basic knowledge.
Technical Interview 1
Got a skype call and link for an online editor where I was supposed to code. The first question was obviously coding test where I had to solve a simple problem and code it. Next had to analyze time and space complexity. Nothing difficult for problem solvers. If I compare them to Codeforces, then it’s easier than Div2C.
The real hard part starts after the coding section. I was asked questions from the Networking domain. He asked me how TCP works and I was prepared for it. Next some questions about how HTTPS works. Then some questions on Certificate Authority. Got stuck here, but that was fine. I can’t possibly answer everything.
Next, he moved to the database. Gave me a SQL query to write. And guess what? It required “Left Join”. I practiced on HackerRank till “Inner Join”. I stopped right when exercises from “Left Join” started to appear. What luck right? I told him about the funny situation and then said that I don’t know the “exact” syntax for left join, but assuming the syntax is xyz (I made up a syntax of my own) the query will be like this.
He accepted my answer and asked what is the complexity of the query. I was stumped when I heard the question. Complexity? I didn’t know people cared about SQL Query’s complexity! I told them that I don’t know the answer, but, I can make some guess. Assuming that I am the database designer, I would keep the record in some particular sorted order on the left side so that then I can iterate on the left side and binary search on right side… blah blah.
Basically, just because I don’t know how something works exactly, doesn’t mean I cannot deduce things about it. Not sure if my deductions were correct though, but I guess they were reasonable since the interviewer seemed satisfied with that 😀 (or maybe it was my imagination).
Next, he asked me questions on composite index and their implementation in the database. Got stuck here again.
He then asked me questions like how I would write code for storing passwords on the database. I went with answers like never store raw password, store hash instead; don’t use md5, use Bcrypt; careful about SQL injection, use some model library and etc.
That was it for my first interview.
Technical Interview 2 Preparation
After a few days, I got an email stating I passed the first technical interview. It was time for the second one. And they scheduled it such that I only had three days to prepare!!
The first thing I did was to review my first interview. I noticed that they didn’t ask me any questions related to OS (Lucky me considering I didn’t prepare for it :D). So I knew that there will be questions from OS in my next interview. So my focus was on OS.
But before that, I first googled and checked the answers for questions where I got stuck. Just like problem-solving, where you upsolve the problems which you could not solve during contest time 🙂 This helped out big time in my next interview.
Operating System Preparation
So I broke down OS into three parts: Process, Memory management, and File System. Three days -> Three topics. Easy routine right? But alas, I didn’t study anything on the first few days due to procrastination. On the last day, I studied the whole day and covered “Process” and “Memory Management”. Didn’t have time to study file-system.
In fact, one day wasn’t enough for studying “Process” and “Memory Management” completely. I skipped many topics like Locks and “other topics” (I don’t remember the topic names since I skipped them).
I put extra focus on Virtual Memory and Paging.
I found the following online book very helpful: Operating System Three Easy Pieces
Technical Interview 2
Same as before. The first section was the coding interview.
After that, as I predicted, I was asked questions related to OS. Luckily, the questions were focused on virtual memory (which I studied properly) and I answered them like a boss. In fact, while explaining how paging works, I started explaining the role of TLB and the interviewer even said: “That’s ok. No need to get into so much details” :v Since I just studied these a day before, everything was fresh in my mind. I don’t remember anything now though 🙁
And then we had the following conversation:
Interviewer: So, in the last interview you were asked about how database composite indexing works right?
Interviewer: Back then, you were not able to answer it, right?
Me: Yes. I didn’t know the answer back then.
Interviewer: Do you know it now?
Me: Yes 😀
Interviewer: Ok, then explain it to me now.
He seemed pretty satisfied that I took the time to learn what I didn’t know last time. Made an impact.
There were few more questions here and there, but I can’t remember them now.
If you make it till here, then you made it. This is just formalities. Unless you mess up this round big time, there is nothing to worry about.
I remember the VP asking me the following questions:
- Do I have any experience?
- When did I start programming?
- Did I ever interview at any other company? I told him about Google and WAP.
- What will I do if Google suddenly asks me to join them? Will I leave Garena?
- What is my opinion about overtime work?
- What is my opinion about meetings?
- What is my expected salary?
- What is my opinion about the interview process?
- Do I know what Garena does?
- Why do I want to work here?
I won’t be sharing my answers to the questions above as I don’t want everybody answering the same thing once they make it to VP interview. That would be weird.
You will get the offer within 1 week. If they don’t reply by 1 week, then you probably didn’t make it.
Advice for Interested People
Don’t panic by seeing such large syllabus. Frankly, I saw people answering only half the questions correctly and still landing an offer. So it’s not like you need to have 100% knowledge about each sector or know the answer to every question.
Shopee is currently mass hiring, but it may end any moment. When? I don’t know. So my advice is to take 1 or 2 weeks to revise these topics and then apply. You will have 4 interviews (1 HR + 2 Technical + 1 VP). Just ask the recruiter to schedule them such that you get 4-7 days to break in between. That will give you a few more weeks worth of preparation.
If you try to first take “perfect” preparation and then apply, it might be too late.
Technical rounds are the hardest part. As long as you have solid basics, you can easily pass the interview.
Whether you get the job or not, the interview process itself is a great learning opportunity.