Landing Dream Job In Tech

February 10, 2019 | 9 Minute Read

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.

Some of the top tech companies.

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.

  1. Resume should be 1 page and 1 page only.
  2. Keep their design. Don’t customize design, waste of time.
  3. Reorganize items to best represent your profile.
  4. Use keywords related to a job/ category of jobs.
  5. Use action words in describing projects or responsibilities.
  6. List all of your projects, Class projects or Research projects (1 liner).
  7. If you have never done projects it’s time to do some.
  8. 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.

Prepare

  • Make a plan to go through the essential DS, Algorithms.
  • https://www.geeksforgeeks.org/top-algorithms-and-data-structures-for-competitive-programming/
  • 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
  • Knapsacks
  • 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.
    1. Design twitter, tinyurl, messenger,… EDICATIVE.IO - Grokking the system design Interview
    2. GoF Design Patterns
    3. Focus on building scalable, load balanced system
    4. Low latency applications
    5. Caching, CDN
    6. Failure tolerant systems
    7. Partitioning, Replication
    8. Integrate design pattern on small components
  • Company wise Problem Solving
    1. Top leetcode problems in last 2 years
    2. Glassdoor reported problems ordered by date(latest/most recent)

Organize your thoughts on a board during the interview by Doug Arcuri

Organizing thought on white board...

Failed Onsite??

  • 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?

Phone-Onsite-Fail-Repeat