career

Life can be smarter, better and more efficient by following 3 Cs: Consistency, Choices, Communication. More on these below:

Consistency

Whatever you do, be consistent. Be it waking up in the morning or playing piano or reading a blog.

Choices

The less you involve your brain in thinking about stuffs that don’t add much value, the more you would get to spend time in creative stuffs. Reduce choices in day to day life. Ever wondered what Zuckerberg’s wardrobe looks like? He purchases apparels of same color and design. It helps him keeping focus on important things.

Communication

What is the first thing besides dressing sense you notice in a person you meet first time? We get to know a lot about a person by the way (s)he talks. Communication plays a very important role in your professional and personal fronts. Public speaking is one good thing you would like to master. Watch Ted talks and practice speaking in front of mirror. It would help boost confidence.

Be in company of smarter people

It is said that a person is known by the company (s)he keeps. If you are in company of smarter people, you would get to learn more. A wise man once said, “If you are the smartest person in the room, you’re probably in the wrong room”.

Plan your day in advance

Note down things you want to do before you start your day. Not only this will help you manage your day efficiency, but it will help you remember easily forgettable stuffs. There are things you remember when you are not thinking much, but are easily missed when your have a busy schedule. Example, calling a friend, responding a mail or paying bills

No much TV series

If you are a TV series fanatic, you must be knowing how addictive it can be. It can affect your sleep if you don’t control your addiction. Watch less of series

Time management

Learn to manage time. It would help you achieve more in the same amount of time. More on this can be read here: Manage time like a boss and become more productive

Adapt to the change

Smartness is a continuous process. You need to work towards it each day. In this fast paced agile world, things change rapidly and you must adapt to the change or you would be outdated. Learn a new language or a new skill.

Take a walk and think

When you’re stuck in a problem and no solution seems to strike your creative brain, take a walk and think. It helped me many times in situations where I couldn’t think anything working while sitting in front of a monitor.

Practice

Remember 10,000 rule. The principle holds that 10,000 hours of “deliberate practice” are needed to become world-class in any field. Practice a skill you want to be good at sometime each day.

If you like this, you might like other posts in the Hack your life series.

Copyright © 2017, Aashish Barnwal,  All rights reserved.

 

Read more

If you are wondering how I ended up at Microsoft, well, it’s a long story and if you have got some time, you can read it here:

Journey of a boy from small town to Microsoft – An untold story Part 1

If you like to read about dreams and goals, you might like my journey. I won’t claim it to be inspiring and motivating. Neither would I claim it to be struggling and unique. I will leave it for you to decide. But everyone has a journey and a story to tell. And this my friend, is my journey.

July 15, 2013

Each year when I wake up in the morning and find Facebook reminding me of this very date, I can’t stop myself to feel happy and grateful. I thank god who has graced my life with all the opportunities & happiness and given me an ability to be good at what I do.

4 years it’s been since I joined Microsoft and it feels like it were only yesterday when I wandered the corridors of the humongous campus for the first time. Days bled off into years. I have seen people come. I have seen people leave. Life moves on. Everyone is replaceable.

Continue reading Life of a Microsoft Engineer

Read more

I am a CSE Graduate from KIIT University. I joined Microsoft straight out of college. Usually, Microsoft doesn’t visit there, but that year I got lucky.

2 written tests + 3 F2F technical interviews + 1 Skype technical interview

 

Written test 1 (Objective), 30 minutes

First written test was conducted by some third party company. It consisted of 15 objective questions from C, Sorting, Data Structures, Big O, compiler and state machine. We were given 30 minutes. Cut off was 12 out of 15 questions. 77 out of 400 students made it.

Written test 2 (Coding), 60 minutes

Three problems to be solved in 60 minutes with no use of compiler. One problem on Linked List, second on heap and third on array. I coded all problems from scratch including main method. I also wrote flexible methods that could work on any kind of inputs (instead of deleting nodes from 4 to 6, it would delete nodes between ‘M’ and ‘N’ ) and handle all corner cases. The result was announced after 20 days. 30 out of 77 made it.

F2F Interview #1, 60 minutes

We were interviewed in groups of 6. Each one of us in a group was given same problem to solve. I couldn’t code the perfect solution in an hour. All I had discussed 6 different ways to solve the problem. I was afraid that I might be rejected in first round. The interview lasted for 60 minutes.

14 out of 30 were selected.

Continue reading My interview experience at Microsoft

Read more

My contribution on Quora on cracking technical interviews:

 

  1. What should I do in the next 6 months to get into a company like Amazon/Google?
  2. How do I go about preparing for interviews on GeeksforGeeks?
  3. What are the top 20 websites for interview preparation?
  4. What are some useful websites for a CS student?
  5. How does one become good at problem solving?
  6. Career Cup or GeeksforGeeks?
  7. Should I do competitive programming or learn GeeksforGeeks, from a placement point of view?
  8. Which is the best book to start learning algorithms?
  9. Which books should I refer for data structures in C?
  10. I suck in competitive programming but I wish to make a mark there. I’m improving my skills by practicing on GeeksforGeeks. Is this the right approach?
  11. Should I learn algorithms and data structures in my vacation or learn any other thing? See details.
  12. How many academic projects should be mentioned in the resume while appearing for big companies like Amazon, MS, Adobe by a fresher?
  13. What are your reviews of Data structures and Algorithm made easy by Narasimha Karumanchi? Should it be used and when?
  14. Is it neccessary to put subjects of interest in our resume, we dont get good job at big tech companies if not added?
  15. Do we have to mention our Data structures skills in our resume in subjects of interest part ?
  16. Does the bloggers get paid when they write article on geeksforgeeks?
  17. How can one contribute to GeeksforGeeks and become one of the moderators?
  18. Studying Algorithms and data structures cover similar topics in c,c++ and Java languages?
  19. What is the difference between dynamic programming and recursion?
  20. What is easiest approach to tackle Dynamic programming problems?
  21. How should I explain dynamic programming to a 4-year-old?

Copyright © 2017, Aashish Barnwal,  All rights reserved.

Read more

My interview with GeeksforGeeks: Geek on the top – Aashish Barnwal

My contribution on GeeksforGeeks over the years:

  1. How to prepare for top MNCs?
  2. Implementing Iterator pattern of a single Linked List
  3. Curiously recurring template pattern (CRTP)
  4. Opaque pointer
  5. Factory design pattern
  6. K Dimensional Tree | Set 1 (Search and Insert)
  7. Design an efficient data structure for given operations
  8. Ternary Search Tree
  9. Print unique rows in a given boolean matrix
  10. Implement LRU Cache
  11. Sort numbers stored on different machines
  12. Find the k most frequent words from a file
  13. Given a sequence of words, print all anagrams together | Set 1
  14. Given a sequence of words, print all anagrams together | Set 2
  15. Generate integer from 1 to 7 with equal probability
  16. Graph and its representations
  17. Median of two sorted arrays of different sizes
  18. Iterative Quick Sort
  19. Magic Square
  20. Comparator function of qsort() in C
  21. Copy elision in C++
  22. Playing with Destructors in C++
  23. Casting operators in C++ | Set 1 (const_cast)
  24. DFA based division
  25. Counting Sort
  26. Space and time efficient Binomial Coefficient
  27. Efficient program to calculate e^x
  28. Greedy Algorithms | Set 2 (Kruskal’s Minimum Spanning Tree Algorithm)
  29. Greedy Algorithms | Set 3 (Huffman Coding) – GeeksforGeeks
  30. Greedy Algorithms | Set 4 (Efficient Huffman Coding for Sorted Input)
  31. Greedy Algorithms | Set 6 (Prim’s MST for Adjacency List Representation)
  32. Dynamic Programming | Set 27 (Maximum sum rectangle in a 2D matrix)
  33. Dynamic Programming | Set 28 (Minimum insertions to form a palindrome)
  34. Dynamic Programming | Set 30 (Dice Throw)
  35. Dynamic Programming | Set 31 (Optimal Strategy for a Game)
  36. Dynamic Programming | Set 34 (Assembly Line Scheduling)
  37. Find minimum elements after considering all possible transformations – GeeksforGeeks
  38. Check whether a given graph is Bipartite or not
  39. Maximum of all subarrays of size k (Added a O(n) method)
  40. Linked complete binary tree & its creation
  41. Print all permutations in sorted (lexicographic) order
  42. Lexicographic rank of a string
  43. Union-Find Algorithm | Set 1 (Detect Cycle in a an Undirected Graph)
  44. Measure one litre using two vessels and infinite water supply
  45. Random number generator in arbitrary probability distribution fashion
  46. Iterative Postorder Traversal | Set 1 (Using Two Stacks)
  47. Iterative Postorder Traversal | Set 2 (Using One Stack)
  48. Boundary Traversal of binary tree
  49. An in-place algorithm for String Transformation
  50. Morris traversal for Preorder
  51. Construct Full Binary Tree from given preorder and postorder traversals
  52. Two nodes of a BST are swapped, correct the BST
  53. Check if each internal node of a BST has exactly one child
  54. Largest subarray with equal number of 0s and 1s
  55. Check if a number is Palindrome
  56. Given a number, find the next smallest palindrome
  57. Construct BST from given preorder traversal | Set 1
  58. Construct BST from given preorder traversal | Set 2
  59. Flattening a Linked List
  60. Find the largest multiple of 3
  61. Count numbers that don’t contain 3
  62. Check divisibility by 7
  63. To find sum of two numbers without using any operator
  64. Find a pair with the given difference
  65. Add two numbers represented by linked lists | Set 2
  66. Longest Palindromic Substring | Set 1
  67. Longest Palindromic Substring | Set 2
  68. Count the number of possible triangles
  69. Find the number of islands
  70. Pascal’s Triangle
  71. Stack | Set 1 (Introduction)
  72. Heap Sort

Copyright © 2017, Aashish Barnwal,  All rights reserved.

Read more

This post was residing in my draft for quite long. I finally got some time out of my busy schedule to refine it.

The first question quickly pops up on why am I writing this post at all. There are already tens of hundreds of similar compilations on web that talks about this.

Well, following reasons compelled me to do so:

  1. Being a GFG moderator, I’ve been getting many requests from readers through various social media (FB, LinkedIn, Quora, InstaGuide) and various mail clients asking for mentorship and guidance on how to prepare for top MNCs like Microsoft, Amazon, Google etc
  2. Having gone through similar journey and witnessing many of my friends succeeding, I feel knowledge should be shared. My experience might be useful for newer generations who happen to chase the same goal as once was mine

Please note that this article is purely a reflection of my learnings, what I followed through the years and my experience. This is NOT the only way to improvise on what is needed – your coding skills, strengthening DS & Algorithms and boosting problem solving skills. I repeat, this is NOT the only way. There are things I couldn’t follow because of time constraints or didn’t follow because I was just not aware. Please comment if I missed anything which is worth mentioning here.

Language

Language has been a topic of debate between aspirants since years. It’s always good to master one language, knowing ins and out of it rather than hopping from one language to other. Why?  Because sometimes it might happen to you that when you get a problem, you start wondering what language you should choose and your focus is compromised. When you should really concentrate on problem solving, Implementation comes later. Then while you are coding, you plan to change the language in between. This won’t serve you good in interviews. If you’re able to solve a problem in language ‘X’, eventually you will also solve it in language ‘Y’. Learning a new language is just a matter of time. A language might not be as widely used after 5 years as it is being used now. Your ability to solve a problem will what matter in the long run.

I usually switch between C and C++. If time is at its crunch, I prefer to use STL (standard library functions) instead of writing my own version of Linked List. If I want to develop a project, an android app for instance, I go for a managed language because it is easier. If I want to automate something to save my time, like replying and liking my birthday wishes, a python script is the saving grace. You got the point, right? Master one language and learn others as per requirements.

