<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Interviewing - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Interviewing - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Mon, 25 May 2026 15:48:51 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/interviewing/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Mastering Behavioral Interviews for Software Developers ]]>
                </title>
                <description>
                    <![CDATA[ In the competitive world of software development, acing technical interviews is often considered the key to landing a dream job. However, there's another crucial aspect that aspiring developers frequently overlook – behavioral interviews. We just pos... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/mastering-behavioral-interviews-for-software-developers/</link>
                <guid isPermaLink="false">66b205b1dc300c9dddc0126d</guid>
                
                    <category>
                        <![CDATA[ Interviewing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ youtube ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Beau Carnes ]]>
                </dc:creator>
                <pubDate>Thu, 21 Dec 2023 16:30:17 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/12/INTERVIEW.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>In the competitive world of software development, acing technical interviews is often considered the key to landing a dream job. However, there's another crucial aspect that aspiring developers frequently overlook – behavioral interviews.</p>
<p>We just posted a new course on the freeCodeCamp.org YouTube channel that provides a guide to mastering behavioral interviews for software developers. The course was developed by the experienced Parth Vyas.</p>
<h3 id="heading-course-overview">Course Overview</h3>
<p>This video course is designed to equip developers with the essential skills and insights necessary for excelling in behavior-based interviews. While technical skills are important, the ability to articulate your experiences, problem-solving approaches, and team dynamics is equally important. Parth Vyas, a seasoned professional in the field, brings his expertise to the table, guiding you through various aspects of behavioral interviews.</p>
<h3 id="heading-course-outline">Course Outline</h3>
<h4 id="heading-1-understanding-different-types-of-interviews">1. Understanding Different Types of Interviews</h4>
<p>This section provides an overview of the various interview formats you might encounter, emphasizing the distinct nature of behavioral interviews compared to technical ones.</p>
<h4 id="heading-2-behavioral-interview-fundamentals">2. Behavioral Interview Fundamentals</h4>
<p>Dive into the basics of behavioral interviews. Learn what interviewers look for and how your responses can showcase your skills beyond coding.</p>
<h4 id="heading-3-mastery-of-the-star-method">3. Mastery of the STAR Method</h4>
<p>The STAR (Situation, Task, Action, Result) method is a structured way of responding to behavioral interview questions. This module teaches you how to use this method effectively to articulate your past experiences.</p>
<h4 id="heading-4-self-assessment-and-researching-companies">4. Self-Assessment and Researching Companies</h4>
<p>Understand the importance of self-assessment in aligning your experiences with the company's ethos. Learn research strategies to tailor your responses to the company's culture, focusing on giants like Netflix and Amazon.</p>
<h4 id="heading-5-case-study-1-netflix">5. Case Study 1: Netflix</h4>
<p>Analyze a real-world scenario of a behavioral interview at Netflix, understanding their unique culture and what they seek in candidates.</p>
<h4 id="heading-6-case-study-2-amazon">6. Case Study 2: Amazon</h4>
<p>Delve into Amazon's interview process, exploring how to navigate their leadership principles in your responses.</p>
<h4 id="heading-7-behavioral-interview-question-categories">7. Behavioral Interview Question Categories</h4>
<p>Learn about different question categories, from teamwork to problem-solving, and how to approach each type.</p>
<h4 id="heading-8-top-50-behavioral-interview-questions">8. Top 50 Behavioral Interview Questions</h4>
<p>Equip yourself with a comprehensive list of commonly asked questions and strategies to answer them effectively.</p>
<h4 id="heading-9-how-to-deal-with-tough-questions">9. How to Deal with Tough Questions</h4>
<p>Develop skills to tackle challenging questions confidently, turning potential weaknesses into strengths.</p>
<h4 id="heading-10-non-verbal-communication">10. Non-Verbal Communication</h4>
<p>Explore the importance of body language and other non-verbal cues in making a positive impression.</p>
<h4 id="heading-11-strategies-for-preparation-and-useful-resources">11. Strategies for Preparation and Useful Resources</h4>
<p>Conclude with actionable strategies for preparation and a curated list of resources to aid your learning journey.</p>
<h3 id="heading-conclusion">Conclusion</h3>
<p>Behavioral interviews are a window into your professional persona. They assess your ability to fit within a team, handle stress, and embody the company's values. This course is not just about answering questions; it's about presenting the best version of yourself as a well-rounded professional. </p>
<p>Watch the full course on <a target="_blank" href="https://youtu.be/8hpSMnCwCxY">the freeCodeCamp.org YouTube channel</a> (2-hour watch).</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/8hpSMnCwCxY" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Master Technical Interviews ]]>
                </title>
                <description>
                    <![CDATA[ You need to prepare if you want to perform well in technical developer job interviews. We just published a course on the freeCodeCamp.org YouTube channel that will guide you through every aspect of the technical interview process, as well as prepare ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/master-technical-interviews/</link>
                <guid isPermaLink="false">66b205aadc300c9dddc0126a</guid>
                
                    <category>
                        <![CDATA[ Interviewing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ youtube ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Beau Carnes ]]>
                </dc:creator>
                <pubDate>Thu, 16 Nov 2023 15:30:08 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/11/technicalinterviews.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>You need to prepare if you want to perform well in technical developer job interviews.</p>
<p>We just published a course on the freeCodeCamp.org YouTube channel that will guide you through every aspect of the technical interview process, as well as prepare you for the type of questions you might get asked.</p>
<p>Parth Vyas teaches this course. He is an experienced engineer and he will teach you both the fundamentals and help you understand advanced coding patterns and common pitfalls to avoid. With simple explanations and a user-friendly approach, this full course is perfect for new and experienced developers and engineers seeking to secure their dream job in tech.</p>
<p>Here are the key features of the course:</p>
<ul>
<li><strong>Interview Types Unraveled</strong>: Understand the various technical interview formats and what to expect in each.</li>
<li><strong>Big O Notation Simplified</strong>: Grasp the fundamentals of Big O, a critical concept for evaluating the efficiency of algorithms.</li>
<li><strong>Data Structures Explained</strong>: We explain these data structures in depth:  </li>
<li>Array  </li>
<li>Linked List  </li>
<li>Queue  </li>
<li>Stack  </li>
<li>Graph  </li>
<li>Trees  </li>
<li>Hashmap  </li>
<li>Hashset</li>
<li><strong>Advanced Data Structures</strong>: We learn about advanced data structures like Heap and TRIE.</li>
<li><strong>Algorithms &amp; Coding Patterns</strong>: We take care of all the important algorithms and coding patterns. And understand the concept, pattern, and real-world example along with some leetcode questions. These are the algorithms and coding patterns that we covered:   </li>
<li>Searching algorithms  </li>
<li>Sorting algorithms  </li>
<li>Recursion  </li>
<li>Dynamic Programming  </li>
<li>Two Pointers  </li>
<li>Sliding Window  </li>
<li>Intervals  </li>
<li>Backtracking  </li>
<li>DFS  </li>
<li>BFS  </li>
<li>Fast and Slow pointers</li>
<li><strong>Best Practices &amp; Preparation</strong>: Learn the dos and don’ts with our curated best practices, preparation materials, and insider tips to keep you one step ahead.</li>
<li><strong>Expert Tips &amp; Shortcuts</strong>: Gain access to strategies that can streamline your coding process and heighten your problem-solving acumen.</li>
<li><strong>Common Pitfalls</strong>: Sidestep common errors with our guide to avoiding typical mistakes that could cost you a job offer.</li>
</ul>
<p>You can watch the full course on <a target="_blank" href="https://www.youtube.com/watch?v=-LVmKNvflnY">the freeCodeCamp.org YouTube channel</a> (5-hour watch).</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/-LVmKNvflnY" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Mock Data Science Job Interview ]]>
                </title>
                <description>
                    <![CDATA[ Are you currently in the job market for a data-focused role? Or perhaps you are looking to expand your understanding of the machine learning process? If so, then we have just the video for you! We just published a mock data science job interview on t... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/mock-data-science-job-interview/</link>
                <guid isPermaLink="false">66b205c8125aeccef6f65d01</guid>
                
                    <category>
                        <![CDATA[ Data Science ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interviewing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ youtube ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Beau Carnes ]]>
                </dc:creator>
                <pubDate>Mon, 13 Mar 2023 19:52:54 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/03/datamock.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Are you currently in the job market for a data-focused role? Or perhaps you are looking to expand your understanding of the machine learning process? If so, then we have just the video for you!</p>
<p>We just published a mock data science job interview on the freeCodeCamp.org YouTube channel. This is a full-length interview between Keith Gali and Kylie Ying, two experienced developers in the world of data science.</p>
<p>This video will provide you with an inside look at what a data science interview is like, as well as valuable insights and tips for anyone looking to pursue a career in this field.</p>
<p>The video course is broken down into several sections, starting with an overview of the video format and structure. Next, Keith kicks off the interview with some introductory behavioral questions to help you get to know Kylie better. From there, they dive into a social media platform bot issue task overview, which serves as the main topic of the interview.</p>
<p>Throughout the interview, Kylie shares her expertise on topics such as building a dataset for training/testing purposes, feature vectorization, and model implementation details. One of the highlights of the interview is when she discusses what features to investigate regarding the bot issue and how to approach collecting data to train models to detect bots.</p>
<p>If you are curious about the technical implementation details, Kylie also shares some insights into the python libraries and cloud services that she uses in her work.</p>
<p>The video ends with a post-interview breakdown and analysis, which provides valuable insights into how to improve your performance during a data science interview.</p>
<p>This video is perfect for anyone looking to break into the data science field or expand their knowledge of machine learning. Consider pausing after each question and thinking about how you would answer them, so you can get the most out of this course. Don't miss this opportunity to learn from two experts in the field of data science!</p>
<p>Watch the video on <a target="_blank" href="https://www.youtube.com/watch?v=sD468LfeVdc">the freeCodeCamp.org YouTube channel</a> (1.5 hour watch).</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/sD468LfeVdc" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Prepare for React Interviews – Front-End Technical Interview Guide ]]>
                </title>
                <description>
                    <![CDATA[ By Manu Arora A front-end technical interview is an opportunity for a potential employer to assess your skills and knowledge in web development.   The interviewer will ask you questions about your experience and skills in HTML, CSS, and JavaScript. T... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/prepare-for-react-technical-interviews/</link>
                <guid isPermaLink="false">66d46021787a2a3b05af43dc</guid>
                
                    <category>
                        <![CDATA[ coding interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Front-end Development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ interview questions ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interviewing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ React ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 08 Sep 2022 00:29:16 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/08/Build-a-React-Code-Editor-That-Compiles-and-Executes-in-10--Languages--2-.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Manu Arora</p>
<p>A front-end technical interview is an opportunity for a potential employer to assess your skills and knowledge in web development.  </p>
<p>The interviewer will ask you questions about your experience and skills in HTML, CSS, and JavaScript. They'll also likely ask you some framework specific questions about React, Angular, Vue, or whatever framework they use.  </p>
<p>They may also give you a coding challenge to test your abilities in a particular domain.  </p>
<p>Today, we are going to look at the most common problems asked in a front-end technical interview round, focusing on React and JavaScript.</p>
<h2 id="heading-what-interviewers-are-looking-for">What Interviewers Are Looking For</h2>
<p>When interviewing for a front-end web development position, be prepared to discuss your skills and experience with various programming languages, tools, and frameworks.  </p>
<p>Interviewers will also want to see that you have a strong understanding of the latest trends and technologies in web development.  </p>
<p>Be prepared to talk about your past projects and how you approached solving various challenges.  </p>
<p>Be sure to showcase your problem-solving skills by discussing how you tackled various challenges during your development process.  </p>
<p>Finally, don’t forget to highlight your strengths.</p>
<h2 id="heading-most-commonly-asked-questions-in-a-front-end-technical-interview">Most Commonly Asked Questions in a Front-End Technical Interview</h2>
<p>Front-end technical interview problems are pretty straightforward and common. If you have been actively coding for at least 6 months, you will be familiar with most of the concepts that are asked about.</p>
<p>Once you practice the right questions with a time based approach, you should be able to clear the interviews.</p>
<p>Let's look at the most common questions asked.</p>
<h2 id="heading-map-foreach-filter-and-reduce">Map, ForEach, Filter and Reduce</h2>
<p>The most commonly asked questions (generally at the start of the interviews) are about <code>array methods</code>. The interviewer wants to asses how comfortable you are with array manipulation.</p>
<h4 id="heading-the-map-method">The <code>.map()</code> method</h4>
<p>The <code>.map()</code> methods iterates over an array, computes whatever logic you write inside the map body, and returns a <strong>NEW</strong> array.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">let</span> arr = [
  { <span class="hljs-attr">id</span>: <span class="hljs-number">1</span>, <span class="hljs-attr">age</span>: <span class="hljs-number">12</span>, <span class="hljs-attr">name</span>: <span class="hljs-string">'Manu'</span> },
  { <span class="hljs-attr">id</span>: <span class="hljs-number">2</span>, <span class="hljs-attr">age</span>: <span class="hljs-number">24</span>, <span class="hljs-attr">name</span>: <span class="hljs-string">'Quincy'</span> },
  { <span class="hljs-attr">id</span>: <span class="hljs-number">3</span>, <span class="hljs-attr">age</span>: <span class="hljs-number">22</span>, <span class="hljs-attr">name</span>: <span class="hljs-string">'Abbey'</span> },
]

<span class="hljs-keyword">let</span> names = arr.map(<span class="hljs-function">(<span class="hljs-params">el</span>) =&gt;</span> el.name)
<span class="hljs-built_in">console</span>.log(names)
<span class="hljs-comment">// Output: [ 'Manu', 'Quincy', 'Abbey' ]</span>
</code></pre>
<h4 id="heading-the-foreach-method">The <code>.forEach()</code> method</h4>
<p>ForEach is similar to <code>.map()</code> but it DOES NOT return an array.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">let</span> arr = [
  { <span class="hljs-attr">id</span>: <span class="hljs-number">1</span>, <span class="hljs-attr">age</span>: <span class="hljs-number">12</span>, <span class="hljs-attr">name</span>: <span class="hljs-string">'Manu'</span> },
  { <span class="hljs-attr">id</span>: <span class="hljs-number">2</span>, <span class="hljs-attr">age</span>: <span class="hljs-number">24</span>, <span class="hljs-attr">name</span>: <span class="hljs-string">'Quincy'</span> },
  { <span class="hljs-attr">id</span>: <span class="hljs-number">3</span>, <span class="hljs-attr">age</span>: <span class="hljs-number">22</span>, <span class="hljs-attr">name</span>: <span class="hljs-string">'Abbey'</span> },
]

arr.forEach(<span class="hljs-function">(<span class="hljs-params">el</span>) =&gt;</span> el.age+= <span class="hljs-number">10</span>);
<span class="hljs-built_in">console</span>.log(arr);

<span class="hljs-comment">// Output: 22 32 44</span>
</code></pre>
<h4 id="heading-the-filter-method">The <code>.filter()</code> method</h4>
<p>The filter method, as the name suggests, helps in filtering out the values inside of an array based on a Boolean condition. </p>
<p>If the boolean condition is true, the result will be returned and added in the final array. If not, it will be skipped. Filter also returns an array, just like the <code>.map()</code> method.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">let</span> arr = [
  { <span class="hljs-attr">id</span>: <span class="hljs-number">1</span>, <span class="hljs-attr">age</span>: <span class="hljs-number">12</span>, <span class="hljs-attr">name</span>: <span class="hljs-string">'Manu'</span> },
  { <span class="hljs-attr">id</span>: <span class="hljs-number">2</span>, <span class="hljs-attr">age</span>: <span class="hljs-number">24</span>, <span class="hljs-attr">name</span>: <span class="hljs-string">'Quincy'</span> },
  { <span class="hljs-attr">id</span>: <span class="hljs-number">3</span>, <span class="hljs-attr">age</span>: <span class="hljs-number">22</span>, <span class="hljs-attr">name</span>: <span class="hljs-string">'Abbey'</span> },
]

<span class="hljs-keyword">let</span> tooYoung = arr.filter(<span class="hljs-function">(<span class="hljs-params">el</span>) =&gt;</span> el.age &lt;= <span class="hljs-number">14</span>);
<span class="hljs-built_in">console</span>.log(tooYoung);

<span class="hljs-comment">// Output: [ { id: 1, age: 12, name: 'Manu' } ]</span>
</code></pre>
<h4 id="heading-the-reduce-method">The <code>.reduce()</code> method</h4>
<p>In simple terms, the <code>.reduce()</code> method takes into account a <code>previous value</code> , current value and an <code>accumulator</code>. </p>
<p>The return type of the <code>.reduce()</code> method is always a single value. It is useful when you want to process all the values of the array and want to derive some accumulated result.</p>
<pre><code class="lang-javascript"><span class="hljs-comment">// Calculates the total age of all the three persons.</span>
<span class="hljs-keyword">let</span> arr = [
  { <span class="hljs-attr">id</span>: <span class="hljs-number">1</span>, <span class="hljs-attr">age</span>: <span class="hljs-number">12</span>, <span class="hljs-attr">name</span>: <span class="hljs-string">'Manu'</span> },
  { <span class="hljs-attr">id</span>: <span class="hljs-number">2</span>, <span class="hljs-attr">age</span>: <span class="hljs-number">24</span>, <span class="hljs-attr">name</span>: <span class="hljs-string">'Quincy'</span> },
  { <span class="hljs-attr">id</span>: <span class="hljs-number">3</span>, <span class="hljs-attr">age</span>: <span class="hljs-number">22</span>, <span class="hljs-attr">name</span>: <span class="hljs-string">'Abbey'</span> },
]

<span class="hljs-keyword">let</span> totalAge = arr.reduce(<span class="hljs-function">(<span class="hljs-params">acc, currentObj</span>) =&gt;</span> acc + currentObj.age, <span class="hljs-number">0</span>)
<span class="hljs-built_in">console</span>.log(totalAge)

<span class="hljs-comment">// Output: 57</span>
</code></pre>
<p>Here, the <code>currentObj</code> is the object that is being iterated over. Also, the <code>acc</code> value stores the result and is outputted finally into the totalAge array.</p>
<h2 id="heading-how-to-implement-polyfills">How to Implement Polyfills</h2>
<p>Another important interview question is <a target="_blank" href="https://www.algochurn.com/frontend/polyfills">How to implement polyfills</a> of the map and filter array methods.</p>
<p>A polyfill is a code snippet (in terms of JavaScript web architecture) used for modern world functionalities on older browsers that do not implement it natively.</p>
<p>Simply put, a polyfill is a custom implementation of native JavaScript functions. Sort of a create your own <code>.map()</code> or <code>.filter()</code> method.</p>
<h4 id="heading-how-to-use-the-map-polyfill">How to use the <code>.map()</code> polyfill</h4>
<pre><code class="lang-javascript"><span class="hljs-keyword">let</span> data = [<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>];

<span class="hljs-built_in">Array</span>.prototype.myMap = <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">cb</span>) </span>{
  <span class="hljs-keyword">let</span> arr = [];
  <span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i = <span class="hljs-number">0</span>; i &lt; <span class="hljs-built_in">this</span>.length; i++) {
    arr.push(cb(<span class="hljs-built_in">this</span>[i], i, <span class="hljs-built_in">this</span>));
  }
  <span class="hljs-keyword">return</span> arr;
};
<span class="hljs-keyword">const</span> mapLog = data.myMap(<span class="hljs-function">(<span class="hljs-params">el</span>) =&gt;</span> el * <span class="hljs-number">2</span>);
<span class="hljs-built_in">console</span>.log(mapLog);
</code></pre>
<p>the <code>myMap</code> method takes in a <code>callback</code> that gets executed inside the <code>myMap</code> body. We basically have a native <code>for</code> loop inside the myMap body, which iterates over the <code>this.length</code>. This is nothing but the length of the array through which the <code>myMap</code> function is called.</p>
<p>Since the syntax of <code>map()</code> is <code>arr.map(currentElement, index, array)</code>, and the <code>myMap()</code> function takes into account exactly that.</p>
<p>Also since <code>map()</code> returns a new array, we create an empty array and push the results into it. In the end we return it.</p>
<h4 id="heading-how-to-use-the-filter-polyfill">How to use the <code>.filter()</code> polyfill</h4>
<pre><code class="lang-javascript"><span class="hljs-keyword">let</span> data = [<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>];

<span class="hljs-built_in">Array</span>.prototype.myFilter = <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">cb</span>) </span>{
  <span class="hljs-keyword">let</span> arr = [];
  <span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i = <span class="hljs-number">0</span>; i &lt; <span class="hljs-built_in">this</span>.length; i++) {
    <span class="hljs-keyword">if</span> (cb(<span class="hljs-built_in">this</span>[i], i, <span class="hljs-built_in">this</span>)) {
      arr.push(<span class="hljs-built_in">this</span>[i]);
    }
  }
  <span class="hljs-keyword">return</span> arr;
};
<span class="hljs-keyword">const</span> filterLog = data.myFilter(<span class="hljs-function">(<span class="hljs-params">el</span>) =&gt;</span> el &lt; <span class="hljs-number">4</span>);
<span class="hljs-built_in">console</span>.log(filterLog);
</code></pre>
<p><code>.filter()</code> is very similar to <code>.map()</code> in terms of implementation. But since <code>filter</code> filters out the results based on a boolean value, we have an additional <code>if()</code> condition to filter out results and conditionally push inside the array.</p>
<h2 id="heading-what-is-debouncing">What is Debouncing?</h2>
<p>This is a famous interview question with a lot of practical real world usage and implementations.</p>
<p><code>Debouncing</code> is a method of preventing a function from being invoked too often, and instead waiting a certain amount of time until it was last called before invoking it.  </p>
<p>Think of Amazon in this case. Whenever you type anything in the search bar, when you stop for AT LEAST 0.5 seconds, then the results are fetched. This is exactly what debouncing is.</p>
<p>In order to implement debouncing, let's take an example: Generating a username for a user based on the user input.</p>
<div class="embed-wrapper"><iframe src="https://codesandbox.io/embed/proud-surf-uiu2v?fontsize=14&amp;hidenavigation=1&amp;theme=dark" style="width:100%;height:500px;border:0;border-radius:4px;overflow:hidden" sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts" title="Embedded content" loading="lazy"></iframe></div>

<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> <span class="hljs-string">"./styles.css"</span>;
<span class="hljs-keyword">let</span> inputEle = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">"inputElement"</span>);
<span class="hljs-keyword">let</span> username = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">"username"</span>);

<span class="hljs-keyword">let</span> generateUsername = <span class="hljs-function">(<span class="hljs-params">e</span>) =&gt;</span> {
  username.innerHTML = e.target.value.split(<span class="hljs-string">" "</span>).join(<span class="hljs-string">"-"</span>);
};
<span class="hljs-keyword">let</span> debounce = <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">cb, delay</span>) </span>{
  <span class="hljs-keyword">let</span> timer;
  <span class="hljs-keyword">return</span> <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) </span>{
    <span class="hljs-keyword">let</span> context = <span class="hljs-built_in">this</span>;
    <span class="hljs-built_in">clearTimeout</span>(timer);
    timer = <span class="hljs-built_in">setTimeout</span>(<span class="hljs-function">() =&gt;</span> {
      cb.apply(context, <span class="hljs-built_in">arguments</span>);
    }, delay);
  };
};

inputEle.addEventListener(<span class="hljs-string">"keyup"</span>, debounce(generateUsername, <span class="hljs-number">300</span>));
</code></pre>
<p>Here, we are trying to create a custom username based on the user input. Now if the user starts typing, we don't want to immediately create it, but actually wait for 300 milliseconds before creating the username. We are trying to mimic an API call here, so assume the user types anything and it has to make an API call to the backend and fetch a response.</p>
<p>The <code>debounce()</code> function takes in two values, <code>cb</code> and <code>delay</code> . <code>cb</code> is the callback function that gets executed when the timer runs out.  </p>
<p>We use <code>setTimeout()</code> to create a timeout timer, which means the function inside the setTimeout body will be executed after a certain amount of time.</p>
<p>The <code>apply</code> method is used to call the callback function with the <code>object</code> that it was initially called with, applying the arguments and context to it.</p>
<h2 id="heading-what-are-closures">What are Closures?</h2>
<p>According to the <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures">mdn docs for closures</a>,</p>
<blockquote>
<p>A closure is the combination of a function bundled together (enclosed) with references to its surrounding state (the lexical environment). In other words, a closure gives you access to an outer function's scope from an inner function. In JavaScript, closures are created every time a function is created, at function creation time.</p>
</blockquote>
<p>To simplify this, let's take an example and understand how closures work.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">start</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">var</span> name = <span class="hljs-string">"Manu"</span>; <span class="hljs-comment">// name is a local variable created by start()</span>
  <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">displayName</span>(<span class="hljs-params"></span>) </span>{
    <span class="hljs-comment">// displayName() is the inner function, a `closure`</span>
    alert(name); <span class="hljs-comment">// use variable declared in the parent function</span>
  }
  displayName();
}
start(); <span class="hljs-comment">// "Manu" alert box is displayed</span>
</code></pre>
<p>Here, a closure is formed between the <code>start()</code> and the <code>displayName()</code> function. The <code>displayName()</code> function has access to the <code>name</code> variable present in the <code>start()</code> function.</p>
<p>In simple terms, the inner function will know its surroundings (the lexical environment).</p>
<p>I have written a whole blog on <a target="_blank" href="https://manuarora.in/blog/ace-the-javascript-interview#closures">how to clear JavaScript interviews</a>. Have a look at that if you want to know more about in depth JavaScript interview process.</p>
<h2 id="heading-react-hooks">React Hooks</h2>
<p>The most popular questions asked in a front-end coding interview when it comes to React hooks are:</p>
<ol>
<li><code>useState()</code></li>
<li><code>useReducer()</code></li>
<li><code>useEffect()</code></li>
<li><code>useRef()</code></li>
<li>Custom Hooks and their implementation.</li>
</ol>
<h3 id="heading-how-the-usestate-hook-works">How the <code>useState()</code> hook works</h3>
<p>To manage a state inside of your component, the <code>useState()</code> hook is your go-to hook.  </p>
<p>Let's take an example and understand:</p>
<div class="embed-wrapper"><iframe src="https://codesandbox.io/embed/thirsty-lewin-uo8ylh?fontsize=14&amp;hidenavigation=1&amp;theme=dark" style="width:100%;height:500px;border:0;border-radius:4px;overflow:hidden" sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts" title="Embedded content" loading="lazy"></iframe></div>

<pre><code class="lang-javscript">import { useState } from "react";
import "./styles.css";

export default function App() {
  const [title, setTitle] = useState("freeCodeCamp");
  const handleChange = () =&gt; {
    setTitle("FCC");
  };
  return (
    &lt;div className="App"&gt;
      &lt;h1&gt;{title} useState&lt;/h1&gt;
      &lt;button onClick={handleChange}&gt;Change Title&lt;/button&gt;
    &lt;/div&gt;
  );
}
</code></pre>
<p>The <code>useState()</code> methods gives us two values, the <code>state</code> variable and <code>a function to change</code> that state variable.</p>
<p>In the above code snippet, we are creating a <code>title</code> state to store the title of the page. The initial state is passed as <code>freeCodeCamp</code>.</p>
<p>On button click, we can use the <code>setTitle()</code> method to change the state variable to <code>FCC</code>.</p>
<p><code>useState()</code> method is your go-to resource for state management in a functional component.</p>
<h3 id="heading-how-the-usereducer-hook-works">How the <code>useReducer()</code> hook works</h3>
<p>In simple terms, <code>useReducer()</code> is the cool way of managing state in your application. It is more structured and helps you maintain complex state in your application.</p>
<p>Let's take an example to understand the useReducer hook:</p>
<div class="embed-wrapper"><iframe src="https://codesandbox.io/embed/ecstatic-marco-o8wh00?fontsize=14&amp;hidenavigation=1&amp;theme=dark" style="width:100%;height:500px;border:0;border-radius:4px;overflow:hidden" sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts" title="Embedded content" loading="lazy"></iframe></div>

<pre><code class="lang-javscript">import "./styles.css";
import { useReducer } from "react";

