Landing Dream Job In Tech
I have interviewed at most of the big tech companies in the US. I started at Amazon HQ, Seattle in January 2019, I have also received offers from a social media giant, several startups. In this post I will share my experience and how you can be a winner. The interview structure varies greatly by company. For example, my Apple and Samsung interviewers focused mostly on Java/C++ internals, which was tedious at times. My experience, smaller companies require specific skills which means specialized preparation and it is hard to do. Fortunately, big 4 (Amzon, Facebook, Google, Microsoft(alphabetically)) companies have similar interview structure.
The very first thing to do when you get started with job hunt is to start solving leetcode, “LEETCODE TOP INTERVIEW QUESTIONS” from the beginning. I mentioned it in ALL CAPS, because this is the single most important resource in my opinion. Stick to my guide, I believe you wont be disappointed.
It took me little less than 4 months to prepare, apply and land an offer. I am not the brightest mind in the room, so you may be able to do it even faster. Believe in yourself. Cheers! Help others if you find my post helpful, I dont expect anything in return.
Step 1: Getting Started
- By solving Leetcode TOP INTERVIEW QUESTIONS: 145 total problems, start with easy problems and then solve the medium and finally try to solve some hard ones.
- Solve Problems in random order, don’t solve problems by topic.
- This helps your adaptivity.
- Think brute force first.
- (Think) Alternative ways to solve a problem.
- Find the optimal solution and learn that solution.
- If a problem bothers you too much (for hours), leave it for later. Move on.
- Clear your basic data structures 101: String, LinkedLists, Tree, Trie, Graph, Sorting, Serching, Dynamic and Recursive programming etc.
- Learn one language very well i.e. you dont require stackoverflow for solving basic problems.
- Make a cheatsheet and go through it once a week. Cheatsheet can be on a goodgle doc for the language/algorithm specifics you need to know in order to solve problems.
- Dont limit yourself to a book at the beginning. Follow the previous steps before getting into books.
- Book1 (I love it): Elements of Programming Interviews in Java/C++/Python by Adnan Aziz et.al. Get the book in the lanaugage you are most comfortable in.
- Book2: Cracking the Coding Interview by Gayle McDowell Laakmann
Step 2: Resume
You are trying to build the right resume that will get you the interview calls. Best thing is to start with a template from Harvard/MIT/Gayle Laakmann Software engineer resume and go from there.
- Resume should be 1 page and 1 page only.
- Keep their design. Don’t customize design, waste of time.
- Reorganize items to best represent your profile.
- Use keywords related to a job/ category of jobs.
- Use action words in describing projects or responsibilities.
- List all of your projects, Class projects or Research projects (1 liner).
- If you have never done projects it’s time to do some.
- Get a friend/two (NOT EVERYBODY) to review your resume preferably someone in the industry.
Step 3: Apply
Your goal is to get as many interview calls possible that are relevant to your background.
- If you don’t know know RubyOnRails, don’t write it on your resume. You should have some familiarity with every technology you write in your resume.
- Read the job description couple of times and see if they are looking for skills similar to you. Apply if you like it.
- Be flexible with location of the company.
- Apply at what u want to be, NOT who will call u.
- If the job doesn’t ask for expertise or specific skills, you can apply; but there will be stiff competition.
- Learn about ATS Applicant Tracking System and how to overcome it using word cloud or similar tools.
- You will start getting calls in a couple of months; however, you might have to wait couple of months.
- Make applying for jobs a habit. 20 applications/week. NOT 100 random applications/day.
- Dig into fortune top tech companies and apply from their site.
- Apply through LinkedIn EasyApply.
- Use IndeedPrime, stella.ai, leap.ai and similar tools.
A brief list of top tech companies to work for in the US. Following is a laundry list of big tech companies in US, in no porticular order.
- Big4: Google, Amazon, Facebook, Microsft
- Twitter, Snapchat, LinkedIn
- UBER / Lyft / Aurora / Tesla
- Netflix, Twitch, RIOT Games
- VM Ware, Cisco, Dell, HP
- Apple, Samsung, Samsung Research US
- Chipmakers: Intel, AMD, Qualcomm, NVIDIA
- Fintech: Bloomberg LP, Two-Sigma, Tableau
- Few Others
- eBay, Paypal, Square, Walmart-Labs
- Citrix- / Ultimate-software
- Oracle, IBM, Salesforce-CRM, Digital-Ocean-cloud, SAP
- High growth Companies
- Hubspot, Rackspace
- Palantir, Spotify
- Zillow, Airbnb
- Box, Dropbox, Medium, Quora
- Settled-in the business
- Adobe, Alibaba, Baidu, Deloitte, Epic, Fitbit, Yahoo, Yelp At the application stage, keep solving leetcode problems
Step 3-1: Application Rejections
- Rejections are mostly generated by an automated system
- Generally a ATS system, less than a certain percentage of profile match.
- Filter based rejection with keywords.
- Some recruiters use workday software to filter resumes.
- This auto-rejection emails are worthless. Still keep applying at the same company, similar job. Someday a recruiter will eventually dig your application up.
Step 4: Networking
LinkedIn is a great platform to network with recruiters and professionals. It helps a lot in getting interviews.
- Update your entire profile. Follow some of the big big guys, check to see how they write their profile. Describe every project. Lookup a director/VP of any company and you will have a good idea.
- Make friends with recruiters. Occasionally send thank you to a selected few when they accept your request.
- Like, Comment relevant Recuiter/ Field Expert posts.
- Post/Share interesting things several times a week.
- Reach out to recruiters.
- Introduce yourself
- Write something personal, say i see what you are posting and love what you are doing
- Find a job at their company, mention it
- They get so many msgs they don’t wanna do the matchmaking.
- Occasionally ask questions about their process
- They will help you out.
Step 5: Phone Interview
- Structure of the Phone Interview
- Few minutes about the job and the company
- Solve a programming on hackerrank/ googledocs/ codepair
- You can ask questions
- Take notes during interview
- Talk about your solution, the interviewer will ask questions, change the assumptions.
- Talk about edge cases
- Know the time complexity
- Can’t solve it? Think of a brute-force solution.
- How can you eliminate /reduce total execution?
Practice demo interview with peers on Pramp or similar sites. Your programming practice, Leetcode, data structures will come handy now.
Step 5-1: Failed phone interview?
So, you failed a phone interview. Maybe you didn’t quite solve the problem or the solution is not optimal. So the interviewer decided you need more time, MORE PRACTICE. Next-
- Learn optimal solution to a problem.
- There is no shame in learning, that guy also studied.
- They didn’t invent KMP or Shortest path algorithm
- Think of alternative ways to solve a problem
- Think, what if the constraints are altered.
- Learn to code in white-board, no-IDE environment
- Use pen-paper (not a pencil) to sketch.
- No time to erase.
Step 5-2: Dealing with Failure
it makes you stronger. ” “If something doesn’t break you,
Always remember this.
Here is how it makes you stronger-
- In someway or the other.
- Every problem you are asked, learn optimal solution to it.
- Learn OPTIMAL solution to similar problems.
- Try NOT to make the same mistake again.
- Make a plan to go through the essential DS, Algorithms.
- Solve Leetcode TOP INTERVIEW QUESTIONS(140 approx.), Do Easy, Medium, before anything else.
- Listed in order of importance.
Basics (I handpicked these from 100 or so topics)
- Anagrams and palindromes. Check whether a linked list is a palindrome
- String Search, KMP or Boyer Moore Search
- String reversal without affecting whitespace, special characters
- Basic singly linked list operations (Insert, Delete, Update, reverse, fix loops)
- Merge two sorted linked list without creating a new list
- Add two numbers represented by a linked list (in place)
- Solving problems with recursive Graph and LinkedList
- BFS, DFS(in order and pre order traversals)
- Island perimeter with DFS
- Binary Search Tree node removal, insertion
- Calculate graph Diameter; lowest ancestor of two nodes
- Check whether a binary tree is full
- Index words in web pages(doc_name, line#) using a trie Tree
- You can take 1 or two steps at a time. How many ways to go to 50 steps? –(Coin)
- Implement min heap max heap from scratch with insertion and deletion
- Binary Search
- Merge Sort, Heap Sort, Quick sort from scratch
- Find kth smallest or largest eleent in an unsorted array. (Sorting not allowed)
- Shortest path using DP
- Find all possible paths
- Parsing, check for invalid parentheses, braces.
- Reverse integer without extra memory
- Test if a number is prime.
- In a list one number occurs once everything else is twice. FInd the unique number
- Optimal Strategy in a game
- Bloomberg: Solve the stock buy sell profit problems.
- If you are aiming for google: String, DP(from geeksforgeeks), Recursion, Syntax matching, Search
- (A famous joke), if you are going for Microsoft, make sure u know how to reverse a linked list! We all know it takes much more than that.
Step N-1 : Finally, Onsite Call(n)!
- Time to learn system design.
- Design twitter, tinyurl, messenger,… EDICATIVE.IO - Grokking the system design Interview
- GoF Design Patterns
- Focus on building scalable, load balanced system
- Low latency applications
- Caching, CDN
- Failure tolerant systems
- Partitioning, Replication
- Integrate design pattern on small components
- Company wise Problem Solving
- Top leetcode problems in last 2 years
- Glassdoor reported problems ordered by date(latest/most recent)
Organize your thoughts on a board during the interview by Doug Arcuri
- Were they looking for a particular skill set/language proficiency?
- You don’t get hired, if you don’t know it.
- GET OVER IT.
- Keep applying, keep interviewing. DONT GIVE UP.
- The process itself is the biggest test.
- Made Mistakes?
- Go back a couple of slides, Dealing with failures.
Step N: You have an offer
- Were they looking for a particular skill set/language proficiency?