Friday, May 8, 2015

Interview Experience

In this post I will talk about how to search, prepare, and pass a tough technical interview.

Searching for Jobs

I used to search for jobs but actually recruiters now are smart enough to find you if you have a good profile that could attract them calling you.

First make a good profile on Linkedin, and Xing. Put everything there and give small description about everything. In order to get noticed make sure that you include keywords that people use to search for candidates, and don't forget to update your current location and contact information regularly. Linkedin has a good job search that you can use to filter jobs that match your skills and needs e.g., Jobs by location.

Finally when a recruiter asks for your CV or contact, don't just reply with messages like "Hey please find the attached CV as you requested", prepare a template message like the following one:

Hello,
I'm a Software Engineer with solid algorithms, problem solving, and data structures skills. I have excellent experience in back-end development and you can check my skills and all the details about me in my CV and the following links and profiles.


- My blog contains lots of technical content (e.g., Algorithms, Problem solved by me, Administration, Java technology, Linux/Minix kernel topics, and some open source projects done by me) here is the link for it. Link

- My Github profile which contains all the projects done by me and projects I managed to contribute in. Link
- Topcoder profile: This website makes regular algorithms contests between the most professional engineers around the world and my progress in it is excellent. Link
- LinkedIn profile which contains general and detailed information about my experience both work experience and open source experience and it also contains most of the technologies I use and have knowledge about them. Link
- My SourceForge Page which contains binary packages of my projects for developers/students to download them and use them freely.

Preparation Time

Now you should put a plan for your preparation. I used to have the following plan to prepare for interviews:
  • Check Glassdoor for sample previous interviews of this company or a company with the same business.
  • Record all questions in one file with small categorization.
  • Spend only 1 day in this task and try to collect as much questions as you can.
  • Solve or review my solution at leetcode.
  • Checking my How to prepare for an interview series.
  • Studying problems in Cracking coding interview book.
  • Studying Hacking google interview handouts.
  • Solving 2 or 3 design questions.
  • Refresh my knowledge about Caching, Hashing, Distributed Systems, Parallel Computing, Computer Architecture, Unit Testing, Software Control Managers,...etc
  • Asking one of my friends to interview me.
Interview Process

Usually you will do a series of phone interviews 2 or 3, and you will be asked 2 or 3 coding questions that you can pass easily if you are well prepared. They may also ask you to write test cases for your solution and you have to cover all the cases.

For Testing:

Use the following strategy: As an example consider that he asks you to print an array of numbers:
  • Best cases test: {1, 2, 3}, {-1, -2, -3}, {1000000, 28, 27}
  • Load test {A very large array}, {INT_MAX, INT_MIN}
  • Random test {-1, 2, 77, 10082, 87273, 928, -91837, 28737}
  • Corner cases test {}, NULL, {1}, {-1}, {0}, {0, 1, -1}, {1, 2}
May be they need more than that and for such cases you can ask them for hint :) .. Its OK to ask for hints by the way ;)

At the end of the interview he may ask you some tricky questions, or open ended questions .. So be prepared.

Onsite Interview

In the onsite interview you will have around 5 or 6 technical interviews that will cover all aspects of skills that you may or may not have. Example:
  • 3 Coding Interviews.
  • 1 Architecture and Design Interview.
  • 1 Interview with the Engineering Manager or Hiring Manager.
You should:
  • Be patient and listen to the full question.
  • Ask questions, usually they give you partial information to check what you will do!
  • Start demonstrating how would you approach this problem
  • When he asks you to code, start coding
  • Code carefully on the board, and try write clean code
  • When you finish coding, explain it briefly
  • He will ask you to analyse it, try to be smart and give him a proof for your analysis :).
Offer Time
  • Congratulations ;) you made it!
  • Reserve a Visa appointment
  • Read the contract carefully, and discuss it with the recruiter
  • Ask for relocation package
  • Negotiate your salary
  • Accept the offer
  • Prepare your papers
  • Good bye, don't come back :)
I hope you liked the post, please leave a comment and share it.

6 comments: