<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pritam Chougale</title>
    <description>The latest articles on DEV Community by Pritam Chougale (@pritam_chougale).</description>
    <link>https://dev.to/pritam_chougale</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F692498%2F3ca2dd70-56d9-4324-a13c-e0fc8aa36bd7.jpeg</url>
      <title>DEV Community: Pritam Chougale</title>
      <link>https://dev.to/pritam_chougale</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pritam_chougale"/>
    <language>en</language>
    <item>
      <title>What are some must-know algorithms to crack FAANG interviews?</title>
      <dc:creator>Pritam Chougale</dc:creator>
      <pubDate>Mon, 04 Oct 2021 07:22:10 +0000</pubDate>
      <link>https://dev.to/pritam_chougale/what-are-some-must-know-algorithms-to-crack-faang-interviews-5hlm</link>
      <guid>https://dev.to/pritam_chougale/what-are-some-must-know-algorithms-to-crack-faang-interviews-5hlm</guid>
      <description>&lt;p&gt;Going by our experience of training thousands of students at &lt;a href="https://renaissance.programmingpathshala.com/crack-coding-interviews/stories"&gt;Programming Pathshala&lt;/a&gt; and helping them get successfully placed in these companies, the most important algorithms you need to cover for any major tech company are -&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Precomputation Techniques:&lt;/strong&gt; Many people do not consider them as important but they are extremely crucial. Many problems have prefix/suffix computations as an important step of optimisation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Binary Search Algorithm:&lt;/strong&gt; Binary search is not as simple as finding an element in a sorted array. It has much more complicated use cases which is important to know and work on. Concepts of monotonic functions and binary search on answer help you appreciate the beauty of this simple algorithm and make you a good problem solver.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Sorting Algorithms:&lt;/strong&gt; Knowing different sorting algorithms like Bubble, Insertion, Selection, Merge, Quick and many more O(n) sorts is important. Also, these algorithms have associated techniques like Divide and Conquer in Merge and Quick Sort, Dutch National Flag problem, etc which are also important.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.Two Pointers &amp;amp; Sliding Window:&lt;/strong&gt; Two Pointer Approach is optimised Binary Search Approach in 90% of the cases. Optimising binary search solutions by using 2 Pointers is an important step asked in many interviews.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.Greedy Algorithms:&lt;/strong&gt; This is the most difficult algorithm to spot in a problem. Getting to know that a problem can be solved by a particular greed and proving it is very difficuly. Proof by induction, contradiction and mathematical proofs come handy for these problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6.Recursion, Backtracking and Dynamic Programming:&lt;/strong&gt; I have clubbed them together because you can’t do Dynamic Programming without fully understanding Recursion &amp;amp; Backtracking. Understand concepts of Recurrence Relation, Stack and Tree Diagrams, Concept of Memoization, state, etc. Many people start solving DP without understanding the theory. This is one topic where if you are clear with the theory, you will not be stuck in many problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7.Graph Search Algorithms:&lt;/strong&gt; No fancy Djikstra or Flow Algorithms. No fancy Segment Trees. The most important is mastering the two search algorithms - Depth First Search and Breadth First Search in detail.&lt;/p&gt;

&lt;p&gt;There are other less important algorithms like Bit Manipulation, Mathematical Algorithms and other subjects that you also need to cover for these interviews (Data Structures, OOPs, OS, DBMS, etc.) For complete syllabus, you can go through our website.&lt;/p&gt;

&lt;p&gt;Most important thing to note is “Focus more on covering every aspect of an algorithm you are learning and understand the patterns associated with it. Do not unnecessarily go for heavy algorithms like segment tree. Stick to the basics and you should be good”&lt;/p&gt;

&lt;p&gt;If you want to master Data structures and algorithms and become 100% coding interview ready I have a good new for you. &lt;br&gt;
You can start a &lt;a href="https://renaissance.programmingpathshala.com/signup"&gt;7-days free trial&lt;/a&gt; of our coding interview prep platform. No credit card required. &lt;/p&gt;

</description>
      <category>programming</category>
      <category>codenewbie</category>
      <category>computerscience</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>I have 6 months to prepare for placement. Basically, I'm a Computer Science student. How and what do I study?</title>
      <dc:creator>Pritam Chougale</dc:creator>
      <pubDate>Mon, 04 Oct 2021 06:17:18 +0000</pubDate>
      <link>https://dev.to/pritam_chougale/i-have-6-months-to-prepare-for-placement-basically-i-m-a-computer-science-student-how-and-what-do-i-study-4maf</link>
      <guid>https://dev.to/pritam_chougale/i-have-6-months-to-prepare-for-placement-basically-i-m-a-computer-science-student-how-and-what-do-i-study-4maf</guid>
      <description>&lt;p&gt;Let’s first look at what all skills you need to have for campus placements. Assuming that the companies are hiring for a software developer role, you would need:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Proficiency in any one programming language.&lt;/li&gt;