Data Structures and Algorithms

Data Structures and Algorithms is very important and serves as the backbone of problem solving.

For beginners, Fundamentals of Data Structures in C by Sahni Horowitz is good. After reading it, you should be able to understand basic Data Structures, how they are implemented and fewer examples where they can be used. Don’t expect to learn advanced DS through this. After your basic concepts are clear and you are comfortable implementing them in a language of your choice, you can work on learning algorithms and solving problems.

Many sites (including GeeksforGeeks) present problems in a very adhoc manner with no order of difficulty level. This makes things difficult for beginners because they don’t know the difficulty level of the problem they are attempting. Data Structures and Algorithms made easy by Narasimha Karumanchi is a good read after you are comfortable with the basics. It has pretty good collection of problems organized by difficulty level. Just make sure to try to solve problems on your own instead of rushing for the solution. Once you have a fair understanding of DS and have got some confidence in solving problems, jump to online portals and start solving problems from topic of your choice. GeeksforGeeks is good to start with.

For Algorithms, Introduction to Algorithms by Cormen is a must read.

Advanced Data Structures

Sometimes, basic DS don’t serve the purpose to solve problems and you need to know advanced DS. Day to day problems like implementing a prefix based search for a phone contact list to finding the dictionary word from a jumbled sequence of characters need special kind of DS. There are many of them – TST, Trie, Suffix tree, Suffix array, Fibonacci heap, Segment tree, Gap buffer, Rope, Skip list, K Dimensional tree and so on. While it is good to know the implementation of these DS, I would suggest to also know when to use one.

Problem solving

So you got a gun, understand how to use it, probably have used it before. If you are going to fight a war, you won’t like to rely upon your amateur experience. You would prefer to practice hard to save your ass. Now try to think it in perspective of problem solving. You know what DS are. But you also need to know when to use one. Welcome to the world of problem solving. You are given a problem and you are asked to solve it. That problem can be anything starting from a simple puzzle to implementing a user scenario. You must have noticed degree of connection feature in LinkedIn. How will you implement it? Does your approach take care of scalability? Will your code crumble when user base increases ten folds? This is the most important skill top MNCs usually look for. How do you approach a problem? How do  you divide it into modules? How do you solve each of them and then combine them?

Dynamic Programming

I separated out DP because it is one monster which is difficult to master upon. No matter how many problems did you solve in the past, a new DP problem can always surprise you. The more you will practice, higher the chances will be to find out patterns. Google is peculiar about DP. You should expect at least one DP problem per interview round  if you are preparing for Google. Practice DP section from:

Competitive Programming

Competitive Programming plays a very important role in boosting problem solving skills and ability to perform under time pressure. Do participate in various online portals like TopCoder, CodeChef, SPOJ. Here is a post on Getting started in sport of programming.

Design and testing

So you are good in DS and Algos. You are probably good in problem solving as well and you come up with different approaches with varying time and space complexity. The problem which you solve in Competitive Programming is well defined and has to work under an environment which nobody will probably use. What if you are asked to implement a user scenario. The problem statement is usually vague and you need to discuss a lot to resolve ambiguities. This is where design comes into picture. How will you design a redo-undo feature? What data structures will you use to store history in a web browser? How will you implement auto-complete feature in address bar? Let’s say Amazon wants to build a feature that would resume a video stored in cloud from any device. What data structures will you use? How will you scale up things? Does your design take care of concurrency issues? What about the performance? What if you and your girlfriend share the same cloud account and are trying to play the same video from different devices?

Now you have thought through the design well, have come up with different data structures to use with pros and cons in mind. While implementing, you must take care of corner cases. You must be aware about the integer overflow issue in Youtube video view count. While implementing, they never really thought that the view count can exceed what an integer variable can hold and BOOM, the view count cycled back to zero.