const initialState = { title: "freeCodeCamp", count: 0 };

function reducer(state, action) {
  switch (action.type) {
    case "change-title":
      return { ...state, title: "FCC" };
    case "increment-counter":
      return { ...state, count: state.count + 1 };
    default:
      throw new Error();
  }
}

export default function App() {
  const [state, dispatch] = useReducer(reducer, initialState);
  return (
    &lt;&gt;
      &lt;div className="App"&gt;
        &lt;h1&gt;{state.title} CodeSandbox&lt;/h1&gt;
        &lt;button onClick={() =&gt; dispatch({ type: "change-title" })}&gt;
          Change Title
        &lt;/button&gt;
        &lt;button onClick={() =&gt; dispatch({ type: "increment-counter" })}&gt;
          Increment Counter
        &lt;/button&gt;
      &lt;/div&gt;
      &lt;p style={{ textAlign: "center" }}&gt;{state.count}&lt;/p&gt;.
    &lt;/&gt;
  );
}
</code></pre>
<p>The <code>useReducer()</code> hook takes two parameters, the <code>reducer</code> function and an <code>initialState</code> value.  </p>
<p>The reducer function is a <code>switch-case</code> based implementation that returns the final state value that <code>useReduer()</code> internally uses to supply back to the component.</p>
<p>The values returned from the <code>useReducer()</code> function are <code>state</code> and <code>dispatch</code>. The <code>state</code> is the actual <code>state</code> value that can be used inside of the component. In our case, the state has two values: <code>title and count</code>. This title and count can be manipulated using the <code>dispatch()</code> method which is returned by the <code>useReducer()</code> method.</p>
<p>In the above case, to change the title, we have written a case of <code>change-title</code> inside the reducer function. This can be triggered with the help of the <code>dispatch({ type: "change-title" })</code> function. This will trigger the change title function and it will change the state of the <code>title</code> attribute.  </p>
<p>Similarly, the same happens for the <code>count</code> part that is there in the application.  </p>
<p>Like I said earlier, it is a cool way of implementing state inside your application. 😉</p>
<h3 id="heading-how-the-useeffect-hook-works">How the <code>useEffect()</code> hook works</h3>
<p>Think of it this way: if you want to have a <code>side effect</code> to a state variable that changes, you can use the <code>useEffect()</code> hook to trigger it.  </p>
<p>For example, let's say if the <code>input value</code> of your input box changes, and you want to call an API after it has changed. You can write the logic of the <code>API handle</code> in the <code>useEffect()</code> block.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> React, {useState, useEffect} <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;

<span class="hljs-keyword">export</span> <span class="hljs-keyword">const</span> App = <span class="hljs-function">() =&gt;</span> {
    <span class="hljs-keyword">const</span> [value, setValue] = useState(<span class="hljs-string">''</span>);
    useEffect(<span class="hljs-function">() =&gt;</span> {
      <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'value changed: '</span>, value);
    }, [value])
    <span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"username"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">{value}</span> <span class="hljs-attr">onChange</span>=<span class="hljs-string">{(e)</span> =&gt;</span> setValue(e.target.value)} /&gt;
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
}
</code></pre>
<p>Here, we have an <code>input box</code> that has a state value of <code>value</code> attached to it. This value will change when the user tries to input anything.  </p>
<p>Once the value has been updated and has been rendered, the <code>useEffect()</code> block will kick in and the <code>console</code> statement will be triggered, outputting the latest state value which is there.  </p>
<p>Here, one good use case of the <code>useEffect()</code> can be to implement <code>API calls</code>. Let's assume you want to call an API with the input field value. The useEffect function block will be the best way to do it.</p>
<p>Another part of this is the <code>dependency array</code> which is the second argument to the <code>useEffect()</code> hook. In our case, we mentioned <code>[value]</code> as the second argument.</p>
<p>This basically means that EVERY TIME THE <code>value</code> CHANGES, the function inside the useEffect gets triggered. If you don't pass anything in the <code>dependency array</code>, the function block gets triggered once.</p>
<h3 id="heading-how-the-useref-hook-works">How the <code>useRef()</code> hook works</h3>
<p>The useRef hook gives us the ability to mutate the DOM (but this is not the only implication of useRef).</p>
<p>According to the docs:</p>
<blockquote>
<p>useRef returns a mutable ref object whose .current property is initialized to the passed argument (initialValue). The returned object will persist for the full lifetime of the component.</p>
</blockquote>
<p>In simple terms, we are going to useRef if we want to persist the value of something for the entire component lifecycle. The basic implementation of useRef comes with DOM elements. Let's take an example:</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">TextInputWithFocusButton</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">const</span> inputEl = useRef(<span class="hljs-literal">null</span>);
  <span class="hljs-keyword">const</span> onButtonClick = <span class="hljs-function">() =&gt;</span> {
    <span class="hljs-comment">// `current` points to the mounted text input element</span>
    inputEl.current.focus();
  };
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">{inputEl}</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span> /&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">onClick</span>=<span class="hljs-string">{onButtonClick}</span>&gt;</span>Focus the input<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
    <span class="hljs-tag">&lt;/&gt;</span></span>
  );
}
</code></pre>
<p>Here, we are assigning a <code>ref</code> property to the <code>input</code> block. This will be associated with the <code>inputEl</code> reference that we created.</p>
<p>Now this <code>input</code> element can be manipulated however we want. We can modify the <code>style</code> attribute and make it beautiful, we can take the <code>value</code> property to see what is being help by the input element as the value, and so on.</p>
<p>In the above example, when we click the button, the <code>input</code> is focused and we can immediately start typing. We can do this with the help of <code>inputEl.current.focus()</code> – essentially the <code>focus()</code> method present on the <code>current</code> object.</p>
<h3 id="heading-what-are-custom-hooks">What are custom hooks?</h3>
<p>One of the most commonly asked questions that I've seen in front-end interview rounds is to <a target="_blank" href="https://www.algochurn.com/frontend/usekeypress-custom-hook">create a custom hook for keyboard events</a>.</p>
<p>We saw many different hooks, but the interviewer might ask you to create a hook of your own. This might be challenging for some but with some practice, it becomes much easier.</p>
<p>Let's understand what a <code>Hook</code> is:</p>
<p>The basic usage of a custom hook is to extract a function's logic into its own component.</p>
<p>Imaging what will happen if you have to <code>listen for an enter press</code> inside of each of your components. Instead of writing the logic for <code>listening</code> again and again, we can extract the logic into a component of its own and use it wherever we want (just like we use <code>useState()</code> or <code>useEffect()</code>).</p>
<p>There are a few conditions for a function to be called a <code>Hook</code>:</p>
<ol>
<li>It should always start with the <code>use</code> keyword.</li>
<li>We can decide what it takes as arguments, and what, if anything, it should return.</li>
</ol>
<pre><code class="lang-javascript"><span class="hljs-comment">// Custom Hook: useAvailable</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">useAvailabe</span>(<span class="hljs-params">resource</span>) </span>{
  <span class="hljs-keyword">const</span> [isAvailable, setIsAvailable] = useState(<span class="hljs-literal">null</span>);

  <span class="hljs-comment">// ...</span>

  <span class="hljs-keyword">return</span> isAvailable;
}

<span class="hljs-comment">// Usage:</span>
  <span class="hljs-keyword">const</span> isAvailable = useAvailable(cpu);
</code></pre>
<p>Here, no matter how many times we call <code>useState</code> and <code>useEffects</code> inside the custom hook, they will be completely independent from the function where we use the custom hook.  </p>
<p>Let's take an example of creating a custom hook for <code>storing local storage values</code>.</p>
<h3 id="heading-how-to-create-a-custom-hook-uselocalstorage-example">How to create a custom hook – useLocalStorage example</h3>
<p>The useLocalStorage custom hook is a way to persist data into the local storage. Get and set values inside the local storage using <code>key</code> and <code>value</code> pairs so that whenever the user comes back to your web app, they see the same result they used earlier.</p>
<p>The below implementation is of a simple <code>select</code> tag value that, once changed, persists the data into local storage.</p>
<p><code>useLocalStorage.js</code></p>
<pre><code class="lang-javascript"><span class="hljs-comment">// Use Local Storage Custom Hook</span>
<span class="hljs-keyword">import</span> { useState } <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">useLocalStorage</span>(<span class="hljs-params">key, initialValue</span>) </span>{
  <span class="hljs-keyword">const</span> [storedValue, setStoredValue] = useState(<span class="hljs-function">() =&gt;</span> {
    <span class="hljs-keyword">if</span> (<span class="hljs-keyword">typeof</span> <span class="hljs-built_in">window</span> === <span class="hljs-string">'undefined'</span>) {
      <span class="hljs-keyword">return</span> initialValue;
    }
    <span class="hljs-keyword">try</span> {
      <span class="hljs-keyword">const</span> item = <span class="hljs-built_in">window</span>.localStorage.getItem(key);
      <span class="hljs-keyword">return</span> item ? <span class="hljs-built_in">JSON</span>.parse(item) : initialValue;
    } <span class="hljs-keyword">catch</span> (error) {
      <span class="hljs-built_in">console</span>.log(error);
      <span class="hljs-keyword">return</span> initialValue;
    }
  });
  <span class="hljs-keyword">const</span> setValue = <span class="hljs-function">(<span class="hljs-params">value</span>) =&gt;</span> {
    <span class="hljs-keyword">try</span> {
      <span class="hljs-keyword">const</span> valueToStore =
        value <span class="hljs-keyword">instanceof</span> <span class="hljs-built_in">Function</span> ? value(storedValue) : value;
      setStoredValue(valueToStore);
      <span class="hljs-keyword">if</span> (<span class="hljs-keyword">typeof</span> <span class="hljs-built_in">window</span> !== <span class="hljs-string">'undefined'</span>) {
        <span class="hljs-built_in">window</span>.localStorage.setItem(key, <span class="hljs-built_in">JSON</span>.stringify(valueToStore));
      }
    } <span class="hljs-keyword">catch</span> (error) {
      <span class="hljs-built_in">console</span>.log(error);
    }
  };
  <span class="hljs-keyword">return</span> [storedValue, setValue] <span class="hljs-keyword">as</span> <span class="hljs-keyword">const</span>;
}

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> useLocalStorage;
</code></pre>
<p><code>App.js</code></p>
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> * <span class="hljs-keyword">as</span> React <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
<span class="hljs-keyword">import</span> <span class="hljs-string">'./style.css'</span>;
<span class="hljs-keyword">import</span> useLocalStorage <span class="hljs-keyword">from</span> <span class="hljs-string">'./useLocalStorate'</span>;

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">App</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">const</span> [storedValue, setStoredValue] = useLocalStorage(
    <span class="hljs-string">'select-value'</span>,
    <span class="hljs-string">'light'</span>
  );

  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">select</span>
        <span class="hljs-attr">className</span>=<span class="hljs-string">"select"</span>
        <span class="hljs-attr">value</span>=<span class="hljs-string">{storedValue}</span>
        <span class="hljs-attr">onChange</span>=<span class="hljs-string">{(e)</span> =&gt;</span> setStoredValue(e.target.value)}
      &gt;
        <span class="hljs-tag">&lt;<span class="hljs-name">option</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"dark"</span>&gt;</span>Dark<span class="hljs-tag">&lt;/<span class="hljs-name">option</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">option</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"light"</span>&gt;</span>Light<span class="hljs-tag">&lt;/<span class="hljs-name">option</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">select</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"desc"</span>&gt;</span>
        Value from local storage: <span class="hljs-tag">&lt;<span class="hljs-name">span</span>&gt;</span>{storedValue}<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
  );
}
</code></pre>
<p>Here, the <code>useLocalStorage</code> hook takes in two parameters, the <code>local storage key name</code> to store, and a <code>default</code> value that has to be there.</p>
<p>The hook returns two values: the <code>local storage value</code> of the key that you're using and a way to <code>change that key value</code> by giving us a <code>setter method</code>. In this case, the <code>setStoredValue</code> method.</p>
<p>In the <code>useLocalStorage.js</code> file, we are trying to first <code>GET</code> the local storage value with that key using <code>localStorage.getItem()</code> method. If that exists, we are setting the value. If found, we <code>JSON.parse()</code> the value and return it. Otherwise, initialValue which was provided is set as the default value.  </p>
<p>The <code>setLocalStorage()</code> function takes into account whether the passed value is a function or a simple variable value. Also it takes care of setting the value of local storage using <code>localStorage.setItem()</code> function.</p>
<h2 id="heading-how-to-stand-out-as-a-developer-by-creating-side-projects">How to Stand Out as a Developer by Creating Side Projects</h2>
<p>The thing that has always worked for me and helped me stand out is my side projects that I've built.  </p>
<p>In my opinion, you don't have to build 10 basic cookie cutter side projects. Instead, try building one or two really good projects where you get to implement all the concepts of React/HTML/CSS/JavaScript and everything that you've been learning.  </p>
<p>Assume the interviewer has 14 interviews in a week and has to review the résumés of 14 candidates. They'll be more likely interested in your profile because you have created a <code>link shortener website that charges $1 after every 1000 link visits</code> instead of an Amazon / Netflix clone.</p>
<p>Again, there's nothing wrong with creating clones and practicing your skills. But it's always good to have at least 1 unique project that helps you stand out from the crowd.  </p>
<p>Also, creating side projects will help you upskill as a developer. It is not likely possible to know everything beforehand when creating a project from scratch. Along the way, you'll have to learn many different skills and get good at that.</p>
<h2 id="heading-practice-practice-practice">Practice, Practice, Practice.</h2>
<p>There's a famous saying that goes like this:</p>
<div class="embed-wrapper">
        <blockquote class="twitter-tweet">
          <a href="https://twitter.com/mannupaaji/status/1566350128767987712"></a>
        </blockquote>
        <script defer="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div>