&lt;li&gt;Very good problem solving skills and knowledge about data structures and algorithms like stacks, linked lists, searching, dynamic programming, etc. For complete list, can visit the syllabus at &lt;a href="https://renaissance.programmingpathshala.com/crack-coding-interviews#Learning"&gt;Programming Pathshala’s website&lt;/a&gt; and can follow that&lt;/li&gt;
&lt;li&gt;A good project for your resume. Would suggest a full-stack project.&lt;/li&gt;
&lt;li&gt;Maintaining a good CGPA (&amp;gt;=8/10 in Indian context) would be a good idea.&lt;/li&gt;
&lt;li&gt;Clean coding skills, design principles and patterns (Part of Low-Level Design)&lt;/li&gt;
&lt;li&gt;Subjects in Computer Science like Operating Systems, Computer Networks, DBMS.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For roles different from SDE, there might be some other things you need to do. Statistically speaking, SDE roles are the most common. So, it is a good idea to stick to those.&lt;/p&gt;

&lt;p&gt;Now, all this might seem a little daunting, specially if you have to do it by yourself in 6 months. But, ideally it is very much possible if you put in the efforts.&lt;/p&gt;

&lt;p&gt;Apart from that, if you think you would require guidance from alumni of top tech companies, do selected problems from each topic that cover all the subpatterns of a topic, give mock interviews and/or need referrals, you can also opt in for a 6-month interview preparation course with us at &lt;a href="https://renaissance.programmingpathshala.com/crack-coding-interviews"&gt;Programming Pathshala.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note: &lt;br&gt;
After considerable discussion with &lt;a href="https://www.linkedin.com/in/bharat-khanna-717b4817b/"&gt;Bharat Khanna&lt;/a&gt;, co-founder of Programming Pathshala, I was able to formulate this response. Who also happened to be an ex-SDE at Tower Research and a codeforce candidate master. &lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>programming</category>
      <category>computerscience</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Why is there so much fuss about dynamic programming in interviews, when it hardly matters in real-time projects?</title>
      <dc:creator>Pritam Chougale</dc:creator>
      <pubDate>Wed, 29 Sep 2021 07:24:35 +0000</pubDate>
      <link>https://dev.to/pritam_chougale/why-is-there-so-much-fuss-about-dynamic-programming-in-interviews-when-it-hardly-matters-in-real-time-projects-56n1</link>
      <guid>https://dev.to/pritam_chougale/why-is-there-so-much-fuss-about-dynamic-programming-in-interviews-when-it-hardly-matters-in-real-time-projects-56n1</guid>
      <description>&lt;p&gt;“When it hardly matters in real-time projects”. This statement is extremely incorrect. Just a few examples:&lt;/p&gt;

&lt;p&gt;Machine learning algorithms like &lt;strong&gt;Viterbi algorithm&lt;/strong&gt; or the ones using Markov Chain or HMM are infact completely based around &lt;strong&gt;Dynamic Programming&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bioinformatics requires a lot of sequencing algorithms which are rooted in DP.&lt;/p&gt;

&lt;p&gt;String matching is done via KMP and uses of Edit Distance - Again extremely important for a lot of real world things like Autocompletion.&lt;/p&gt;

&lt;p&gt;A common example would be, many delivery apps (I have heard of UrbanClap) model their problem as a graph and use greedy/dp algorithms to actually solve the delivery problem&lt;/p&gt;

&lt;p&gt;More importantly - let us understand what is the principle behind Dynamic Programming?&lt;/p&gt;

&lt;p&gt;It mainly consists of 3 steps:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Dividing the original problem into smaller subproblems&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Solving these subproblems and combining their results to get the big problem’s result&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Remembering the subproblems you solved in the past and reusing the results rather than recalculating for them (Memoization)&lt;/p&gt;

&lt;p&gt;Don’t you think these 3 steps are actually very important for solving real problems? &lt;/p&gt;

&lt;p&gt;That is why they are given importance in an interview. The idea is to pick the best problem solvers.&lt;/p&gt;

&lt;p&gt;Want to know how to start preparing for coding interviews?&lt;br&gt;
Visit: &lt;a href="https://renaissance.programmingpathshala.com/crack-coding-interviews"&gt;programmingpathshala.com&lt;/a&gt; and take a 7 days free trial. &lt;/p&gt;

