Landing Dream Job In Tech

August 13, 2018 | 11 Minute Read

I have interviewed at most of the big names in tech in the US. I will be joining Amazon starting 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. Fortunately, big 4 (Amzon, Facebook,Google, Microsoft) 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!

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.

String / Array

  1. Anagram/ Palindrome, from linked list or string.
  2. String search, KMP Search and Boyer-Moore Search.
  3. Reverse an array/string without affecting special characters
  4. All Possible Palindromic Partitions
  5. Count triplets with sum smaller than a given value
  6. Convert array into Zig-Zag fashion
  7. Generate all possible sorted arrays from alternate elements of two given sorted arrays
  8. Length of the largest subarray with contiguous elements
  9. Find the smallest positive integer value that cannot be represented as sum of any subset of a given array
  10. Smallest subarray with sum greater than a given value
  11. Stock Buy Sell to Maximize Profit

Linked List

  • Insertion/Deletion of a node in Linked List
    1. Insert with some constraints
    2. Delete certain matching value
    3. Reverse entire list or part of the linked list
    4. Check if a linked list is palindrome without extra space.
    5. Find loops and fix loops.
  • Two Pointer
    1. Compare two strings represented as linked lists
    2. Add Two Numbers Represented By Linked Lists
    3. Merge two sorted Linked List.

Tree / Binary Search Tree

  • Tree Traversal
    1. BFS, DFS recursively
    2. BFS, DFS iteratively
    3. Inorder,Preorder, Post-order traversal
  • DFS Applications
    1. Check whether a binary tree is a full binary tree or not
    2. Lowest Common Ancestor in a Binary Search Tree
    3. Find Minimum Depth of a Binary Tree
    4. Maximum Path Sum in a Binary Tree
    5. Diameter of a Binary Tree
  • More Problems
    1. Addition, deletion of nodes in BST, Binary Heap
    2. Check if a given array can represent Preorder Traversal of Binary Search Tree
    3. Remove nodes on root to leaf paths of length < K
    4. Check if a binary tree is subtree of another binary tree
    5. Reverse alternate levels of a perfect binary tree

Sorting And Searching

  • Searching
    1. Binary Search
    2. Search an element in a sorted and rotated array
  • Sorting
    1. Merge Sort, Heap Sort (Binary Heap), Quick Sort
    2. Bubble Sort, Insertion Sort
  • More
    1. Find Kth Smallest/Largest Element In Unsorted Array
    2. Given a sorted array and a number x, find the pair in array whose sum is closest to x

Graph

  • Breadth First Search (BFS) with Queue and recursively
    1. Do Island perimeter, robot movement simulation
  • Depth First Search (DFS) with Queue and recursively
    1. To detect cycle in a Graph Union Find
  • Shortest Path from source to all vertices Dijkstra.
  • Minimum Spanning tree Prim / Kruskal.
  • Building graph from a set of strings or some kind of representation(say 1–2, 2–3, 2–4 etc.).

Prepare / Dynamic Programming

  1. Longest Common Subsequence LCS
  2. Longest Increasing Subsequence LIS
  3. Edit Distance
  4. Minimum Partition
  5. Ways to Cover a Distance
  6. Longest Path In Matrix
  7. Subset Sum Problem
  8. Optimal Strategy for a Game
  9. 0-1 Knapsack Problem
  10. Boolean Parenthesization Problem

Prepare / BIT Manipulation

  1. Count total set bits
  2. number occurs once, every other appears twice. Find the number.
  3. Maximum Subarray XOR
  4. Magic Number
  5. Sum of bit differences among all pairs
  6. Swap All Odds And Even Bits
  7. Find the element that appears once
  8. Binary representation of a given number
  9. Count total set bits in all numbers from 1 to n
  10. Rotate bits of a number
  11. Count number of bits to be flipped to convert A to B
  12. Find Next Sparse Number

Prepare / Number Theory

  1. Modular Exponentiation
  2. Modular multiplicative inverse
  3. Primality Test,
  4. Basic and Extended Euclidean algorithms
  5. Chinese remainder theorem

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