<p>and this is true to a great extent. </p>
<p>I myself have failed 100s of times before landing my first job. It's the constant feedback and iterations that you have to make in order to get what you want.  </p>
<p>In our case, getting a front-end job becomes easy when:</p>
<ul>
<li>You have in depth knowledge of your skills – React in this case (along with HTML, CSS, and JS).</li>
<li>You have a set of projects to showcase, making you stand out.</li>
<li>You're willing to put in the time and the effort to learn more and challenge yourself.</li>
<li>You read the freeCodeCamp blog regularly and practice questions there (😉)</li>
</ul>
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>There are a lot of questions to practice for a machine-coding round. The interviewer can ask different sets of questions to test your skills.  </p>
<p>You can use <a target="_blank" href="https://algochurn.com"><strong>Algochurn</strong></a> to practice the most popular <a target="_blank" href="https://www.algochurn.com/blog/top-5-react-front-end-questions-to-practice-before-a-technical-interview-round">JavaScript interview questions</a>, <a target="_blank" href="https://algochurn.com/frontend">React Interview Questions</a>, and <a target="_blank" href="https://algochurn.com/problems">algorithmic questions</a> asked in a front-end technical interview round along with their solutions and approaches.</p>
<p>If you have any questions, please reach out to me via <a target="_blank" href="https://twitter.com/mannupaaji">Twitter(@mannupaaji)</a> and/or my <a target="_blank" href="https://manuarora.in">website(manuarora.in)</a></p>
<p>Good luck and Happy Coding! 👑🫡</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ The Most Popular Coding Challenge Websites ]]>
                </title>
                <description>
                    <![CDATA[ If you want to improve your analytical skills, there's no better way to do that than solving problems.  If you are a programmer, then this is something you should do for yourself. Programmers need to deal with all sorts of problems almost every day. ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/the-most-popular-coding-challenge-websites/</link>
                <guid isPermaLink="false">66b90316941d2f900bad52aa</guid>
                
                    <category>
                        <![CDATA[ coding challenge ]]>
                    </category>
                
                    <category>
                        <![CDATA[ interview questions ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interviewing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Md. Fahim Bin Amin ]]>
                </dc:creator>
                <pubDate>Wed, 15 Jun 2022 22:23:18 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/06/fCC-Banner.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>If you want to improve your analytical skills, there's no better way to do that than solving problems. </p>
<p>If you are a programmer, then this is something you should do for yourself. Programmers need to deal with all sorts of problems almost every day. </p>
<p>Most importantly, solving problems in an efficient manner can make you much more productive. And solving challenging problems helps us do that.</p>
<h2 id="heading-you-can-watch-this-complete-video-on-youtube-as-well-if-you-like">You can watch this complete video on YouTube as well if you like 🎥</h2>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/45wrQ-RAefI" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<h2 id="heading-why-should-you-develop-your-problem-solving-skills">Why Should You Develop Your Problem-Solving Skills?</h2>
<p>These days, technology is developing rapidly, and we are seeing some amazing changes and improvements almost every day. </p>
<p>Whenever we talk about technology, a buzzword appears in our mind – and that is coding or programming. Now, coding/programming isn't just about solving different kinds of problems using different programming languages, but it's a large part of what you'll do as a developer.</p>
<p>The fields of Web development, Machine Learning, Artificial Intelligence, Augmented Reality, App Development, and many others require strong problem-solving skills. </p>
<p>There are many popular websites that help you do that by providing various types of problems where you need to apply your analytical and mathematical skills to solve each problem using programming languages.</p>
<p>I am going to provide you with a list of coding challenge websites that will help you become more advanced day by day. </p>
<p>Keep in mind that these websites are useful for everybody, whether you are new to coding challenges or you are a professional programmer and so on.</p>
<h1 id="heading-contents">Contents</h1>
<ol>
<li><a class="post-section-overview" href="#heading-1-beecrowd-formerly-uri-1">beecrowd</a></li>
<li><a class="post-section-overview" href="#heading-2-hackerrank-2">HackerRank</a></li>
<li><a class="post-section-overview" href="#heading-3-codeforces-1">Codeforces</a></li>
<li><a class="post-section-overview" href="#heading-4-leetcode-1">LeetCode</a></li>
<li><a class="post-section-overview" href="#heading-5-kaggle-1">Kaggle</a></li>
<li><a class="post-section-overview" href="#heading-6-codechef-1">CodeChef</a></li>
<li><a class="post-section-overview" href="#heading-7-atcoder-1">AtCoder</a></li>
<li><a class="post-section-overview" href="#heading-8-topcoder">Topcoder</a></li>
<li><a class="post-section-overview" href="#heading-9-coderbyte">Coderbyte</a></li>
<li><a class="post-section-overview" href="#heading-10-project-euler">Project Euler</a></li>
<li><a class="post-section-overview" href="#heading-11-codewars">Codewars</a></li>
<li><a class="post-section-overview" href="#heading-12-spoj">SPOJ</a></li>
<li><a class="post-section-overview" href="#heading-13-codingame">CodinGame</a></li>
<li><a class="post-section-overview" href="#heading-14-geeksforgeeks-popularly-known-as-gfg-1">GeeksforGeeks</a></li>
<li><a class="post-section-overview" href="#heading-15-toph">Toph</a></li>
<li><a class="post-section-overview" href="#heading-16-lightoj-1">LightOJ</a></li>
<li><a class="post-section-overview" href="#heading-17-exercism">Exercism</a></li>
<li><a class="post-section-overview" href="#heading-18-online-judge-commonly-known-as-uva">Online Judge</a></li>
<li><a class="post-section-overview" href="#heading-19-hackerearth">HackerEarth</a></li>
<li><a class="post-section-overview" href="#heading-20-code-jam-googles-coding-competitions-1">Code Jam - Google's Coding Competitions</a></li>
<li><a class="post-section-overview" href="#heading-21-icpc-international-collegiate-programming-contest-1">ICPC</a></li>
</ol>
<h1 id="heading-best-coding-challenge-websites">Best Coding Challenge Websites</h1>
<h2 id="heading-1-beecrowdhttpswwwbeecrowdcombrjudgeenlogin-formerly-uri">1. <a target="_blank" href="https://www.beecrowd.com.br/judge/en/login">beecrowd</a> (Formerly URI)</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/zwnoz97xawck4unafkbz.png" alt="beecrowd banner" width="600" height="400" loading="lazy"></p>
<p>beecrowd is perfect for those who have just started solving coding challenges and are looking for a beginner-friendly website. It used to be named <strong>URI</strong>, so there is a chance that you are already familiar with this site as URI.</p>
<p>If you want to solve problems in a specific category, then you're in luck as this website also offers that.</p>
<figure>
  <img src="https://www.freecodecamp.org/news/content/images/2022/07/chodi765ql8li7b9yia6-resized.jpeg" class="kg-image" alt="A dropdown showing the different challenge categories on beercrowd" width="600" height="400" loading="lazy">
</figure>

<p>Here is an image of a <strong>Strings</strong> problem set. You can also filter the problems by the ID (#), name (NAME), Subject (SUBJECT), solved (SOLVED), and so on. Beginners like these features very much.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/2afljp6rrtm1c4co62vr.png" alt="2afljp6rrtm1c4co62vr" width="600" height="400" loading="lazy"></p>
<p>On this website, you can also take part in different programming contests, and check your global ranking, country-wide ranking, and university-wide ranking.</p>
<p>Also, you can check your progress, how many days have passed after signing up, how many problems you have solved, how many points you have got, and more.</p>
<p>You will also get a nice profile page that looks beautiful as well. 😊 I used to practice solving problems on this website when I was just starting out my CP (Competitive Programming) journey. Not to mention, I got the 3rd position among 1250 students back then at my university. 🎉 </p>
<p>You can also check out my <a target="_blank" href="https://www.beecrowd.com.br/judge/en/profile/436965">beecrowd profile here</a>.</p>
<h2 id="heading-2-hackerrankhttpswwwhackerrankcom">2. <a target="_blank" href="https://www.hackerrank.com/">HackerRank</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/wla1ho0uoz9xuvp5iuwi.png" alt="wla1ho0uoz9xuvp5iuwi" width="600" height="400" loading="lazy"></p>
<p>HackerRank is one of the most popular coding practice websites out there. This is a nice platform for everyone, especially beginners. </p>
<p>The website looks nice and polished, and the users who come here the first time don't struggle when navigating throughout the website, so that is definitely a positive thing here.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/wr0o61pq2ngfwil3ys9d.png" alt="Login page" width="600" height="400" loading="lazy"></p>
<p>HackerRank offers different portals for companies and developers. If you are learning to solve problems, then you will choose the <strong>For Developers</strong> section.</p>
<p>If you want to learn any specific topics or programming languages, then this website is the perfect place to get started in that. You can prepare yourself by topics. You can also take their certification exam and stand out from the crowd. I have already passed their Python (Basic) certification exam.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/k3j4sfp9tovx9ifphf0a.png" alt="Prep" width="600" height="400" loading="lazy"></p>
<p>You can also choose preparation kits from there, and prepare yourself before your interview if you want. Moreover, you can take part in programming contests.</p>
<p>Here, you will also get a nice personal profile page. You can check out my profile from HackerRank <a target="_blank" href="https://www.hackerrank.com/FahimFBA">here</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/sfp2rcqtx9b4fs8wv3m8.png" alt="My HackerRank profile" width="600" height="400" loading="lazy"></p>
<h2 id="heading-3-codeforceshttpscodeforcescom">3. <a target="_blank" href="https://codeforces.com/">Codeforces</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/8wtc4xnpohe9yr6j2eij.png" alt="Codeforces Banner" width="600" height="400" loading="lazy"></p>
<p>Codeforces is one of the most used and well-known coding challenge and practice websites in the world, and it is sponsored by Telegram. Especially if you know about CP (Competitive Programming), then there is a high chance you have heard a lot about this website.</p>
<p>Although the website might look a little bit different to newcomers, you won't need much time to get used to it. You can train yourself by solving problems of different categories, difficulty levels, and so on. </p>
<p>Competitive programmers have ranks based on their successful results in programming contests. If you have heard about the <strong>RED</strong> coder / <strong>PURPLE</strong> coder, etc, then it is definitely from Codeforces.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/17fansawmwowcvhyc639.png" alt="Codeforces Ranking System" width="600" height="400" loading="lazy"></p>
<p>You can get the idea of the ranking system on Codeforces from the image above. For more details, you can check out <a target="_blank" href="https://codeforces.com/blog/entry/68288">this blog entry</a>.</p>
<p>Codeforces arranges contests regularly each week, and they are categorized into div 1, div 2, div 3 and div 4. They also arrange global round and educational round contests. You can get the timeline of the contests directly from <a target="_blank" href="https://codeforces.com/contests">here</a>.</p>
<p>Codeforces also provides a nice user profile on their website. You can check mine <a target="_blank" href="https://codeforces.com/profile/FahimFBA">here</a> as well.</p>
<h2 id="heading-4-leetcodehttpsleetcodecom">4. <a target="_blank" href="https://leetcode.com/">LeetCode</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/jk9l09bi3ku5d0op2x7j.png" alt="Leetcode banner" width="600" height="400" loading="lazy"></p>
<p>If you are familiar with the <strong>FAANG</strong> (Facebook, Apple, Amazon, Netflix, Google) buzzword, then you should definitely know about this website! If you want to practice for your coding interview for the big giant tech companies like FAANG, then they all do <strong>leetcoding</strong>.</p>
<p>You might think that I have made a typo in the above paragraph. No, I didn't. LeetCode has become this popular among people who target FAANG and those who are working on their problem solving skills. Taking part in contests on LeetCode has become common, and people call it leetcoding! </p>
<p>Here, you can solve a lot of problems, and filter the problems by the lists, difficulty levels, status, and tags.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/tphf8k817fbz0vsge9d3.png" alt="LeetCode ProblemSet1" width="600" height="400" loading="lazy"></p>
<p>You can also choose problems regarding Arrays, Strings, Hash Tables, Dynamic Programming, and many other categories.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/0y0ov1fxzvxwiv5bglri.png" alt="LeetCode ProblemSet2" width="600" height="400" loading="lazy"></p>
<p>As I mentioned above, you can also take part in programming contests. The only thing that makes LeetCode different is that it is based on Algorithm practice. Yeah, LeetCode is not like any other coding website, because it focuses on algorithm practice alone. </p>
<p>You do not need to provide the full code for solving a problem here, you just need to crack the solution by providing a valid algorithm using any popular language that can solve the problem.</p>
<p>You also get to see how your code performs among others, how much space and time it takes, and so on. </p>
<p>Most importantly, LeetCode has an amazing discussion group where people talk about their problems, solutions, how to improve their algorithms, how to improve the efficiency of their code, and so on. This is one of the most powerful features of LeetCode.</p>
<p>One sad part about LeetCode is that you will not get every feature for free! Yeah, it's true. You have to pay for it monthly or yearly to unlock all its features. There are a lot of problems you will find locked on the website. You can not unlock them if you do not purchase the premium plan.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/tvww5ogj3eq5qw23ss8m.png" alt="LeetCode pricing" width="600" height="400" loading="lazy"></p>
<p>If you are just starting your algorithm journey on LeetCode, then actually you don't need to worry about their premium plans as the free version will be more than enough for you. </p>
<p>Later, if you want to become more serious, then paying for their premium subscription will be a big deal actually as you'll get a ton more features. This is very much helpful, and includes things like top interview questions, top FAANG questions, video explanations, and more.</p>
<p>You also get a nice profile page on LeetCode. You can check out mine <a target="_blank" href="https://leetcode.com/FBA/">here</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/7rv0yyw75le21sndymru.png" alt="My LeetCode profile" width="600" height="400" loading="lazy"></p>
<h2 id="heading-5-kagglehttpswwwkagglecom">5. <a target="_blank" href="https://www.kaggle.com/">Kaggle</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/28oqgu17gaiczlsv0k2t.png" alt="Kaggle banner" width="600" height="400" loading="lazy"></p>
<p>I was pretty confused before writing this section, as Kaggle is not a typical website for coding practice. This website is basically for Data Science, and it's one of the most popular websites out there for this. </p>
<blockquote>
<p>Kaggle is an online community platform for data scientists and machine learning enthusiasts. </p>
<p>It is a popular crowd-sourced platform to attract, nurture, train, and challenge Data Science and Machine Learning enthusiasts from all around the world to come together and solve numerous Data Science, Predictive Analytics, and Machine Learning problems.</p>
</blockquote>
<p>So if you are interested in Data Science, then you should check this website. Here you can check others' notebooks, submit your notebook, join in the contests, improve datasets, and so on.</p>
<blockquote>
<p>Kaggle allows users to collaborate with other users, find and publish datasets, use GPU integrated notebooks, and compete with other data scientists to solve data science challenges.</p>
</blockquote>
<p>Also, if you are interested in data science, but don't know where to start, then don't worry! Kaggle has got you covered. You can check their <a target="_blank" href="https://www.kaggle.com/learn">learning section</a> where they have many free courses which will teach you a lot of stuff from the beginning.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/b2jgodslps0qrx6txu59.png" alt="kaggle free courses" width="600" height="400" loading="lazy"></p>
<p>✨ BONUS: If you want to learn more then I'd suggest that you complete the <a target="_blank" href="https://www.youtube.com/playlist?list=PLWKjhJtqVAblQe2CCWqV4Zy3LY01Z8aF1">data science playlist</a> from freeCodeCamp's YouTube channel.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/voyp7nxuepo7azxw6syk.png" alt="fcc courses" width="600" height="400" loading="lazy"></p>
<p>Kaggle also provides rankings and a nice user profile. You can check out my profile <a target="_blank" href="https://www.kaggle.com/mdfahimbinamin">here</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/lqcwsixdumi4bxc670s9.png" alt="FBA kaggle" width="600" height="400" loading="lazy"></p>
<h2 id="heading-6-codechefhttpswwwcodechefcom">6. <a target="_blank" href="https://www.codechef.com/">CodeChef</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/8ma2hdum4nd1eo8zmjek.png" alt="CodeChef banner image" width="600" height="400" loading="lazy"></p>
<p>CodeChef is another popular Indian website like <a class="post-section-overview" href="#heading-2-hackerrank-2">HackerRank</a> where you can solve a lot of problems, take part in contests, and so on.</p>
<p>You can filter the problems based on different categories and solve them using any of the most popular programming languages. </p>
<p>They also have a learning section on their website where you can learn how to solve problems in a systematic way. This is super helpful, especially for beginners.</p>
<p>In their learning section, you can choose self-learning, mentored learning, and doubt support. Some of them are free of charge, but in some courses, you have to pay before you can start them.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/qyfzttpt7eq78zdqkdt9.png" alt="mentor price" width="600" height="400" loading="lazy"></p>
<p>This website also provides user ranking including the global ranking and country-wide ranking. They also provide a user profile on their website. You can check out mine <a target="_blank" href="https://www.codechef.com/users/fahimfba">here</a> although I am not active on most of the websites right now. 😅</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/vhq0agb1ijtdbsj3s7gu.png" alt="codechef fba" width="600" height="400" loading="lazy"></p>
<h2 id="heading-7-atcoderhttpsatcoderjp">7. <a target="_blank" href="https://atcoder.jp/">AtCoder</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/rqsw6hjecf5fqpqoxowp.png" alt="AtCoder banner image" width="600" height="400" loading="lazy"></p>
<blockquote>
<p>AtCoder is a programming contest website based in Japan. Makoto Soejima (rng_58) who is one of the former admins and problem writers from Topcoder is a founding member of AtCoder.</p>
</blockquote>
<p>On this website, you can take part in different programming contests. They held regular programming contests on Saturdays and Sundays. Also, you can solve problems from previously held programming contests. </p>
<p>I have seen a lot of people regularly participate in the programming contests and solve problems previously used in the contests regularly by solving problems on AtCoder. I also tried that for a while to check the efficiency, and truth to be told, it was really effective.</p>
<p>Here you can also check the global ranking. Here you will also get your own profile page where you and others can see your global ranking and so on.</p>
<h2 id="heading-8-topcoderhttpswwwtopcodercom">8. <a target="_blank" href="https://www.topcoder.com/">Topcoder</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/89rcnewgpzfxbsb37inz.png" alt="Topcoder banner image" width="600" height="400" loading="lazy"></p>
<blockquote>
<p>Topcoder (formerly TopCoder) is a crowdsourcing company with an open global community of designers, developers, data scientists, and competitive programmers. Topcoder pays community members for their work on the projects and sells community services to corporate, mid-size, and small-business clients.</p>
</blockquote>
<p>Here you can earn, learn, and do a lot more in their MVP program. For earning, you can participate in five different tracks, become a copilot, become a reviewer, and also get a freelance contract gig through <a target="_blank" href="https://www.topcoder.com/community/member-programs/gigs">Topcoder Gig Work</a>.</p>
<p>Personally, I feel this website is a little bit overwhelming for beginners. You can get more details in the YouTube videos I have made for you.</p>
<h2 id="heading-9-coderbytehttpscoderbytecom">9. <a target="_blank" href="https://coderbyte.com/">Coderbyte</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/5vm2yrbrsuhfi6lvsc1c.png" alt="Coderbyte banner image" width="600" height="400" loading="lazy"></p>
<p>Coderbyte has a huge collection of problems that you can solve. They also offer a challenging library, starter courses, interview kits, career resources and so on. </p>
<p>To get all the features, you need to buy a subscription plan from them. I personally liked their interview kit a lot.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/qnrvl8ja8rqwb6zun4e0.png" alt="Interview kits" width="600" height="400" loading="lazy"></p>
<p>Here you will also get a personal profile page.</p>
<h2 id="heading-10-project-eulerhttpsprojecteulernet">10. <a target="_blank" href="https://projecteuler.net/">Project Euler</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/howuvtc16ehu8lqbw520.png" alt="Project Euler banner image" width="600" height="400" loading="lazy"></p>
<blockquote>
<p>Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve.</p>
</blockquote>
<p>Project Euler is a great website for solving mathematical challenging problems. But solving a problem on this website requires more than just simple mathematical knowledge. </p>
<p>If you want to solve mathematical problems in a more analytical way, then this website will come in handy.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/94mguaui3nj6s7pcw942.png" alt="Problem set" width="600" height="400" loading="lazy"></p>
<h2 id="heading-11-codewarshttpswwwcodewarscom">11. <a target="_blank" href="https://www.codewars.com/">Codewars</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/ygf3uzjmuiycbu34fv5l.png" alt="Codewars banner image" width="600" height="400" loading="lazy"></p>
<p>Codewars is a coding challenge website for people of all programming levels. It claims to have a community of over 3 million developers. </p>
<p>One of the biggest benefits of this website is that it is highly focused on algorithms like LeetCode. Moreover, if your goal is to get very good at writing clean and efficient programs, then this website can be a great asset to you.</p>
<p>In Codewars, you will see <strong>Kata</strong> and <strong>Kyu</strong> a lot. </p>
<blockquote>
<p>Kyu (or Kyū) indicates the number of degrees away from master level (Dan). This is why they count downward. Once you reach master level, we count upward. Black belts in martial arts are Dan level.</p>
<p>On Codewars, kata are code challenges focused on improving skill and technique. Some train programming fundamentals, while others focus on complex problem solving. Others are puzzles meant to test your creative problem solving, while others are based on real world coding scenarios.</p>
</blockquote>
<p>If you want to know more about how the ranking system works on Codewars, then simply check their docs <a target="_blank" href="https://docs.codewars.com/gamification/ranks/">here</a>.</p>
<p>On Codewars you will also get a nice profile page like <a target="_blank" href="https://www.codewars.com/users/FBA">mine</a>. Keep in mind that I haven't solved that much on this website; therefore my profile page would seem empty. 😅</p>
<p>Additionally, I find their <a target="_blank" href="https://www.codewars.com/users/leaderboard">leaderboard page</a> quite amusing.</p>
<h2 id="heading-12-spojhttpswwwspojcom">12. <a target="_blank" href="https://www.spoj.com/">SPOJ</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/4awf6fpql913onx0111u.png" alt="SPOJ banner image" width="600" height="400" loading="lazy"></p>
<p>SPOJ is a website that contains huge problems for solving. It claims to have 315,000 registered users and over 20,000 problems.</p>
<p>According to GFG,</p>
<blockquote>
<p>You can start solving problems with maximum submission and follow or check the submission of good coders here. Once you solved around 50-70 problems and build some confidence, you can participate in different contests.</p>
</blockquote>
<p>Their problem set is also quite amusing.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/tm5g46f3qie8kr9aizwk.png" alt="SPOJ problem set" width="600" height="400" loading="lazy"></p>
<p>You will also get a nice user profile page here which you can use to showcase your problem solve skills.</p>
<h2 id="heading-13-codingamehttpswwwcodingamecom">13. <a target="_blank" href="https://www.codingame.com/">CodinGame</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/ybatrql4wgi7l45v0j57.png" alt="CodinGame banner image" width="600" height="400" loading="lazy"></p>
<p>In CodinGame, you can improve your coding skills with fun exercises in more than 25 programming languages. </p>
<p>It is a good website for intermediate and advanced software engineers to have fun while continuing to keep their skills sharp. Also, the challenges are gamified and the multiplayer access means that users can challenge friends and coworkers.</p>
<h2 id="heading-14-geeksforgeekshttpswwwgeeksforgeeksorg-popularly-known-as-gfg">14. <a target="_blank" href="https://www.geeksforgeeks.org/">GeeksforGeeks</a> (Popularly known as GFG)</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/wo3e2tzi15abavql5c9w.png" alt="GeeksforGeeks banner Image" width="600" height="400" loading="lazy"></p>
<p>You might wonder why I am including GFG in this article as it only provides algorithms, tutorials, and so on. </p>
<p>Well, that's not all they offer. Yes, GFG is pretty popular for its tutorials, algorithms, and so on, but they also provide a nice problem-solving platform <a target="_blank" href="https://practice.geeksforgeeks.org/">here</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/m8g6z50xvemt64t4pwvw.png" alt="practice GFG" width="600" height="400" loading="lazy"></p>
<p>You can also filter the problems as you see fit for yourself.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/iyajkn39wvqiqzpk52ba.png" alt="GFG filter" width="600" height="400" loading="lazy"></p>
<p>You will also get your profile page where you can show your progress in problem solving on the GFG website.</p>
<h2 id="heading-15-tophhttpstophco">15. <a target="_blank" href="https://toph.co/">Toph</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/5x4jgisa0oeaso2h2lu4.png" alt="Toph banner image" width="600" height="400" loading="lazy"></p>
<p>Competitive programmers participate in programming contests and solve many problems on this website. This website is kind of special to the Bangladeshi people as the Bangladeshi universities arrange many programming contests through it.</p>
<p>You can solve problems in different categories on this website, and they also offer you a nice profile page. They also provide rankings based on your performance in the programming contests.</p>
<p>If you are a complete beginner in problem solving, then this website can help you a lot in starting your problem solving journey.</p>
<h2 id="heading-16-lightojhttpslightojcom">16. <a target="_blank" href="https://lightoj.com/">LightOJ</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/anla94vgv2zsjw4a4woy.png" alt="LightOJ banner image" width="600" height="400" loading="lazy"></p>
<p>In LightOJ, you can solve a lot of categorized problems. It is highly based on solving algorithmic problems. Their problems are categorized as below:</p>
<ul>
<li>LightOJ Volumes</li>
<li>Warm-Up</li>
<li>Advanced Search Techniques</li>
<li>Database</li>
<li>Data Structures</li>
<li>Divide And Conquer</li>
<li>Dynamic Programming</li>
<li>Fast Fourier Transform</li>
<li>Flow/Matching</li>
<li>Game Theory</li>
<li>Geometry</li>
<li>Graph Theory</li>
<li>Greedy</li>
<li>Math</li>
<li>Matrix</li>
<li>Parsing/Grammar</li>
<li>Recursion/Branch and Bound</li>
<li>String</li>
</ul>
<p>They also provide you with a nice profile page where you can see your activities. It might seem odd, but sometimes I find this website better than LeetCode in some cases. Moreover, everything you do on this website is completely free of cost!</p>
<h2 id="heading-17-exercismhttpsexercismorg">17. <a target="_blank" href="https://exercism.org/">Exercism</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/mik6ovwsb4vsej25gtfg.png" alt="Exercism banner image" width="600" height="400" loading="lazy"></p>
<p>You can develop your programming fluency in 57 different programming languages with their unique blend of learning, practice and mentoring. </p>
<p>Exercism is completely free of cost, and it's built by people like us. You can also contribute or donate to them to support their amazing service for free.</p>
<p>They also provide a very nice user profile page which also shows everything you have done on their website, starting from publishing to maintaining.</p>
<p>On their <a target="_blank" href="https://exercism.org/tracks">tracks</a> page, you will get a list of 57 different programming languages where you can start your practice. </p>
<p>Solving problems on their website seems super fun to me. I really liked the way they manage their website.</p>
<h2 id="heading-18-online-judgehttpsonlinejudgeorg-commonly-known-as-uva">18. <a target="_blank" href="https://onlinejudge.org/">Online Judge</a> (Commonly known as UVa)</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/fat4pnmszr5xo5yqus73.png" alt="Online Judge banner image" width="600" height="400" loading="lazy"></p>
<p>This is one of the oldest websites out there for solving programming-related problems. I still find it to be a very hard website for beginners. The UI and navigation of the website are also very old. </p>
<p>All of the questions come with a PDF here. You need to download the PDF file of the problem if you want to solve problems as they do not offer a direct preview of the questions.</p>
<p>They have a lot of problemsets on their <a target="_blank" href="https://onlinejudge.org/index.php?option=com_onlinejudge&amp;Itemid=8">website</a>. I still find a lot of users using this website nowadays. Therefore, I mentioned it here.</p>
<h2 id="heading-19-hackerearthhttpswwwhackerearthcom">19. <a target="_blank" href="https://www.hackerearth.com/">HackerEarth</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/xm0bhrc4ephex78tddj5.png" alt="HackerEarth banner image" width="600" height="400" loading="lazy"></p>
<blockquote>
<p>HackerEarth is an Indian software company headquartered in San Francisco, US, that provides enterprise software that helps organisations with their technical hiring needs. HackerEarth is used by organizations for technical skill assessment and remote video interviewing.</p>
</blockquote>
<p>You can practice your problem solving skills from their <a target="_blank" href="https://www.hackerearth.com/practice/">practice</a> page. Also, you can participate in programming challenges and hackathons from their <a target="_blank" href="https://www.hackerearth.com/challenges/">challenges</a> page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/fj62qgttmbqgatvcbdzt.png" alt="HackerEarth challenges page" width="600" height="400" loading="lazy"></p>
<p>Their <a target="_blank" href="https://www.hackerearth.com/practice/interviews/">interview prep</a> section is quite amazing. You can take part in the mock assessments for the Adobe Coding Test, Facebook Coding Test, and Amazon Coding Test.</p>
<p>They also provide a nice user profile for everyone.</p>
<h2 id="heading-20-code-jam-googles-coding-competitionshttpscodingcompetitionswithgooglecomcodejam">20. <a target="_blank" href="https://codingcompetitions.withgoogle.com/codejam">Code Jam - Google's Coding Competitions</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/m8l89xfpsqt1yak0d94c.png" alt="Code Jam banner image" width="600" height="400" loading="lazy"></p>
<blockquote>
<p>Google Code Jam is an international programming competition hosted and administered by Google. The competition began in 2003. The competition consists of a set of algorithmic problems which must be solved in a fixed amount of time.</p>
</blockquote>
<p>If you are interested in taking part in the Code Jam contests, then their <a target="_blank" href="https://codingcompetitions.withgoogle.com/codejam/archive">archive section</a> is full of amazing resources for you where you can get the earlier questions and practice them. </p>
<p>They also offer a lot of prize money in their contests. An example can be:</p>
<blockquote>
<p>Out of thousands of participants, only the top 25 will head to the World Finals to compete for the title of World Champion and cash prizes of up to $15,000. And there will be plenty of other prizes to go around — the top 1,000 competitors will win an exclusive Code Jam 2022 t-shirt.</p>
</blockquote>
<h2 id="heading-21-icpchttpsicpcglobal-international-collegiate-programming-contest">21. <a target="_blank" href="https://icpc.global/">ICPC</a> - International Collegiate Programming Contest</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/m8w6ezori7cpgiytzxmi.png" alt="ICPC banner image" width="600" height="400" loading="lazy"></p>
<p>ICPC is one of the most prestigious programming contests in the world.</p>
<blockquote>
<p>The International Collegiate Programming Contest, known as the ICPC, is an annual multi-tiered competitive programming competition among the universities of the world.</p>
</blockquote>
<p>Who is eligible for ICPC?</p>
<blockquote>
<p>ACM/ICPC is a team-based competition with certain requirements to the participants: only post-secondary students and first-year post-graduate students no older than 24 are eligible; each team consists of three members. One can participate in the finals no more than twice and in the regionals no more than five times.</p>
</blockquote>
<h1 id="heading-personal-opinion">Personal Opinion</h1>
<p>If you are a complete beginner, then start with <a class="post-section-overview" href="#1beecrowdformerlyuri">beecrowd</a>. If you want to start problem solving along with learning a specific programming language, then start with <a class="post-section-overview" href="#heading-2-hackerrank-2">HackerRank</a>. </p>
<p>After solving almost 50+ problems on beecrowd or HackerRank, start solving problems on <a class="post-section-overview" href="#heading-3-codeforces-1">Codeforces</a>. The first time, you won't be able to do that well in the programming contests on Codeforces, and that is completely okay – it is natural. You just need to try regularly. The questions might seem pretty hard to you, but it'll become easier day by day after solving problems continuously. </p>
<p>You can participate in <a class="post-section-overview" href="#7atcoder">AtCoder</a> the day you start solving problems on Codeforces. You can also try <a class="post-section-overview" href="#heading-6-codechef-1">CodeChef</a>, but I find Codeforces is enough in this case. </p>
<p>This will prepare you for the <a class="post-section-overview" href="#21icpcinternationalcollegiateprogrammingcontest">ICPC</a> and <a class="post-section-overview" href="#heading-20-code-jam-googles-coding-competitions-1">Code Jam</a>. Don't forget to solve the earlier questions on Code Jam.</p>
<p>If you want to gain expertise in Data Science, then simply go for <a class="post-section-overview" href="#heading-5-kaggle-1">Kaggle</a>.</p>
<p>If you want to gain expertise in Algorithms, then <a class="post-section-overview" href="#4leetcode">LeetCode</a>, and <a class="post-section-overview" href="#16lightoj">LightOJ</a> are your only places. <a class="post-section-overview" href="#heading-14-geeksforgeeks-popularly-known-as-gfg-1">GeeksforGeeoks</a> will also help you in this aspect. </p>
<p>For LeetCode, get some help from <a target="_blank" href="https://twitter.com/nicholaswwhite">Nick White</a>. His <a target="_blank" href="https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-">LeetCode Solution</a> playlist has 189 videos as of today, and you will learn a lot from him, trust me! </p>
<p>Another good resource is <a target="_blank" href="https://neetcode.io/">Neetcode</a> where you can get curated problems and their solutions from LeetCode. The official <a target="_blank" href="https://www.youtube.com/c/NeetCode/featured">YouTube channel of Neetcode</a> is also a great channel.</p>
<h1 id="heading-additional-websites">Additional Websites</h1>
<p>You might find the websites below useful too!</p>
<h2 id="heading-stopstalkhttpswwwstopstalkcom">⭐ <a target="_blank" href="https://www.stopstalk.com/">StopStalk</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/6ixwem6zdmrn6bw29d32.png" alt="StopStalk banner image" width="600" height="400" loading="lazy"></p>
<p>This website retrieves your friends' recent submissions from various competitive websites (Such as Codeforces, SPOJ, HackerRank, Timus, and so on) and shows all of them in one place. You can check my StopStalk profile from <a target="_blank" href="https://www.stopstalk.com/user/profile/FBA">here</a>.</p>
<h2 id="heading-codersrankhttpscodersrankio">⭐ <a target="_blank" href="https://codersrank.io/">CodersRank</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/83l29mbplkwx2pf535bi.png" alt="CodersRank banner image" width="600" height="400" loading="lazy"></p>
<p>This is a platform made to help developers in job-seeking and professional growth. Here, your CodersRank profile serves as a proven track record of your coding knowledge. </p>
<p>You have to connect your private and public repositories here from GitHub to generate your true CodersRank profile. You can also check my CodersRank profile from <a target="_blank" href="https://profile.codersrank.io/user/fahimfba/">here</a>.</p>
<h1 id="heading-conclusion">Conclusion</h1>
<p>Thanks for reading the entire article. If it helps you then you can also check out other articles of mine at <a target="_blank" href="https://www.freecodecamp.org/news/author/fahimbinamin/">freeCodeCamp</a>.</p>
<p>If you want to get in touch with me, then you can do so using <a target="_blank" href="https://twitter.com/Fahim_FBA">Twitter</a>, <a target="_blank" href="https://www.linkedin.com/in/fahimfba/">LinkedIn</a>, and <a target="_blank" href="https://github.com/FahimFBA">GitHub</a>. </p>
<p>You can also <a target="_blank" href="https://www.youtube.com/@FahimAmin?sub_confirmation=1">SUBSCRIBE to my YouTube channel</a> (Code With FahimFBA) if you want to learn various kinds of programming languages with a lot of practical examples regularly.</p>
<p>If you want to check out my highlights, then you can do so at my <a target="_blank" href="https://www.polywork.com/fahimbinamin">Polywork timeline</a>.</p>
<p>You can also <a target="_blank" href="https://fahimbinamin.com/">visit my website</a> to learn more about me and what I'm working on.</p>
<p>Thanks a bunch!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Prepare for Technical Interviews – Problem-Solving Tips + Mindset Tricks to Get You Ready ]]>
                </title>
                <description>
                    <![CDATA[ Hi everyone! In this article we're going to talk a bit about technical interviews. I'll share a few tips that, based on my experience, might help you go through these interviews successfully. I originally wrote this article more than a year ago, befo... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/problem-solving-and-technical-interview-prep/</link>
                <guid isPermaLink="false">66d45f1ad1ffc3d3eb89ddf7</guid>
                
                    <category>
                        <![CDATA[ Interview tips ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interviewing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Mindset ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Problem Solving ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ German Cocca ]]>
                </dc:creator>
                <pubDate>Mon, 06 Jun 2022 22:50:19 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/06/pexels-christina-morillo-1181345.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Hi everyone! In this article we're going to talk a bit about technical interviews. I'll share a few tips that, based on my experience, might help you go through these interviews successfully.</p>
<p>I originally wrote this article more than a year ago, before getting my first job offer as a developer.</p>
<p>I'm sharing this with you now because I recently went through another interview process. And I found that the same concepts and thoughts that helped me get my first job offer allowed me to pass all the interviews successfully again. 🙂</p>
<h2 id="heading-my-background">My Background</h2>
<p>I took up coding more or less a year ago. I started learning out of pure curiosity, and as I learned more about it and was able to build personal projects, I just fell in love with it.</p>
<p>I got so obsessed and passionate about it that I dedicated all the free time I had to coding, reading about code, watching videos about code, and just learning as much as I possible could, because for me it was fun and interesting!</p>
<p>Time passed and at a point I started imagining myself working as a developer. First it was like a blurry thought, and then I started thinking about it seriously and learning about what I needed to do to get to that point.</p>
<p>My learning journey and the approach I took towards becoming a dev will probably be the subject of another article, but my point is that I made it! I recently got an offer for my first job as a full time developer and I couldn’t be happier about it.</p>
<p>And there were many things and learning experiences I had to go through to get to this point, but I’d say the toughest one – and the one I was less prepared for – was technical interviews.</p>
<h3 id="heading-what-are-technical-interviews-like">What are Technical Interviews Like?</h3>
<p>I come from a social sciences background, and most of the time, within that field, there’s nothing too “technical” to talk about during interviews. Employers normally hire you based on your experience and behavior during interviews.</p>
<p>But in the coding field it’s really different. Experience is valuable, of course, but employers also value projects you can show to them, theoretical knowledge about different programming topics, and, most of all, the problem solving skills you can show off during technical interviews.</p>
<p>In almost all selection processes I went through, there was a technical interview in which an interviewer tossed me a problem and I had to solve it live with them looking at me the whole time.</p>
<p>This is a standard practice for coding jobs, but I wasn’t prepared at all. I failed miserably more than once, and these experiences were some of the most embarrassing and frustrating moments in my professional life so far.</p>
<p>At times I felt stupid for even thinking I’d be capable of switching careers at almost 30. I thought I just wasn’t smart enough. But luckily I kept going, researched about technical interviews, learned, practiced, and kept failing until I didn’t fail anymore.</p>
<p>Technical interviews are tough and can be really stressful if you’re not prepared correctly. Also, even though I successfully passed a selection process, I know I still have a lot to learn about this and that I’ll need to perfect this skill to further grow my career in the future. So here are my main tips for nailing your technical interviews.</p>
<h2 id="heading-1-prepare-for-the-interview"><strong>1. Prepare for the Interview</strong></h2>
<p>This is important for all kind of interviews, but for technical interviews I think it’s crucial. Your chances of passing these evaluations are way lower if you don’t prepare correctly for them.</p>
<p>Here are some ideas that allowed me to better prepare for these interviews.</p>
<h3 id="heading-do-your-research">Do Your Research</h3>
<p>Find out about technical interviews in general, how are they normally organized, what interviewers ask and what do they intend to measure, what kind of problems do companies toss at you, and what are the best approaches towards interviews.</p>
<p>The internet is an infinite resource of knowledge, so don’t waste it! Google about everything you can and take advantage of the experience of the thousands of people who have gone through similar situations and share their experiences.</p>
<h3 id="heading-practice-solving-problems">Practice Solving Problems</h3>
<p>Problem solving is a skill just like any other. There is specific knowledge you’ll need to get good at it, but most of it is practice and getting your brain to be comfortable in that situation.</p>
<p>There are tons of websites that contain the types of problems you’ll see during interviews. <a target="_blank" href="https://www.freecodecamp.org/learn/coding-interview-prep/">freeCodeCamp has an amazing course designed for this.</a> Some other cool resources are <a target="_blank" href="https://www.hackerrank.com/">hackerrank.com</a>, <a target="_blank" href="https://leetcode.com/">leetcode.com</a>, <a target="_blank" href="https://www.codewars.com/">codewars.com</a>, <a target="_blank" href="https://exercism.io/">exercism.io</a>, <a target="_blank" href="https://app.codesignal.com/">app.codesignal.com</a>, and <a target="_blank" href="https://www.algoexpert.io/">algoexpert.io</a>.</p>
<p>Solve as many problems as you can from any of these sites and you’ll start getting good at them.</p>
<p>And when you practice, at first it’s okay to just worry about solving the problem. But once you get comfortable enough, a great idea is to try to make your practice as similar as possible to an actual interview. And by this I mean setting a timer, explaining your solution out loud, analyzing your final algorithm and refactoring…just basically following all the steps you’d normally follow in an actual interview.</p>
<p>If your practice is similar to the actual situation, once you get to that situation you’ll feel more confident because in some way you’ve already been there.</p>
<h3 id="heading-build-a-theoretical-foundation">Build a Theoretical Foundation</h3>
<p>Besides actually practicing, learning theoretical concepts about algorithms and data structures is a great idea to get better at solving these problems.</p>
<p>Think about it as adding tools to your toolbox. The more tools and concepts you have in your mind, the more problems will sound familiar or ring a bell in your brain, and from that you'll be more able to arrive at a solution.</p>
<p>There are many resources on the internet, some free and some paid. A course about data structures and algorithms is pretty much a must for any programmer, so I encourage you to find a good one. Here are a couple you can start with:</p>
<ul>
<li><p><a target="_blank" href="https://www.freecodecamp.org/news/learn-all-about-data-structures-used-in-computer-science/">Data Structures Explained</a></p>
</li>
<li><p><a target="_blank" href="https://www.freecodecamp.org/news/learn-data-structures-from-a-google-engineer/">Learn Data Structures from a Google Engineer</a></p>
</li>
<li><p><a target="_blank" href="https://www.freecodecamp.org/news/learn-algorithms-and-data-structures-in-python/">Learn Algorithms and Data Structures in Python</a></p>
</li>
<li><p><a target="_blank" href="https://www.freecodecamp.org/news/algorithms-and-data-structures-free-treehouse-course/">Learn about Algorithms and Data Structures</a></p>
</li>
</ul>
<p>Of course also theoretical knowledge about your programming language of choice and any other tools in your stack (frameworks, libraries, databases, and so on) is also very important.</p>
<h3 id="heading-imitate-others">Imitate Others</h3>
<p>It’s ok to run into problems you don’t know how to solve or to come up with solutions that are not the best suited ones.</p>
<p>In these type of situations, or always actually, it’s a good idea to take a look at how other people solved that same problem and learn from them. What approach did they take? What ideas did they have? Did they get stuck? How did they move towards the solution?</p>
<p>Analyze their solution and their behavior, identify what works for them, think if that could work for you and if the answer is yes, copy them! It’s crucial that you deeply understand why their solution works and how their logic works. You want to internalize the logical approach, not the code, as that’s just an after effect.</p>
<p>Looking at problem solutions and videos of mock interviews is a good idea to get this kind of data.</p>
<h3 id="heading-understand-what-kind-of-interview-youll-have">Understand What Kind of Interview You'll Have</h3>
<p>I mentioned the most classic type of technical interview is the one based on algorithms and data structures, in which the interviewer will give you a problem to solve through an algorithm.</p>
<p>But I found that there're also interviews that are mostly theoretical, in the sense that the interviewer will ask questions to measure your knowledge about a given programming language, framework, library, design and architecture patterns, and so on.</p>
<p>Another kind of interview is where the interviewer shows you an actual project or asks you to build one. During the interview you discuss the decisions you made to build it or implement new features/modifications on it.</p>
<p>Each kind of interview is different and might require different preparation, so it's always a good idea to ask the company what will the interview be based on, and prepare accordingly.</p>
<h2 id="heading-2-breathe-and-think-things-through"><strong>2. Breathe and Think Things Through</strong></h2>
<p>Once you've seen and gone through a ton of examples and start feeling somewhat confident around coding problems, it’s time to get to the deeper stuff.</p>
<p>Here are some tips that helped me go through the interviews successfully.</p>
<h3 id="heading-dont-code">Don’t code</h3>
<p>This sounds crazy right? The best approach to solving most coding problems is actually not coding, or at least <strong>not right away</strong>.</p>
<p>No matter how anxious or secure you are about the idea you have in mind, I find it better to always take a step back and make sure you understand things deeply before going to the details and breaking out the code.</p>
<p>So how do you do that?</p>
<h3 id="heading-understand-the-problem">Understand the Problem</h3>
<p>The first step to solving a problem is actually understanding it. And to understand it, the best idea is to “make it yours”, and internalize it.</p>
<p>A good idea is to read the exercise twice, repeat it again in your own words, and go through multiple examples (simple ones, complex ones, examples with null or invalid inputs…).</p>
<p>No matter how silly, complex or simple the problem may seem, this helps you make sure you understand it properly and gives your brain data and time to come up with solution ideas.</p>
<h3 id="heading-make-sure-you-understood-it">Make Sure You Understood It</h3>
<p>Repetitive? Yeah, but effective. Check and make sure you understood what you need to do and how your function will work.</p>
<p>Ask yourself, what are the inputs going to be? What will be the output? Check for edge cases. Will you always receive the same input or could you expect different formats? Do you have to be prepared for strange cases or does the exercise restrict the kind of situation you’ll encounter?</p>
<p>It’s better to clear out all this things before even starting to think about a solution.</p>
<h3 id="heading-explore-your-toolbox">Explore Your Toolbox</h3>
<p>I said that learning theoretical concepts and practicing is like adding tools to your problem solving toolbox. When you see a new problem, it’s a good idea to explore that toolbox and see if any of the concepts or solutions you’ve used in the past could work here.</p>
<p>Could it help to use some sort of counter? What about implementing some sort of data structure to help you out? Could you use pointers or a sliding window? Would it be a good idea to take a divide and conquer approach? What about recursion? Could sorting the input help for anything?</p>
<p>You don’t necessarily have to know the exact path to take, but comparing the problem to previous patterns you’ve seen can help spark ideas in your mind.</p>
<p>Of course the more you practice solving problems and learning about possible solutions, the more patterns you’ll have to remember and compare.</p>
<h3 id="heading-break-down-the-problem">Break Down the Problem</h3>
<p>Once you’ve analyzed the problem deeply, hopefully you’ll have at least an idea of how to tackle it, or where to start.</p>
<p>A great idea here is to try to think about the different steps you need to take to get to your solution and write down those steps to analyze them, check if your logic is correct, and later use them as little memory helpers and “instructions” for you to translate into code.</p>
<p>Simplifying your solution through steps and specially writing them down will often help you identify flaws in your logic or cases you didn’t think about before.</p>
<p>This is great because you’re at a stage when it’s really easy to modify your approach or lean towards a different idea. You didn’t waste time coding or getting yourself into a maze of logic that doesn’t actually work.</p>
<h3 id="heading-simplify-the-problem">Simplify the Problem</h3>
<p>Specially when facing complex and difficult problems, a good idea is to first ignore the main difficulty of the problem and try to solve a similar, simpler version of it.</p>
<p>When you nail that solution, bring the main difficulty back and see if you can translate your solution to it.</p>
<h3 id="heading-visualize-the-problem">Visualize the Problem</h3>
<p>Complex problems are sometimes difficult to get your head around. Having a whiteboard, either a physical or a digital one, is always a great idea.</p>
<p>Visually stimulating your brain by drawing up the problem or an idea can be a good approach to buy yourself some time and see if that perspective shows you some data you didn’t notice.</p>
<h3 id="heading-start-to-write-your-code">Start to Write Your Code</h3>
<p>So once you have a clear idea of the steps you’ll need to cover to get to the solution, it’s time for translating that into code. This should be the simple part if you’re comfortable enough with the language.</p>
<p>A thought to keep in mind here is that if you can’t remember something very specific, don’t let that hold you down – pseudo code it and carry on with the rest of the solution.</p>
<p>Talk to your interviewer and see if they can help you with that part, or ask if they'll let you Google it. In most cases this will be ok and the important thing will be to show that you nailed the correct logic to solve the problem.</p>
<h3 id="heading-test-your-code">Test Your Code</h3>
<p>Test your solution at every step and at the end. There’s nothing more annoying than writing a ton of code and later seeing it fail without knowing the exact cause.</p>
<p>Test your code and your logic at every step of the solution, as this will allow you to catch bugs earlier and will save you from wasting time and effort.</p>
<p>Of course testing at the end is important to check if your solution actually works! So throw your function different inputs and edge cases to see if it behaves as expected.</p>
<h3 id="heading-analyze-the-solution">Analyze the Solution</h3>
<p>Once you've gotten to the solution, you’re not done yet. It’s a great idea to show your interviewer you can analyze what you did too.</p>
<p>Ask yourself and tell them, what’s the big O complexity of your solution? Can you think of a way to improve the performance or the memory usage of your algorithm? Is there a way to make your function easier to read and understand?</p>
<p>Even if you can’t think about how to code it exactly, it’s great to show them that you’re the kind of developer who is always going to look for improvements and not settle for something that just works.</p>
<h3 id="heading-improve-your-solution">Improve Your Solution</h3>
<p>Of course, if you can find ways to optimize your solution and know how to code it, do it!</p>
<p>And about this, in a coding interview situation you’ll rarely come up with the perfect solution for a problem. You’re under pressure and on the clock, so it’s perfectly ok to come up with a so-so solution and then refactor it until it reaches an acceptable level.</p>
<p>It’s often better to show you can solve the problem even if not in the perfect way than spend all your time just thinking about the perfect solution.</p>
<h3 id="heading-talk-to-your-interviewer">Talk to Your Interviewer</h3>
<p>Talk with your interviewer during the whole process. What your interviewer is trying to measure is your problem solving ability and your level of comfort with your programming language of choice.</p>
<p>That is a hard thing to measure if you don’t open your mouth and just code away.</p>
<p>It’s crucial that you talk to your interviewer and let them know what you’re thinking, what is your thought process, what ideas are you having, how are you understanding the problem, what logic are you going to follow with your solution and why are you making decisions.</p>
<p>Talk to them, ask questions, explain yourself, and if you get stuck or don’t know how to go on, explain to them exactly the thing that is giving you trouble. In most cases you’ll get some help and more importantly you’ll show them you’re actually trying to work towards a solution.</p>
<h3 id="heading-listen-to-your-interviewer">Listen to Your Interviewer</h3>
<p>When you’re being given the problem to solve – and specially if you get tips or feedback from your interviewers – pay attention! No matter if you think you already have the best idea or if there’s something that’s driving you crazy and need to solve right now, just drop it and listen to what you’re being told.</p>
<p>If you don’t listen to feedback, you’re giving a very negative signal to your possible future employers. Think about it: would you like to work with someone that doesn’t listen to feedback? Besides, feedback will certainly help you solve your problem, so listen!</p>
<h2 id="heading-3-control-your-emotions"><strong>3. Control Your Emotions</strong></h2>
<p>This for me was the toughest part of the interviewing process, and it's something I didn’t really find a lot of information about when researching technical interviews.</p>
<p>Dealing with the anxiety and frustration these situations can provoke is hard, but also a crucial step to improve your performance.</p>
<p>So here are some things that have helped me in this regard.</p>
<h3 id="heading-prepare-your-body-and-mind">Prepare Your Body and Mind</h3>
<p>Interviews are stressful situations in which you have to deal with expectations and perform to reach those expectations while being judged by other people.</p>
<p>I’ve always felt uncomfortable in these type of situations so I’m quite familiar with the type of anxiety you might feel.</p>
<p>Something that helps me is try to think about it like the moment of a game for a sports player or when actors get out on stage. You normally see these people trying to warm up and focus before they start to perform, right? There’s a reason for that – and it’s that this preparation actually enhances performance and gets you ready to give your best.</p>
<p>It may sound stupid at first, but stretching, warming up your voice, meditating, imagining the moment in your mind and picturing yourself being successful in the moment are all things that will push you towards doing nicely in this important moment.</p>
<h3 id="heading-be-confident">Be Confident</h3>
<p>Easier said than done, right? Absolutely. Confidence for most people isn’t something you can just turn off and on, but something you build along the way and comes with lots of practice, studying, and preparation behind it.</p>
<p>You'll build confidence with the work you do prior to the interview, but once you’re in the moment it’s important to remember that you want to show the interviewers you have confidence in yourself as a coder and that you trust yourself to solve any problem you face.</p>
<p>This doesn’t mean you have to know absolutely everything and be able to solve any complex problem absolutely by yourself. Rather, it means that you won’t panic when you face something you don’t know how to solve at first, and that you have the ability to slowly analyze the problem, break it down, and work towards a solution.</p>
<h3 id="heading-slow-down">Slow Down</h3>
<p>Stress, anxiety, and the wish to show that you can solve the problem can make you rush more than you need to. And rushing can lead to missing key information, flaws in your logic, bugs in your code, and errors in general.</p>
<p>So take your time, actually, take more time than you actually need. Analyze the heck out of the problem, talk slowly, code slowly, think slowly, and remember to breath. Things are easier to deal with when you take your time and <em>slow-mo</em> the process.</p>
<h3 id="heading-dont-take-it-personally-or-do">Don’t Take it Personally – or Do...</h3>
<p>You’ll mess up at some point, that’s a certainty. Especially in your first interviews, you’ll probably fail and feel miserable about it. It’s just the way it is, and it's a step that is needed for you to understand where you need to improve.</p>
<p>A key issue here is how you deal with that frustration. I could tell you to think about it as a process, to not get mad when you fail, to be patient… But if you’re an anxious and self demanding person as I am, you’ll be very frustrated when you fail, and there’s nothing you can do to avoid it.</p>
<p>But how do you deal with that? Do you get depressed and quit coding forever? Do you get scared of interviews and never apply for a job ever again?</p>
<p>Personally, I get very mad at myself when I fail at something or find out I don’t know something I "was supposed" to know. I get mad at myself for not preparing correctly or for missing things, and even though that anger feels bad at first, later on is something that pushes me forward.</p>
<p>I feel so bad about it that I make absolutely sure I won't fail at that again, and I practice as hard as I can to avoid being in that situation again.</p>
<p>Different approaches work for different people, but the thing is to handle your emotions in a way that pushes you forward and not backwards.</p>
<h3 id="heading-learn-from-your-mistakes">Learn from Your Mistakes</h3>
<p>As it’s a certainty you’ll mess up, the smart thing to do is to learn from the errors you made and try to not make them again.</p>
<p>Always try to take note of the problems you were presented and your solutions, analyze your mistakes, analyze other possible approaches you could have taken, what optimizations you didn’t see, and what key concepts you didn’t remember at that moment.</p>
<p>Also always ask your interviewers for feedback about what you could have done better. This information is gold if you get the best of it.</p>
<h3 id="heading-have-fun">Have Fun</h3>
<p>If you love coding, you probably have lots of fun doing it. Never forget that, no matter the context.</p>
<p>In interviews, try to approach each problem with curiosity rather than fear of failing. Try to show your interviewers you’re enthusiastic about problems, because you’re probably going to work with similar stuff on a daily basis.</p>
<p>Plus if you’re having fun and thinking in a positive way, you’ll be more relaxed and your mind will be clearer, which of course helps your problem solving skills.</p>
<h3 id="heading-keep-going">Keep Going</h3>
<p>If you pass or if you fail, at the end it doesn’t matter, in the sense that your approach and behavior should stay the same.</p>
<p>Just as code can always be improved, so can you as a programmer. You should always keep learning, keep getting better, keep practicing, keep facing stuff you didn’t know anything about and eventually overcoming it.</p>
<p>So don’t get too high if you pass or too low if you miss – just keep coding and keep learning.</p>
<h1 id="heading-roundup"><strong>Roundup</strong></h1>
<p>As always, I hope you enjoyed the article and learned something new. If you want, you can also follow me on <a target="_blank" href="https://www.linkedin.com/in/germancocca/">LinkedIn</a> or <a target="_blank" href="https://twitter.com/CoccaGerman">Twitter</a>.</p>
<p>See you later!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/see-you-soon-see-you.gif" alt="Image" width="600" height="400" loading="lazy"></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ React Interview Questions – Interview Prep with Answers and Examples ]]>
                </title>
                <description>
                    <![CDATA[ React is a JavaScript library for creating user interfaces. It's used in over 30,000 live websites and has over 70,000 GitHub stars. According to the 2021 Stack Overflow developer survey, React has surpassed jQuery as the most popular web framework, ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/react-interview-questions-and-answers/</link>
                <guid isPermaLink="false">66d45feca326133d12440a19</guid>
                
                    <category>
                        <![CDATA[ interview questions ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interviewing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ React ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Joel Olawanle ]]>
                </dc:creator>
                <pubDate>Mon, 06 Jun 2022 21:55:16 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/06/cover-template.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>React is a JavaScript library for creating user interfaces. It's used in over 30,000 live websites and has over 70,000 GitHub stars.</p>
<p>According to the <a target="_blank" href="https://insights.stackoverflow.com/survey/2021#section-most-popular-technologies-web-frameworks">2021 Stack Overflow developer survey</a>, React has surpassed jQuery as the most popular web framework, and holds approximately 40.14% of the market share. React was also the most sought-after, with one out of every four developers using it.</p>
<p>Over 8,000 industry leaders, including LinkedIn, Twitter, and AirBnB, use React.</p>
<p>A React developer's average annual salary in the United States is $120,000. Many businesses and companies use React, which forces them to constantly look for new talent.</p>
<p>In this article, we will go over some React basics and then look at some interview questions and their proper answers to help you succeed in any React interview you may have.</p>
<h2 id="heading-what-is-react">What is React?</h2>
<p>React is an open-source front-end JavaScript library for creating user interfaces. It is declarative, efficient, and flexible, and it adheres to the component-based approach, which allows us to create reusable UI components.</p>
<p>Developer primarily use React to create Single Page Applications and the library focuses solely on the view layer of MVC. It is also extremely fast.</p>
<h2 id="heading-features-of-react">Features of React</h2>
<p>React has many features that set it apart, but here are a few highlights:</p>
<ul>
<li><p>React employs the Virtual DOM as opposed to a real/browser DOM.</p>
</li>
<li><p>React uses unidirectional one-way data binding.</p>
</li>
<li><p>It is used to develop web applications as well as mobile applications using <a target="_blank" href="https://reactnative.dev/">React Native</a>, which allows us to build cross-platform applications.</p>
</li>
</ul>
<h2 id="heading-how-to-start-a-new-project-in-react">How to Start a New Project in React</h2>
<p>We can create a React app from scratch by initalizing a project and installing all dependencies. But the easiest way is by using <a target="_blank" href="https://reactjs.org/docs/create-a-new-react-app.html#create-react-app">create-react-app</a> via the command below:</p>
<pre><code class="lang-bash">npx create-react-app my-app
</code></pre>
<p><strong>Note:</strong> my-app is the name of the application we are creating, but you can change it to any name of your choice.</p>
<p>You can read more on how to <a target="_blank" href="https://www.freecodecamp.org/news/get-started-with-react-for-beginners/">get started with React in this article</a>.</p>
<h2 id="heading-what-does-dom-stand-for">What Does DOM Stand For?</h2>
<p>The term "DOM" stands for <strong>D</strong>ocument <strong>O</strong>bject <strong>M</strong>odel and refers to the representation of the entire user interface of a web application as a tree data structure.</p>
<h3 id="heading-types-of-dom">Types of DOM</h3>
<p>We have two types of DOM which are the Virual DOM and the Real DOM.</p>
<h2 id="heading-advantages-and-disadvantages-of-react">Advantages and Disadvantages of React</h2>
<p>Here are some of the advantages and disadvantages of React:</p>
<h3 id="heading-advantages-of-react">Advantages of React</h3>
<ol>
<li><p>It has a shorter learning curve for JavaScript developers and a large number of manuals, tutorials, and training materials are available because of its active community.</p>
</li>
<li><p>React is search engine friendly</p>
</li>
<li><p>It makes it easier to create rich UI and custom components.</p>
</li>
<li><p>React has quick rendering</p>
</li>
<li><p>The use of JSX allows us to write code that is simpler, more appealing, and easier to understand.</p>
</li>
</ol>
<h3 id="heading-disadvantages-of-react">Disadvantages of React</h3>
<ol>
<li><p>Because React is a frontend library, other languages and libraries are required to build a complete application.</p>
</li>
<li><p>It can be difficult for inexperienced programmers to understand because it employs JSX.</p>
</li>
<li><p>Existing documentation is quickly out of date due to the short development cycles.</p>
</li>
</ol>
<h2 id="heading-what-is-jsx">What is JSX?</h2>
<p>JavaScript XML is abbreviated as JSX. JSX enables and simplifies the creation of HTML in React, resulting in more readable and understandable markup.</p>
<p>For example:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> App = <span class="hljs-function">() =&gt;</span> {
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
       <span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>Hello World<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
  )
}
</code></pre>
<p>You can read more about <a target="_blank" href="https://www.freecodecamp.org/news/jsx-in-react-introduction/">JSX in React in this article</a>.</p>
<h2 id="heading-why-cant-browsers-read-jsx">Why can't Browsers Read JSX?</h2>
<p>JSX is not a valid JavaScript code, and there is no built-in implementation that allows the browser to read and understand it. We need to transpile the code from JSX into valid JavaScript code that the browser can understand, and we use <a target="_blank" href="https://babeljs.io/">Babel</a>, a JavaScript compiler/transpiler, to accomplish this.</p>
<p>Note: <a target="_blank" href="https://github.com/facebook/create-react-app">create-react-app</a> uses Babel internally for the JSX to JavaScript conversion, but you can also set up your own babel configuration using Webpack.</p>
<p>You can read more about <a target="_blank" href="https://www.freecodecamp.org/news/jsx-in-react-introduction/">JSX in React in this article</a>.</p>
<h2 id="heading-what-are-components">What are Components?</h2>
<p>A component is a self-contained, reusable code block that divides the user interface into smaller pieces rather than building the entire UI in a single file.</p>
<p>There are two kinds of components in React: functional and class components.</p>
<h3 id="heading-what-is-a-class-component">What is a Class Component?</h3>
<p>Class components are ES6 classes that return JSX and necessitate the use of React extensions. Because it was not possible to use state inside functional components in earlier versions of React (16.8), functional components were only used for rendering UI.</p>
<p>Example:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> React, { Component } <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>
<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">App</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Component</span> </span>{
  render() {
    <span class="hljs-keyword">return</span> (
      <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
         <span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>Hello World<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
    )
  }
}
</code></pre>
<p>Read more about React <a target="_blank" href="https://www.freecodecamp.org/news/react-components-jsx-props-for-beginners/">components and the types of components</a> in this article.</p>
<h3 id="heading-what-is-a-functional-component">What is a Functional Component?</h3>
<p>A JavaScript/ES6 function that returns a React element is referred to as a functional component (JSX).</p>
<p>Since the introduction of React Hooks, we have been able to use states in functional components, which has led to many people adopting them due to their cleaner syntax.</p>
<p>Example:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> React <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>
<span class="hljs-keyword">const</span> App = <span class="hljs-function">() =&gt;</span> {
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
       <span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>Hello World<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
  )
}
<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> App;
</code></pre>
<p>Read more about React <a target="_blank" href="https://www.freecodecamp.org/news/react-components-jsx-props-for-beginners/">components and the types of components</a> in this article.</p>
<h3 id="heading-difference-between-functional-and-class-components">Difference between Functional and Class components</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>Functional Components</strong></td><td><strong>Class Components</strong></td></tr>
</thead>
<tbody>
<tr>
<td>A functional component is a JavaScript/ES6 function that takes an argument, props, and returns JSX.</td><td>You must extend from React in order to use a class component. Create a component and a render function that returns a React element.</td></tr>
<tr>
<td>There is no render method used in functional components.</td><td>It must have the render() method returning JSX</td></tr>
<tr>
<td>Functional components run from top to bottom and cannot be kept alive once the function is returned.</td><td>The class component is instantiated, and various life cycle methods are kept alive and are run and invoked depending on the phase of the class component.</td></tr>
<tr>
<td>They are also known as stateless components because they only accept data and display it in some form, and they are primarily responsible for UI rendering.</td><td>They are also referred to as Stateful components because they implement logic and state.</td></tr>
<tr>
<td>React lifecycle methods cannot be used in functional components.</td><td>React lifecycle methods can be used inside class components.</td></tr>
<tr>
<td>Hooks like useState() were created to be used in functional components to make them Stateful.</td><td>It requires different syntax inside a class component to implement hooks.</td></tr>
<tr>
<td>Constructors are not used.</td><td>Constructor are used as it needs to store state.</td></tr>
</tbody>
</table>
</div><h2 id="heading-how-to-use-css-in-react">How to Use CSS in React</h2>
<p>There are 3 ways to style a react application with CSS:</p>
<ul>
<li><p>Inline Styles</p>
</li>
<li><p>External Styling</p>
</li>
<li><p>CSS in JS</p>
</li>
</ul>
<p>Read more on <a target="_blank" href="https://www.freecodecamp.org/news/how-to-style-react-apps-with-css/">how to style a React application in this article</a>.</p>
<h2 id="heading-what-is-the-use-of-render-in-react">What is the Use of render() in React?</h2>
<p><code>Render()</code> is used in the class component to return the HTML that will be displayed in the component. It is used to read props and state and return our JSX code to our app's root component.</p>
<h2 id="heading-what-are-props">What are Props?</h2>
<p>Props are also referred to as properties. They are used to transfer data from one component to the next (parent component to child component). They are typically used to render dynamically generated data.</p>
<p>Note: A child component can never send props to a parent component since this flow is unidirectional (parent to child).</p>
<p>Example:</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">App</span>(<span class="hljs-params">{name, hobby}</span>) </span>{
    <span class="hljs-keyword">return</span> (
      <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>My name is {name}.<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>My hobby is {hobby}.<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
    );
}

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> App;
</code></pre>
<p>Read more about <a target="_blank" href="https://www.freecodecamp.org/news/how-to-use-props-in-react/">how props works in React here</a>.</p>
<h2 id="heading-what-is-state-in-react">What is State in React?</h2>
<p>State is a built-in React Object that is used to create and manage data within our components. It differs from props in that it is used to store data rather than pass data.</p>
<p>State is mutable (data can change) and accessible through <code>this.state()</code>.</p>
<p>Example:</p>
<pre><code class="lang-javascript"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">App</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">React</span>.<span class="hljs-title">Component</span> </span>{
  <span class="hljs-keyword">constructor</span>(props) {
    <span class="hljs-built_in">super</span>(props);
    <span class="hljs-built_in">this</span>.state = {
      <span class="hljs-attr">name</span>: <span class="hljs-string">"John Doe"</span>
    };
  }

  render() {
    <span class="hljs-keyword">return</span> (
      <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>My name is {this.state.name}<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
    );
  }
}
</code></pre>
<h2 id="heading-how-to-update-the-state-of-a-component-in-react">How to Update the State of a Component in React</h2>
<p>It is important to know that when we update a state directly it won’t re-render the component – meaning we don’t get to see the update.</p>
<p>If we want it to re-render, then we have to use the <code>setState()</code> method which updates the component’s state object and re-reders the component.</p>
<p>Example:</p>
<pre><code class="lang-javascript"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">App</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">React</span>.<span class="hljs-title">Component</span> </span>{
  <span class="hljs-keyword">constructor</span>(props) {
    <span class="hljs-built_in">super</span>(props);
    <span class="hljs-built_in">this</span>.state = {
      <span class="hljs-attr">name</span>: <span class="hljs-string">"John Doe"</span>
    };
  }
  changeName = <span class="hljs-function">() =&gt;</span> {
    <span class="hljs-built_in">this</span>.setState({<span class="hljs-attr">name</span>: <span class="hljs-string">"Jane Doe"</span>});
  }
  render() {
    <span class="hljs-keyword">return</span> (
      <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>My {this.state.name}<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">button</span>
          <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span>
          <span class="hljs-attr">onClick</span>=<span class="hljs-string">{this.changeName}</span>
        &gt;</span>Change Name<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
    );
  }
}
</code></pre>
<p>You can learn more <a target="_blank" href="https://www.freecodecamp.org/news/react-js-for-beginners-props-state-explained/">here</a>.</p>
<h2 id="heading-how-to-differentiate-between-state-and-props">How to Differentiate Between State and Props</h2>
<p>State and props are JavaScript objects with distinct functions.</p>
<p>Props are used to transfer data from the parent component to the child component, whereas state is a local data storage that is only available to the component and cannot be shared with other components.</p>
<h2 id="heading-what-is-an-event-in-react">What is an Event in React?</h2>
<p>In React, an event is an action that can be triggered by a user action or a system generated event. Mouse clicks, web page loading, key press, window resizes, scrolls, and other interactions are examples of events.</p>
<p>Example:</p>
<pre><code class="lang-javascript"><span class="hljs-comment">// For class component</span>
&lt;button type=<span class="hljs-string">"button"</span> onClick={<span class="hljs-built_in">this</span>.changeName} &gt;Change Name&lt;/button&gt;

<span class="hljs-comment">// For function component</span>
<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">onClick</span>=<span class="hljs-string">{changeName}</span> &gt;</span>Change Name<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span></span>
</code></pre>
<h2 id="heading-how-to-handle-events-in-react">How to Handle Events in React</h2>
<p>Events in React are handled similarly to DOM elements. One difference we must consider is the naming of our events, which are named in camelCase rather than lowercase.</p>
<p>Example:</p>
<h3 id="heading-class-component">Class Component</h3>
<pre><code class="lang-javascript"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">App</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Component</span> </span>{
  <span class="hljs-keyword">constructor</span>(props) {
    <span class="hljs-built_in">super</span>(props);
    <span class="hljs-built_in">this</span>.handleClick = <span class="hljs-built_in">this</span>.handleClick.bind(<span class="hljs-built_in">this</span>);
  }
  handleClick() {
    <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'This button was Clicked'</span>);
  }
  render() {
    <span class="hljs-keyword">return</span> (
      <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
         <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">onClick</span>=<span class="hljs-string">{this.handleClick}</span>&gt;</span>Click Me<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
   );
  }
}
</code></pre>
<h3 id="heading-function-component">Function Component</h3>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> App = <span class="hljs-function">() =&gt;</span> {
   <span class="hljs-keyword">const</span> handleClick = <span class="hljs-function">() =&gt;</span> {
      <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Click happened'</span>);
   };
   <span class="hljs-keyword">return</span> (
      <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
         <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">onClick</span>=<span class="hljs-string">{handleClick}</span>&gt;</span>Click Me<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
   );
};
<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> App;
</code></pre>
<h2 id="heading-how-to-pass-parameters-to-an-event-handler">How to Pass Parameters to an Event Handler</h2>
<p>In functional components, we can do this:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> App = <span class="hljs-function">() =&gt;</span> {
   <span class="hljs-keyword">const</span> handleClick = <span class="hljs-function">(<span class="hljs-params">name</span>) =&gt;</span> {
      <span class="hljs-built_in">console</span>.log(<span class="hljs-string">`My name is <span class="hljs-subst">${name}</span>`</span>);
   };
   <span class="hljs-keyword">return</span> (
      <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
         <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">onClick</span>=<span class="hljs-string">{()</span> =&gt;</span> handleClick('John Doe')}&gt;Click Me<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
   );
};
<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> App;
</code></pre>
<p>And in class components we can do this:</p>
<pre><code class="lang-javascript"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">App</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">React</span>.<span class="hljs-title">Component</span> </span>{
  call(name) {
    <span class="hljs-built_in">console</span>.log(<span class="hljs-string">`My name is <span class="hljs-subst">${name}</span>`</span>);
  }
  render() {
    <span class="hljs-keyword">return</span> (
      <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">onClick</span>= <span class="hljs-string">{this.call.bind(this,</span>"<span class="hljs-attr">John</span> <span class="hljs-attr">Doe</span>")}&gt;</span>
        Click the button!
      <span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span></span>
    );
  }
}
<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> App;
</code></pre>
<h2 id="heading-what-is-redux">What is Redux?</h2>
<p>Redux is a popular open-source JavaScript library for managing and centralizing application state. It is commonly used with React or any other view-library.</p>
<p>Learn more about <a target="_blank" href="https://www.freecodecamp.org/news/redux-tutorial-for-beginners/#:~:text=Redux%20is%20a%20popular%20open,you%20how%20to%20use%20Redux.">redux here</a>.</p>
<h2 id="heading-what-are-react-hooks">What are React Hooks?</h2>
<p>React hooks were added in v16.8 to allow us to use state and other React features without having to write a class.</p>
<p>They do not operate within classes, but rather assist us in hooking into React state and lifecycle features from function components.</p>
<h3 id="heading-when-did-we-begin-to-use-hooks-in-react">When Did We Begin to Use Hooks in React?</h3>
<p>The React team first introduced React Hooks to the world in late October 2018, during React Conf, and then in early February 2019, with React v16. 8.0.</p>
<h2 id="heading-explain-the-usestate-hook">Explain the useState() Hook</h2>
<p>The useState Hook is a store that enables the use of state variables in functional components. You can pass the initial state to this function, and it will return a variable containing the current state value (not necessarily the initial state) and another function to update this value.</p>
<p>Example:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> React, { useState } <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;