</description>
      <category>programming</category>
      <category>computerscience</category>
      <category>interview</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>How Long does it Take to Prepare for Coding Interviews: Starting from Scratch</title>
      <dc:creator>Pritam Chougale</dc:creator>
      <pubDate>Thu, 26 Aug 2021 06:05:20 +0000</pubDate>
      <link>https://dev.to/pritam_chougale/how-long-does-it-take-to-prepare-for-coding-interviews-starting-from-scratch-1clc</link>
      <guid>https://dev.to/pritam_chougale/how-long-does-it-take-to-prepare-for-coding-interviews-starting-from-scratch-1clc</guid>
      <description>&lt;p&gt;The Coding Interview Preparation may seem like an endless task considering the staggering amount of resources available online. With this blog post, I want to help you all by giving a perfect preparation plan that is enough to crack software roles in the majority of the product based companies.&lt;/p&gt;

&lt;p&gt;I am assuming that you have no prior knowledge of programming and programming languages, and you are starting from scratch. This plan will take a total of 8-12 months to complete.&lt;/p&gt;

&lt;p&gt;We at &lt;a href="https://renaissance.programmingpathshala.com/crack-coding-interviews"&gt;Programming Pathshala&lt;/a&gt; have students who have made into companies like BharatPe and PayPal in a time period of less than a year by following this plan thoroughly with us.&lt;/p&gt;

&lt;h2&gt;
  
  
  So, here are the steps to prepare &amp;amp; get ready for coding interviews
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Learn a Programming Language [1-2 months]
&lt;/h3&gt;

&lt;p&gt;First and foremost, the beginning point of your coding interview preparation is to learn any one programming language. If you are a complete beginner, I would advise you to choose one of C++, Python or Java for starting your journey.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn the basic constructs of programming: Data Types, Control Flow, Looping, Functions, Pointers, Structures and Classes etc.&lt;/li&gt;
&lt;li&gt;Stick to one programming language and develop a command on it. Many people think that knowing programming is equivalent to knowing numerous coding languages which is not true.&lt;/li&gt;
&lt;li&gt;Start implementing common out-of-the-box features supported by this language with respect to certain &lt;a href="https://blogs.programmingpathshala.com/data-structures-to-master-competitive-programming/13"&gt;data structures and algorithms&lt;/a&gt; . For example, if you choose C++, learn how to use STL Map, sets, vectors, upper_bound, lower_bound, etc. If you choose Java, learn how to use HashMaps, TreeMaps, ArrayLists, etc.&lt;/li&gt;
&lt;li&gt;Solve at least first 50-100 problems of basic implementations from platforms like Codeforces.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Learn Basic Prerequisites before starting with Data Structures and Algorithms [1 month]
&lt;/h3&gt;

&lt;p&gt;Before deep diving into Data Structures and Algorithms, make sure you are familiar with certain techniques that are used with almost every other DSA concept later on. These techniques include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Precomputation techniques in Arrays like simple ideas to handle multiple queries by precomputating the answers.&lt;/li&gt;
&lt;li&gt;Mathematical techniques like computing primes using sieves, doing factorisation, finding lcm &amp;amp; hcf, basic combinatorics.
Recursion, recurrence relation and how to think in recursive terms. &lt;/li&gt;
&lt;li&gt;Understand the concept of Backtracking, which helps in writing basic brute force solutions to almost all the problems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Dive Deep into Basic Data Structures and Algorithms [2-3 months]
&lt;/h3&gt;

&lt;p&gt;Many people directly start learning Dynamic Programming as soon as they hear about Data Structures and Algorithms. The truth though is that many of the startups and, sometimes, even companies like Amazon focus more on basic Data Structures rather than DP.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get a strong grasp on Searching algorithms. It is important to understand what kinds of problems are optimized using the Binary Search algorithm. There are several popular commonly asked patterns like Binary Search on Answer.&lt;/li&gt;
&lt;li&gt;Explore different sorting algorithms and the corresponding concepts involved in it. For example: Merge sort requires the Divide and Conquer algorithm and Two pointers for merging, while Quicksort uses an efficient partitioning mechanism.&lt;/li&gt;
&lt;li&gt;Explore Stacks, Queues and Deques in-depth. Understand what patterns of problems are understandable using Stacks. Some very difficult problems can be solved using Stacks. Eg. &lt;a href="https://youtu.be/LvWnuls1nFI"&gt;Remove K digits to find the minimum number&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Solve a lot of problems on Linked Lists and Binary Trees. Although simple, some problems require very specific solutions, and it is a good idea to know some techniques beforehand. Eg. Watch this &lt;a href="https://www.youtube.com/watch?v=CnxPVsodc14"&gt;Linked List &amp;amp; Binary Tree Live Class by ex-SDE Amazon&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4: Start with Intermediate Data Structures and Algorithms [2-3 months]
&lt;/h3&gt;