Before a feature goes live, it must be tested well. It is good to practice some test questions as well. How will you test a Insert image feature in MS Word? What about a cut-copy-paste feature? How will you test Temple Run game? Try to write all the possible test cases and how you are going to handle this in your code. Writing a robust code is very important. If you take care of these things at an earlier stage, you can avoid silly bugs (and boost your chances of getting selected in interviews).

What else?

Have a sound understanding of Operating System. The dinosaur book by Galvin is a good read. Know how networking works and have insights on DBMS.

Resume building

First impression is the best. Resume is the first thing that HR will use to decide whether to call you for interview or not. And they have got hundreds of them. So they will usually scan it for 20 seconds to 2 minutes. It should be clean, concise and elegant. Each word mentioned should worth the space it eats. The rule of thumb is if you have less than one year of experience, the size of resume should not exceed a page (with few exceptions).

Few points to note:

  • Maintain a header to fit info like name, email id, address and contact number
  • Mention level of expertise corresponding to each language. Example: Proficient in C and good at Java
  • If you are mentioning a project, write your key learning, impact in the team and . If this project is online (an app), don’t forget to include the link. This will show that you built something that is being used by people . Guess what, this is what companies do, building a product, stabilizing it as per user feedback, taking in new feature requests and so on.

Here are few useful tips from Gayle – What are common mistakes that applicants make when writing their resumes for tech companies?

How to apply for Microsoft?

I get many messages asking me for a favour to refer them. When I ask them how much comfortable they are with DS and Algos, they say good enough. Then I rephrase my question to how do they feel when they solve interview experiences at GeeksforGeeks. Either they haven’t heard of GeeksforGeeks or they never read. This is not a surprise. GeeksforGeeks is still growing. But when I ask them a problem on DS by tweaking already existing famous ones, all they say is they haven’t solved this problem before. Please do NOT do that. It’s one thing to yearn for something. But quite other to put efforts to make it a reality.

If you are not able to clear the interviews, you will have wait again for 6-12 months depending on the company policy before you can apply again. Now coming to the point,  you can apply for a position at Microsoft either through Careers page or through referral. Referral usually bumps chances of getting an interview call because your resume gets to the system through a person Microsoft trusts to be a good engineer. How do you ask for a referral? It’s simple. Forward your resume to someone you know working there. No one will say NO unless your resume is filled with something which doesn’t fit company requirements. Rule of thumb is we believe in solving problems and if you are good at it, we would love to see you here. Remember, everyone wants to work with a smart person. And this is usually true for any company, not just for Microsoft.

Do’s and Don’ts

  • Practice, practice and practice
  • Make a habit of writing clean and readable code (avoid variables names like i, j)
  • Make sure to handle all corner cases
  • Use pen and paper to practice code. In interviews you have NO access to a compiler
  • Don’t mug up the solutions. Try to solve on your own
  • Think of different ways of solving a problem and thoughts on why one should be preferred over the other

Resources

I have answered few questions related to interview preparation on Quora. You might find some content missing here in blog and it is intentional to avoid the duplication of efforts. Please read my technical answers here.

Resources (which I haven’t talked about):

  • Cracking the coding interview by Gayle Laakmann: A must read once before interviews. It covers aspects like what interviewers expect from you, how to deal with behavioral questions and few interesting problems. It will change your thoughts about design and test problems for good
  • GeeksforGeeks: A bible of problems (with well explained solutions). Make sure you do NOT rush for solutions. Try to solve problems on your own no matter how much time does it take. With time and honest practice, you should get better
  • CareerCup: A huge collection of problems. Though you can’t rely upon solutions, it provides a rich community for discussing problems. I found it good for discussing design problems
  • Project Euler: A heaven for mathematics lovers. You solve the problems using some formulas on paper and then write code to get the final solution. Solve at least 40 problems from this site.

You might like following write ups:

PS: This blog is published on GeeksforGeeks.

Good luck!

Copyright © 2016, Aashish Barnwal,  All rights reserved.