<span class="hljs-keyword">const</span> App = <span class="hljs-function">() =&gt;</span> {
  <span class="hljs-keyword">const</span> [count, setCount] = useState(<span class="hljs-number">0</span>);

  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
      // ...
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
  );
}
</code></pre>
<h2 id="heading-explain-the-useeffect-hook">Explain the useEffect() Hook</h2>
<p>The useEffect Hook allows you to perform side effects in your components like data fetching, direct DOM updates, timers like setTimeout(), and much more.</p>
<p>This hook accepts two arguments: the callback and the dependencies, which allow you to control when the side effect is executed.</p>
<p>Note: The second argument is optional.</p>
<p>Example:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> React, {useState, useEffect} <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;

<span class="hljs-keyword">const</span> App = <span class="hljs-function">() =&gt;</span> {
  <span class="hljs-keyword">const</span> [loading, setLoading] = useState(<span class="hljs-literal">false</span>);

  useEffect(<span class="hljs-function">() =&gt;</span> {
    setLoading(<span class="hljs-literal">true</span>);
    <span class="hljs-built_in">setTimeout</span>(<span class="hljs-function">() =&gt;</span> {
      setLoading(<span class="hljs-literal">false</span>);
    }, <span class="hljs-number">2000</span>);
  }, []);

  <span class="hljs-keyword">return</span>(
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
      // ...
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
  )
}

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> App;
</code></pre>
<h2 id="heading-whats-the-use-of-the-usememo-hook">What's the Use of the useMemo() Hook?</h2>
<p>The <code>useMemo()</code> hook is used in functional components to memoize expensive functions so that they are only called when a set input changes rather than every render.</p>
<p>Example:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> result = useMemo(<span class="hljs-function">() =&gt;</span> expensivesunction(input), [input]);
</code></pre>
<p>This is similar to the useCallback hook, which is used to optimize the rendering behavior of your React function components. useMemo is used to memoize expensive functions so that they do not have to be called on every render.</p>
<h2 id="heading-what-is-the-userefs-hook">What Is the useRefs Hook?</h2>
<p>The <code>useRefs()</code> hook, also known as the References hook, is used to store mutable values that do not require re-rendering when they are updated. It is also used to store a reference to a specific React element or component, which is useful when we need DOM measurements or to directly add methods to the components.</p>
<p>When we need to do the following, we use useRefs:</p>
<ul>
<li><p>Adjust the focus, and choose between text and media playback.</p>
</li>
<li><p>Work with third-party DOM libraries.</p>
</li>
<li><p>Initiate imperative animations</p>
</li>
</ul>
<p>Example:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> React, {useEffect, useRef} <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;