&lt;p&gt;Now is the time to start learning Heaps, Greedy, Graphs and Dynamic Programming. These are relatively harder Data Structures and Algorithms, but are extremely important for coding interviews.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn about Heaps Data Structure: Common Operations on Heap like Tying Ropes, Kth Min/Max problems and Heapsort are important.&lt;/li&gt;
&lt;li&gt;Understand Greedy Algorithms and how to prove greed for certain problems. Classical problems like Activity Selection and Job Scheduling should be understood thoroughly as to why particular greed works and others do not.&lt;/li&gt;
&lt;li&gt;Explore Dynamic Programming: Build on Recursion &amp;amp; Backtracking to memorize and convert it into Recursive DP Solution. Tabulate it to convert the same into Iterative DP and also learn how to optimize space. &lt;/li&gt;
&lt;li&gt;Learn about Graph Traversal Algorithms like Depth First Search(DFS) and Breadth First Search(BFS).&lt;/li&gt;
&lt;li&gt;Explore the shortest path algorithms like Dijkstra and Minimum Spanning Trees.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 5: Learn about Computer Science Core Subjects [1 month]
&lt;/h3&gt;

&lt;p&gt;Now that we are done with most of our Data Structures and Algorithms syllabus, it is time to start learning certain core Computer Science subjects, which are equally important for being a good Software Engineering student and being prepared for coding interviews.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Operating Systems:&lt;/strong&gt; Learn about Process Management Mechanism, Memory Management Mechanisms and Concurrency Problems &amp;amp; Solutions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Databases:&lt;/strong&gt; Understand different databases and how their data models look like. Learn how to model data in case of relational databases using ER Diagram and Normal Forms. Apart from that, understand Transactions and ACID Properties&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Networks:&lt;/strong&gt; Understand different layers in OSI Model. Learn about common networking devices and protocols and what functions they serve.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 6: Learn about Low and High Level Design [1 month]
&lt;/h3&gt;

&lt;p&gt;After covering theory related ideas in Computer Science, it's time to get some practical knowledge that will make you industry ready.&lt;/p&gt;

&lt;p&gt;Codes written in the software Industry are generally organized as classes. Also, there are certain components at System Level that you need to know about.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn about Classes and Objects and understand common Object-Oriented Design Concepts like Polymorphism, Abstraction, Inheritance, Encapsulation, etc.&lt;/li&gt;
&lt;li&gt;Learn about Clean Coding Practices and concepts of Modularity. Understand Design Principles like SOLID Principle&lt;/li&gt;
&lt;li&gt;Learn about Different Design Patterns.&lt;/li&gt;
&lt;li&gt;Learn about Distributed Database Systems, concepts like Sharding, Replication and how systems scale&lt;/li&gt;
&lt;li&gt;Know about concepts like Load Balancers, Microservice Architecture and Forward/Reverse Proxies.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 7: Explore Advanced Data Structures, Give Mock Interviews, Make a project [1 month]
&lt;/h3&gt;

&lt;p&gt;At this point, you would be mostly prepared for any big company out there. You can do a few more things to become more confident in cracking them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create at least one good working project using any latest technology like MERN stack. You can deploy it at some open source platform like Firebase or Heroku and put its link in your resume.&lt;/li&gt;
&lt;li&gt;Give some mock interviews with industry experts or your peers.&lt;/li&gt;
&lt;li&gt;Read some more interview experiences of different people and if you feel weak in any topic, try to revise and practice it more.&lt;/li&gt;
&lt;li&gt;If you get some time, explore some advanced data structures like Tries, Segment Trees, Range Queries, String Matching Algorithms, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Explore &lt;a href="https://renaissance.programmingpathshala.com/crack-coding-interviews#Learning"&gt;advanced data structure here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is how in 8-12 months you can easily become a very good software engineering resource for any company that you go to. Not only will you prepare for the interview, but also will become a better software developer. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The above blog post covers the sure shot steps to become interview ready within 8-12 months. Many of our students have undergone this curriculum, and we have seen it working. It only requires discipline, dedication and constant endeavors to succeed.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>codenewbie</category>
      <category>computerscience</category>
      <category>coding</category>
    </item>
  </channel>
</rss>