Read more

Ever since I penned my journey, the response has been quite positive. It seems like a 3 days extended weekend which I was thinking a waste wasn’t a waste at all.

If you haven’t read the second part, please read it here – Journey of a boy from small town to Microsoft – An untold story Part 2

14264923_10207235760628465_4593462294586340759_n

There were countless moments of mood swing. I already had an offer from Microsoft. I wondered if I should try for other biggies like Facebook or Google. Bottom-line was, I had fallen into procrastination trap. I was shy of 9 months to join Microsoft. I wanted to enjoy life. I wanted to take a break. My then friends at Google and Facebook had mixed suggestions.

“Dude, you should really give FB a try. I can refer you and interview would be scheduled in 2 weeks”.

“It’s time to explore. Once college is over, you are never gonna get it. This is the time to have some fun”.

Out of those precious 9 months, I spent 5 months at home doing almost nothing. Major chunk of my time was invested in only eating and chatting. When boredom seemed to kill me, I just used to compile an article on GeeksforGeeks. It was fun.

Sometimes even a simple mail gives you goosebumps. I had a message from Google recruiter mentioning my profile looked interesting and  if my interest was aligned, they could commence the interview process. With the mail was attached a video covering their expectations from a candidate in Google. I thought of giving a try to Google. But my practice was at a slower pace. Writing articles and solving problems were just to kill time and pure altruistic. Google is a big brand. I definitely wanted to try my luck there. It was just not the right time. It would be a pleasure to enjoy Microsoft etiquette for the time being.

July 13, 2013

The next phase begins

A long rest had finally come to an end. Nothing could make me happier than to see a person waiting at the airport holding a placard with my name imprinted on it. He directly drove us to Rejenta One. A month stay in a 5 star hotel, dedicated car, a driver, couple of good friends and new city. Whole world around me was screaming to explore it.

Life at Microsoft in a nutshell

Life of a Microsoft Engineer

 

GeeksforGeeks after Microsoft

I usually get messages like, Why my contribution to GFG has slowed down. Is it because of my busy schedule?
Seriously speaking, the passion which was ballooned inside me 3 years ago has faded. Coding is not the only thing that fuels me. In my college days, I used to code for fun. Whenever I found myself struck by the boredom lightning, solving a new problem or brainstorming a better solution was the saving grace. My contribution has been greatly compromised and now if I write, my focus is more on the quality rather than quantity. I must say, I am a slow writer.
Sometimes I ask myself, what do I know except coding? Is my life all about staring at the screen and writing geeky characters? A lot of things are there in the world and you won’t know what you would like the best until you give it a try. Life is made up of series of moments. It’s not the number of years we live that matters.

For the past few years, I had been wondering what my life is meant to be, what are the things out there which will render me with greatest pleasure, what is the secret ingredient of being happy.

The other side of my life which eats most of my time when I am not in office writing and debugging code, is as farthest from the geeky profile as it can be. This is a long story. And if you’ve got some free time, read What profession would I have chosen if each profession is equally valued and earns me equal salary?  on a boring day while sipping a cup of coffee. I am sure you would like it.

Geek on the top

A usual week day, a mail popped up asking for my interview. It’s really weird if someone asks questions about you and your life which is going to be published on a broad scale.

The interview is published here – Geek on the top – Aashish Barnwal | Make a habit of writing clean, readable, flexible and robust code

I am still learning. I am still exploring. It’s always fun to try out new things and most importantly, we must find happiness in whatever we do.

motivational-quote-on-value

Based on requests from many, I have documented the tips and tricks on cracking top MNCs. I hope you find it useful:

How to prepare for top MNCs?

 

Signing off for now. Hope you enjoyed reading this. Everyone has a journey. Well this is my journey.

Copyright © 2016, Aashish Barnwal,  All rights reserved.
Read more
Social media & sharing icons powered by UltimatelySocial
Facebook
LinkedIn
SOCIALICON
Instagram
YouTube