<span class="hljs-keyword">const</span> App = <span class="hljs-function">() =&gt;</span> {
  <span class="hljs-keyword">const</span> inputRef = useRef(<span class="hljs-literal">null</span>)

  useEffect(<span class="hljs-function">()=&gt;</span>{
    inputElRef.current.focus()
  }, [])

  <span class="hljs-keyword">return</span>(
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">{inputRef}</span> /&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
  )
}

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> App;
</code></pre>
<h2 id="heading-what-are-custom-hooks">What are Custom Hooks?</h2>
<p>Custom Hooks are a JavaScript function that you write to allow you to share logic across multiple components, which was previously impossible with React components.</p>
<p>If you're interested in learning how this works, here is a <a target="_blank" href="https://www.freecodecamp.org/news/how-to-create-react-hooks/">step by step guide to help you build your own Custom React Hook</a>.</p>
<h2 id="heading-what-is-context-in-react">What is Context in React?</h2>
<p>Context is intended to share "global" data for a tree of React components by allowing data to be passed down and used (consumed) in whatever component we require in our React app without the use of props. It allows us to share data (state) more easily across our components.</p>
<p>Read more about <a target="_blank" href="https://www.freecodecamp.org/news/react-context-for-beginners/">React Context in this guide</a>.</p>
<h2 id="heading-what-is-react-router">What is React Router?</h2>
<p>React router is a standard library used in React applications to handle routing and allow navigation between views of various components.</p>
<p>Installing this library into your React project is as simple as typing the following command into your terminal:</p>
<pre><code class="lang-bash">npm install – -save react-router-dom
</code></pre>
<h2 id="heading-conclusion">Conclusion</h2>
<p>In this tutorial, we went over some React interview questions to help you prepare for your interviews. All of us at FreeCodeCamp wish you the best of luck and success in your interview.</p>
<p>Instead of attempting to take several courses at once, find a helpful tutorial and complete it if you want to learn more and master React so you can perform well in practical interview sessions. Check out freeCodeCamp's <a target="_blank" href="https://www.freecodecamp.org/news/free-react-course-2022/">Free React Course for 2022</a> or <a target="_blank" href="https://www.freecodecamp.org/news/learn-react-course/">Learn React - Full Course for Beginners</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Interview for a Software Development Job: Success in the Wild West ]]>
                </title>
                <description>
                    <![CDATA[ By Ryan Dawson There are two big things I that I usually find missing in interviewing guides: Your chief aim as a candidate should be to make a connection and have a real conversation. You may not be given a good opportunity to make a connection. T... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-interview-for-software-development-jobs/</link>
                <guid isPermaLink="false">66d460c79208fb118cc6cffa</guid>
                
                    <category>
                        <![CDATA[ Interview tips ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interviewing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 29 Dec 2020 17:16:48 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/12/wantedsigncoder.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Ryan Dawson</p>
<p>There are two big things I that I usually find missing in interviewing guides:</p>
<ol>
<li>Your chief aim as a candidate should be to make a connection and have a real conversation.</li>
<li>You may not be given a good opportunity to make a connection.</li>
</ol>
<p>There is no one formula for success in interviews because interviews are run like the Wild West. But you can maximize your chances.</p>
<h2 id="heading-how-to-connect-with-your-interviewer-through-stories">How to Connect with Your Interviewer through Stories</h2>
<p>Tech interview guides focus a lot on challenges, puzzles and tests. We should put more emphasis on the discussions to establish if you’re a fit for the role.</p>
<p>As a candidate it’s extremely valuable to be well prepared for the fit interview. It’s a chance to make a great impression at a personal level and not just as a test score.</p>
<p>A big part of this preparation is having stories that present the skills you want to present. Let’s consider examples of what this can look like.</p>
<h3 id="heading-example-interview-question-and-answer">Example Interview Question and Answer</h3>
<p><strong>Interviewer:</strong> Could you give me an example of something you worked on at company X?</p>
<p><strong>Candidate:</strong> One of my favourite projects was a performance improvement project. I introduced a new library for mapping code entities to the database. I also introduced a benchmarking tool to measure the improvement. It showed a speed-up of 40% for some queries.</p>
<p><strong>Interviewer:</strong> That's interesting, what did you enjoy particularly?</p>
<p><strong>Candidate:</strong> I enjoyed seeing the difference it made to the user experience. I also liked that it was a well-defined task and it was rewarding to get it done. I can talk more about the challenges if you like?</p>
<p><strong>Interviewer:</strong> Sure, what would you say was the biggest challenge on that piece of work? </p>
<p><strong>Candidate:</strong> Well I knew which library I wanted to migrate to. But it wasn’t compatible with another library we were using. I saw that it would become compatible if we upgraded that other library. So I had to explain that and get agreement to do the upgrade. There were some code changes involved and one of the others was initially reluctant. I convinced them by doing a small PoC to show that the changes weren’t that big.</p>
<p>Preparing stories that answer the first question in this exchange is good preparation. But the big value is in the follow-on conversation. That’s where the interviewer really gets to <em>see</em> your problem-solving skills. And in this case, also your teamwork skills.</p>
<p>You don’t want to just aim to be telling stories. You want to be bringing the interviewer with you through your accomplishments. Those accomplishments don’t make sense unless you reveal what was difficult about them.</p>
<p>Sharing your experience effectively is even more important for more senior roles.</p>
<p><strong>Interviewer:</strong> What was the best thing you did at company X?</p>
<p><strong>Candidate:</strong> I led the implementation of a new feature to generate business insight reports. It was very well received and helped lead to doubling of sales.</p>
<p><strong>Interviewer:</strong> How did you ensure the reports offered the insights the business was looking for?</p>
<p><strong>Candidate:</strong> It took a couple of iterations to get them right. We agreed on initial specs but they were a bit rough and the business wasn't very clear from the beginning. In the second iteration they got more excited and could guide us more clearly.</p>
<p><strong>Interviewer:</strong> Why do you think the business wasn't excited until the second iteration?</p>
<p><strong>Candidate:</strong> I think the mockups we'd done for the first didn't feel real to them. We'd mocked the data and they needed to see it with some of the real records to see the value they could get from it.</p>
<p>Here the initial story doesn’t demonstrate much. It asserts an achievement but it doesn’t <em>demonstrate</em>. The answers to the follow-ups show an appreciation of stakeholder management and requirements solicitation. Getting a flow of conversation going like this also helps the interviewer to relate.</p>
<p>Both of these example exchanges do well at making a connection. The answers get to the point and are explained so that the interviewer can understand them. They tell stories of overcoming challenges. They show appreciation of tricky problems as well as good collaboration skills.</p>
<p>Have stories prepared that show off your experience. Be prepared to answer questions like “<a target="_blank" href="https://www.themuse.com/advice/star-interview-method">tell me about a time when</a>…” If you’re well prepared you’ll look forward to these questions. They can lead to good discussions.</p>
<h2 id="heading-get-to-know-the-company">Get to Know the Company</h2>
<p>Your conversations will be more productive if you tailor them to the company and the role. Look at what the company does and what tech they use.</p>
<p>When you know a little about the company, think about which stories you’d like to emphasise. Which of your experiences would be most relevant to this role?</p>
<p>The job ad likely says which skills are must-haves and how much experience they’re looking for. It’s ok to not match it perfectly. Think about where you are a strong fit and emphasise that. Acknowledge your limitations and stress that you’d be keen to learn to fill the gaps.</p>
<p>You’re more likely to get favourable questions if you tailor your CV to the job ad. This need not be a lot of work. It could just be re-ordering so that the most relevant skills and experiences feature more prominently.</p>
<h2 id="heading-how-to-connect-with-your-interviewer-through-thinking">How to Connect with Your Interviewer through Thinking</h2>
<p>Of course it’s not all about stories. The tech skills are crucial. But the technical evaluations are not just a chance to demonstrate tech skills. They’re also a chance to relate personally.</p>
<p>Don’t treat the tech parts as simply a test of knowledge. They should be tests of reasoning.</p>
<p>Take every opportunity to reveal your thinking. Say why you chose one approach rather than another. Say what you like about a technology and what you’ve found awkward. </p>
<p>It is usually ok to not know an answer. Share your thoughts and be interested in how to get to the right answer, if there is one. </p>
<p>Expect to be challenged on exactly how far your knowledge and experience goes. Maybe you don’t have experience using technology X for millions of transactions. Acknowledge that. Talk about what scale you have dealt with and how you would scale higher.</p>
<p>Sometimes you’ll get ‘gotcha’ questions. Questions where the interviewer really wants some obscure piece of knowledge you don’t have. Try to turn them into conversations. </p>
<p>You want to show that you are flexible and that you’re someone the interviewer could work with. That involves being humble about what you don’t know. Try to show that you could go on learning journeys together.  </p>
<p>You should be prepared to be challenged with coding exercises. Look up what you can about how the company hires. It’s ok to ask them what to expect in the process.</p>
<h2 id="heading-how-to-achieve-your-goals">How to Achieve your Goals</h2>
<blockquote>
<p>“We do not learn from experience… we learn from reflecting on experience.” - John Dewey, Philosopher</p>
</blockquote>
<p>Interview prep takes time. Getting your stories prepared has to compete for time with technical preparation. You’ll want to tailor this to the company.</p>
<p>The key point is not about what prep to do. It’s about how to approach the interview.</p>
<p>Making a connection maximises our chances. Even if we make mistakes in the process, the interviewer is more likely to be generous to us if they relate to our experience and thinking.</p>
<p>The process of thinking about what we want to emphasise is also a good growth exercise. It forces us to consider which of our skills are most marketable. And also what we most enjoy.</p>
<p>We’ve a better chance of landing a role if we can explain how it would fit into our personal growth story. We want to be clear what attracts us to the role and how we’d grow with it.</p>
<p>The interviewer will likely ask us why we’re interested in the role. We should have a compelling answer, both for the interviewer and for ourselves.</p>
<h2 id="heading-interviews-are-the-wild-west">Interviews are the Wild West</h2>
<p>Candidates tend to assume interviewers have everything together. We assume that it’s a great company with a great interview process. So obviously if the interview goes badly it must be our fault?</p>
<p>Even in great companies you get messy hiring situations. </p>
<p>There may be multiple people in the hiring process and they may disagree on what they want. You may get one interviewer open to more junior candidates with an aptitude to learn. And another interviewer who wants all the relevant skills right away. </p>
<p>The interviewer should be trying to have a conversation with you. They should be trying to see how you approach problems and whether you’re somebody they could work with.</p>
<p>Unfortunately the interviewer might not be looking for conversation. They may be rushed or having a bad day. They may have limited thinking space. </p>
<p>Rarely is anyone trained in interviewing. Some people seem strangely ok with making interviews an exercise in ticking boxes. Or a kind of chess game to find faults.</p>
<p>The most common weakness in interviewers is being under-prepared and rushed. This leads to a passive approach to interviewing where the interviewer basically sits back and waits for you to impress them.</p>
<p>Tell stories about good work that you’re proud of. Stories about overcoming obstacles and making trade-offs. Try to relate the stories to what you know about the role. Where you’re not sure how your experience relates to the role, drop in the odd question to show how interested you are.</p>
<h2 id="heading-how-to-succeed-in-the-wild-west-of-software-interviews">How to Succeed in the Wild West of Software Interviews</h2>
<p>Think about what the interviewer is looking for. Which skills are must-haves and how much experience they want. Even ask them.</p>
<p>Have stories prepared and think about how to relate them to the role. Use your CV so that it prompts the questions you want. Stories aren’t the <a target="_blank" href="https://www.freecodecamp.org/news/how-to-prepare-for-a-software-developer-interview/">whole interview process</a> but they are typically the centrepiece.</p>
<p>Have questions prepared to show how interested you are. Really try to imagine what you’d be doing day to day.</p>
<p>Think about how relatable each of your stories are. Make sure you tell them in a way that doesn’t require too much insider language or context.</p>
<p>The way to succeed in the Wild West of interviews is not to be an awesome gunslinger. It’s by being awesome at making new friends.   </p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Prepare for a Software Developer Interview ]]>
                </title>
                <description>
                    <![CDATA[ By Martin Cartledge In my last article, I shared my thoughts on how to get an interview as a software developer. This week, I will share my thoughts on how you should prepare for that interview once you get it.  Tech interviews are notoriously nerve-... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-prepare-for-a-software-developer-interview/</link>
                <guid isPermaLink="false">66d46016e39d8b5612bc0db4</guid>
                
                    <category>
                        <![CDATA[ coding interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ interview questions ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interview tips ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interviewing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 08 Dec 2020 19:54:16 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/12/bridge.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Martin Cartledge</p>
<p>In my last article, I shared my thoughts on <a target="_blank" href="https://www.martincartledge.io/get-software-developer-interview/">how to get an interview as a software developer</a>. This week, I will share my thoughts on how you should prepare for that interview once you get it. </p>
<p>Tech interviews are notoriously nerve-racking and unpredictable. But there are steps you can take to mitigate a lot of these feelings.</p>
<h2 id="heading-phases-of-the-interview-process">Phases of the interview process</h2>
<p>Most software development interviews have a similar structure - it's kind of like the modern foundation for these interviews. </p>
<p>You'll typically find the following phases in your interview process:</p>
<ul>
<li>Phone screen</li>
<li>Technical phone interview</li>
<li>On-site</li>
</ul>
<p>Let's look at each of these in a bit more depth.</p>
<h2 id="heading-what-questions-should-i-expect">What questions should I expect?</h2>
<p>Interviews in the tech industry are far from uniform, but I like to think of that as a positive thing. This keeps things interesting and can allow you to show off your skills in a new way each time. </p>
<p>This includes the questions that you will most likely be asked in your interview, but don't worry. There are lots of common questions that will help you be prepared for your big day. </p>
<p>From my perspective, these questions can be broken down into two categories, company-specific and situational (hypothetical).</p>
<h3 id="heading-company-specific-questions">Company-specific questions</h3>
<p>Depending on the size and type of company you are interviewing at, the way they interview might differ. I suggest you use websites such as <a target="_blank" href="https://www.teamblind.com/">Blind</a> or <a target="_blank" href="https://www.glassdoor.com/">Glassdoor</a> to gain insight into company-specific interview topics and questions.</p>
<p>As an example, <a target="_blank" href="https://theinterviewguys.com/amazon-interview-questions/">The Interview Guys put together a great article</a> that discusses Amazon's top interview questions. </p>
<p>If you spend a little bit of time searching around on the web, you should be able to find some questions that a certain company traditionally asks. This will give you a leg up on your preparation.</p>
<h3 id="heading-situational-hypothetical-questions">Situational (hypothetical) questions</h3>
<p>You can expect these questions to touch on your work style, recent achievements, and your technical competency. A few topics that you can expect to be asked about are:</p>
<ul>
<li>Tell me about a time that you had to deal with a tricky bug. How did you fix it? What was the outcome?</li>
<li>Do you prefer to work by collaborating (pairing) with others or on your own?</li>
<li>What do you like about the programming language you use?</li>
<li>Which new features of the language do you use most and why?</li>
<li>Describe your team’s typical workflow for a project. What do you like about it? What don’t you like about it?</li>
</ul>
<p>Remember, stay positive as much as you can. Although the interviewer is genuinely interested in your responses, they are also looking for any signs of negativity or difficulty you might bring into their current team dynamic.</p>
<p>Try to avoid talking down about a particular piece of technology you have used in the past. Instead, spin your response in a positive way.</p>
<p>For example, instead of saying “I don’t like using the spread operator in JavaScript, it’s too confusing”, you can say, “I know the spread operator is a newer feature of JavaScript, I look forward to learning more about it and how to use it efficiently in my code.”</p>
<p>Now that you have a good idea of what some common questions are and some elements to include in your responses, let's dive into each step in the interview process. The first step is the <em>phone screen.</em> </p>
<h2 id="heading-first-things-first-tell-me-about-yourself">First things first, "tell me about yourself"</h2>
<p>After you apply and a company has an interest in you, the first step is usually to schedule a <em>phone interview</em>. This is typically a pretty relaxed conversation with a member of HR. </p>
<p>You can expect them to ask primarily about your job history, what you are looking for next, and most importantly, why you are applying for a position at their company.</p>
<p>Just because this is typically <em>easier</em> than the other phases of the interview process does not mean you should not prepare for it. A few questions to prepare for are:</p>
<p><strong>Tell me a little bit about yourself</strong></p>
<p>This is a good time to give your “elevator pitch”. This will likely be one of the first questions you are asked and usually can be a great tone-setter for the remainder of the interview. </p>
<p>If you tend to talk fast, take a deep breath before you answer and try to speak slowly and clearly. A few items you want to mention in your response are:</p>
<ul>
<li>Ethos or interests you share with the company</li>
<li>What excites <em>you</em> about software development</li>
<li>Future goals that (hopefully) this company can help fulfill (that is, technical and professional growth)</li>
</ul>
<p><strong>What is a recent project you worked on that you are proud of?</strong></p>
<p>Like most of these questions, the interviewer is not solely curious about your technical achievements. They are also looking for cues that convey you can communicate well, are reliable, and are someone who would get along with the other members of the team. </p>
<p>Try to be enthusiastic and answer questions fully, without rambling too much. An effective framework for answering these types of questions is:</p>
<ul>
<li>Give a quick overview of what the project is and the problem it solves</li>
<li>Mention the technologies you used in this project</li>
<li>Communicate any metrics that demonstrate any positive impact (like time-saving metrics, open-source contributors, number of active users)</li>
</ul>
<p><strong>Why are you looking to leave your current company?</strong></p>
<p>This might be one of the trickier questions to answer. Make sure you have a solid answer for this one prepared prior to the interview, as it can tell a lot about a candidate pretty quickly. </p>
<p>Here are a few things you should <strong>avoid</strong> when answering this question:</p>
<ul>
<li>Being negative. Turn any potentially negative factor into a positive one. For example, “I am bored and unsatisfied with the work I do here” can be said instead like, “I am looking for a new challenge that cultivates my growth as a developer and an individual”.</li>
<li>Talking about current coworkers or managers – keep them out of the conversation</li>
<li>Discussing compensation and benefits</li>
</ul>
<p>I think one of the best answers you can give to this question is an honest one – you are looking for something new. That is a perfectly reasonable answer! </p>
<p>The only pieces I might add to this response are your interest in new challenges, enthusiasm for the company, or a piece of technology that you know this company uses.</p>
<h2 id="heading-how-to-prepare-for-the-technical-phone-interview">How to prepare for the technical phone interview</h2>
<p>Ok, you were enthusiastic, personable, and well prepared for your phone interview. The next step in this process is generally a <em>technical phone interview</em>. </p>
<p>Before your technical phone interview, it's important to make sure you know which programming language you will use.</p>
<h3 id="heading-which-programming-language-should-i-use">Which programming language should I use?</h3>
<p>Before you start preparing for the other steps of the interview process, it would be prudent to have a good idea of which programming language you will use during the interview.</p>
<p>When it comes to this question, I have some pretty simple advice: <em>embrace what you are comfortable with, and stick to what you know.</em></p>
<p>It is fairly common to want to use (or learn) multiple languages in our field. But, when preparing for an interview, it is best to stick with just one. </p>
<p>This will help shift your focus from worrying about which language you will use, to thinking of problems you have solved with the language you are most comfortable with.</p>
<p>Once you know which programming language you will use, you are ready to take on the challenge of the <em>technical phone interview.</em></p>
<h3 id="heading-discussing-technical-achievements-and-high-level-programming-topics">Discussing technical achievements and high-level programming topics</h3>
<p>In a typical technical phone interview, you'll have a conversation with a senior member of the team you would join or with the manager of that team. You can expect a lot of this conversation to be focused on two things:</p>
<ul>
<li>Recent problems you have experienced in your current position and the solutions you implemented for them, and</li>
<li>General language familiarity (such as when would you want to use an array instead of a hash table (object)?)</li>
</ul>
<p>To help prepare for this interview, I suggest you start to write down answers to these questions. </p>
<p>Personally, I have used an Excel or Google sheet document that consists of 3 columns: <em>questions</em>, <em>answers</em>, and <em>notes</em>. You will find that taking the action of writing your answers down will help you come up with a concise and impactful answer.</p>
<p>There are a lot of resources online that list common interview questions, for <a target="_blank" href="https://github.com/h5bp/Front-end-Developer-Interview-Questions">frontend</a>, <a target="_blank" href="https://github.com/arialdomartini/Back-End-Developer-Interview-Questions">backend</a>, or <a target="_blank" href="https://github.com/aershov24/full-stack-interview-questions">full-stack</a> roles.</p>
<p>This might seem like a lot of work upfront, but trust me – spending the time to prepare and convert your thoughts to pen and paper will really help you mentally flesh out your answers.</p>
<p>Okay, you've spent ample time preparing and you impressed your interviewer! The next step you can expect is the "on-site" interview.</p>
<h2 id="heading-what-is-the-on-site-interview-all-about">What is the on-site interview all about?</h2>
<p>The final stage of the interview process is usually referred to as the <em>on-site</em>. This is often the most in-depth and the most important to perform well at.</p>
<p>One of the main questions the company would like to have a good answer for is, <em>how does this person work?</em> The answer to this question is usually echoed through multiple levels as well, personal, technical, and professional.</p>
<p>Companies seek this answer by giving the candidate various exercises, technical and interpersonal, to gauge your skills and how well you will fit in at their company.</p>
<p>Depending on the company this interview can include various elements, but a few that are most common are:</p>
<ul>
<li>Pair programming</li>
<li>Take-home assignments</li>
<li>Whiteboarding</li>
</ul>
<h3 id="heading-excel-during-your-pair-programming-session">Excel during your pair programming session</h3>
<p>One of the most common methods of gauging your skills is to pair program with a member of the team you might work with. </p>
<p>This session is usually 20 to 30 minutes and the problem you are given is generally something you will see on the job at this company. </p>
<p>There are a few things to keep in mind if you have a session like this:</p>
<ul>
<li>Try to stay calm and remember that <em>you are interviewing here for a reason</em>, they like you and see promise in you.</li>
<li>Communicate out loud as much as possible, even if you think you are talking too much. It’s better to over-communicate in these exercises than to sit in silence typing away at the keyboard.</li>
<li>Don’t be afraid to ask questions, they’re on your side! The interviewer has probably left out critical details on purpose to test your communication skills while working with other developers.</li>
</ul>
<p>Ultimately, try and be conscious of the fact that this company sees promise in you on a personal and technical level. Be yourself and be confident!</p>
<p>If the company does not have a pair programming exercise included in their process, another common exercise is to give you a project or a collection of problems to solve on your own.</p>
<h3 id="heading-crush-your-take-home-assignment">Crush your take-home assignment</h3>
<p>If the company wants to gauge your work through the lens of how you work as an individual, they might ask you to complete a take-home assignment.</p>
<p>These can range from completing timed exercises on <a target="_blank" href="https://www.hackerrank.com/">HackerRank</a> to completing a small project with written instructions from the interviewer themselves.</p>
<p>Regardless of the style of take-home assignment, there are a few things I think you should keep in mind to increase your chances of success:</p>
<ul>
<li>Ensure you are in a distraction-free area for the entire allotted time</li>
<li>Put any distraction-prone devices away</li>
<li>Read <em>all</em> instructions to the problem(s), and then read them again</li>
</ul>
<p>If your assignment is timed and you do not think you will have enough time to finish, write comments throughout the assignment with what your next steps would be if you had more time. </p>
<p>To be honest, a lot of these assignments are supposed to take longer than the scheduled time to complete.</p>
<p>The interviewer is always primarily focused on how you <em>communicate</em>, not that you can write code the fastest, or solve every algorithm you see.</p>
<h3 id="heading-conquer-the-whiteboard-exercise">Conquer the whiteboard exercise</h3>
<p>Sometimes a company would prefer to take a look at your technical skills and ability to break down complex problems in more of an abstract way. The most common way of testing a candidate this way is by having them complete a whiteboard exercise.</p>
<p>This method of interviewing might be the most talked about, and the most feared. If you are asked to use a whiteboard to solve a question remember this: they are (usually) far more interested in <em>how</em> you communicate your problem-solving process, not that you can solve the problem.</p>
<p>If the problem they give you seems really hard, that is not because they are trying to stump you. They want to get a feel for how you tackle a hard problem. If you don’t end up solving the problem, that does not mean you blew your chance. </p>
<p>If you keep these things in mind during this exercise, it will increase your chances of impressing your interviewer:</p>
<ul>
<li>Repeat the question back to the interviewer</li>
<li>Ask clarifying question about edge cases</li>
<li>Confirm optimal results of the problem</li>
<li>Write your code legibly</li>
<li>Communicate each step you take</li>
</ul>
<p>If you answered the question successfully by the time the session ends, ask your interviewer if that was the solution they commonly got. If not, ask what other candidates have done or what you could have done differently. This shows that you are engaged and curious.</p>
<p>If you did not answer the question successfully, write comments throughout the code about where you might continue to find the solution if you had more time. Again, a lot of these sessions are not focused solely on getting the “right” answer, but to get a good idea of how you approach new problems.</p>
<h2 id="heading-practice-interviewing-without-the-pressure">Practice interviewing, without the pressure</h2>
<p>As I mentioned earlier, interviews are tough and can be hard to prepare for. However, I am a firm believer that the best way to ensure a higher chance of success is to practice, practice, practice.</p>
<p>Have you ever practiced a big presentation for school in front of friends or family? You might have still been nervous but, it sure does help you feel more comfortable speaking about your topic.</p>
<p>Interviewing is also a presentation, and the concept of practice runs are just as important. In the 2020 world, most interviews are completed remotely, which makes performing mock interviews feel more <em>real</em>.</p>
<p>If you know someone who is currently in the software industry, I would ask them if they would be willing to set aside an hour or so a week to perform these mock interviews with you. If they currently work in a similar role that you are interviewing for, even better!</p>
<p>A few other options are <a target="_blank" href="https://www.pramp.com/">Pramp</a> and <a target="_blank" href="https://codeinterview.io/">CodeInterview</a>. These sites allow you to schedule an interview, and pick a primary focus (topic), language, and area of expertise (frontend, backend, and so on). </p>
<p>These platforms also give you more flexibility so you do not have to worry about scheduling time with someone you personally know.</p>
<p>Interviews are nerve-racking, but I am confident as you complete more of them your confidence and comfort level will increase.</p>
<h2 id="heading-should-i-cram-the-day-before">Should I cram the day before?</h2>
<p>As the days go by, you are feeling more confident. You are tired from preparation, but excited to show this company what you are made of. It's finally the day before the interview – what is the best use of your time?</p>
<p>It might be tempting for candidates to cram as many <a target="_blank" href="https://leetcode.com/">Leetcode</a> problems or whiteboard questions as possible the day before. But I believe the best thing you can do for your mind is to <strong>rest</strong>.</p>
<p><strong>Celebrate your achievement</strong>, getting interviews is <em>not</em> an easy task. Be nice to yourself. Relax and spend the day doing any activity that brings you joy and (ideally) relaxes you.</p>
<p>This might sound counterintuitive, but I think it is the best thing for you to do. You will need your brain to work well at your interview. Therefore, giving it rest the day before is exactly what it needs.</p>
<h2 id="heading-in-summary">In Summary</h2>
<p>If you are reading this because you are going to start to prepare for an interview, congrats! I hope my insights can help in your preparation and your headspace as you approach your big day. </p>
<p>Ultimately, remember to take a deep breath, relax, and be confident in yourself. Whoever you interview with sees promise in your skills. You got this!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How I Taught Myself to Code and Got a Job During Lockdown ]]>
                </title>
                <description>
                    <![CDATA[ By Linda Kovacs I recently got a job as a software engineer at Accenture. Soon thereafter, I started to get questions from everyone about my journey – so I decided to write it down so people can benefit from my experience. I want to inspire others to... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-i-got-a-job-during-lockdown/</link>
                <guid isPermaLink="false">66d4601347a8245f78752a83</guid>
                
                    <category>
                        <![CDATA[ career advice ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Career Change ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interviewing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 23 Nov 2020 16:08:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/11/Linda-story-image.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Linda Kovacs</p>
<p>I recently got a job as a software engineer at Accenture. Soon thereafter, I started to get questions from everyone about my journey – so I decided to write it down so people can benefit from my experience.</p>
<p>I want to inspire others to believe in themselves and continue their web development journeys. I hope my story gives them the inspiration to persist until they achieve their own dreams.</p>
<p>A quick note before I start: my success has been built on the many activities I did before the pandemic. I was trying to achieve my dream, but the pandemic actually made the process faster for me. </p>
<p>I say this, because without the pandemic, maybe it would have taken me longer to decide to move forward and feel prepared to take the next step in my career.</p>
<h2 id="heading-a-little-background-about-me-and-my-passion-for-software-development">A little background about me and my passion for software development</h2>
<p>I was born in Romania, and in High School I started to work as a journalist in Radio and TV for about 5 years. </p>
<p>After 2 years at University in Computer Science, I moved to Italy where I lived for 12 years. At first I worked as a translator, and then as a Web Developer and Designer. And I also worked as a journalist for a magazine for 5 years in my free time.</p>
<p>My teenage dream to move to the USA finally came true in 2013. Shortly after the move, I started to volunteer as a translator and IT Department. Then continued to work as a Web Developer and Designer for a company. I became a US citizen in 2018 and started my career as a Remote Freelancer Full Stack Developer.</p>
<p>In 2017 I joined the GDG Capital Region. In February 2019 I became a <strong><a target="_blank" href="http://devfest.gdgcapitalregion.com/">Google Developer Group Lead</a></strong> and I was nominated as a <a target="_blank" href="https://www.freecodecamp.org/news/international-womens-day-2019-celebration/"><strong>Women Techmakers Ambassador</strong></a>. </p>
<p>This was the first step to getting more involved with women in coding events and meetups.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/11/Screen-Shot-2020-11-15-at-5.18.04-PM.png" alt="Image" width="600" height="400" loading="lazy">
<em>Traveling across Europe and the US: living, working and studying</em></p>
<h2 id="heading-the-next-steps-coding-bootcamp-meetups-and-winning-a-hackathonhttpswwwfreecodecamporgnewshow-joining-coding-bootcamps-meetups-and-winning-a-hackathon-changed-my-life-completely-2addc66f1665">The Next Steps: <a target="_blank" href="https://www.freecodecamp.org/news/how-joining-coding-bootcamps-meetups-and-winning-a-hackathon-changed-my-life-completely-2addc66f1665/">Coding bootcamp, Meetups, and Winning a Hackathon</a></h2>
<h3 id="heading-the-school-of-life">The School of Life</h3>
<p>The world of software development, and technology in general, moves so fast. So it is not easy to be on the top unless you are willing to upskill all the time. </p>
<p>My biggest issue was my technical English proficiency, which made it difficult for me to explain what I needed to say during job interviews.</p>
<p>Even though I had studied some Computer Science at University, I decided to leave it behind and find my way in the world. I blamed myself for years for my decision to give up on my dream of graduating. </p>
<p>But looking back now I feel better, because I achieved much more than if I had only lived in one country. I had the opportunity to live in different places and change continents. Along with that, I had the opportunity to learn new languages. I enjoyed traveling the world, making new friends, pursuing different interesting jobs, and so on.</p>
<p>It was not easy, though – and many times I just wanted to give up on everything. It was challenging every day. I thought I would never make it, that I'd never be able to learn to speak any other language because in school I was so bad at learning foreign languages. But I did it.</p>
<h3 id="heading-my-first-experience-with-web-development-and-design">My first experience with Web Development and Design</h3>
<p>During my career I've held all sorts of IT positions and have had all kinds of roles from hardware to software, depending on what was available. </p>
<p>I discovered over the years that I most enjoyed Web Development and Design, a fact which weighed heavily in my final decision.  </p>
<p>I got to get my hands dirty with Web Development and Design for the first time during my job in Italy. </p>
<p>The company had a monthly magazine that they printed out. I was able to transform it into a digital format and distribute it on the private area of the website that I created for their associates. </p>
<p>I was able to develop the website from a static 5 pages to a fully functional website with daily updates and a private area. I then continued by building a new website dedicated to the magazine itself. </p>
<p>I had to learn everything from scratch by googling when I needed to figure something out.</p>
<h3 id="heading-the-american-dream-come-true">The American Dream come true</h3>
<p>When I moved to the US, my web development experience came in handy. I used to work for a company as a Web Developer and Designer. I was in charge of maintaining and updating four websites and three intranet sites. I also created two new websites using mainly PHP, JavaScript, HTML, CSS, JQuery and so on. </p>
<p>I also got involved updating the company's brochures, posters, flyers, catalogs, logos (Adobe Creative Suite) and Adobe PDF forms.   </p>
<p>After working with them for four years, I was looking to start my own business. I started reading books about Freelancing and found out more about it. I even joined the Union Freelancers in 2018 which offers services and consultancy to freelancers.</p>
<h3 id="heading-building-up-a-portfolio">Building up a portfolio</h3>
<p>Having prior experience helped me start Freelancing in late 2018 as a Web Developer and Designer. </p>
<p>It also made it easier for me to create my own website with a <strong><a target="_blank" href="https://linda-kovacs.com/portfolio/">portfolio</a></strong>. There I display my professional projects that I worked on and the ones I studied from FreeCodeCamp, AlbanyCanCode, Hack Upstate/CareersInCode, and Practicum.</p>
<p>I really enjoyed being a freelancer. The only part I started to dislike was dealing with all the paperwork such as contracts, health insurance, taxes and so on – all things that used English that I wasn't familiar with. </p>
<p>That’s when I started to think about applying for jobs at big companies again. I would have career growth opportunities, and I wouldn't have to deal with stuff I don’t like such as bureaucracy forms and contracts.</p>
<h2 id="heading-my-freecodecamp-experience">My freeCodeCamp Experience</h2>
<p>I’m a self-taught Web Developer and Designer, and in 2016 I started learning new coding languages like ES6, React, NodeJS on <a target="_blank" href="https://www.freecodecamp.org/lindakovacs"><strong>freeCodeCamp</strong></a>. I got four out of five certifications (now there are even more) and built most of the projects that come with the certifications, about 16 in total. </p>
<p>It took me about two years to go through the curriculum and build the projects. It was my foundation for my newly updated coding skills. </p>
<p>While going through the freeCodeCamp curriculum I was also working as a Web Developer and Designer as my full time job. But I was not always able to practice what I was learning in my daily work because I was using different programming languages and different environments.</p>
<p><img src="https://scontent-lga3-1.xx.fbcdn.net/v/t1.0-9/45752117_10218128330586254_9097441658705805312_o.jpg?_nc_cat=108&amp;ccb=2&amp;_nc_sid=730e14&amp;_nc_ohc=un7FQI_ny8QAX_8v5yV&amp;_nc_ht=scontent-lga3-1.xx&amp;oh=cefe6d3179c5e0316cb16345394c9ba8&amp;oe=5FD89024" alt="Image may contain: 2 people, including Linda Kovacs, people smiling" width="600" height="400" loading="lazy">
<em>7 pull requests in GitHub to help Open Source freeCodeCamp Earth curriculum for the 2018 DigitalOcean Hacktoberfest challenge</em></p>
<h2 id="heading-my-experience-with-albanycancode-and-careersincodehackupstate">My Experience with AlbanyCanCode and CareersInCode/HackUpstate</h2>
<p>In 2019 I graduated from the <a target="_blank" href="https://albanycancode.org/"><strong>AlbanyCanCode</strong></a> Bootcamp that focused on Front End JavaScript Frameworks for the Back End held at SUNY. </p>
<p>For graduation, we worked on two individual projects: a Trello board and a Good Reads app. We also worked on two team projects (a Graduate Portal and Data Visualization) using Agile/Scum methodology. </p>
<p>To build our project we used Bootstrap, HTM5, CSS3, JavaScript, React, Redux, Axios, NodeJs, MongoDB, Mongoose, and D3. It was a lot of tech!</p>
<p><img src="https://scontent-lga3-1.xx.fbcdn.net/v/t1.0-9/60911712_10219655428642751_4982708688142729216_n.jpg?_nc_cat=108&amp;cb=846ca55b-311e05c7&amp;ccb=2&amp;_nc_sid=8bfeb9&amp;_nc_ohc=Hm-eYbfFGnMAX9Fq2aT&amp;_nc_ht=scontent-lga3-1.xx&amp;oh=51d0465e6711795b6399b3db9ec79658&amp;oe=5FD93851" alt="Image" width="600" height="400" loading="lazy">
<em>AlbanyCanCode Graduation</em></p>
<p>Also in 2019 my team and I won two prizes at the <strong><a target="_blank" href="https://medium.com/@hackupstate/hack-upstate-xiii-the-results-are-in-28c801576637">Hack Upstate XIII Hackathon</a></strong> with our <a target="_blank" href="https://devpost.com/software/parking-assistant">Parking Assistant App</a>. To build that project we used React Native, the <a target="_blank" href="https://medium.com/city-as-a-service/hack-upstate-debrief-24837aa2f77a"><strong>Stae API</strong></a>, Heroku, and Expo.io.</p>
<p><img src="https://scontent-lga3-1.xx.fbcdn.net/v/t1.0-9/56509955_10219282246833439_1715036383241830400_n.jpg?_nc_cat=107&amp;ccb=2&amp;_nc_sid=8bfeb9&amp;_nc_ohc=XZVtbrHAAk0AX9wC5JW&amp;_nc_ht=scontent-lga3-1.xx&amp;oh=d1563764c650f2b214f376d24cfbf068&amp;oe=5FD6C4AB" alt="Image" width="600" height="400" loading="lazy">
<em>Hack Upstate XIII Hackathon - The Parking Assistant App Winner</em></p>
<p>I also received an honorary diploma as a Full Stack Developer from <a target="_blank" href="https://medium.com/@hackupstate/careers-in-code-student-testimonials-16584bfa7e51"><strong>CareersInCode</strong></a>. It's a Hack Upstate Bootcamp where I helped students with Assignments and Capstone projects.</p>
<h2 id="heading-next-up-practicum-by-yandex">Next up: Practicum by Yandex</h2>
<p>This year, due to the Coronavirus lockdown, I decided to accept an invitation form Women Who Code to become a beta-tester of the <strong><a target="_blank" href="https://practicum.yandex.com/">Practicum by Yandex</a></strong> platform. So I joined their Web Developer Professional Certificate Program.</p>
<p><img src="https://scontent-lga3-1.xx.fbcdn.net/v/t1.0-9/69336343_10220534615701878_4928451435739217920_n.jpg?_nc_cat=101&amp;ccb=2&amp;_nc_sid=8bfeb9&amp;_nc_ohc=79av-TTpGZgAX8Z_P7c&amp;_nc_ht=scontent-lga3-1.xx&amp;oh=2b402ef06788348944f1c6ca495effe7&amp;oe=5FD6E3B4" alt="Image" width="600" height="400" loading="lazy">
<em>Working remotely enjoying the beautiful days from my terrace in the backyard</em></p>
<p>When I joined the program I was convinced that my prior professional experience would make it easy for me to surf right through. But I was expecting to have some issues when we got to algorithms, JavaScript, React, NodeJs, Databases, and the back end parts. Those areas are often more challenging, even for developers with experience. </p>
<p>To my surprise, I got overwhelmed by things I thought I was good at before, like CSS. It’s true – I never knew about things like BEM, which blew my mind and at a certain point got me confused. It was hard and frustrating.  </p>
<p>Code reusability is the main focus of the Bootcamp. And the Practicum curriculum made me a better Developer and Designer by augmenting my knowledge with the latest accessibility and Web standards.  </p>
<p>Practicum’s curriculum is specially designed that after you go through the mostly theory-based lectures, you're dropped right into code-based challenges. This means that you have to find solutions that mirror real world experiences. </p>
<p>In addition to these challenges, the sprints also provided space for students to work on projects independently and as small groups.</p>
<p>The curriculum is geared toward helping you build your portfolio. You complete 15 projects by following the original mockup design files and adding functionality as instructed on each project. </p>
<p>You also collaborate through GitHub using a professional developer's workflow which will help you in your future developer job.</p>
<p>The program was 10 months long, and the review process and projects were designed to give participants real world work experience. Its goal is to prepare you to be ready to join any company’s developer team at any time.   </p>
<p>But it wasn't easy. I felt like quitting every Sprint when I was working on the projects. I felt like I couldn’t make it to the end and I was so afraid of failing. I could've taken an academic leave to catch up, but I fought hard and stayed with my initial cohort.  </p>
<p>Going through Practicum was an amazing experience. I learned so much in such a short time, and had the opportunity to put my skills to the test with sprints and bi-weekly projects. The experience is pretty tough, yet incredibly valuable.</p>
<p>Practicum also uses GitHub Pages to deploy the projects we created, which made it easier for me to display them publicly. This definitely helped me out, not only in showing my GitHub activity but also when displaying my final projects (which potential employers could see with just one click).</p>
<h2 id="heading-and-then-the-coronavirus-pandemic-hit">And Then the Coronavirus Pandemic Hit</h2>
<p>I realized that I needed a career change once the lockdown happened. Many people lost jobs and we learned how painful change can be. So I decided that now was the time for a career change, and it was time to level up my skills. </p>
<p>We already knew before the pandemic hit that everyone had to go digital. An online presence is a must nowadays, and data and the cloud are the future (and the present). </p>
<p>The lockdown just made the transition happen more quickly. And I knew that I needed to skill up continuously to stay on top of things. I needed to adapt rapidly and forget the conventional way, to think outside the box, be creative and inventive. </p>
<p>Look at Amazon and Uber, to name a few – and how much disruption they have created to the conventional way of doing things. This is the right time to make your move. Everything is available at your fingertips. Put in the time and make sacrifices and it will pay off soon.</p>
<p>I was a freelancer before the pandemic hit. I was lucky enough to get my clients from contacts and companies I met at GDG Meetups and from AlbanyCanCode. My business started to grow and I felt really proud of it. </p>
<p>But then of course the pandemic changed everything. And I learned that we truly are in this together.</p>
<h2 id="heading-what-i-did-during-lockdown">What I Did During Lockdown</h2>
<p>That’s when I started to assess the situation. I decided to take the time to invest in myself. I used the lockdown to reflect on what I needed to do to build up my skills. </p>
<p>I needed to hold myself accountable and stay motivated. That's where the developer community played a big role in my lockdown journey.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/11/Linda-Kovacs-Hack-Upstate-XV.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Online GDG Meetups</em></p>
<p>I was literally only sleeping 4-5 hours a night and took every course I could find online. These courses were usually paid courses, but during lockdown many course providers made their material free online. </p>
<p>Being a <a target="_blank" href="https://gdg.community.dev/gdg-capital-region/"><strong>Google Developer Group Lead</strong></a> and <strong><a target="_blank" href="https://www.meetup.com/Google-Developer-Group-of-the-Capital-Region/events/past/">Women Techmakers Ambassador</a></strong> for the Capital Region, I learned about training opportunities with Google and other important training providers. So I shared these opportunities with the Meetup community all over the world. This helped everyone do the same and we were skilling up together!</p>
<p><img src="https://secure.meetupstatic.com/photos/event/4/d/c/5/highres_490939909.jpeg" alt="Image" width="1920" height="1080" loading="lazy">
<em>Online GDG Meetups</em></p>
<h3 id="heading-i-organized-lots-of-gdg-capital-region-online-events-via-google-meet-and-youtube">I organized lots of GDG Capital Region online events via Google Meet and YouTube</h3>
<p>I started organizing a bunch of joint <a target="_blank" href="http://www.youtube.com/c/GDGCapitalRegion"><strong>online events</strong></a> with world wide GDG Leads. These let attendees from all over the world get together and share our desire to learn. </p>
<p>We got awesome speakers from Google and elsewhere to join us and spread their knowledge with our always “hungry” community members. Sponsors offered amazing digital prizes that attendees gained tons of new skills.</p>
<p>We got to offer so many great perks, like:</p>
<ul>
<li>free Udemy and Pluralsight subscriptions</li>
<li>free O'Reilly books and subscriptions</li>
<li>ROI Training vouchers</li>
<li>free Qwiklabs and other free Google Cloud resources for certifications</li>
<li>Practicum scholarships for everyone, and some dedicated to veterans, the Black tech community</li>
<li>DevelopHer program for Women in tech, and </li>
<li>free online access to the whole Coursera library through a college. </li>
</ul>
<p>It was a win-win situation for all of us!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/11/Screen-Shot-2020-11-15-at-8.10.43-PM-1.png" alt="Image" width="600" height="400" loading="lazy">
<em>Lockdown Activities</em></p>
<h3 id="heading-i-leveraged-my-online-social-networks-like-linkedin-and-twitter">I leveraged my online social networks, like LinkedIn and Twitter</h3>
<p>By sharing all of these activities online I saw a large increase in activity on my social networks such as LinkedIn and Twitter. And I started getting the attention of the hiring managers who began contacting me (and still are) about available positions. </p>
<p>This made it easier for me to apply for more targeted jobs where I knew my resume would be considered and I'd be able to get job interviews due to the exposure.</p>
<p>Helping others has definitely helped me. I’m not a person who likes to post in social networks, but if I'm posting with purpose then I’m always willing to do it.</p>
<p>This not only helped me, but helped our community as well. When I saw the LinkedIn testimonials of our community members who were celebrating passing their Google Cloud Engineer Certifications with the free online resources we shared, I felt so happy for their achievements.</p>
<h3 id="heading-i-volunteered-in-the-developer-community">I volunteered in the developer community</h3>
<p>As you can see, I am very active in the online tech community and I love helping others succeed. I’m always trying to spread whatever opportunities are available online. </p>
<p>I try to help with coding questions, and give career advice when I can. Sometimes I get more questions than I can handle and I have to defer some of them. And sometimes I have to prioritize and choose what I can do. We all have only 24 hours in a day – but I am a person who doesn’t like to say NO and that makes it difficult for me. </p>
<p>So I started to make choices based on the time I have available to dedicate to the community. This has helped me avoid burnout and getting overly stressed out over my own deadlines. </p>
<p>I like to help everyone out, but at the same time I get stressed when I need to meet my own deadlines in a short period of time. I had to learn the hard way that I am a human and I can do so much. Now that I've learned this, I can still be an active volunteer in the community and beyond.</p>
<h3 id="heading-i-participated-in-googles-community-training-program">I participated in Google’s  Community Training program</h3>
<p>During the lockdown I was presented with another great opportunity. I got to participate in Google’s  Community Training program. Elevate is a 3-month program that provides training in areas like leadership, communication, critical thinking, and teamwork. </p>
<p>The program provided resources and content to help participants add to their skillset with applied skills sessions/workshops to help them take their professional careers to the next level. </p>
<p>This helped me identify ways to customize my LinkedIn profile to filter my job search. This way potential employers would see in my profile that I was open only for remote positions. </p>
<p>It also helped me improve my interviewing skills and polish up my resume, cover letters, and job search approach in general.</p>
<h3 id="heading-i-joined-google-clouds-learning-workshop">I joined Google Cloud's Learning Workshop</h3>
<p>I also joined a Google Cloud Workshop for 9 weeks to get ready for my Cloud certification. I got all the material I needed to get ready for the exam. For our final project before graduation, we worked on teams to build a Google Cloud solution as a project. And I did it!  </p>
<p>All these programs and curricula – <strong>FreeCodeCamp, Practicum, AlbanyCanCode, HackUpstate, GDG Meetups, Google training</strong> (and the list goes on) – played an integral role in getting me where I am today. </p>
<h2 id="heading-when-is-it-the-right-time-to-apply-for-jobs-and-remote-jobs-in-general">When is it the right time to apply for jobs and remote jobs in general?</h2>
<p>This is the right moment for remote work – period! There are so many positions available that are not filled. The job market has changed and we need to adapt. </p>
<p>These sorts of changes have happened many times throughout history and our ability to change with them has played a big role in our success.</p>
<p>During my life, I've had dreams, big and small. I've always had a vision of everything in my mind and I write down my goals. I take action on those goals by completing small tasks and steps that help me accomplish my dreams. </p>
<p>But I've made a lot of sacrifices and it was not always easy. I always knew inside me that one day I would make it. If I find myself in a place or with people that are not what I was looking for, I just adjust my direction. </p>
<p>It’s just like walking in the woods with your compass – you take it out of your pocket to check it and adjust your trajectory every now and then so you arrive at your desired destination.</p>
<h3 id="heading-how-to-prepare-for-interviews">How to prepare for interviews</h3>
<p>So how much you have to prepare before you start applying for jobs? Well, my answer is to just start applying right now. You will prepare for your job interviews by interviewing. </p>
<p>Nobody gets better at driving just by reading books and watching videos – you need to start to drive! It's the same with interviewing. You need to start the process, first with companies that may not be your first choice, and then with those you'd love to work for. </p>
<p>This way you can test your skills and see how many calls you get back, how many interviews you get, and this will help you train for your dream job. </p>
<p>Keep in mind that you can also apply to your dream job company to get a feeling for their interview process. If you don’t get the offer the first time, you can prepare more thoroughly, level up your skills, and apply again later. </p>
<p>During the process, you'll get to know more about the company and the people and if you would like to work with them. </p>
<p>There were companies that I interviewed with that were on my dream list – but after the interview process I was disappointed and decided I actually didn't want to work with them. So I didn't reapply.</p>
<p>Really, interviewing is like dating: you don’t want to spend 8 hours a day in a toxic place with toxic people who will only destroy your life. You need to work in a place you like with people that you will enjoy being around. </p>
<h3 id="heading-interviews-with-large-companies">Interviews with large companies</h3>
<p>It was my dream to work at a large company like Google, Facebook, or Amazon – that’s why I always applied to all of them. And I got to go through the job interview process, too. </p>
<p>I didn’t make it to the end of all of them, but I got experience with the big company's interview processes. I got to test my resume to see if it passed the automatic scan process and reached a human. I also went through initial phone screens, and got to practice technical interviews (which were the scariest part for me). </p>
<p>And ultimately, I got to practice interviewing with those companies where I aspired to work. This prepared me for eventual success. </p>
<p>Instead of testing my resume with online tools, I got the real experience. I also crafted thank you letters when I didn’t get the job and sent them to the interviewers that took the time to train me for success. </p>
<p>Most importantly (and very fortunately), I didn’t have strict time constraints to find a job quickly so I didn’t have to accept any offer that came my way. I had the choice to choose what was best for me. I had been working as a freelancer since 2018 and I was always preparing to hit the jackpot.</p>
<h2 id="heading-my-journey-to-accenture">My Journey to Accenture</h2>
<p>I found out about a position at Accenture from AlbanyCanCode last year when I took a course at SUNY. </p>
<p>AlbanyCanCode was always by my side, helping me get clients when I started remote freelancing work as a Web Developer and Designer. I learned about the position right after our graduation last year, but after a few rounds of interviewing with Accenture unfortunately I didn’t make it. </p>
<p>This year, as usual, AlbanyCanCode continued forwarding me opportunities that were available. Well, I followed through, went through the interview process again, and here I am.</p>
<h3 id="heading-the-accenture-interview-process">The Accenture interview process</h3>
<p>The Accenture interview process, as you might suspect, was a very long one. It's typical for large companies to take around 2-3 months to interview and find the right candidate. </p>
<p>You start with two HR interviews and tips to prepare for the technical interviews. The HR Managers and Recruiters are your biggest allies – and you should ask as many questions as you can so they can help you succeed. </p>
<p>Of course, you have to put in a ton of effort to get the role. For me, the Technical interviews were always the scariest part, and I used freeCodeCamp, Practicum, Hacker Rank, or Code Wars to prepare for the Algorithms and Data Structures parts. </p>
<p>Aside from actual interview prep, work on your portfolio projects and make sure you're active on GitHub. The technical interviewers are going to look for those things, and you will get questions about them. </p>
<p>One of the technical interviews will be focused on your coding and analytical thinking skills, and the other will be more centered on your problem-solving and soft skills.</p>
<h3 id="heading-life-at-accenture-after-i-got-the-job">Life at Accenture after I got the job</h3>
<p>So I got the job! And I recently joined Accenture as a Software Engineer. At the moment we are in training, and we started with Orientation in mid-September. </p>
<p>The second week we worked in teams on projects, learning the Accenture method of working and bringing value to clients. </p>
<p>After that, we started training on the project we are assigned to work on. Because Accenture works with clients such as Fortune 100 companies, Government agencies, and other high-profile clients, I can’t give you many details about my role. But I can give an idea of what is on my plate. </p>
<p>I will be working on a financial project for a 401K/retirement plan product, and I will be on the design team. Perhaps by the time I actually finish training and join my team I will be reassigned to a new project, who knows? </p>
<p>This is what I know I can expect at any moment while working with Accenture. I will not be bored, that’s for sure. Again, I just need to be able to embrace change and adapt quickly.</p>
<h3 id="heading-how-and-why-i-got-the-job">How and why I got the job</h3>
<p>I think that the strongest contributing factor to getting hired was my persistence preparing every day to deliver the best I could offer. It was not easy, and it took a lot of time and effort to do that much preparation constantly. </p>
<p>Also helpful was my ability to communicate even though I have gaps in my English. My problem solving skills and my determination are certainly some of my most valuable skills. Being able to ask questions to get clarification was very helpful.</p>
<p>And being able to think outside the box, seeing things differently and from every perspective, definitely gave me an advantage. </p>
<p>Finally, my experience living in different countries allowed me to see and learn things that otherwise I would not have been able to do if I had lived in the same place all my life.</p>
<p>The fact that I believed in myself, I worked hard to skill up, and that I stayed motivated and persisted all paid off in the end.</p>
<h2 id="heading-the-benefits-of-working-remotely">The Benefits of Working Remotely</h2>
<p>Even though I moved a lot and worked around the world, I reached a point in my life that remote work was a must to get more exposure.</p>
<p>I am married to an artist that uses aluminum for his creations. He needs big machinery to transform the aluminum in art. We had already moved once a few years ago for one of my previous jobs, and it was pretty tough to move those heavy tools. </p>
<p>Although I got an interview with Google in 2018 for a UX/UI position it required me to move to NYC – which was impossible. </p>
<p>But I also like my small town. I lived in Rome for 7 years, a real metropolis (which is pretty much like NYC as far as traffic and chaos goes). And now I find that I rather prefer and really enjoy my quiet life in New York state.</p>
<p>But what about going into the office? Well, I worked on premises and I liked the experience overall. I learned a lot from being around people, and I was able to ask questions and get my answers right away. And it would certainly be more difficult to create such an environment remotely.</p>
<p>On the other hand, working remotely as a freelancer and now for Accenture makes me more productive. I get to use the time I was spending driving to work or chatting with people around the company in a more productive way. </p>
<p>I also get the chance to disconnect from everything when I need it and just focus on my current project. </p>
<p>Luckily, this is easy in an environment like the one Accenture cultivates that is based on networking with more than half a million employees from around the world. If you need help with something you can just post a question on internal portals. You'll find so many of your colleagues willing to help you, answering your questions as soon as they can.</p>
<p>Being able to work in my own environment not only makes me more productive but at the same time even more creative. Seeing the sun, the rain or the snow from my window without having to go outside when the weather is bad doesn’t have a price. I can also choose to work from my terrace in the backyard and enjoy the beautiful weather.</p>
<p>And by working remotely I get to spend more time with my husband and our pets. I get to continue to skill up by using Accenture's training programs and technical books available on the Business English and on the Cloud.</p>
<h2 id="heading-so-whats-next">So What's Next?</h2>
<p>My professional focus for next year will be on growing with my team and delivering valuable contributions to the projects I’m working on. </p>
<p>At Accenture there are a lot of opportunities for professional growth, and that is what I’m looking for. I’m working on my skills and looking forward to new adventures – but first I have to deliver trust, value, and credibility, and create roots in the company. Then I'll just start to grow, like a tree.</p>
<p>I can tell that this has been a big change in my life – and it was my dream come true. I’m really excited about what the future holds. </p>
<p>At the same time there is a lot of learning I still have to do, and I have to live by the day and go one step at the time. My English is still in progress and I have to overcome my language gaps sometimes. Luckily working around people from all over the world makes it easier for me to learn and gain confidence.</p>
<p>Living my dream is a great motivator to keep getting better. I worked hard and sacrificed a lot to get here, and now I have to put in even more effort to keep going. </p>
<p>Happiness is not just reaching our goals but the journey to reach those goals. Getting the job I love makes me feel that it is not a job – it is my passion.</p>
<p>I am a dreamer, and that makes me want to grow in my career, get better at what I’m doing, and move forward. I like challenges and am looking forward to many more of them. I’m looking to grow every day and become a better version of me. This is just the beginning of a great story in my life!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Write a Developer Resume that Recruiters Will Read ]]>
                </title>
                <description>
                    <![CDATA[ By Gergely Orosz As a hiring manager, I’ve read hundreds of software developer resumes.  I’ve also talked to and interviewed dozens of recruiters and hiring managers who work at Facebook, Google, Spotify, Amazon, and other tech companies about the sa... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-write-a-developer-resume-recruiters-will-read/</link>
                <guid isPermaLink="false">66d45edb3dce891ac3a967f2</guid>
                
                    <category>
                        <![CDATA[ Interviewing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ resume ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 13 Nov 2020 01:40:12 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/11/Screenshot-2020-11-11-at-15.03.16.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Gergely Orosz</p>
<p>As a hiring manager, I’ve read hundreds of software developer resumes. </p>
<p>I’ve also talked to and interviewed dozens of recruiters and hiring managers who work at Facebook, Google, Spotify, Amazon, and other tech companies about the same topic while writing <a target="_blank" href="https://thetechresume.com/">The Tech Resume Inside Out</a>.</p>
<p>You’ve probably heard the statistic that recruiters spend an average of 6 seconds scanning a resume. And my experience confirms this. </p>
<p>But there are a lot of things you can do to make recruiters and hiring managers read what you want them to read on the first CV scan.</p>
<h2 id="heading-lets-take-a-step-back-who-will-read-your-resume">Let's take a step back: who will read your resume?</h2>
<p>Before jumping into advice on your resume format and content, we need to pause. Do you know who will actually read your resume at the company? Whose attention do you need to catch?</p>
<p>Here are the people who will - or could - read your resume.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/11/Screenshot-2020-11-11-at-12.19.45.png" alt="Image" width="600" height="400" loading="lazy">
<em>People in the hiring process who could read your resume</em></p>
<p>Let's look at each of their roles in more detail.</p>
<h3 id="heading-how-hiring-managers-will-read-your-resume">How hiring managers will read your resume</h3>
<p>Hiring managers are the people who opened the position—or headcounts, as it’s internally called. </p>
<p>They define the requirements and often write the job description. They set up the hiring process and define who the technical interviewers will be and what areas they should focus on. </p>
<p>And at smaller companies, they might screen all incoming resumes. But as the company grows, they won’t have time to do this.</p>
<h3 id="heading-how-hr-generalists-will-read-your-resume">How HR generalists will read your resume</h3>
<p>HR generalists might do resume screening at growing companies, who have yet to hire a dedicated recruiter. </p>
<p>These people get guidance from hiring managers and then try to see if there’s an overlap between your resume, the job description, and what the hiring manager asked for.</p>
<h3 id="heading-how-recruiters-will-read-your-resume">How recruiters will read your resume</h3>
<p>Recruiters often do most resume screening at mid-sized companies. </p>
<p>Some recruiters are more hands-on and understand technical terms better. Some might be closer to an HR generalist in their technical domain knowledge. </p>
<p>Recruiters will aim to determine if you could be a fit for the role based on your resume.</p>
<h3 id="heading-how-inbound-sourcers-will-read-your-resume">How inbound sourcers will read your resume</h3>
<p>Inbound sourcers are a specialized role within large tech companies, who get large loads of applications. They are recruiters who focus on sorting through the direct applications and do this for multiple positions at any given time. </p>
<p>Inbound sourcers tend to strictly follow the job requirements and guidance from recruiters and hiring managers. They are the ones who usually see the most resumes on any given day between all the roles discussed here.</p>
<h3 id="heading-how-the-interview-panel-will-read-your-resume">How the interview panel will read your resume</h3>
<p>The interview panel is the group of people who will interview you, assuming you make it through the resume screening (and, possibly, a recruiter call). </p>
<p>They get your resume forwarded and do a quick read-through before the interview. </p>
<p>There’s no need to impress this group: they are the people who might pay attention to your “interests” section, though, to kick off the conversation with an icebreaker.</p>
<p>Almost everyone who scans your resume will care that it <strong>shows you are a good fit for the job you applied for.</strong> </p>
<p>HR generalists, recruiters, and inbound sourcers all focus on the job description requirements and the hiring manager's expectations. </p>
<p>The only people who will be more flexible in “interpreting” your resume will be the hiring manager and experienced recruiters who have a good relationship with their hiring manager.</p>
<p><strong>This is important</strong>. Tailoring your resume for the position you apply for is the most important thing you can do to catch the recruiter’s attention. And once you have that attention, this will get them to read your CV in more detail.</p>
<h2 id="heading-tailor-your-resume-to-the-position">Tailor your resume to the position</h2>
<p>When you apply for a job, you probably feel qualified enough for that listing. You know your own strengths, your ability to learn quickly, and some examples of similar work you might have done, in a different setting.</p>
<p>However, the people reading your resume don’t have any context about you. So you can choose how to proceed. </p>
<p>Do you give a thorough overview of all your past achievements? Or do you focus on a shorter overview, highlighting the parts that show why <em>you</em> would be a great fit for <em>this</em> role?</p>
<h3 id="heading-craft-a-resume-that-shows-why-you-are-a-fit-for-that-specific-position">Craft a resume that shows why you are a fit for that specific position.</h3>
<p>Take a “master” version of your resume, then remove parts that hold less relevance to the position. </p>
<p>Switch up the order of bullet points or tech skills, and start with ones the position emphasizes more. Add examples or experiences that reflect on expectations or bonus points for the job.</p>
<p>I’ve noticed that developers are often nervous to remove bullet points from their past experiences. You shouldn’t be. </p>
<p>Your resume is a tool to get you the interview. Once you make it to the interview, you’ll have the opportunity to talk about the various things that you did that are not on the resume. </p>
<p>Be ruthless in removing things that don’t help convey why you are a good fit for that specific position.</p>
<h2 id="heading-talk-about-your-impact-and-specific-accomplishments">Talk about your impact and specific accomplishments</h2>
<p>When listing your work and project experiences, focus on what you achieved instead of what you did. </p>
<p>For the achievements, try to quantify these with the impact and (business) results. A framework you could use is “Accomplished {impact} as measured by {number} by doing {specific contribution}”. This is similar to <a target="_blank" href="https://www.linkedin.com/pulse/20140929001534-24454816-my-personal-formula-for-a-better-resume/">the structure Google encourages for resumes</a>. </p>
<p>You don't need to use the same wording. However, do make the impact clear, what your contribution was, and add specifics where you can.</p>
<h3 id="heading-use-numbers-on-your-resume">Use numbers on your resume</h3>
<p>Use numbers to convey the impact of your work or projects. Numbers grab the attention of hiring managers, and they also show that you are able to quantify the outcome of work and be specific about it. </p>
<p>For example, instead of saying<em>, “Built an open source JavaScript project to display dates.”</em>, say <em>“Built an open source JavaScript component for date display. The project has 5 contributors, 120 stars and 4 known production use cases.”</em></p>
<h3 id="heading-use-active-language-on-your-resume">Use active language on your resume</h3>
<p>Active language shows what you have done and how you have been proactive. </p>
<p>Use active verbs like “led”, “managed”, “drove”, “improved”, “rolled out” over passive ones like “improving” or “rolling out”.</p>
<h3 id="heading-mention-specific-languages-and-technologies-on-your-resume">Mention specific languages and technologies on your resume</h3>
<p>List the skills and tools that you've used towards the end of your description. Impact and your contribution are more important to convey than the technologies you know. </p>
<p>However, it’s worth calling out what tools you’ve used. Mentioning technologies in this context is more powerful for hiring managers and interviewers who are reading your resume in detail. </p>
<p>Here are a few examples of <a target="_blank" href="https://thetechresume.com/samples/resume-structure.html#languages">how to mention these programming languages in your CV</a>.</p>
<h3 id="heading-quantify-your-impact-wherever-you-can">Quantify your impact wherever you can</h3>
<p>This is important, so I'll emphasize it again: most resumes do not contain numbers. So if you add these specifics, you will stand out. </p>
<p>For example, instead of saying, “<em>Built a tool widely adopted by the company</em>”, say “<em>Led a team of 3 developers to build a dependency injection framework that was adopted by 15 teams and all 50+ developers at the company</em>”. </p>
<p>Numbers can be several things: number of people on the team, lines of code, code coverage % before and after, SLA changes, revenue generated by the project, and so on. </p>
<p>They can also be the number of users, number of installs, number of five-star ratings, number of customer support tickets you proactively resolved, and many others.</p>
<h2 id="heading-choose-a-clear-top-to-bottom-template-for-your-resume">Choose a clear, top-to-bottom template for your resume</h2>
<p>The benefit of being a software developer is that the format of your resume doesn’t matter, as long as it’s clear. The contents are what is important.</p>
<p>There are many resume templates out there. However, most of them were created for people who want to see <em>pretty</em> resumes. </p>
<p>What you’ll want is an <em>easy to read</em> resume. The best template for this is dead simple, and has the layout similar to this:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/11/Screenshot-2020-11-11-at-12.27.59.png" alt="Image" width="600" height="400" loading="lazy">
<em>The logical structure of an easy-to-read resume template: top to bottom, relevant parts for the position first</em></p>
<p>Keep the resume easy to read as you write the contents. You’ll want key details to “stand out” via whitespace or bolding that recruiters and hiring managers care about:</p>
<ul>
<li><strong>Your name</strong></li>
<li><strong>Location</strong> / residence</li>
<li><strong>Dates</strong> that tell roughly how many years of experience you have</li>
<li><strong>Languages &amp; technologies</strong> you are proficient with</li>
<li><strong>Titles &amp; company names</strong> from your past experience</li>
<li><strong>Standout</strong> information</li>
</ul>
<p>Resist highlighting anything else beyond the key pieces of information. Overusing highlighting or bolding defeats the purpose of this tool. </p>
<p>Take a look at <a target="_blank" href="https://blog.pragmaticengineer.com/the-pragmatic-engineers-resume-template/">this developer resume template</a> I created that gives you a sense of an easy-to-read CV.</p>
<h2 id="heading-be-careful-how-you-use-links-on-your-resume">Be careful how you use links on your resume</h2>
<p>Don’t make the reader dig out details on your resume. Many resumes have links to projects, technical blogs, or GitHub profiles. Hiring managers and recruiters who are technical often click through to these. </p>
<p>However, many developers miss the opportunity to give context in the resume, why a certain project is interesting, or highlight the blog post they’d want the recruiter to check out.</p>
<p><strong>For projects</strong> that you link to in your resume, mention interesting things about it. What was the complexity of building it? What are you proud of? What practices did you use in your approach? </p>
<p>Take these two descriptions of the same project:</p>
<ul>
<li><em>barePHP</em>: I used this project to learn about software architecture and design using the PHP programming language.</li>
<li><em>barePHP</em>: A minimal and progressive PHP framework for building efficient and scalable server-side applications. Designed with SOLID principles, testability and extensibility in mind.</li>
</ul>
<p>The second description provides more context around the project, and hiring managers will be more likely to check out the linked code.</p>
<p>Make sure projects you link have a clean README, and consider creating your personal GitHub README as well. You can see an example of mine <a target="_blank" href="https://github.com/gergelyorosz">here</a>.</p>
<p>For technical blogs you have written, add links to one or two of your most relevant technical articles in your resume (instead of just linking to your blog). This approach will let you control more what you’d like to show. </p>
<p>You’ll also guide your reader better, and they'll start by reading some of your best or most relevant content if they click through.</p>
<h2 id="heading-the-goal-of-your-resume">The goal of your resume</h2>
<p>If you follow the above advice, it should help guide recruiters and hiring managers to the important parts of your resume in the first scan. It'll also help make sure they come back to the whole thing, if you seem to be a good match.</p>
<p>Let's recap that advice:</p>
<ul>
<li>Send tailored resumes to postings</li>
<li>Highlight impact with specifics</li>
<li>Choose an easy-to-read format </li>
<li>Give context on links </li>
</ul>
<p>The one goal your resume should accomplish is conveying that you’ve got the experience that the position is looking for. </p>
<p>For more resume feedback, you can submit your anonymized resume to the <a target="_blank" href="https://www.reddit.com/r/cscareerquestions/search?q=author%3ACSCQMods+Resume+Advice+Thread&amp;restrict_sr=on&amp;sort=new&amp;t=all">regular resume feedback thread</a> on Reddit and read feedback from past sessions. </p>
<p>I’ve written the book <a target="_blank" href="https://thetechresume.com/">The Tech Resume Inside Out: what a good developer resume looks like</a>, which is free for any developer currently without a job.</p>
<p>If you’re job hunting: I hope the above advice helps, and I wish you the best of luck!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Prepare for a Technical Interview ]]>
                </title>
                <description>
                    <![CDATA[ By Victoria Opene In June 2020 I watched an inspiring talk by Anthony D. Mays, a technical coach and founder at Morgan Latimerco. He came on a Facebook Developer Circles Benin live session and talked about how to prepare for a technical interview.  D... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-prepare-for-a-technical-interview/</link>
                <guid isPermaLink="false">66d46171d7a4e35e384349c1</guid>
                
                    <category>
                        <![CDATA[ Interview tips ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interviewing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 29 Jul 2020 13:34:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/07/IMG_20191007_165237_5-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Victoria Opene</p>
<p>In June 2020 I watched an inspiring talk by Anthony D. Mays, a technical coach and founder at <a target="_blank" href="https://morganlatimer.com/">Morgan Latimerco</a>. He came on a Facebook Developer Circles Benin live session and talked about <a target="_blank" href="https://web.facebook.com/groups/DevCBenin/permalink/2739892036232755/">how to prepare for a technical interview</a>. </p>
<p>During the live session, he said that “Helping people to digest what you learn from me today and sharing with your network is a good thing”. When you learn something from someone, it is a good idea to pass that knowledge on to others. And if you look at that information closely, it's a good way to learn. </p>
<p>So, I decided to put into writing what he discussed during the live session along with my own personal experience. At the end of this article you will understand the following:</p>
<ul>
<li>How to get the attention of top companies</li>
<li>What happens when you have their attention</li>
<li>The type of interview you will likely get</li>
<li>A framework for problem-solving (6 steps to use in a technical interview)</li>
</ul>
<h2 id="heading-getting-started">Getting started</h2>
<p>In 2018, my friend and I had this dream of interning at big tech companies. It was pretty cool to have such big dreams, but the question here was “am I prepared for the task ahead of me?” </p>
<p>I remember joining LinkedIn for the first time and I didn't even know how to find my way around. I kept sending messages to different recruiters at big tech companies asking them to refer me for roles that were perhaps a bit out of my reach. </p>
<p>But do you know the funny thing? A lot of people make this same mistake. Before trying to get the attention of big tech companies you need to:</p>
<ul>
<li>Have a wide range of experience.</li>
<li>Be seen as someone innovative. You can show this in several ways, either by building something and publishing it, or by starting your own company or working with a startup.</li>
<li>Show that you are a problem solver by being able to discuss your impact.</li>
</ul>
<h2 id="heading-if-you-have-these-qualifications-how-do-you-get-the-attention-of-top-tech-companies">If you have these qualifications, how do you get the attention of top tech companies?</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/07/resume.jpg" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-have-an-awesome-resume">Have an awesome résumé</h3>
<p>Some people may be smart but their résumés are horrible. My first résumé was really bad, and whenever I look back at it I start laughing. </p>
<p>I looked for ways to improve my résumé by doing research and reaching out to some people on LinkedIn to help review it. It got to the point where I was changing my résumé up to twice a day. </p>
<p>I still wouldn't say that I am the best at writing a résumé, but if I compare the before and after, I have improved. </p>
<p>When writing your résumé, use as many numbers as you can – how many bugs did you fix, how much money did you raise, how many projects do you have on Github, what impact did you make, and so on. </p>
<p><strong>Please note:</strong> Your résumé should include your Linkedin profile, so make that profile look like your résumé. When you have an amazing profile recruiters might contact you through Linkedin. If you don't have a Linkedin profile, you should start one <a target="_blank" href="https://www.linkedin.com/">here</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/07/images--8-.jpg" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-get-referrals">Get Referrals</h3>
<p>If you get a referral, it should be from someone who knows you and is familiar with your work. If you don't know anyone, you can start building relationships with these people. </p>
<p><strong>Please note</strong>: A referral doesn't always get you the job, but it can help you jump to the front of the line so you get contacted.</p>
<h2 id="heading-what-happens-once-you-have-a-companys-attention">What happens once you have a company's attention?</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/07/Remote-interview-technical-940x588.jpg" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Getting the attention of the company allows you to talk to the recruiter about your background and whether the position might be a great fit for you. </p>
<p>If it is a great fit then you will go through several interview processes. Below is an example of some types of technical interviews you might go through.</p>
<h3 id="heading-phone-screen">Phone screen</h3>
<p>You may be contacted by an engineer to do a phone screen where you work through a technical question. </p>
<p>Make sure you prepare for your phone screen – you might have one or two of them. And if it goes well and you pass, you will be invited for an onsite or virtual interview depending on the company.</p>
<h3 id="heading-onsitevirtual-interview">Onsite/Virtual Interview</h3>
<p>If you’re applying for a software development position, you’ve got a special set of skills to prepare. Yes, you’ll be asked to code. No, you likely won't get a computer, just a whiteboard. </p>
<p>Whiteboard and coding interviews require a special set of skills. Even the best coders can get nailed on coding questions. </p>
<p>You might have to go through four or five onsite or virtual whiteboard interviews with different engineers. This is because the company wants to see how you work with different engineers who are very likely working on different kinds of problems. It also helps them see if you are well-rounded. </p>
<p>If you do well in all interviews, that's great. Just try to be consistent - if you do well in one but not in another, this can be confusing to those looking at your performance. </p>
<p>This process is the same in a virtual interview. The only difference is that instead of a whiteboard you will be asked to share your screen while they watch you code.</p>
<h3 id="heading-knowledge-based-interview">Knowledge-based interview</h3>
<p>These types of interviews test your knowledge. You will be asked things like how the framework you're using works, why you should make use of if-else statements, and so on.</p>
<h3 id="heading-behavioral-interview">Behavioral Interview</h3>
<p>Smaller tech companies are a bit different, but one similar thing is the behavioral interview. This often tests that you know how you solved a problem in a particular situation, how you work under pressure, and so on. </p>
<p>It is also good to know your résumé well so you can talk about the details listed on it.</p>
<h3 id="heading-project-based-interview">Project-based interview</h3>
<p>Typically, you will be given a project to work on. Then you return it in x hours or even days – it depends on the company.</p>
<h2 id="heading-a-framework-for-problem-solving">A framework for problem-solving</h2>
<p>Software companies are looking for good problem solvers. So the question is – <strong>how do you become an excellent problem solver?</strong></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/07/shutterstock_173967290.jpg" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Good problem solvers ask questions, and they know how to think up multiple solutions. Here are some strategies to help you improve your problem-solving skills.</p>
<h3 id="heading-6-problem-solving-steps-to-use-in-a-technical-interview"><strong>6 problem-solving steps to use in a technical interview:</strong></h3>
<ul>
<li>Repeat the question out loud</li>
<li>Follow up by asking questions to help understand the problem</li>
<li>Use an example so you know what the input looks like – you can draw it.</li>
<li>Brainstorm, and stop and think about one or two ways you can solve the problem. This is where <a target="_blank" href="https://www.bigocheatsheet.com/">Big O</a> comes into play.</li>
<li>Implement the technical solution</li>
<li>Test to be sure there are no errors in your code.</li>
</ul>
<p>These steps can also be applied to your day to day work as well. And you can test them out by doing a mock interview with another engineer – it'll really help you prepare for the actual interview.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Success, especially in interviews, requires a lot of hard work and time. I hope the tips I shared in this article help you get started in your tech career.</p>
<h3 id="heading-credit"><strong>Credit</strong></h3>
<p><a target="_blank" href="https://www.linkedin.com/in/anthonydmays">Anthony D. Mays</a> for his inspiring talk.</p>
<p>You can follow my blog <a target="_blank" href="https://vickyella.com/vickyella.com">here</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What I Learned from Doing 60+ Technical Interviews in 30 Days ]]>
                </title>
                <description>
                    <![CDATA[ By Uduak Obong-Eren In this article, I’ll share my motivation for doing 60+ technical interviews in 30 days. More importantly, I’ll share lessons learned from my failures and my successes. I’ve grouped the lessons into three categories to match the p... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/what-i-learned-from-doing-60-technical-interviews-in-30-days/</link>
                <guid isPermaLink="false">66d46171052ad259f07e4b3a</guid>
                
                    <category>
                        <![CDATA[ Interview tips ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interviewing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 26 Jun 2020 21:07:32 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/06/header-image.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Uduak Obong-Eren</p>
<p>In this article, I’ll share my motivation for doing 60+ technical interviews in 30 days. More importantly, I’ll share lessons learned from my failures and my successes.</p>
<p>I’ve grouped the lessons into three categories to match the phases of a typical recruitment process.</p>
<p>While most of the lessons apply directly to software engineers and technical professionals, the principles behind these lessons can be applied to all careers. I hope you find something useful that you can apply to your professional lives.</p>
<h2 id="heading-how-did-i-get-started">How did I get started?</h2>
<blockquote>
<p>“If you’re going to fail, do it fast.” — Unknown</p>
</blockquote>
<p>Like any other software engineer, I’ve had different types of technical interviews - from the dreaded whiteboard coding interview to the unreal 45-minute coding challenge on platforms like HackerRank. While some of my experiences in these interviews were great, others were bad. Really bad.</p>
<p>But I wanted to get really good at interviewing. I wanted to learn to overcome the interviewing phobia and exude confidence at interviews. Like a skilled surfer, I wanted to learn to ride the high pressure waves that came with interviews. I was also looking to change jobs at the time.</p>
<p>So from January through early March 2020, I applied to and was contacted by companies based in the US and Europe. From early-stage startups like Coda to later stage startups like Crunchbase, from mid-size companies like Affirm, to bigger companies like Amazon and even remote companies like Webflow.</p>
<p>109+ applications later, I landed myself more than 60 interviews. These comprised more than 60 introductory phone interviews, 50+ technical phone screen interviews, 18 take-home coding projects, 11 coding challenges and 8 on-site interviews including 3 virtual ones.</p>
<h2 id="heading-what-did-i-learn">What did I learn?</h2>
<p>For better appreciation, I have grouped the lessons into three categories to match the different phases of a typical recruitment process.</p>
<h2 id="heading-pre-interview-phase">Pre-Interview Phase</h2>
<p>This covers everything from the initial contact with a company to the point where the first interview happens.</p>
<h3 id="heading-what-i-learned-about-applications">What I learned about applications</h3>
<p>When I started applying to companies, I imagined that the more applications I submitted, the higher my chances of getting an interview would be. Seems logical, huh? So I set a target of 5 applications a day, aiming for 1 interview for every 5 applications.</p>
<p>But my strategy didn’t work as I hoped it would. The number of interview requests I got often fell short of my target. It was almost a 1:12 ratio - 1 interview for every 12 applications.</p>
<p>I was faced with the question: do I need to increase my daily target to, say, 10 companies? Or was there something else I needed to change? </p>
<p>With every unsuccessful application, I saw that something needed to change.</p>
<p>That change came when I took a break from meeting my daily numbers and began to think of my applications differently. I began to see each application as a sales pitch to the hiring manager or whoever was going to be reading my application, but here the product being sold was me. </p>
<p>If a company needed to fill a talent gap and I say I had the skills, I needed to find a way to convince them that I did.</p>
<p>My new task then became to find a way to effectively pitch <strong>my unique skills, experience and personality</strong> in a way that convinced the hiring manager that I was the right fit for the job.</p>
<p>Here is an example of one of such <em>pitches</em> I came up with:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/body-image.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Backed with my resume, this cover letter had a 95% success rate. The one time this didn’t work, the hiring manager still replied to let me know that the position was no longer available but he would like to connect in the future.</p>
<p>The lesson here is, be very intentional about the application you put forward – quality over quantity. Better still do both. Know your unique competencies and experience and present them in a way that matches the company’s needs without sacrificing your personality.</p>
<p>It is also important to understand the peculiarity of the company you are applying to and its specific needs. A startup or a smaller-sized company may have different needs from a bigger company, thus requiring a different skill-set.</p>
<p>Sell yourself and be sure to back your sales pitch during the interview.</p>
<h3 id="heading-what-i-learned-about-recruiter-in-mails">What I learned about recruiter in-mails</h3>
<p>During this period, I received a number of in-mails from recruiters (mostly unsolicited) for open roles, the majority of which were roles I wasn’t interested in.</p>
<p>Granted, it was sometimes a lot given my busy schedule but I learned to be empathetic, understanding that these recruiters were only trying to do their jobs.</p>
<p>I stopped seeing these in-mails as noise in my inbox and started making the effort to reply to all recruiter in-mails, even for positions I was not interested in. By doing this, I succeeded in building a network of recruiters that have become a rich resource if I have to switch roles in the future.</p>
<p>Now I don’t expect you may want to start replying to every in-mail you receive. But it might interest you to know that some of the interview requests I got were from recruiters I had replied to before for roles I wasn’t interested in. It never hurts to reply.</p>
<h2 id="heading-the-interview-phase">The Interview Phase</h2>
<p>This covers everything about the interview itself, cutting across the different interview types.</p>
<h3 id="heading-how-to-handle-introductory-phone-calls">How to handle introductory phone calls</h3>
<p>Yes I get it, you’re busy and many things are competing for your time. But hey, you are also an excellent professional, and that means you never get on a phone call without knowing at least these two things: </p>
<ul>
<li>the first name of your interviewer, and </li>
<li>at least one tangible thing about the company — what they do, where they are located, any recent news, something, anything!</li>
</ul>
<p>I noticed that for interviews where I put in the effort to make these findings, I always came across as being genuinely interested in the company. That’s something recruiters typically look for in these kinds of interviews.</p>
<h3 id="heading-how-to-handle-technical-phone-screens">How to handle technical phone screens</h3>
<p>The one thing that can almost single-handedly decide how well you do in a technical phone screen interview is your ability to communicate your thoughts clearly.</p>
<p>You may have heard stuff like this before:</p>
<p>“<em>The interviewers care about your thought process. Yes they can see your code but importantly, they want to know <strong>why</strong> you are doing what you’re doing</em>.”</p>
<p>The interviewer isn’t there with you and so does not have the luxury of seeing other non-verbal cues like your hand gestures or nuances. All the interviewer has is your voice as a means of understanding your thought process.</p>
<p>Now you know how you should lead this conversation, the next question is how do you become good at this? Because the truth is, while expressing your thoughts may come naturally to some people, it doesn’t to others – including me.</p>
<p>So – Practice! Practice!! Practice!!!</p>
<p>Practice doing a lot of mock interviews. Doing these mock interviews with friends made me better and more confident in explaining my thought process. But more interestingly, it helped me develop a new mindset about interviews.</p>
<p>I began to see interviews as a conversation with a friend or a team member. I visualized the interviewer on the other end as one of my friends (I sometimes gave the interviewer a name in my head). So what would have been a high-pressure interview I now saw as a friendly ‘chat’ about a technical problem.</p>
<p>This new mindset, aided by the many practice interviews, helped me grow in confidence so much so that I started enjoying interviews, sorry, technical chats.</p>
<h3 id="heading-how-to-get-started-on-a-problem">How to get started on a problem</h3>
<p>Never start solving a problem without fully understanding the problem statement. You are almost never wrong if you start by asking clarifying questions. It’s also a good sign to your interviewer when you ask those questions rather than run with your assumptions.</p>
<h3 id="heading-how-to-solve-the-problem">How to solve the problem</h3>
<p>Good candidates know how to solve a problem (e.g. a sorting problem), but the best candidates know multiple solutions to a problem and understand the trade-offs of one solution versus the other.</p>
<p>The interviews where I performed the best (Cruise comes to mind) are the ones where I didn’t just solve the algorithmic challenge – I was also able to provide alternative solutions and discuss the trade-offs.</p>
<p>Aim to provide multiple solutions to a problem, be willing to discuss the trade-offs, and be able to implement at least one of them.</p>
<p>For technical interviews, write clean code. Most interviewers care about your code quality as well as the correctness of your solution. Aim for modular code, separate reusable logic into utility functions, name variables and methods properly, and just be a boss!</p>
<h3 id="heading-what-to-do-when-youre-stuck-on-a-problem">What to do when you’re stuck on a problem</h3>
<p>There will be times when you’re stuck. And this could be caused by a number of reasons: you don’t have the requisite knowledge, incorrect assumptions, missing details, and so on.</p>
<p>I used to think that at such times I was being judged by how fast I could come up with a solution. So I would be quiet, thinking, not communicating with the interviewer, just thinking.</p>
<p>And this is where a lot of us get it wrong. I get it, you need some alone time to think. But sorry to burst your bubble, that alone time is not when you’re being interviewed by a person.</p>
<p>Yes, your interviewer wants to see that you can come up with a solution, but one thing you must not forget is that they also want to see that you can <strong>collaborate with other team-mates</strong> to come up with a solution. While companies want rock-stars, they also want team-players.</p>
<p>Since your interviewer is a friend, a buddy, a team member who’s on your side and means well for you (Refer to 4), talk to them while you're figuring it out. </p>
<p>Share your thought process up till the point you got stuck and do it confidently, not like some cry for help. By doing so you just may uncover the solution, as was the case during my interview with Coda.</p>
<h3 id="heading-how-to-handle-coding-challenges">How to handle coding challenges</h3>
<p>The lessons here apply to interviews that take the form of coding challenges on platforms like Hackerrank, Codility, and so on. Typically these are timed challenges, say 45 minutes or sometimes could be more.</p>
<p>Some of the lessons I shared earlier are useful here, while others like asking clarifying questions don’t apply since there’s no one to ask. So here are some steps I recommend:</p>
<ul>
<li>Read through and fully understand the problem.</li>
<li>Write code that works first, even if it’s a <a target="_blank" href="https://www.freecodecamp.org/news/brute-force-algorithms-explained/">brute-force algorithm</a>. It may not pass all the test cases but get some working code out there first, hopefully within the first 15–20 minutes.</li>
<li>Test your code with different input types, as this helps you handle edge cases.</li>
<li>Optimize for efficiency.</li>
<li>Repeat Steps 4 and 5, till the very last minute.</li>
</ul>
<p>A good grasp of computer science fundamentals is key here. I’ve added some links to helpful resources in the Resources section below.</p>
<h3 id="heading-how-to-handle-take-home-projects">How to handle take-home projects</h3>
<p>Take home projects are an opportunity to really shine because you have more time. This also means they can be time-consuming.</p>
<p>One of the companies I interviewed with provided hourly pay, about $68/hr, for the number of hours you worked on their take-home project — it’s that serious, so you should be serious about it. Be sure you really want to be a part of a company before investing your time in the take-home projects.</p>
<p>Never compromise on code quality for take-home projects. Be very intentional about your design decisions, naming conventions, code structure and so on, and be ready to defend your choices.</p>
<h3 id="heading-what-tools-should-you-use">What tools should you use?</h3>
<p>During my interview with Course Hero, I used <a target="_blank" href="https://en.wikipedia.org/wiki/Regular_expression">regex</a> to solve a problem I could have solved using a simpler string parsing algorithm. It turned out to be a bad decision as I didn’t pass the interview.</p>
<p>The lesson: only use tools you’re <strong>very</strong> comfortable with and have <strong>a lot</strong> of experience with.</p>
<h3 id="heading-how-to-approach-on-site-interviews">How to approach on-site interviews</h3>
<p>Get a good night's sleep the night before. Arrive early on the day of your interview and smile a lot (it helps portray confidence, but more importantly helps you stay relaxed and be in control).</p>
<p>Confront your fears and accept that even if this doesn’t work out it’s not going to be the end of the world – after all you’re just going to have another technical chat. Then go in and absolutely chat away.</p>
<p><strong>How to approach virtual on-site interviews</strong></p>
<p>These can be very different from on-site interviews because everybody’s eyes are on you – <strong>literally –</strong> and that can be nerve-racking.</p>
<p>I had three virtual on-site interviews and I didn’t pass any of them. Sorry I’m not your guy for this one, but I’ve shared some resources that I think you may find helpful below.</p>
<h2 id="heading-after-the-interview">After the Interview</h2>
<h3 id="heading-how-to-handle-failure">How to handle failure</h3>
<p>There are many reasons why you didn’t pass an interview. Some of the best engineers I know have failed interviews at some point and still do. </p>
<p>So separate failed interviews from yourself, look for the learning points from each failed interview, and use those to forge ahead. As they say – we move!</p>
<h3 id="heading-what-about-success">What about success?</h3>
<p>Celebrate your successes, regardless of how small you think they are.  I have a few ideas for celebration.</p>
<h2 id="heading-am-i-better-after-doing-this">Am I better after doing this?</h2>
<p>I’m not going to tell you that I've aced every interview that has come my way since I embarked on this journey. But assuredly, I can tell you I have gotten better at interviewing and my confidence levels have really grown. And yes, I also got multiple offers too ?.</p>
<h2 id="heading-what-should-you-do-next">What should you do next?</h2>
<ul>
<li>Practice doing a lot of mock interviews with friends. While I don’t totally agree that practice makes perfect (because perfection sounds like a moving target to me) practice helps you <strong>quickly</strong> identify patterns in interview questions, grow in mastery and ultimately your confidence.</li>
<li>For technical interviews, nothing beats a very good understanding of the fundamentals of data structures and algorithms. I’ve added links to resources I think you may find helpful.</li>
<li>Start interviewing and keep interviewing. Even if you have a job, aim to interview every now and then — maybe once every other month or a quarter. Interviewing is a skill, so keep honing it.</li>
</ul>
<p>I really hope this was helpful to you. And hopefully some of the lessons shared here will make you more confident and better at interviewing – and will ultimately help you land that job you really want.</p>
<p>If you ever need someone to do a mock interview with you, feel free to reach out to me on Twitter <a target="_blank" href="https://twitter.com/meekg33k"><strong>@meekg33k</strong></a>.</p>
<p><em><a target="_blank" href="https://peegin.com/e-go-be-2">E go be</a></em> ✌️ </p>
<h2 id="heading-helpful-resources">Helpful Resources</h2>
<ul>
<li><a target="_blank" href="https://learntocodewith.me/posts/technical-interview/"><strong>The Ultimate Guide to Acing Your Technical Interview | Learn to Code With Me</strong></a></li>
<li><a target="_blank" href="https://www.themuse.com/advice/how-to-ace-your-technical-interview"><strong>How to Ace Your Technical Interview</strong></a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/the-essential-guide-to-take-home-coding-challenges-a0e746220dd7/"><strong>The Essential Guide to Take-home Coding Challenges</strong></a></li>
<li><a target="_blank" href="https://firstround.com/review/The-anatomy-of-the-perfect-technical-interview-from-a-former-Amazon-VP/"><strong>The Anatomy of the Perfect Technical Interview from a Former Amazon VP</strong></a></li>
<li><a target="_blank" href="https://online.hbs.edu/blog/post/virtual-interview-tips"><strong>9 Tips for Mastering Your Next Virtual Interview | HBS Online</strong></a></li>
<li><a target="_blank" href="https://www.salary.com/passages/8-tips-for-acing-virtual-interviews/3/"><strong>8 Skype Interview Tips: Ace Your Virtual Job Interview</strong></a></li>
</ul>
<p>Thanks to <a target="_blank" href="https://twitter.com/isaaczara_">Isaac Zara</a> for the header image for this article.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ The Best Code Interview Prep Platforms in 2020 ]]>
                </title>
                <description>
                    <![CDATA[ By Daniel Borowski Software developer interviews are rapidly evolving. Years ago, mastering data structures and common algorithms was enough to ace an interview and get a job. Today though, employers want candidates with real-world experience and ski... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/the-best-code-interview-prep-platforms-in-2020/</link>
                <guid isPermaLink="false">66d45e087df3a1f32ee7f805</guid>
                
                    <category>
                        <![CDATA[ coding challenge ]]>
                    </category>
                
                    <category>
                        <![CDATA[ interview questions ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interviewing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Interview ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 10 Jun 2020 16:22:31 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/06/interviewprepcover.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Daniel Borowski</p>
<p>Software developer interviews are rapidly evolving. Years ago, mastering data structures and common algorithms was enough to ace an interview and get a job. Today though, employers want candidates with real-world experience and skills. </p>
<p>That’s why many interviewers won’t even ask data structure or algorithm questions at all. Instead, they'll focus on proficiencies with full-stack technologies and collaboration skills. </p>
<p>Job seekers would be wise to practice code challenges and take mock interviews to make sure they’re prepared. There are countless books and resources, such as <a target="_blank" href="https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850">Cracking The Coding Interview</a>, and <a target="_blank" href="https://www.freecodecamp.org/news/the-8-most-popular-coding-challenge-websites-of-2020/">popular online code challenge websites</a>. </p>
<p>In addition to those resources, here are the best code interview prep platforms for developer candidates.</p>
<h2 id="heading-coderbyte">Coderbyte</h2>
<p>Helpful links: <a target="_blank" href="https://coderbyte.com/">Website</a> | <a target="_blank" href="https://coderbyte.com/#courses">Interview Prep</a> | <a target="_blank" href="https://medium.com/coderbyte">Blog</a> | <a target="_blank" href="https://coderbyte.com/member">Pricing</a></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/Coderbyte-Interview-Kit.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Coderbyte, my website, is the only site to offer full-stack coding challenges, interview prep courses, and mock interviews. With 500+ challenges, articles, and videos across algorithm, front-end, and even database technologies, you can quickly assess and refine your skills for any role. We also showcase user-submitted and official solutions for all challenges.</p>
<h2 id="heading-interview-cake">Interview Cake</h2>
<p>Helpful links: <a target="_blank" href="https://www.interviewcake.com/">Website</a> | <a target="_blank" href="https://www.interviewcake.com/table-of-contents">Interview Prep</a> | <a target="_blank" href="https://www.interviewcake.com/coding-interview-beginner-faq">Blog</a> | <a target="_blank" href="https://www.interviewcake.com/upgrade">Pricing</a></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/Screen-Shot-2020-06-07-at-9.04.01-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Frequently considered the best source for interview articles, tips, and content, Interview Cake is a crash course in getting a software development job. </p>
<p>They offer courses that are specific to leading technology companies, and provide guidance beyond solving coding problems, such as advice on how to effectively communicate with interviewers even when you don’t know the answer.</p>
<h2 id="heading-algoexpert">AlgoExpert</h2>
<p>Helpful links: <a target="_blank" href="https://www.algoexpert.io/product">Website</a> | <a target="_blank" href="https://www.algoexpert.io/questions">Interview Prep</a> | <a target="_blank" href="https://www.algoexpert.io/blog">Blog</a> | <a target="_blank" href="https://www.algoexpert.io/purchase">Pricing</a></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/Screen-Shot-2020-06-07-at-9.06.42-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>AlgoExpert is one of the original coding challenge websites. The site offers tons of video tutorials, certifications, and interview tips. Their interview prep includes a selection of 100 challenges across all types of technologies and roles.</p>
<h2 id="heading-interviewingio">Interviewing.io</h2>
<p>Helpful links: <a target="_blank" href="https://interviewing.io/">Website</a> | <a target="_blank" href="https://interviewing.io/recordings">Interview Prep</a> | <a target="_blank" href="https://blog.interviewing.io/">Blog</a> | <a target="_blank" href="https://interviewing.io/faq/">Pricing</a></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/Screen-Shot-2020-06-07-at-9.08.44-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Interviewing.io takes a very unique approach to coding interview prep. Rather than providing content and practice coding challenges, Interviewing.io has a library of actual video interviews that you can watch, and you can pay to anonymously take a mock interview with an engineering hiring manager. </p>
<p>You may still need to practice coding on another site, but this is a great investment to get actionable feedback.</p>
<h2 id="heading-leetcode">Leetcode</h2>
<p>Helpful links: <a target="_blank" href="https://leetcode.com/">Website</a> | <a target="_blank" href="https://leetcode.com/interview/">Interview Prep</a> | <a target="_blank" href="https://leetcode.com/articles/">Blog</a> | <a target="_blank" href="https://leetcode.com/subscribe/">Pricing</a></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/Screen-Shot-2020-06-07-at-8.59.53-PM.png" alt="Leetcode platform" width="600" height="400" loading="lazy"></p>
<p>Like Coderbyte and AlgoExpert, Leetcode is one of the original coding challenge websites. They offer many interview prep courses for tech companies and roles, and display the average scores for different cohorts of developers so you can easily benchmark.</p>
<h2 id="heading-hackerearth">HackerEarth</h2>
<p>Helpful links: <a target="_blank" href="https://www.hackerearth.com/for-developers">Website</a> | <a target="_blank" href="https://www.hackerearth.com/practice/interviews/">Interview Prep</a> | <a target="_blank" href="https://www.hackerearth.com/blog/developers/">Blog</a> | Pricing: all content free</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/Screen-Shot-2020-06-07-at-8.57.52-PM.png" alt="HackerEarth platform" width="600" height="400" loading="lazy"></p>
<p>Famous for their coding competitions and hackathons, HackerEarth recently launched a feature for mock interviews. </p>
<p>They have a massive community of international developers and companies, so this is a great site if you are also looking to connect with a potential employer.</p>
<h2 id="heading-hackerrank">HackerRank</h2>
<p>Helpful links: <a target="_blank" href="https://www.hackerrank.com/dashboard">Website</a> | <a target="_blank" href="https://www.hackerrank.com/interview/interview-preparation-kit">Interview Prep</a> | <a target="_blank" href="https://blog.hackerrank.com/">Blog</a> | Pricing: all content free</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/Screen-Shot-2020-06-07-at-9.04.51-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Known for their recruiting tools, HackerRank also offers code challenges and interview prep for developers. There's no premium version, so you can access their strong library of challenges for free. It’s a good place to start for a job seeker that isn’t sure yet if they are ready to invest in premium interview prep.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How I Got a Job Fourteen Days After My Coding Bootcamp ]]>
                </title>
                <description>
                    <![CDATA[ By Randall Kanna Fourteen days after I graduated from my coding bootcamp, I had a job offer. Two weeks after that, I started my first engineering job at a small startup. Here are some of the best tactics and strategies I used. Treat your job search l... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-i-got-a-job-two-weeks-after-my-coding-bootcamp-2/</link>
                <guid isPermaLink="false">66d460c7868774922c885000</guid>
                
                    <category>
                        <![CDATA[ Coding Bootcamps ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interviewing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ jobs ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 22 Apr 2020 16:02:06 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c9b86740569d1a4ca2c4e.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Randall Kanna</p>
<p><em>Fourteen days after I graduated from my coding bootcamp, I had a job offer. Two weeks after that, I started my first engineering job at a small startup.</em></p>
<p>Here are some of the best tactics and strategies I used.</p>
<h2 id="heading-treat-your-job-search-like-its-your-job">Treat your job search like it’s your job.</h2>
<p>When I graduated from coding boot camp, I was exhausted. It had been the most exhausting three months of my life.</p>
<p>I had spent three months onsite completing the program six days a week.</p>
<p>My boot camp cohort had started with 60 people. Guess how many graduated? 12!</p>
<p>After it was over, a part of me wanted to relax and decompress for a few weeks, but I spent more than $15,000 on tuition and living in San Francisco for three months, so I needed a job — fast. </p>
<p>Also, I wanted to continue the momentum I had gained from graduating. </p>
<p>I read that a lot of previous students let their skills get rusty, and it had taken them 6–12 months (or longer) to find a job.</p>
<p>My solution: I decided I had a job — it was to find a job. From the hours of 9:00 AM to 6:00 PM, I was job hunting. I continually updated my resume, scanned new job listings, reached out to connections, found meetups to attend, and continued to hone my skills.</p>
<p>After 6 PM, I wouldn't respond to recruiter emails or do any prep work for interviews. I used that time to recuperate and prepare for the next day of job hunting and refined my approach and tactics as I went along.</p>
<h2 id="heading-make-yourself-stand-out-in-the-application-process"><strong>Make yourself stand out in the application process</strong></h2>
<p>I applied to dozens of jobs every day. Still, my job search didn't get far until I started customizing the application to the company and sending a personalized email about why I wanted to work there. If you look at AngelList or LinkedIn, you'll see dozens (sometimes hundreds) of applicants applying to one job.</p>
<p>If you can find a way to stand out, you'll drastically increase your odds of getting an interview with the company you want. I created a list of companies that I found on LinkedIn and AngelList that I was interested in. And even if they didn't have a junior developer position posted, I reached out to them with a personalized email.</p>
<p>(Many times companies can fill a position so quickly through referrals that the job will never get posted online.)</p>
<p>Personal connections were also a big advantage. I wrote a customized message to recruiters I connected with on LinkedIn and asked them if they had anything available at the company that might be a good job fit for me.</p>
<h2 id="heading-optimizing-my-linkedin-profile">Optimizing my LinkedIn Profile</h2>
<p>LinkedIn is your online resume. If you optimize your profile by following my tips below, more recruiters will find your LinkedIn profile, and you'll get more interviews.</p>
<p>Even though I hadn't landed a coding job yet, I put "Junior Frontend Developer" as my headline because it meant I would show up in search results when recruiters search for frontend developers to hire.  </p>
<p>I filled out my <a target="_blank" href="https://www.linkedin.com/in/randallkanna/">LinkedIn</a> with my previous jobs to show that even though I didn't have a lot of engineering experience, I worked before and was paid to code in some of my earlier roles. I also made sure to add an accomplishments section to each job that detailed my biggest wins. </p>
<p>And because I didn't have a computer science degree, I added every course I had taken and every coding certification I had. </p>
<p>This demonstrated to companies that I was self-taught and that I was learning on my own time and dedicated to improving my coding skills. </p>
<p>Several companies commented on how robust the course and certifications section was for a boot camp graduate and how it had piqued their interest.</p>
<h2 id="heading-quickly-move-on-if-a-role-or-company-isnt-a-good-fit">Quickly move on if a role or company isn’t a good fit</h2>
<p>I feel like I went through a six-month interview process in two weeks. I quickly went through the interview process for as many companies as possible, went to meetups for networking, and customized my resume constantly to tailor it to each application.</p>
<p>For instance, I knew I would not do well at companies that focused on algorithms and prioritized having a CS background, so I intentionally searched for companies that included mentorships and real-world expertise as part of their criteria. I found blog posts on apprenticeships and mentorships and reached out to the employees who wrote them and asked if they knew if the company was hiring junior engineers.</p>
<p>I also used the interview process to determine if a company would be a good cultural fit.</p>
<p>A few companies had interview processes that were equivalent to Google's. These expected coding boot camp graduates to be able to solve complex algorithms that even a software engineer with a CS degree and years of experience would have struggled to complete.</p>
<p>I knew that if they were expected to have that level of expertise during the interview process it was unlikely that the company had a culture that was welcoming to junior engineers. I moved on.</p>
<p>Some people in my cohort focused on their algorithm skills and building a CS foundation, and it took a little longer to find a job, but they started out with better titles and higher pay.</p>
<h2 id="heading-build-a-coding-portfolio">Build a coding portfolio</h2>
<p>I had a robust portfolio because of the months spent at the boot camp and building apps on my own. During the interviews I shared with prospective companies what I had learned during each project. In my final project, I had focused mostly on frontend so I took that work to companies and detailed exactly what I had worked on.</p>
<p>I was able to sit down with interviewers and discuss my thought process and why I had made the decisions I did.</p>
<p>If you don't have a portfolio, get started on something small and push it up to GitHub. Each time you create a new project, challenge yourself to make it a little more complex than the last. Here are a few great resources on creating a coding portfolio.</p>
<p>Here are a few great resources on creating a portfolio.</p>
<p><a target="_blank" href="https://www.freecodecamp.org/news/portfolio-app-using-react-618814e35843/">Creating a Portfolio with React</a></p>
<p><a target="_blank" href="https://www.freecodecamp.org/news/build-and-deploy-your-own-personal-portfolio-site/">Build and Deploy Your Own Personal Site</a></p>
<p><a target="_blank" href="https://www.freecodecamp.org/news/15-web-developer-portfolios-to-inspire-you-137fb1743cae/">15 Developer Portfolios to Inspire You</a></p>
<p><a target="_blank" href="https://www.freecodecamp.org/news/how-to-build-a-portfolio-website-and-deploy-to-digital-ocean/">How to Build and Deploy Your Portfolio</a> - video course</p>
<h2 id="heading-prove-you-are-eager-to-learn">Prove you are eager to learn</h2>
<p>Two companies I interviewed with told me I could build a project in the framework that I was most comfortable in. But I knew that if I spent a little time learning the framework that they used, I would improve my odds of standing out.</p>
<p>Over one weekend, I taught myself the framework a company used and built a small (and very barely working) app that used it. I was able to discuss the principles of the framework. And even though my app broke during the demo, I got the job.</p>
<h2 id="heading-focus-on-strengths-not-weaknesses">Focus on Strengths not Weaknesses</h2>
<p>No, I had no engineering experience, but I worked on high-profile political campaigns that are fast-moving and demanding. I also did what was needed even if it was outside the role I was hired for.  </p>
<p>Turn the conversation to your strengths and universal skills all companies want in their hires.</p>
<h2 id="heading-youre-not-married-until-theres-a-ring">You're not married until there's a ring</h2>
<p>My coding boot camp gave me a piece of advice that I've never forgotten: <strong>"Until you are married, you keep dancing with other partners."</strong></p>
<p>Translation: Unless you have a signed offer in your hand, don't assume any offer is finalized. Until you have a signed offer from a company in your hands, don't act as you do. Keep interviewing at as many places as you can and do as many coding take-homes as possible.</p>
<p>Not only will this save you from disappointment if you don't get the offer (which is not a good thing) you'll have other offers to negotiate with later. </p>
<h2 id="heading-wrapping-up">Wrapping up</h2>
<p>Going from a tired boot camp graduate to an employed engineer at a great startup in less than a month wasn't easy. But everything I've shared with you will help you avoid the pitfalls and optimize what works. Anyone can get a job in coding if you treat your job search as if it’s your job and keep improving your skills.</p>
<p>If you want more details on how you can standout in your job search, I have a new <a target="_blank" href="https://randallkanna.com/the-standout-developer/">book</a> coming out on June 29th.</p>
<p>Connect with me on <a target="_blank" href="https://twitter.com/RandallKanna">Twitter</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
