<?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[ Job Interview - 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[ Job Interview - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 16 May 2026 14:12:46 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/job-interview/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ How to Prepare for Data Analyst Job Interviews ]]>
                </title>
                <description>
                    <![CDATA[ By Jess Wilk In today’s digital world, every business and organization collects and uses data to build better products, target the right customers, improve efficiency, and even forecast future demand.  They say that data is the new oil – and now is t... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/prepare-for-data-analyst-job-interview/</link>
                <guid isPermaLink="false">66d45f6b51f567b42d9f8465</guid>
                
                    <category>
                        <![CDATA[ data analysis ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Interview ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 12 Jan 2024 17:31:48 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2024/08/pexels-alex-green-5699475--1-.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Jess Wilk</p>
<p>In today’s digital world, every business and organization collects and uses data to build better products, target the right customers, improve efficiency, and even forecast future demand. </p>
<p>They say that data is the new oil – and now is the perfect time to enter the data analytics job market. </p>
<p>According to <a target="_blank" href="https://www.payscale.com/research/US/Job=Junior_Data_Analyst/Salary">PayScale</a>, the average salary for entry-level roles in analytics is around $55,492 per year. The average salary for a <a target="_blank" href="https://www.payscale.com/research/US/Job=Senior_Data_Analyst/Salary">skilled analyst</a> is about $88,928 per year. Even if you are a beginner to programming in Python, you can learn the essential skills for data analysis quickly if you are consistent.</p>
<p>In this article, I’ll go over what Data Analytics skills you'll need to know, and how to prepare for and ace interviews to land a Data Analyst position with Python.</p>
<h2 id="heading-what-does-a-data-analyst-do">What Does a Data Analyst Do?</h2>
<p>As a data analyst, your primary responsibility is transforming raw data into meaningful insights. </p>
<p>Usually, the job description involves cleaning and organizing data to make sure that the quality of data is good. You'll also perform statistical analysis, interpret trends in complex datasets, build models, and create visualizations to communicate findings effectively. This information will help teams make business decisions and get valuable insights for the company's managers and key stakeholders.</p>
<p>Market research analysts collect and evaluate consumer and competitor data. A business analyst for Walmart could analyze purchase trends and identify seasonal patterns during events like Black Friday, Christmas, and New Year. This data could help the company expect higher demand and re-stock. </p>
<p>A data analyst at IKEA might analyze customer preferences in different rural and urban regions to better strategize which products to sell. </p>
<p>Data plays a role in every stage of a company, from market sizing and customer acquisition to advertising, customer journey, final conversion rate, and data-driven decisions. </p>
<p>Since I started working in data science, I have always felt like a little detective uncovering patterns and hidden knowledge. Are you now excited to learn how to become a data analyst? Let’s start with actionable insights.</p>
<h2 id="heading-essential-technical-skills-to-develop">Essential Technical Skills to Develop</h2>
<p>The first step while preparing for any role is identifying and learning the right skills. Here are the essential and in-demand skills you should learn to become a data analyst:</p>
<h3 id="heading-python-programming">Python Programming</h3>
<p>One of the most crucial skills for a data analyst is proficiency in the Python programming language. Python is widely used in organizations to perform various tasks such as handling datasets, cleaning and manipulating them, and carrying out statistical analysis. </p>
<p>The popularity of Python stems from its ability to support a plethora of open-source packages and libraries and its flexibility and user-friendliness. I am confident that Python will continue to be an indispensable tool for data analysts in 2024. </p>
<p>If you’re new to Python, you can check out the <a target="_blank" href="https://hyperskill.org/tracks/6">Introduction to Python</a> course on Hyperskill with hands-on projects, where I contribute as an expert. You don't need any degree to start learning.</p>
<p>But Python is vast – where should you start?</p>
<p>Start by learning basic syntax and data structures like lists, dictionaries, classes, and so on. </p>
<p>Once you are comfortable with the basics, get familiar with the essential libraries like Pandas (to read and manipulate data frames), Numpy (for statistical analysis), Matplotlib, and Seaborn for data visualization (creating plots).</p>
<ul>
<li>Here's a helpful course that teaches you <a target="_blank" href="https://www.freecodecamp.org/news/learn-pandas-for-data-science/">Pandas and Python for Data Analysis</a>.</li>
<li>This course teaches you how to use <a target="_blank" href="https://www.freecodecamp.org/news/introduction-to-data-vizualization-using-matplotlib/">Matplotlib for data visualization</a>.</li>
<li>Here's an in-depth guide to using <a target="_blank" href="https://www.freecodecamp.org/news/the-ultimate-guide-to-the-numpy-scientific-computing-library-for-python/">NumPy for scientific computing in Python</a>.</li>
</ul>
<p><img src="https://lh7-us.googleusercontent.com/9eK_ePxpe3FAkliq4MSpt2CqKjE3Wo-bKxsZTIqHx2lc6gKzm6MEXF-xGYq4xjzF73zjV8FvYyu4y-z8MAHE-7REXFkXOr6_Pr8vmTXXb9YzHyFfM6eBDCJYHRueiALL21qa8WBRjNu8xHV51vQ31Yw" alt="Image" width="600" height="400" loading="lazy">
<em>Python logo</em></p>
<h3 id="heading-sql">SQL</h3>
<p>SQL (Structured Query Language) helps you interact with large relational databases. You should learn how to create and update SQL tables, perform filtering and aggregation, and extract insights. <a target="_blank" href="https://www.freecodecamp.org/news/learn-mysql-beginners-course/">MySQL is a commonly used syntax</a>. </p>
<p>You can check out the <a target="_blank" href="https://hyperskill.org/tracks/31?category=8">SQL course</a> for beginners on Hyperskill. And if you want a text-based overview, <a target="_blank" href="https://www.freecodecamp.org/news/a-beginners-guide-to-sql/">here's a full handbook</a> that teaches you all the SQL basics you'll need to know.</p>
<h3 id="heading-data-visualization-tools-and-software">Data Visualization Tools and Software</h3>
<p>Analysing the data is the process, but presenting your insights is the final destination. You must master visualization analytics tools like <a target="_blank" href="https://www.freecodecamp.org/news/tableau-for-data-science-and-data-visualization-crash-course/">Tableau software</a> or <a target="_blank" href="https://www.freecodecamp.org/news/python-in-powerbi/">Power BI</a> to create dashboards and reports. </p>
<p>As a data analyst, you may have to present your findings to non-technical teams interpretably. There are also many advanced methods, like interactive dashboards and geographic mapping, for visualizing spatial data to help make informed decisions.</p>
<h3 id="heading-statistics">Statistics</h3>
<p>Probability and Statistics cover a wide range of essential concepts for anyone working with data. You should know the basic types of distributions, such as Normal, poisson, and skewed, and how to handle each. </p>
<p>Many metrics, like mean, median, and standard deviation, can help analyze numerical variables and identify anomalies or outliers. P-value and Hypothesis testing are also critical.</p>
<p>Here's a tutorial on the <a target="_blank" href="https://www.freecodecamp.org/news/top-statistics-concepts-to-know-before-getting-into-data-science/">top Stats concepts to know before getting into Data Science</a> if you want to check your skills.</p>
<h3 id="heading-excel">Excel</h3>
<p>Even though most of us are familiar with <a target="_blank" href="https://www.freecodecamp.org/news/learn-microsoft-excel/">Excel basics</a>, you should learn functions like VLOOKUP, HLOOKUP, INDEX, MATCH, and IF statements for data manipulation. </p>
<p>Understanding <a target="_blank" href="https://www.freecodecamp.org/news/how-to-create-a-pivot-table-in-excel/">how to use PivotTables</a> for summarizing and analyzing large datasets and enabling dynamic data exploration is crucial.</p>
<p>If you want to learn more about how you can use Excel for data analysis, <a target="_blank" href="https://www.freecodecamp.org/news/data-analysis-with-python-for-excel-users-course/">here's a course on that</a>.</p>
<h2 id="heading-develop-your-portfolio">Develop Your Portfolio</h2>
<p>The data analytics industry is highly profitable but also fiercely competitive. More than simply working through courses and acquiring skills is required to stand out. </p>
<p>To become a successful data analyst, you must <a target="_blank" href="https://www.freecodecamp.org/news/level-up-developer-portfolio/">build a portfolio of projects</a> demonstrating your abilities. </p>
<p>Once you're familiar with the relevant technology, identify a problem that requires analysis and locate a publicly available dataset. Analyze the dataset using various methods and extract any meaningful insights. If you don't have a degree, focus on making your portfolio the best you can.</p>
<p>Kaggle is a best friend to any data analyst beginner. Numerous datasets are available in all fields, from movie reviews and tweets to medical X-rays. Open notebooks allow you to see what expert data scientists have worked on with the same dataset. This is a great way to get guidance on approach and inspiration for ideas to try out.</p>
<p>For example, take the popular <a target="_blank" href="https://www.kaggle.com/datasets/lakshmi25npathi/imdb-dataset-of-50k-movie-reviews">Kaggle dataset of IMDB Movie reviews</a>. What can you do with it? I’ll share a few ideas to help you get started. </p>
<p>You can begin at a basic level by calculating statistics to summarize critical metrics such as average rating, distribution of ratings, and the most reviewed genres. </p>
<p>Then you could use natural language processing (NLP) techniques to perform sentiment analysis on the movie reviews. </p>
<p>Next, create visualizations to present findings effectively. For instance, plot sentiment scores over time, visualize the distribution of reviews across genres, or create a word cloud highlighting frequently used words in positive and negative reviews.</p>
<p>Tailoring your projects to align with your interests and the specific requirements of potential employers will make your portfolio stand out in a sea of applicants. </p>
<p>For example, if you want to work in healthcare, do a project that adds value to the field. Remember, it's not just about the code; it's about telling a compelling story with the data.</p>
<p>Finally, you'll want to scrape and analyze real-time data. Build a tool that tracks social media sentiment about a brand or analyzes website traffic patterns.</p>
<h2 id="heading-how-to-build-a-good-cv">How to Build a Good CV</h2>
<p>The first stage of any job application is shortlisting based on your CV (or résumé). Creating a concise and technically sound CV/résumé to increase your odds is crucial. </p>
<p>Your CV must be based on your educational background, coursework information, achievements, prior internships or work experience, and extracurriculars. </p>
<p>Let me share a few tips on creating a compelling CV or résumé:</p>
<ul>
<li><strong>Custom CVs</strong>: When creating your résumé, customize it to the job you are applying for. Emphasize the skills and projects that are most relevant to the specific role. If appropriate, you can also include any extracurricular activities demonstrating your ability to manage a team. But you must provide only accurate information – this should go without saying, but embellishing your résumé beyond your actual experience is unacceptable.</li>
<li><strong>Quantify your achievements:</strong> Instead of mentioning that you <em>conducted data analysis</em>, mention specific projects, tools used, and your impact. For example, you could say that you increased website conversion rate by 15% through A/B testing. Remember to add any Python libraries, frameworks, and tools you used.</li>
<li><strong>Keep it concise and visually appealing:</strong> Recruiters review hundreds of résumés and may need help reading each line in the first round. So make a résumé that simultaneously conveys your skills and experience highlights. Use bullet points, clear headings, and formatting when needed to highlight certain aspects.</li>
</ul>
<h2 id="heading-tips-to-ace-the-technical-interview">Tips to Ace the Technical Interview</h2>
<p>The final stage is the technical interview. Below, I have gathered some tips that will help you understand what your preparation might involve, along with examples of questions you might encounter. Remember that each case is unique and you should use these as general guidelines.</p>
<p>First, make sure you <strong>practice coding a lot</strong>. You can use platforms like HackerRank or LeetCode. Remember that transparent and efficient code is vital for passing an interview. For example, you might be asked to describe the correct syntax for the <code>reshape()</code> function in NumPy.</p>
<p>Next, make sure you are comfortable <strong>working with SQL</strong>. You'll need to know how to handle complex queries, joins, subqueries, and data manipulation in SQL. A question like "How do you subset or filter data in SQL?" or "What is a Subquery in SQL?" could come up.</p>
<p>You should also be prepared to discuss and demonstrate your <strong>skills in data visualization</strong>. You should be able to explain your choices in visualization for different types of data. For instance, "How is joining different from blending in Tableau?" or "What is the difference between Treemaps and Heatmaps in Tableau?"</p>
<p>You'll also want to have a <strong>good understanding of statistics</strong>. Be prepared to discuss statistical concepts like mean, median, mode, standard deviation, correlation, and regression analysis. </p>
<p>You might be asked to interpret data or explain the significance of statistical findings in a business context, such as "Explain the term Normal Distribution” or “How do you treat outliers in a dataset?”</p>
<p>Next, make sure you have a solid foundation in <strong>data cleaning and preprocessing</strong>. Be ready to talk about experiences with cleaning and preparing data, involving dealing with missing values, outlier detection, and normalization. </p>
<p>Knowing tools like Pandas in Python can be particularly beneficial. An example question could be, "How can you add a column to a Pandas Data Frame?"</p>
<p>Be comfortable with <strong>data-driven decision making</strong>. You might be asked to explain how you have used data to inform decision-making in past experiences in order to demonstrate your ability to draw conclusions from collected data and use it for the company's business decisions.</p>
<p>You should also be able to <strong>showcase your past work</strong>. If possible, bring examples of your past work or projects, such as a portfolio or detailed case studies. </p>
<p>Be ready to discuss the challenges faced, how you approached them, and the outcomes. Questions like "Have you ever run an analysis on the wrong set of data? How did you figure out your error?" can be expected.</p>
<p>Also, don't neglect <strong>behavioral skills</strong>. Be prepared for behavioral questions that explore your problem-solving skills, teamwork, and ability to handle deadlines and pressure. Reflect on your past experiences and be ready to share stories that highlight these skills.</p>
<p>And finally, brush up on your <strong>industry knowledge</strong>. If the company operates in a specific industry (like finance, healthcare, retail, and so on), having some background knowledge or experience in that industry can be advantageous. Tailor your preparation to understand the unique data challenges and opportunities in that sector.</p>
<p>Remember, each company may have a different focus in their technical interviews, so try to get as much information as possible about the interview format beforehand. This way, you can tailor your preparation to meet their specific expectations.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Becoming a data analyst is a marathon, not a sprint.</p>
<p>If you are interested in a career as a data analyst, Python is an excellent language to learn. It is a versatile tool that allows you to manipulate, analyze, and visualize data effectively. By mastering in-demand skills such as Python, SQL, Data Visualization tools, Statistics, and Excel, you can set yourself up for success in the data analytics job market.</p>
<p>Also, building a portfolio of projects showcasing your abilities is crucial to stand out as an entry-level data analyst. The data analytics industry is rapidly growing, and there is a high demand for qualified professionals. </p>
<p>So, start learning and experimenting with data today to land your dream job as a data analyst in Python.</p>
<p>Embrace the learning, celebrate the small wins, and don't be afraid to ask for help. Good luck with your goals and data analyst career path!</p>
<p>Thank you for reading! I'm Jess, and I'm an expert at Hyperskill. You can check out an <a target="_blank" href="https://hyperskill.org/tracks/6"><strong>Introduction to Python</strong></a> course on the platform.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ 10 React Interview Questions You Should Know in 2022 ]]>
                </title>
                <description>
                    <![CDATA[ Feel confident about your React knowledge? Put it to the test! I have selected all of the major questions you should know as a React developer in 2022, whether you are interviewing for a hired position or not. These questions cover everything from th... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/react-interview-questions-to-know/</link>
                <guid isPermaLink="false">66d037c8dcd3a41034854bca</guid>
                
                    <category>
                        <![CDATA[ interview questions ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ React ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Reed ]]>
                </dc:creator>
                <pubDate>Tue, 22 Feb 2022 00:21:59 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/02/react-interview-questions-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Feel confident about your React knowledge? Put it to the test!</p>
<p>I have selected all of the major questions you should know as a React developer in 2022, whether you are interviewing for a hired position or not.</p>
<p>These questions cover everything from the core concepts of React to a practical understanding of when you should use certain features.</p>
<p>To get the best results out of this guide, make sure to try to answer each question yourself before looking at the answers.</p>
<p>Let's get started!</p>
<h2 id="heading-1-what-is-react-why-use-it">1. What is React? Why Use It?</h2>
<p>React is a JavaScript <strong>library</strong>, not a framework.</p>
<p>We use React because it gives us all the power of JavaScript, but with built-in features that improve the way we build and think about building applications.</p>
<ul>
<li>It gives us a way to <strong>easily create user interfaces</strong> with tools like JSX</li>
<li>It gives us components to easily <strong>share parts of our user interface (UI)</strong>, which static HTML itself cannot do</li>
<li>It allows us to <strong>create reusable behavior</strong> across any of our components with React hooks</li>
<li>React <strong>takes care of updating our UI</strong> when our data changes, without the need to update the DOM manually ourselves</li>
</ul>
<p><strong>Extra Credit</strong>: There are frameworks in React that give you everything you need to build an app (with little to no third-party libraries), like Next.js and Gatsby. </p>
<p>React was created for building single-page apps in particular, but you can make everything from static sites to mobile apps with the same React concepts.</p>
<h2 id="heading-2-what-is-jsx">2. What is JSX?</h2>
<p>JSX is a way of building React user interfaces that uses the simple syntax of HTML, but adds the functionality and dynamic nature of JavaScript.</p>
<p>In short, it is <strong>HTML + JavaScript for structuring our React apps</strong>.</p>
<p>Though JSX looks like HTML, under the hood it is actually <strong>JavaScript function calls</strong>.</p>
<p>If you write a <code>div</code> in JSX, it's actually the equivalent of calling <code>React.createElement()</code>.</p>
<p>We can build our user interfaces by manually calling <code>React.createElement</code>, but as we add more elements, it becomes harder and harder to read the structure we have built.</p>
<p><strong>The browser cannot understand JSX itself,</strong> so we often use a JavaScript compiler called <strong>Babel</strong> to convert what looks like HTML into JavaScript function calls that the browser can understand.</p>
<h2 id="heading-3-how-do-you-pass-data-to-react-components">3. How do you pass data to React components?</h2>
<p>There are 2 main ways of passing data to React components:</p>
<ol>
<li>Props</li>
<li>Context API</li>
</ol>
<p>Props are data passed from a component's immediate parent. Props are declared on the child component, can be named anything, and can accept any valid value.</p>
<pre><code class="lang-js"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">Blog</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">const</span> post = { <span class="hljs-attr">title</span>: <span class="hljs-string">"My Blog Post!"</span> };

  <span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">BlogPost</span> <span class="hljs-attr">post</span>=<span class="hljs-string">{post}</span> /&gt;</span></span>;
}
</code></pre>
<p>Props are consumed within the child component. Props are always available within the child as <strong>properties on an object</strong>.</p>
<pre><code class="lang-js"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">BlogPost</span>(<span class="hljs-params">props</span>) </span>{
  <span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>{props.post.title}<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span></span>
}
</code></pre>
<p>Since props are plain object properties, they can be destructured for more immediate access.</p>
<pre><code class="lang-js"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">BlogPost</span>(<span class="hljs-params">{ post }</span>) </span>{
  <span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>{post.title}<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span></span>
}
</code></pre>
<p>Context is data passed from a context provider to any component that consumes the context.</p>
<p>Context allows us to access data anywhere in our app (if the provider is passed around the entire component tree), without using props.</p>
<p>Context data is passed down on the <code>value</code> prop using the <code>Context.Provider</code> component. It can be consumed using the Context.Consumer component or the <code>useContext</code> hook.</p>
<pre><code class="lang-js"><span class="hljs-keyword">import</span> { createContext, useContext } <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;

<span class="hljs-keyword">const</span> PostContext = createContext()

<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> post = { <span class="hljs-attr">title</span>: <span class="hljs-string">"My Blog Post!"</span> };

  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">PostContext.Provider</span> <span class="hljs-attr">value</span>=<span class="hljs-string">{post}</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">Blog</span> /&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">PostContext.Provider</span>&gt;</span></span>
  );
}

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">Blog</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">BlogPost</span> /&gt;</span></span>
}

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">BlogPost</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">const</span> post = useContext(PostContext)

  <span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>{post.title}<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span></span>
}
</code></pre>
<h2 id="heading-4-what-is-the-difference-between-state-and-props">4. What is the difference between state and props?</h2>
<p>States are <strong>values we can read and update</strong> in our React components.</p>
<p>Props are <strong>values that are passed to React components and are read only</strong> (they should not be updated).</p>
<p>You can think of props as being similar to arguments for a function that exist outside of our components, while state are values that change over time, but exist and are declared inside our components.</p>
<p>State and props are similar in that changes to them cause the components in which they exist to re-render.</p>
<h2 id="heading-5-what-are-react-fragments-used-for">5. What are React Fragments used for?</h2>
<p>React fragments are a special feature in React that let you write group children elements or components without creating an actual node in the DOM.</p>
<p>The fragment syntax looks like an empty set of tags <code>&lt;&gt;&lt;/&gt;</code> or are tags labeled <code>React.Fragment</code>.</p>
<p>In simpler terms, sometimes we need to put multiple React elements under a single parent, but we don't want to use a generic HTML element like a <code>div</code>.</p>
<p>If you are writing a table, for example, this would be invalid HTML:</p>
<pre><code class="lang-js"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">Table</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">table</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">tr</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">Columns</span> /&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">table</span>&gt;</span></span>
  );
}

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">Columns</span>(<span class="hljs-params"></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">td</span>&gt;</span>Column 1<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>Column 2<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
  );
}
</code></pre>
<p>We could avoid this problem by using a fragment instead of a <code>div</code> element in our <code>Columns</code> component.</p>
<pre><code class="lang-js"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">Columns</span>(<span class="hljs-params"></span>) </span>{
  <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">td</span>&gt;</span>Column 1<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>Column 2<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
    <span class="hljs-tag">&lt;/&gt;</span></span>
  );
}
</code></pre>
<p>Another reason for choosing a fragment is that sometimes adding an additional HTML element may change the way our CSS styles are applied.</p>
<h2 id="heading-6-why-do-we-need-keys-for-react-lists">6. Why do we need keys for React lists?</h2>
<p>Keys are a unique value that we must pass to the <code>key</code> prop when we are using the <code>.map()</code> function to loop over an element or a component. </p>
<p>If we are mapping over an element, it would look like this:</p>
<pre><code class="lang-javascript">posts.map(<span class="hljs-function"><span class="hljs-params">post</span> =&gt;</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">key</span>=<span class="hljs-string">{post.id}</span>&gt;</span>{post.title}<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span></span>)
</code></pre>
<p>Or like this if we are mapping over a component:</p>
<pre><code class="lang-javascript">posts.map(<span class="hljs-function"><span class="hljs-params">post</span> =&gt;</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">key</span>=<span class="hljs-string">{post.id}</span>&gt;</span>{post.title}<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span></span>)
</code></pre>
<p>And in both case, we need to add a key that is a unique value, otherwise React will warn us.</p>
<p>Why? Because <strong>keys tell React which element or component is which in a list</strong>. </p>
<p>Otherwise, if we were to try to change items in this list by inserting more or editing them in some way, React wouldn’t know the order to put them in.</p>
<p>This is because React takes care of all of the business of updating the DOM for us (using a virtual DOM), but <strong>keys are necessary for React to update it properly</strong>.</p>
<h2 id="heading-7-what-is-a-ref-how-do-you-use-it">7. What is a ref? How do you use it?</h2>
<p>A ref is a <strong>reference to a DOM element</strong> in React.</p>
<p>Refs are created with the help of the <code>useRef</code> hook and can be immediately placed in a variable.</p>
<p>This variable is then passed to a given React element (not a component) to get a reference to the underlying DOM element (that is, div, span, and so on).</p>
<p>The element itself and its properties are now available on the <strong>.current property</strong> of the ref.</p>
<pre><code class="lang-js"><span class="hljs-keyword">import</span> { useRef } <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">MyComponent</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">const</span> ref = useRef();

  useEffect(<span class="hljs-function">() =&gt;</span> {
    <span class="hljs-built_in">console</span>.log(ref.current) <span class="hljs-comment">// reference to div element</span>
  }, [])

  <span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">{ref}</span> /&gt;</span></span>
}
</code></pre>
<p>Refs are often referred to as an "escape hatch" to be able to work with a DOM element directly. They allow us to do certain operations that can't be done through React otherwise, such as clearing or focusing an input.</p>
<h2 id="heading-8-what-is-the-useeffect-hook-used-for">8. What is the useEffect hook used for?</h2>
<p>The <code>useEffect</code> hook is used for performing side effects in our React components.</p>
<p><strong>Side effects</strong> are operations that are performed with the "outside world" or something that exists outside the context of our React app.</p>
<p>Some examples of side effects include making a GET or POST request to an external API endpoint or working with a browser API like <code>window.navigator</code> or <code>document.getElementById()</code>.</p>
<p>We cannot perform operations like these directly within the body of our React component. <code>useEffect</code> gives us a function within which to perform side effects and a dependencies array which lists any external values that the function relies upon.</p>
<p>If any value within the dependencies array changes, the effect function runs again.</p>
<h2 id="heading-9-when-do-you-use-react-context-vs-redux">9. When do you use React Context vs Redux?</h2>
<blockquote>
<p>Redux is probably the most commonly used third-party global state library for React, but you can replace the word "Redux" with any global state library for React.</p>
</blockquote>
<p>React context is a way to provide and consume data throughout our application <strong>without using props</strong>.</p>
<p>React context helps us prevent the problem of "<strong>props drilling</strong>", which is when you are passing data with props through components that don't need it.</p>
<p>Instead, with context we can <strong>consume the data exactly in the component that needs it</strong>.</p>
<p>While we only use Context to get or "read" values globally in our application, Redux and other third-party state libraries <strong>allow us to both read and update state</strong>.</p>
<p>Context is not a replacement for a third-party state library like Redux because <strong>it is not built for state updates</strong>. This is because any time the value provided on Context changes, all of its children will re-render, which can hurt performance.</p>
<h2 id="heading-10-what-are-the-usecallback-amp-usememo-hooks-used-for">10. What are the useCallback &amp; useMemo hooks used for?</h2>
<p>The <code>useCallback</code> and <code>useMemo</code> hooks exist to improve our components' performance.</p>
<p><code>useCallback</code> is to prevent functions that are declared within the body of function components from being recreated on every render.</p>
<p>This can lead to unnecessary performance issues, especially for callback functions that are passed down to child components.</p>
<p><code>useMemo</code>, on the other hand, memoizes an expensive operation that we give it.</p>
<p><strong>Memoization</strong> is a technical term for functions that are able to "remember" past values they have computed if their arguments have not changed. If so, the function returns the "remembered" value.</p>
<p>In other words, we may have a calculation that takes a significant amount of computing resources and we want it to be performed as sparingly as possible.</p>
<p>If that case, we use the <code>useMemo</code> hook, which differs from the <code>useCallback</code> hook in that it returns a value, not a function. </p>
<h2 id="heading-become-a-professional-react-developer">Become a Professional React Developer</h2>
<p>React is hard. You shouldn't have to figure it out yourself.</p>
<p>I've put everything I know about React into a single course, to help you reach your goals in record time:</p>
<p><a target="_blank" href="https://www.thereactbootcamp.com"><strong>Introducing: The React Bootcamp</strong></a></p>
<p><strong>It’s the one course I wish I had when I started learning React.</strong></p>
<p>Click below to try the React Bootcamp for yourself:</p>
<p><a target="_blank" href="https://www.thereactbootcamp.com"><img src="https://reedbarger.nyc3.digitaloceanspaces.com/reactbootcamp/react-bootcamp-cta-alt.png" alt="Click to join the React Bootcamp" width="600" height="400" loading="lazy"></a>
<em>Click to get started</em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Level Up Your Developer Portfolio ]]>
                </title>
                <description>
                    <![CDATA[ By Peter Lynch It's not a big secret that building a developer portfolio can greatly increase your chances of getting hired. Everyone tells you that. But, they don't always tell you what makes a good one. You see, many portfolios are generic and rath... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/level-up-developer-portfolio/</link>
                <guid isPermaLink="false">66d460898812486a37369d32</guid>
                
                    <category>
                        <![CDATA[ career advice ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Junior developer  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ portfolio ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 07 Feb 2022 18:38:59 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/02/level-up-portfolio-post.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Peter Lynch</p>
<p>It's not a big secret that building a developer portfolio can greatly increase your chances of getting hired.</p>
<p>Everyone tells you that. But, they don't always tell you what makes a good one.</p>
<p>You see, many portfolios are generic and rather uninspiring. If your portfolio looks just like everyone else's, then how can you expect it to stand out?</p>
<p>Well, it won't stand out. </p>
<p>But don't worry – I've been there. <a target="_blank" href="https://peter-lynch.netlify.app/index.html">My first portfolio</a> was bland, uninspiring, and had many of the not-to-do's I talk about in this post. </p>
<p>However, I'm an ex-marketer, turned developer, I know how to make something stand out. I've made ad campaigns that have skyrocketed sales and had people talking. I realized I needed to think like a marketer to make my portfolio stand out. </p>
<p>The good news is that the same principles can be applied to your portfolio to level it up. If you read this guide and implement the tips, you'll raise your portfolio above the sea of other junior developers trying to stand out.</p>
<p>Before we launch into the five tips to level up your portfolio, let's just make sure we are on the same page.</p>
<h2 id="heading-what-is-a-portfolio">What is a portfolio?</h2>
<p>A portfolio is a way for you to showcase who you are, what skills you have, and most importantly the work you've done.</p>
<p>As a developer, your portfolio is going to be in the form of a website. The main goal of this website is to showcase yourself and your work in the best way possible. </p>
<p>It needs to make you stand out and it needs to make employers think "Whoa! I'd like to work with this person". Ultimately it will need to show them that you could be awesome to work with so they are compelled find out more about you.</p>
<p>A portfolio should therefore include some standard elements. Below are the bare minimum elements your portfolio must include.</p>
<h2 id="heading-the-bare-minimum-of-a-portfolio">The bare minimum of a portfolio</h2>
<p>These are the non-negotiables of any developer portfolio:</p>
<ol>
<li>Responsive design (learn about how to do that <a target="_blank" href="https://www.freecodecamp.org/learn/responsive-web-design/">here</a>)</li>
<li>Projects showcasing your work</li>
<li>An "about me" section or somewhere people reading your site can learn about you</li>
<li>Your portfolio needs to be accessible</li>
<li>Your portfolio should have a custom domain. Buy a domain name – you can get them for less than $10. Don't send people to 39238834.netfily.com</li>
<li>A way for people to contact you, preferably your email</li>
</ol>
<p>If you have these six non-negotiables on your portfolio, you are off to a good start.</p>
<p>Now let's look at five ways you can level up your portfolio, starting with a non-obvious one.</p>
<h1 id="heading-five-things-you-can-do-to-level-up-your-developer-portfolio">Five things you can do to level up your developer portfolio</h1>
<h2 id="heading-1-know-your-target-audience">1. Know your target audience</h2>
<p>One area that can help level up your portfolio is knowing exactly what the purpose of your portfolio is. That is, who is this portfolio for?</p>
<p>If I asked you what the purpose of your portfolio was, does the output match that? Let's say, for example, the purpose of your portfolio is to land your first junior developer role. Then your portfolio is going to look very different from someone who is looking to be a freelance web developer.</p>
<p>Therefore the first thing you need to do is ask what is the purpose of your portfolio. Start broad and then try to refine it. Keeping with the junior developer role example, you could refine it down to a junior frontend developer specializing in React.</p>
<p>If you are a junior frontend developer, then your portfolio won't need things like the generic skill cards below.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/skills-card.png" alt="Three generic skills cards with headings cross-industry experience, full stack development and design focus." width="600" height="400" loading="lazy"></p>
<p>These cards are better suited for someone who is looking for freelance work. </p>
<p>When you know the purpose of your portfolio, you can better tailor the information to communicate why someone should help you achieve your purpose.</p>
<h2 id="heading-2-level-up-your-project-details">2. Level up your project details</h2>
<p>This is the most important section of your portfolio, and it is the one section I often see that is not well-executed.</p>
<p>If you browse something like <a target="_blank" href="https://www.reddit.com/r/webdev">r/webdev</a> and search "portfolio" let me tell you what you're going to see if you click 90% of those portfolios and look at projects. You're going to see a calculator app, a weather app, tic tac toe, a movie finder app, "insert big website" clone, and so on.</p>
<p>Now, don't get me wrong – these are useful projects for learning the skills they require. And people have spent time making them. The problem is that everyone builds the same stuff. You can often just follow along with a tutorial and create them without much thought.</p>
<p>There are two problems here.</p>
<p>The first is that you are not differentiating yourself. If I'm HR or the hiring manager why should I pick your calculator app over the other 30 in the inbox? Also, how can I trust that you built this thing yourself and that you didn't just copy/paste code from a tutorial?</p>
<p>The second is that most people just put the project in, link to the GitHub repo, and maybe a live demo. This doesn't tell the person who is potentially going to hire you a lot, and it doesn't give them much reason to employ you over everyone else who has done the same.</p>
<p>So then, how do you make your projects section stand out? Let's look at a few ways you could level up the projects section of your portfolio.</p>
<h3 id="heading-add-original-projects">Add original projects</h3>
<p>You don't have to reinvent the wheel or make the next great social media application. But it would be great if you tried to use a different API instead of the standard weather API.</p>
<p>You could for instance create a surf report app that is the same as a weather app but instead you are calling different endpoints. This shows me that you know how to call an API outside of a tutorial.</p>
<p>If you're not sure how to make your own original project then check out this guide on <a target="_blank" href="https://www.peterlunch.com/blog/how-to-plan-and-build-a-programming-project">how to plan and build a programming project for beginners</a>.</p>
<h3 id="heading-give-some-details-about-the-project">Give some details about the project</h3>
<p>The first problem is that many projects are unoriginal. The second is that most people don't give more than the basic details about the project.</p>
<p>What will make you stand out is giving some details about your project. When I say details, what I mean is give me a story about the project. The best portfolios I see tell me about the project don't just show it to me.</p>
<p>Try answering some of these questions.</p>
<ul>
<li>Why did you choose to build this project?</li>
<li>What challenged you when making this project?</li>
<li>What did you learn from making this project?</li>
<li>What learnings have you taken with you into other projects?</li>
<li>What would you do differently next time?</li>
<li>Did you get stuck at any point? How did you get unstuck?</li>
<li>What was your process for completing this project? Did you do wireframes, make a Trello board, or did you just get stuck into it?</li>
</ul>
<p>If you answer these questions and craft them into a few succinct paragraphs, I will now know a lot more about your abilities as a developer. I can see what interests you, how you overcome challenges, how you learn from those challenges, and what skill level you are.</p>
<p>You're already well on your way to standing out if you follow this tip.</p>
<h2 id="heading-3-remove-unnecessary-fluff-from-your-portfolio">3. Remove Unnecessary Fluff from Your Portfolio</h2>
<p>Sometimes the best thing you can do to improve your portfolio is to remove things.</p>
<p>You should remove things that add no value to your target audience and things that reduce your credibility.</p>
<p>Here is a list of things you to remove and why. </p>
<ol>
<li><strong>Step-by-step tutorial projects.</strong> These projects hurt your credibility. They are unoriginal, they don't show me what you can do. Rather, they show me that you can copy what someone else does.  </li>
<li><strong>Projects not related to development or the job you are trying to land.</strong> These just aren't relevant to your target audience. </li>
<li><strong>If one of your Projects is the portfolio itself.</strong> Why get rid of this? The reason is that they are on your portfolio now. They are interacting with the project. So save space for another project.</li>
<li><strong>Skill progress bars.</strong> While they look cool, they are bad. If you're a junior you probably know 10% JavaScript, would you want to represent that? What the heck does 80% CSS mean? <strong>If you remove one thing, please make it these.</strong></li>
<li><strong>If your portfolio is a carbon copy of someone else's portfolio – start over</strong>. It's not cool for starters. Plus, I want to see what you're capable of doing, not what you're capable of copying. It can come back to hurt you in the long run. </li>
</ol>
<h2 id="heading-4-give-your-about-me-some-personality">4. Give your about me some personality</h2>
<p>There is this song by Paul Kelly called "Every F$*#%) City" and the general idea of the song is that every city is the same. Well, I've seen a lot of portfolio's and a lot of them look the same.</p>
<p>The section that often comes off as the same is the about me section. Let's look at an example below.</p>
<p><em>"Hi, my name's Jonny Lucky, a Full-Stack Web Developer from Example Town. I love building websites that solve life's unique problems.</em></p>
<p><em>I work primarily with MongoDB, Express, React, Node, and GraphQL and have set up countless WordPress and Shopify websites. My previous career was as an IT Consultant, E-commerce Business Owner, and Digital Marketer. I also really enjoy tinkering with CSS.</em></p>
<p><em>In my spare time, I play video games and also work out."</em></p>
<p>Hello Jonny Lucky, or was it Lucy Lovely? I forgot because I'm the HR person and I've read 50 of these portfolios and they are all very similar.</p>
<p>If I were to change your name, town, and tech stack, many of these candidates would just become one.</p>
<p>To be fair, there are some personal touches like the that they "play video games and also workout". But, guess what? A lot of other applicants also enjoy these things.</p>
<p>Can you see the problem, if you have an about me section like the above? You won't stand out and you'll come across as a little stiff.</p>
<p>Your about me needs to be a little bit spicy, it needs to show your personality and experience. Because your personality is different from other people, so your about me section should be too.</p>
<p>Let's have a look at mine to give you an idea of what you should be shooting for. I've gotten a few compliments on it.</p>
<p><em>"I'm an ex-marketer who loves building things with code.</em></p>
<p><em>I first became enthralled with programming in 2015. I was in San Francisco with my brother in law and he was telling me about this thing called Python and how it could automate things. As a person who looks for efficiencies, I was hooked.</em></p>
<p><em>I jumped right into Python on my flight back to Australia. Soon, I was automating my own things. I made a bot to book classes at the gym, one to send weekly reports to my boss and I even made one to like my girlfriend's content on Instagram. Unfortunately, that is as far as it went. Shortly after, I got promoted. So, I had less time to learn and I let programming fall by the wayside.</em></p>
<p><em>But, then Covid hit and suddenly I had more time without my commute. So, I started learning again. Specifically, I learned web development, as I had things I wanted to build for myself.</em></p>
<p><em>After a few months of self-teaching, I knew this was what I wanted to do for my career. So, I signed up for the coder academy Bootcamp and put my heart and soul into it. I was coding every day, late into the night, and on weekends. Until I was ready to be unleashed on production code.</em></p>
<p><em>Since the boot camp, I have grown as a developer, working alongside senior developers who have helped me raise my standards for what's expected of any web application.</em></p>
<p><em>I'm now seeking a full-time role where I can contribute my skills both in coding and business to help a company achieve their goals."</em></p>
<p>As you can see my about me section is unique to me. I'd say there isn't another soul on the planet who could write the same about me section without telling some lies.</p>
<p>Now, your about me section doesn't have to be zany, it can be professional. But, and this is a key point... </p>
<blockquote>
<p><em>You need to make it interesting so the person reading it wants to continue reading it.</em></p>
</blockquote>
<p>To make your about me section interesting, you can try things like stories and anecdotes. Try and weave them in with the key points you want to get across.</p>
<p>Another way to think of it is, if you are invited in for an interview would your about me be interesting enough that the person interviewing you would say "hey, I loved that story about X on your portfolio"? If it can do that you're winning because you've opened up more dialogue.</p>
<p>In the end, you're trying to spark interest in the person looking at your portfolio.</p>
<p>Think about it like this. If HR has 50 applications to get through, they are only going to interview 5 of those people. </p>
<p>If your about me section is a bland generic version like the first one, they are likely to just skim through it and onto your next section. If nothing else on your portfolio stands out, then they'll move on to the next application until something does jump out at them. You want to grab their attention and make them shift you to the interview pile.</p>
<p>Since most portfolios are generic, it doesn't take much to stand out. If you have less experience than someone else but their portfolio is generic and yours isn't, I'd argue you are more likely to get picked for an interview. </p>
<p>Why? Because we like to work with people we like, and if you show that you're an interesting unique person, I'd probably like to at least find out more about you.</p>
<h2 id="heading-5-throw-some-sprinkles-on-it">5. Throw some Sprinkles on it</h2>
<p>One of the most important lessons I was taught early on in my coding Bootcamp was that you need the doughnut before the sprinkles.</p>
<p>Looking at this analogy in regards to your portfolio, the doughnut is all the other things I have listed above. You need the baseline requirements of a portfolio like solid projects, an interesting about me section, and responsive design.</p>
<p>The sprinkles should come after you have all the basics. So, if you followed the tips above you have the doughnut. Now, you can start to make your portfolio shine.</p>
<p>Add things that make a prospective employer go wow! You can add amazing animations like <a target="_blank" href="https://cherupil.com/">Christopher Cherupil</a>, cool transition effects like <a target="_blank" href="https://philippeneveu.com/">Philippe Neveu</a>, or dark mode like <a target="_blank" href="https://jhey.dev/">Jhey Tompkins</a>.</p>
<p>I added a <a target="_blank" href="https://www.peterlunch.com/blog/javascript-exit-intent-modal">Zelda-themed modal</a> to make sure a prospective employer grabbed my résumé before they left my old portfolio site. I just made sure I had the basics first.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screen-Shot-2022-02-06-at-11.51.25-am.png" alt="Contents of the Zelda exit intent modal I built for my resume." width="600" height="400" loading="lazy"></p>
<p>You can also go wild with your ideas, just make sure you execute them. You don't want unpolished sprinkles that could take away from your doughnut's main elements.</p>
<h2 id="heading-summary">Summary</h2>
<p>If you read this post and thought, oh man my portfolio is quite generic – don't fret. You now have 5 things you can do to level up your portfolio so that it moves from the "forgotten" pile to the "give this person an interview" pile.</p>
<p>I can frequently be found in portfolio advice threads on Reddit and Twitter trying to offer advice to people trying to break into the industry. </p>
<p>When you're done leveling up your portfolio, and you're looking for some feedback on it, make sure to Tweet it to me with a link to your site. </p>
<p>If you have a portfolio you're proud of or you're looking for feedback on it, <strong><a target="_blank" href="https://twitter.com/thelynchpinau">follow me on twitter</a></strong> and tweet the link to me so I can look over it and give you some feedback.   </p>
<p>If you have an awesome one I might even add it to my <a target="_blank" href="https://github.com/pin0S/portfolios-that-pop">portfolios that pop list</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Become a Junior Software Engineer in 6 months ]]>
                </title>
                <description>
                    <![CDATA[ By Eduardo Vedes Hey everyone! 🌈 The seasons are changing, and September is the perfect month to focus on new goals and start new adventures. Maybe you've been on vacation, enjoyed the sun 🌞 or the mountains, and you're ready to dive back into work... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-become-a-junior-software-engineer-in-6-months/</link>
                <guid isPermaLink="false">66d45efa706b9fb1c166b934</guid>
                
                    <category>
                        <![CDATA[ career advice ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Career development  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Change ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Software Engineering ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 14 Sep 2021 16:19:39 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/09/braden-collum-9HI8UJMSdZA-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Eduardo Vedes</p>
<p>Hey everyone! 🌈 The seasons are changing, and September is the perfect month to focus on new goals and start new adventures. Maybe you've been on vacation, enjoyed the sun 🌞 or the mountains, and you're ready to dive back into work.</p>
<p>New adventures are sometimes unexpected. But I hope that when you saw the title of this blog post, you decided to embark with me on this extraordinary adventure of becoming a software engineer.</p>
<h2 id="heading-how-can-you-learn-to-code-in-6-months">How Can You Learn to Code in 6 Months?</h2>
<p><strong>Learning to code is a marathon, not a 100m sprint.</strong> You need to become a lifelong learner, and the more you know, the longer will be the list of things that you feel the need to discover.</p>
<p>But (there's a but), if we're talking about changing careers, I think it's <strong>totally possible</strong> to become a Software Engineer (entry-level or junior) in 6 months or less. You just need to quickly acquire a good set of entry-level skills.</p>
<p>How do I know that it's possible?</p>
<p>Simple. <strong>I did it in 2017.</strong> And I'm not the only one. If you search for it, you'll find lots of people who've accomplished the same feat.</p>
<h2 id="heading-how-to-learn-to-web-development-basics-quickly">How to Learn to Web Development Basics Quickly</h2>
<p>Now, to get this done in 6 months or less you need to be 100% dedicated to it. </p>
<p>So, this time frame will likely make sense for those who are jobless and have the resources to remain so while studying, or those who have quite a bit of free time. It's also helpful if you're looking for new opportunities and are passionate about tech, computers, and creating new things.</p>
<p><strong>Spoiler alert:</strong> expect to invest somewhere around 8 to 12 hours per day learning and studying.</p>
<p>For those who have a job currently, but want to become a software engineer, <strong>just</strong> <strong>keep reading</strong>! You can apply this process over a longer time frame and gradually transition in over the course of 9, 12, 18 or even 24 months. <strong>No pressure at all.</strong></p>
<h2 id="heading-how-do-i-start-learning-to-code">How do I start learning to code?</h2>
<p>This is a simple question. Despite the fact that there are lots of bootcamps out there – some paid, some free – <a target="_blank" href="https://www.freecodecamp.org/">freeCodeCamp</a> is one of the best (if not the best) places to start. </p>
<p>The freeCodeCamp curriculum has a well defined roadmap (you can just follow the path, not worrying about what to learn and in which order) and a great, diverse, and inclusive community spread across Discord, <a target="_blank" href="https://forum.freecodecamp.org/">the Forum</a>, <a target="_blank" href="https://twitter.com/freeCodeCamp">Twitter</a> and <a target="_blank" href="https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ">YouTube</a>.</p>
<p>So, start by <a target="_blank" href="https://freecodecamp.org">signing-up</a> for freeCodeCamp and get yourself comfortable.</p>
<p>Before that, make sure you grab a cup of your favourite tea or coffee! ☕    </p>
<h2 id="heading-start-the-freecodecamp-curriculum">Start the freeCodeCamp Curriculum</h2>
<p>Well, during the first four months, you need to focus on grokking the fundamentals. What you need to do is to invest heavily in the 3 first certifications:</p>
<ol>
<li><a target="_blank" href="https://www.freecodecamp.org/learn/responsive-web-design/">Responsive Web Design Certification</a> (300 hours)</li>
<li><a target="_blank" href="https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/">JavaScript Algorithms and Data Structures Certification</a> (300 hours)</li>
<li><a target="_blank" href="https://www.freecodecamp.org/learn/front-end-development-libraries/">Front End Development Libraries Certification</a> (300 hours).</li>
</ol>
<p>We're talking about 900 hours, which, divided by 10 hours/day, gives us 90 days of intensive study. Yes, intensive. </p>
<p>Of course it might take a bit more of time if you decide to invest 8 hours a day. 900  / 8 is more or less 113 days. So it still fits in 4 months.</p>
<p>My suggestion here is that you divide your time between tackling the challenges, reading, watching talks, and listening to podcasts or ebooks. This way you avoid getting frustrated or bored while always doing the same thing.</p>
<p>Follow freeCodeCamp's advice: <strong>"Read, Search, Ask"</strong>.</p>
<p>This is the formula to success. You'll improve the way you search on Google, you'll discover interesting articles, talks, and books, and you'll eventually reach out for help somewhere online. Focus on this process. 🙏 </p>
<p>Soon you'll be able to get yourself unstuck and this is one of the best skills a programmer can have.</p>
<h2 id="heading-start-networking-and-find-tech-communities-to-join">Start Networking and Find Tech Communities to Join</h2>
<p>The 5th month represents an inflection point in your journey. You'll need to raise your head up from the keyboard and look around. </p>
<p>Invest some time in networking. Create a LinkedIn and a Twitter account. Start <a target="_blank" href="https://www.freecodecamp.org/news/build-your-personal-brand-as-a-developer/">building your social image and personal brand</a>. State that you're learning to code and that soon you'll be looking for an entry-level/junior role in a tech company. </p>
<p>Interact with people, meet people, and ask questions (no matter how dumb they are. The truth is that there aren't any dumb questions, and once you know the answer, you might be able to help someone later with the same doubts).</p>
<p>If there's any tech-focused community group around you, mingle with the people and get to know them. If there isn't anything local, well, you can always create one. </p>
<p>That's what I did and it went great (maybe I'll write another article about it 💡).</p>
<p>At this point your basic tech stack is: HTML, CSS, JavaScript, and React. It will be pretty easy to fit in a lot of companies/teams as a front end developer.</p>
<p>The tech industry usually hires for the short-term, and nowadays frameworks are the dish of the day, so React skills can definitely help pay your first salary. 💰 </p>
<p>You'll also need to invest in some other skills in the meanwhile:</p>
<ol>
<li>Learn Git. Invest at least one week in trying to understand how Git and version control in general works and how valuable it is to work in a team, remotely or not.</li>
<li>Invest a bit of time in mastering your OS so that you feel comfortable while working. This involves <a target="_blank" href="https://www.freecodecamp.org/news/how-to-set-up-vs-code-for-web-development/">VSCode config</a>, <a target="_blank" href="https://www.freecodecamp.org/news/how-to-configure-your-macos-terminal-with-zsh-like-a-pro-c0ab3f3c1156/">terminal</a> <a target="_blank" href="https://www.freecodecamp.org/news/jazz-up-your-bash-terminal-a-step-by-step-guide-with-pictures-80267554cb22/">config</a>, account config, and so on. Try to do online meetings with friends and share your screen or use a whiteboard. Google Meet is great to train you in this skill.</li>
<li>Learn a bit about note-taking and pick an app to help you manage your notes. Notion, Obsidian, or even VSCode are great tools for that. It doesn't need to be perfect, just start by organizing your notes somehow and later you'll find out what fits you the best.</li>
<li>If English is not your main language, sharpen your English skills. Read books and listen to talks and podcasts, so that you can get used to people's accents.</li>
</ol>
<p>In the meantime, don't stop coding. This is the perfect time to polish up your certification projects.</p>
<p>At this point you should have the following projects done:</p>
<ol>
<li><p>Responsive Web Design Projects </p>
</li>
<li><p>Tribute Page</p>
</li>
<li>Survey From</li>
<li>Product Landing Page</li>
<li>Technical Documentation Page</li>
<li><p>Personal Portfolio Webpage</p>
</li>
<li><p>JavaScript Algorithms and Data Structures Projects</p>
</li>
<li><p>Palindrome Checker</p>
</li>
<li>Roman Numeral Converter</li>
<li>Caesars Cipher</li>
<li>Telephone Number Validator</li>
<li><p>Cash Register</p>
</li>
<li><p>Front End Development Libraries Projects</p>
</li>
<li><p>Random Quote Machine</p>
</li>
<li>Markdown Previewer</li>
<li>Drum Machine</li>
<li>JavaScript Calculator</li>
<li>25 + 5 Clock </li>
</ol>
<p>Wow...you've already done so much! Take a few days to breathe and to treat yourself well. Recognize the achievements and how proud you are of yourself! </p>
<p>Show family and friends what you've been working on, and share it on your social networks. Everyone should be proud of you at this point.</p>
<h2 id="heading-build-your-developer-portfolio">Build Your Developer Portfolio</h2>
<p>Okay folks. Now we're in the game. </p>
<p>Now you're going to build your portfolio. This is extremely important because the people and companies who might be interested in hiring you will want to check it out.</p>
<p>They're not necessarily looking for expertise, or for a very knowledgeable or experienced person. They're looking for passion, effort, knowing how far can you go alone, learning to code with some community support, <strong>on your own</strong>. </p>
<p>These are definitely the 3 things you must show:</p>
<ol>
<li>Passion</li>
<li>Energy</li>
<li>Capacity (to evolve and learn "alone")</li>
</ol>
<p>Move all your projects to GitHub, and make sure you add some good README.md files, with good descriptions about what you've done in each project. If you wish you can add a small list of things you want to improve in the near future.</p>
<p>But don't stop there – keep improving and polishing your projects. Put yourself in the shoes of the people who are hiring, and give some love to details that make the difference (this is how you can show the 3 things above: passion, energy, capacity). </p>
<p>Show that you know how to create good layouts, well-spaced content, the right colors, readable fonts, and so on. Make things look as great as you're able to.</p>
<p><a target="_blank" href="https://www.freecodecamp.org/news/15-web-developer-portfolios-to-inspire-you-137fb1743cae/">Take a look</a> <a target="_blank" href="https://www.freecodecamp.org/news/13-awesome-freelance-developer-portfolios/">at other projects</a> and see how are people solving the same problems. Getting inspiration from their ideas (just please don't blindly copy code without understanding what it means) is not cheating and you can learn a lot by doing that.</p>
<p>Evolve your Personal Portfolio Project and make it your homepage (landing page). Make sure to share your contacts and to state that you're available for work. Share all your other projects in your homepage.</p>
<p>Keep polishing your work, keep coding and learning everyday, improve the relationships with all the new friends you've made, and try to find opportunities through social networks.</p>
<h2 id="heading-apply-for-jobs-and-prepare-for-interviews">Apply for Jobs and Prepare for Interviews</h2>
<p>You'll need to invest a lot of time in applying for jobs and getting interviews. You need to practice interviewing and I bet that soon, much sooner than you expect, magic will happen! 🪄</p>
<h3 id="heading-applying-for-jobs">Applying for Jobs</h3>
<p>Don't worry about failing. It's absolutely normal that you might fail your first interviews. And that's okay – you're learning some good tricks for the next ones.</p>
<p>Now, it depends a bit on what your goals are for this job and for your career. If you want to apply to a <a target="_blank" href="https://en.wikipedia.org/wiki/Big_Tech">FAANG</a> company, the bar is high (very, very, high). You'll need to pass hard technical interviews. </p>
<p>But no worries, freeCodeCamp has your back. You'll find a lot of resources so that you can sharpen your skills in the <a target="_blank" href="https://www.freecodecamp.org/learn/coding-interview-prep/">Coding Interview Prep</a> Section.</p>
<p>If you're applying to any other company, you might not need to know quite as much about Algorithms and Data Structures. Rely on your portfolio and show the interviewer you're a confident person who is able to communicate, to show passion, and to put effort into whatever you do.</p>
<h3 id="heading-the-interview-experience">The Interview Experience</h3>
<p>People have different opinions about what makes a good, effective interview. Personally I don't like timed or live coding challenges. My anxiety grows and my ability to focus and to solve problems drops to less than zero. </p>
<p>Plus, the best companies shouldn't be worried about how fast you're doing something. They usually prefer that you take twice as long, but do it that much better, making sure you think about each detail that a certain feature needs.</p>
<p>I usually prefer take home challenges. I can make myself comfortable, with a nice cup of tea or coffee, and I can investigate properly and do my best.</p>
<p>My recommendation here is that you go the extra mile. Care a lot about what you do and why you do it.</p>
<p>Write some documentation about why you've picked A or B, what's missing, or what you'd do in the future to improve your code.</p>
<p>Usually interviews have 3-4 parts:</p>
<ul>
<li>Screening: people want to get to know you. To hear you speaking and discover what's your superpower (motivation, resilience, perseverance)</li>
<li>Test assignment: it can be a timed challenge, a pair-programming challenge where you're the driver (real time), or a take home assignment.</li>
<li>Discussion of the assignment and a few technical questions. Possibly know how much you expect to earn.</li>
<li>Offer / Rejection (this is usually a video call, in case they have an offer, or a simple "thank you" e-mail, in case you're rejected).</li>
</ul>
<p>Sometimes there are interviews with more than one part of the team. Some teams like to pick people that fit well and they want to see if you're able to cope with them for a while.</p>
<p>Expect some off-the-wall questions, such as Star Wars trivia, or if you prefer tabs or spaces. There are usually no wrong answers, but people look for a sense of belonging while discussing these things with you.</p>
<p>The funniest thing that happened to me was a set of questions that I needed to answer quickly, without thinking. So the guys started:"React or Vue?", "Emacs or VS Code?", "Tabs or spaces? ", "Semi-colons or no semi-colons?", "Beer or wine?!?" Yeah, all these are important issues! 🤣 </p>
<h2 id="heading-final-words">Final Words</h2>
<p>If you get a job, don't forget to reach out to tell me how it went. I love to read these stories and I feel proud of every single person who did it.</p>
<p>Maybe 6 months wasn't enough time to get through this big list of things (even though, at first glance, they may seem pretty easy to accomplish – they aren't ❤️).</p>
<p>Just remember to <strong>treat yourself well</strong> and don't push yourself too hard. </p>
<p>Also, if it takes you longer than 6 months, don't worry: <strong>You can do it</strong>. You just might need more time for whatever reason. </p>
<p>When people start to learn how to code, they start in very different situations. Some have a PhD in Math or Engineering, some are coming from History or Philosophy, or from McDonalds (which also provides you with great soft skills: talking to people, being polite and kind, having compassion, being organized, doing things on time, tracking and controlling processes, and much more).</p>
<p><strong>So whatever your background, just remember – it doesn't matter where you started. What matters is where you're going!</strong> </p>
<p>I'm sure that at this point, if you forget the 6 month time barrier, you will get there. And as I said in the beginning, learning to code isn't a 100m sprint, it's a marathon. So keep focused and keep doing your work.</p>
<p>Don't forget about your body! Drink water, don't spend too much time sitting in your chair. Try to have a good posture, exercise, and get out of your home. People need a bit of sun and fresh air. The way you treat your brain is very important. Never forget about this.</p>
<p>Last but not least, be kind to yourself and to every human being. You're great! ❤️</p>
<p>I'm Edo and you can follow me on <a target="_blank" href="https://twitter.com/eduardovedes">Twitter</a>. I usually tweet about code and career change.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Senior Software Engineer Interview Questions – Tips to Help You Prepare for a Job Interview ]]>
                </title>
                <description>
                    <![CDATA[ By Ankit Sharma I just joined Cisco Systems, India as a Senior Software Engineer (SDE III) on July 28, 2021. I am working with the Cisco Customer Experience team as a UI developer. The entire journey from applying for the job to accepting the offer w... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/senior-software-engineer-interview-questions-how-i-got-a-job-as-an-sde-3-and-how-you-can-prepare-for-the-rounds/</link>
                <guid isPermaLink="false">66d45dcd33b83c4378a517ca</guid>
                
                    <category>
                        <![CDATA[ career advice ]]>
                    </category>
                
                    <category>
                        <![CDATA[ interview questions ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interview tips ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Interview ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 30 Aug 2021 17:56:48 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/08/pexels-tima-miroshnichenko-5439140.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Ankit Sharma</p>
<p>I just joined <a target="_blank" href="https://www.cisco.com/">Cisco Systems</a>, India as a Senior Software Engineer (SDE III) on July 28, 2021. I am working with the <a target="_blank" href="https://www.cisco.com/c/m/en_us/customer-experience/index.html">Cisco Customer Experience</a> team as a UI developer.</p>
<p>The entire journey from applying for the job to accepting the offer was two months long. I wish to share my interview experience which will help you prepare for a senior-level UI engineer role.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Cisco-logo-2.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-what-you-will-get-out-of-this-article">What you will get out of this article?</h2>
<p>In this article, I will talk about my journey, from getting the job referral to accepting the offer. </p>
<p>I will talk about the different rounds of the interview process that I went through and the questions I was asked in them. The questions I share here will help you get ready for Angular development roles. </p>
<p>I will also share some of the questions you can ask the interviewer and the HR rep which will help you to know more about the company and the project.</p>
<p>So, lets’ get started!</p>
<h2 id="heading-how-i-discovered-the-job-posting">How I Discovered the Job Posting</h2>
<p>The first part of a job search is to get your résumé selected for the role you are looking for. I found out about this opportunity from a tweet shared by <a target="_blank" href="https://twitter.com/AlexOkrushko">Alex Okrushko</a>.</p>
<div class="embed-wrapper">
        <blockquote class="twitter-tweet">
          <a href="https://twitter.com/AlexOkrushko/status/1365064874599079947"></a>
        </blockquote>
        <script defer="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div>
<p>I have been following Alex for the last two years. He used to work with the <a target="_blank" href="https://firebase.google.com/">Firebase</a> team at Google and he is also a part of the <a target="_blank" href="https://ngrx.io/">NgRx</a> team. I admire him for his immense contribution to the Angular community.</p>
<p>Alex is currently working as the Principal UI Architect at Cisco.</p>
<p>When he shared that they were looking for a UI developer, I realized that it would be the best opportunity to work directly with him. I sent a message over Twitter and he asked me to share my résumé. He was primarily looking for developers with strong Angular skills.</p>
<h2 id="heading-the-first-round-of-interviews">The First Round of Interviews</h2>
<p>One week after sharing my résumé with Alex, I received an email for the first round of interviews. </p>
<p>The first step in the interview process was a take-home assignment via <a target="_blank" href="https://devskiller.com/">Devskiller</a>. The invitation from Devskiller mentioned that I had seven days to complete the assignment. The total time allotted for this round was 2.5 hours. Once the test starts, you cannot stop it, so it has to be a single sitting of 2.5 hours.</p>
<p>I was given an Angular project with some bugs in it. There was a total of 11 unit test cases in the project. I was expected to fix all the bugs and make all the test cases green.</p>
<p>I started the test around 10:30pm (after my dinner) and finished it around 12:45am. I am most productive at night, so I chose that time. I was able to fix all the bugs and all the 11 test cases were green too. I slept happily that night 😊</p>
<h3 id="heading-angular-concepts-covered-in-this-round">Angular Concepts Covered in this Round</h3>
<p>The first round of interviews was majorly based around the following Angular concepts:</p>
<ul>
<li>Data binding</li>
<li>Event handling</li>
<li>State ownership and flows</li>
<li>Forms and form validations</li>
<li>Observables</li>
<li>Unit tests using Jasmine</li>
<li>Attribute directives</li>
<li>Structural directives - NgIf &amp; NgFor</li>
</ul>
<p>Alex verified my solution based on bug fixes, unit test status, and coding style. He was impressed with my performance in the first round and so I moved on to round two of the interview.</p>
<h2 id="heading-the-second-round-of-the-interview">The Second Round of the Interview</h2>
<p>I got the email asking for my availability for the second round of the interview. I was facing some health issues at that time, so I asked to schedule a week later and the interviewer was happy to do so.</p>
<p>The second round was also a project-based interview via Devskiller. I was given an Angular project and there are four questions based on that. All the questions are based on debugging and bug fixes. The total time allotted for this round was 1 hour.</p>
<p>The difference compared to the first round was that this time I was supposed to do a live coding session by sharing my screen with Alex. I was expected to explain the What, Why, and How of the code I was writing and talk through the solution. The thought process to approach the problem was given importance over the implementation. </p>
<p>This round was more of a pair-programming session with me in the driver's seat. Out of the four questions, I was able to solve the first three in 30 mins. The last one was based on the concept of Content child/view child. I struggled a bit with this question but a small hint from Alex helped me solve it.</p>
<p>I started the test at 10:30pm and finished it around 11:20pm.</p>
<blockquote>
<p>I was allowed to use online resources during the interview. But the condition was that I had to explain what I was looking for and why.</p>
</blockquote>
<p>At the end of the test, I was able to solve all four questions successfully. The feedback from Alex mentioned that I was struggling with a few of the concepts of RxJS and I need to work on that. But he was happy with my overall performance and I was promoted to the third round of the interview.</p>
<h3 id="heading-angular-concepts-covered-in-this-round-1">Angular Concepts Covered in this Round</h3>
<p>The second round of the interview was primarily based around the following Angular concepts:</p>
<ul>
<li>ViewChild and ViewChildren</li>
<li>ContentChild and ContentChildren</li>
<li>Content projection</li>
<li>Usage of Async pipe</li>
<li>Multicast observables</li>
<li>Parent-child relation of the components</li>
<li>Services</li>
</ul>
<h2 id="heading-the-third-round-of-the-interview">The Third Round of the Interview</h2>
<p>I got a call from my manager, Vaibhav, and he informed me that they were happy with my performance in first two rounds and wanted to schedule another round of technical discussion. </p>
<p>He asked me for my availability and I replied to him to schedule the call for the next day at 10 am IST. This round of interviews is conducted by the team in India so it has to be during IST working hours.</p>
<p>Two interviewers joined the call, and after the introduction, I was informed that this round would be divided into two sections, one for Angular and another one for JavaScript. </p>
<p>They started with the questions about Angular. This round had a mix of theoretical as well as scenario-based questions. The Angular interview continued for around 45 mins and I aced it. I answered all but one question.</p>
<p>After 45 mins they switched to the JS side. They started with the core concepts of JS and I answered those questions easily. Then they moved deeper into JS and I was asked few output-based questions. I struggled a bit here. </p>
<p>Then came more output-based questions and I was unable to answer a few of them. The JS interview also continued for 45 mins. I was not happy with my performance in the JS part of the interview. It was pretty average.</p>
<blockquote>
<p>The interview was originally scheduled for 1 hr, but it got stretched to 1.5 hrs.</p>
</blockquote>
<h3 id="heading-angular-concepts-covered-in-this-round-2">Angular Concepts Covered in this Round</h3>
<p>The third round of the interview was based around the following Angular concepts:</p>
<ul>
<li>RxJS concepts such as mergeMap &amp; switchMap</li>
<li>Directives</li>
<li>How does the ngIf directive work internally? How does it add DOM elements dynamically on the page?</li>
<li>How can we create a custom directive (with practical example)</li>
<li>What is Input and Output in a component?</li>
<li>Few theoretical questions around services, lazy loading of modules, and component communication</li>
</ul>
<h3 id="heading-javascript-concepts-covered-in-this-round">JavaScript Concepts Covered in this Round</h3>
<p>The third round of the interview was based around the following JS concepts:</p>
<ul>
<li>What are the different ways to create and call methods in JS?</li>
<li>Closures</li>
<li>Currying</li>
<li>Event bubbling</li>
<li>Output-based questions on closure and various setTimeout scenarios</li>
</ul>
<h2 id="heading-the-fourth-round-of-the-interview">The Fourth Round of the Interview</h2>
<p>Two days after the third round of interviews, I got a call from Vaibhav. He informed me that the interviewers were impressed with my Angular skills but they were not happy with my JS skills. But the overall performance was good, so I was able to move on to the fourth and the final round of interviews. He also suggested that I work on improving my JS skills.</p>
<p>The final round of interviews was scheduled on the Tuesday of the following week from 12:30pm to 1:30pm.</p>
<p>This was a managerial round and Vaibhav was the interviewer along with another senior developer from my team. This round was more focused on my non-technical skills. </p>
<p>He asked me about the project I was working on with my current company. I was also asked questions about Agile methodology since I had mentioned that in my résumé. I told him about my open-source work and he asked few questions about that.</p>
<p>At the end of the interview, Vaibhav shared that he was happy with my performance and wanted to go ahead with the offer. The next step was to update HR so that they could continue with the salary and the offer formalities.</p>
<h3 id="heading-question-asked-in-the-managerial-round-of-the-interview">Question Asked in the Managerial Round of the Interview</h3>
<p>The fourth round of the interview was entirely non-technical. I have mentioned a few of the questions asked in this round, and here are some more:</p>
<ul>
<li>Tell me about the current project and tech stack you're using.</li>
<li>What is your current role and responsibilities?</li>
<li>What are the Agile practices you are following currently?</li>
<li>How does your sprint planning look like?</li>
<li>How does a story refinement happen in your current project?</li>
<li>How can you resolve a conflict of ideas within your team?</li>
<li>Why are you looking for a change?</li>
<li>Why Cisco?</li>
</ul>
<h2 id="heading-salary-negotiations-and-getting-the-job-offer">Salary Negotiations and Getting the Job Offer</h2>
<p>I was waiting patiently for the call from HR after the fourth round of interviews. I got the call after one week. </p>
<p>The HR rep congratulated me on clearing all the rounds of the interview and asked me about my current salary and notice period. She also asked me to share my payslip and compensation details from my current employer.</p>
<p>After two days, I got another call from HR and she informed me about the salary I was being offered. I asked if there was any possibility of negotiating a better offer. She told me that this was the best possible salary as per my employment grade and it was not possible to increase it any further. I asked her for some time to make the final decision.</p>
<blockquote>
<p>I did not want to lose the job offer but at the same time, I also wanted to have a better salary structure than the one offered.</p>
</blockquote>
<p>I discussed the situation with my family as well as a few of my friends. I also had a call with Vaibhav, and a few calls with HR as well.</p>
<p>I was very much confused at this point, so I decided to write down the pros and cons of this role. Here is what I came up with:</p>
<p><strong>Pros</strong>:</p>
<ul>
<li>The project is customer-facing, so I'd get more exposure and increased responsibilities</li>
<li>Working at the scale of Cisco would be a plus</li>
<li>It would be a great learning and growth opportunity</li>
<li>The brand value of Cisco is high</li>
</ul>
<p><strong>Cons</strong>:</p>
<ul>
<li>The salary offered was not up to my expectations</li>
</ul>
<p>Finally, the pros outweighed the cons and I decided to accept the offer. So, I informed HR of my decision. But there was a surprise waiting for me.</p>
<blockquote>
<p>HR informed me that since I had taken a long time (around 10 days) to decide on the offer, they have put my offer on hold. I needed to wait further for the final confirmation from Cisco’s end.</p>
</blockquote>
<p>I panicked and thought that I had lost the opportunity. But I had no option other than to wait. TBH, I had lost any hope of getting the offer at this point.</p>
<p>After two weeks, I got a call from Vaibhav and he asked me if I was still interested to proceed with the job offer. After my confirmation, he informed me that HR was happy to release the offer letter. The next day, HR called me to confirm the same. By the end of the day, I had the offer letter in my inbox.</p>
<p>I gladly accepted the offer letter. I was relieved and ecstatic. All's well that ends well.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/japheth-mast-Ls3yexjyRpk-unsplash.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Job offer accepted</em></p>
<h2 id="heading-how-to-ask-good-questions-in-your-job-interview">How to Ask Good Questions in Your Job Interview</h2>
<p>Whenever you are being interviewed for a job, the interviewer always asks this question at the end – Do you have any questions? </p>
<p>A lot of people are confused about what to ask and what not to ask. Some people do not ask any questions at all. </p>
<p>Well, this is a good opportunity to learn more about the project, the team, and the company. So, you should ask your interviewer as many questions as you can.</p>
<p>Here are a few suggestions from my end.</p>
<h3 id="heading-what-to-ask-the-interviewer-in-a-technical-interview">What to Ask the Interviewer in a Technical Interview</h3>
<ul>
<li>Ask about the details of the project you are being interviewed for</li>
<li>Are you using any third-party tools/libraries in your application? If the answer is yes, ask about them.</li>
<li>How does the code review cycle work?</li>
<li>What are some of the current challenges in the codebase?</li>
<li>What is the ratio of new features vs the bug fixes assigned to a dev?</li>
<li>What testing framework do they use in the application for unit testing as well as E2E testing?</li>
<li>What is the test coverage for the application?</li>
</ul>
<h3 id="heading-what-to-ask-the-interviewer-in-a-managerial-interview">What to Ask the Interviewer in a Managerial Interview</h3>
<ul>
<li>Ask about the details of the project you are being interviewed for</li>
<li>What kind of application it is? Customer-facing or internal?</li>
<li>What will be my roles and responsibilities?</li>
<li>How is the work-life balance in the project?</li>
<li>What are my learning and growth opportunities in the next 1/2/3 years?</li>
<li>What are the current challenges with the project?</li>
<li>Are there any plans to add new features to the application?</li>
<li>Ask about the current team structure and where you will fit in it</li>
<li>How does the team culture look like in the current pandemic situation when we are 100% remote?</li>
<li>What is the working shift for this project? Is it flexible or fixed? Are there any shift allowances provided? This is a very important question and is often neglected by the interviewees.</li>
<li>An extension to the previous question – Does my job require any type of weekend support? If the answer is yes, ask about the timing, frequency per month, and the reimbursement policy around that.</li>
</ul>
<h3 id="heading-what-to-ask-hr-before-accepting-the-offer-or-joining-the-company">What to Ask HR Before Accepting the Offer or Joining the Company</h3>
<ul>
<li>Leave policies</li>
<li>Health insurance policies</li>
<li>WFH policies</li>
<li>What is the timeline of the annual appraisal cycle?</li>
<li>Will I be eligible for the appraisal in the next appraisal cycle?</li>
<li>Do I need to sign any kind of employment bond?</li>
<li>Does this job require me to move to another city/state? </li>
<li>Do I have to serve a probation period upon joining the company? If the answer is yes, ask about the duration and its effect on your employment. Every company has different rules related to probation so ask as many questions as you can around this topic</li>
<li>What are the covid-related benefits company is providing, for example vaccination, medical support, and so on?</li>
</ul>
<h2 id="heading-do-you-want-to-join-the-worlds-best-workplace">Do you Want to Join the World’s Best Workplace?</h2>
<p>Cisco Systems has been ranked number one in Fortune’s list of <a target="_blank" href="https://fortune.com/best-companies/2021/">100 Best Companies to Work For the year 2021</a> and <a target="_blank" href="https://fortune.com/best-workplaces-millennials/2021/">100 Best Large Workplaces for Millennials</a>. Do I need to say anything more about the company’s culture?</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Fortune100Best2021.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Cisco provides you with ample learning and growth opportunities. You will get a chance to work on applications used on a worldwide scale. You will be always motivated to grow and explore yourself on a personal and professional level.</p>
<p>So, what are you waiting for? Go to the <a target="_blank" href="https://jobs.cisco.com/">Cisco Careers portal</a> and apply for the role you want.</p>
<p>I hope my interview experience will be helpful for you. Best of luck with your job interview.</p>
<p>If you like the article, share it with your friends. You can also connect with me on <a target="_blank" href="https://twitter.com/ankitsharma_007">Twitter</a> and <a target="_blank" href="https://www.linkedin.com/in/ankitsharma-007/">LinkedIn</a>. My DMs are always open.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ React Coding Interview – How to Stand Out and Ace the Challenges ]]>
                </title>
                <description>
                    <![CDATA[ By Iva Kop As a React developer, I have gone through my fair share of front-end coding interviews. Recently, I had the opportunity to experience the process from the other side – as an interviewer. Here is what I've learned. Coding interview usually ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-stand-out-during-your-react-coding-interview/</link>
                <guid isPermaLink="false">66d45f3538f2dc3808b790a1</guid>
                
                    <category>
                        <![CDATA[ coding interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interview tips ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ React ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 20 Aug 2021 18:20:42 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/08/reactinterview.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Iva Kop</p>
<p>As a React developer, I have gone through my fair share of front-end coding interviews. Recently, I had the opportunity to experience the process from the other side – as an interviewer. Here is what I've learned.</p>
<p>Coding interview usually involve a multi-step process where interviewers assess everything from basic technical knowledge to culture fit. Every step of that process is important and should not be underestimated. Prepare for all of it and prepare well.</p>
<p>But there is one thing that is at the core of (almost) every React interview.</p>
<p>Inevitably, at some point, you have to build a React app.</p>
<h1 id="heading-the-app-assignment">The App Assignment</h1>
<p>Here is a short list of real app assignments I had to complete for my own React interviews over the years:</p>
<ul>
<li><strong>Support Desk app</strong> – an app to display a list of support desk employees and their contact information.</li>
<li><strong>Video app</strong> – an app where, given a YouTube video URL, it displays it on the page. Users can comment on it.</li>
<li><strong>Projects app</strong> – an app to display a list of on-going projects that users can subscribe to and follow.</li>
<li><strong>Articles app</strong> – an app to display a list of articles where users can leave nested comments for each one.</li>
</ul>
<p>These assignments are, in many ways, very similar to each other. The reason is that they are assessing the same set of basic React skills. Which skills are those? Let's break them down.</p>
<h2 id="heading-interview-skill-1-how-to-build-uis-with-react">Interview Skill #1 – How to Build UIs with React</h2>
<p>A primary job of a React developer is to build and structure React components in a meaningful way. </p>
<p>The assignments above are meant to test your ability to write code in a modular and reusable way while creating abstractions at the right level. </p>
<p>The main goal is for your app to work well. But, as a front-end developer, you are also expected to build UIs that look good, too.</p>
<p>Most of the time, the assignment will come with a concrete design you'll need to follow. If that is the case, it's important to stick closely to it. </p>
<p>But if you believe that there is a good reason to deviate, don't hesitate to do so. Just be prepared to explain why your solution is better.</p>
<p>If there is no design available, the interviewer is probably interested in understanding if you can create sensible UIs on your own. Although this could be more challenging, it also gives you the opportunity to show you are able to make conscious choices when it comes to the front-end.</p>
<p><strong>Tip:</strong> It is easy to assume that the expectation is that you have to build all components from scratch. Using a third party component library might feel like cheating in an interview context. But it is not! </p>
<p>Make sure to ask in advance what is expected. Taking advantage of component libraries like <a target="_blank" href="https://material-ui.com/">MaterialUI</a> or <a target="_blank" href="https://chakra-ui.com/">ChakraUI</a>  is a huge time saver during interview assignments and will allow you to focus on more interesting parts of the app.</p>
<h2 id="heading-interview-skill-2-state-management-in-react">Interview Skill #2 – State Management in React</h2>
<p>Another important challenge when it comes to building React apps is state management. There is a myriad of ways to go about this depending on your concrete use case and goals. Check out <a target="_blank" href="https://blog.whereisthemouse.com/how-to-think-about-react-state-management">my article</a> on the topic if you are curious to learn more.</p>
<p>Whatever approach you choose, what is important during as interview assignment is to show the interviewer that you understand and are able to reason about state management. </p>
<p>Your solution needs to make sense without being overly complex or convoluted. Be prepared to explain and defend your choices.</p>
<p><strong>Tip:</strong> It is a good idea to match your state management solution to the one used by the company your are interviewing for. </p>
<p>Do they use Redux? Then don't hesitate to include Redux in your project. Are they into state machines? Then xState is your friend, and so on. Make sure to ask the interviewer in advance what they would like to see implemented in your project.</p>
<h2 id="heading-interview-skill-3-data-fetching-in-react">Interview Skill #3 – Data-fetching in React</h2>
<p>As a front-end developer, normally you won't be expected to build your own back-end. But the assignment you are given will probably involve some form of data-fetching – likely either through a mock API of some kind or just a JSON file with the necessary data.</p>
<p>This part of the assignment is meant to test if you, as a front-end developer, know how to talk to the back-end. Can you get, display and update the data you receive from the back-end correctly? Do you understand how API requests work? </p>
<p>In a more advanced setting, there might be a conversation about data-fetching architecture, data state management, and front-end caching.</p>
<p><strong>Tip:</strong> Make an effort to implement a semi-realistic data-fetching mechanism in your app. In you are given a JSON file, don't just directly import the data in your components. Instead, use <code>fetch</code> or another more advanced (preferably async) approach to get it so that you are able to demonstrate your deeper understanding.</p>
<h2 id="heading-interview-skill-4-routing-in-react">Interview Skill #4 – Routing in React</h2>
<p>A lot of the time, creating a React project is synonymous with a single page application. So it is possible that the assignment involves implementing a routing solution. </p>
<p>Here the goal is to demonstrate that you understand the basics of client-side routing and are able to structure your app around it.</p>
<p><strong>Tip:</strong> Avoid creating your own client-side routing implementation, unless explicitly required. Opting for <a target="_blank" href="https://reactrouter.com/">React Router</a> or <a target="_blank" href="https://reach.tech/router/">Reach Router</a> is a perfectly acceptable choice.</p>
<h1 id="heading-how-to-stand-out-in-a-react-interview">How to Stand Out in a React Interview</h1>
<p>Getting a solid grasp on the basics discussed above is a must and it's a good start to earn points during an interview assignment. But to truly stand out, you have to go a step further.</p>
<p>Here is how.</p>
<h2 id="heading-understand-your-setup">Understand Your Setup</h2>
<p>Most of the time you can get away with using toolchains like Create React App (or similar) when building a React project for an interview. This will help you get started and save time. </p>
<p>In fact, it is important to use those tools in order to spend your time on meaningful development rather than setup. </p>
<p>But it's also important to understand and be able to explain the basic tooling you are using. During a React interview, expect to be asked questions about <a target="_blank" href="https://webpack.js.org/">Webpack</a> and <a target="_blank" href="https://babeljs.io/">Babel</a>, for example.</p>
<p>But what can really give you an edge is if you not only understand but are able to enhance your existing setup. One idea would be to add a linter (<a target="_blank" href="https://eslint.org/">eslint</a>) and a formatter (<a target="_blank" href="https://prettier.io/">prettier</a>) to your app. This shows that you really care about code quality and consistency.</p>
<p>Another would be to go even further and setup pre-commit hooks (<a target="_blank" href="https://github.com/typicode/husky">husky</a>) that lint and format your code with each commit. Crazy, I know!</p>
<p>These tools take minutes to setup but can seem like an impressive extra step in the eyes on an interviewer.</p>
<h2 id="heading-test-your-code">Test Your Code</h2>
<p>Very few assignments will explicitly state that tests are required. For this reason, many developers assume tests are not part of the task and completely ignore them. This is wrong!</p>
<p>Most of the time, an interviewer will be impressed to see that you understand the importance of testing your code. It is a very easy but powerful way to set yourself apart. </p>
<p>It is not necessary to have a test for every single line of code in your project. Several strategically selected tests covering the more complicated logic should do the trick just fine.</p>
<h2 id="heading-dont-ignore-responsiveness">Don't Ignore Responsiveness</h2>
<p>Here is another aspect of your React assignment that is not explicitly mentioned most of the time – responsiveness. </p>
<p>Even if you are given a design at the beginning of the task, almost always it will not be a responsive one. It is up to you care enough about responsiveness to figure it out on your own.</p>
<p>Same as testing, most developers will just ignore responsiveness. Which is good news for you – it gives you the opportunity to shine!</p>
<p>There is no need for the implementation to be perfect and work flawlessly on every screen and device. The mere fact that this is something you though about in your development process should be enough to score you some major points.</p>
<h2 id="heading-improve-accessibility">Improve Accessibility</h2>
<p>Accessibility is a huge concern for most modern web products. Taking even minor steps to improve the accessibility of your project, like adding <code>alt</code> text to your images, for example, can leave a really good impression.</p>
<p>Accessibility is also another reason why you might want to choose a third-party component library when building your assignment. Most components in these libraries are accessible out of the box.</p>
<p>Making your project as accessible as possible can truly make you stand out in an interview. But what is more, accessibility should be (and is becoming) the norm in web development. Make sure your future employer knows you understand that.</p>
<h2 id="heading-details-matter">Details Matter</h2>
<p>Everything in your code should tell the interviewer you are a competent developer – from basics like the way you name and structure your code to minor details like commit messages. </p>
<p>Given that these assignments are usually done under time constraints, it is tempting to just ignore these seemingly unimportant aspects. But getting them right can meaningfully set you apart.</p>
<p>Hopefully this article is useful for your next React interview. Let me know how it goes!</p>
<p><a target="_blank" href="https://twitter.com/iva_kop">Follow me</a> on Twitter for more tech content.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Coding Interview Backtracking Problems Crash Course – The Only One You'll Ever Need ]]>
                </title>
                <description>
                    <![CDATA[ Whether you are new to coding interviews or are already familiar with the concept of backtracking algorithms, this is the crash course for you. In it, we will learn about an all-purpose coding template for solving backtracking problems and apply it t... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/coding-interview-backtracking-problems-crash-course/</link>
                <guid isPermaLink="false">66d4601355db48792eed3f6b</guid>
                
                    <category>
                        <![CDATA[ coding interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ interview questions ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interview tips ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ leetcode ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Lynn Zheng ]]>
                </dc:creator>
                <pubDate>Tue, 29 Jun 2021 20:00:32 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/06/1080P-Thumbnails-1-.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Whether you are new to coding interviews or are already familiar with the concept of <strong>backtracking</strong> algorithms, this is the crash course for you.</p>
<p>In it, we will learn about <strong>an all-purpose coding template</strong> for solving backtracking problems and apply it to <strong>two LeetCode hard problems</strong>. Ready to crunch your next coding interview? Let's go!</p>
<p>If you just want to dive right in, <a target="_blank" href="https://www.youtube.com/watch?v=H2gnD7Ixeao">you can find the course here</a> (and linked at the bottom of this article). If you want a little more info, read on. :)</p>
<h2 id="heading-who-is-the-course-for-and-what-is-the-backtracking-algorithm">Who is the Course for and What is the Backtracking Algorithm?</h2>
<p>This course is suitable for anyone who is preparing for coding interviews, especially those who are looking to hone their skills in solving <strong>backtracking</strong> problems.</p>
<p>Backtracking is a common category for questions in coding interviews. The algorithm for solving those problems usually involves <strong>recursion</strong> and <strong>building incrementally on previous states</strong> to arrive at the ultimate valid solution.</p>
<p>Backtracking is a favorite topic among top tech companies like Google, Microsoft, and Facebook, precisely because it requires robust reasoning and coding competence to nail those questions.</p>
<p>However, because of its recursive nature and complex problem definition, backtracking problems are usually a major source of confusion among devs who are preparing for coding interviews.</p>
<p>To address this confusion, this crash course aims to arm with you a concise, 20-line template that you can apply to the majority of backtracking problems.</p>
<h2 id="heading-course-outline">Course Outline</h2>
<p>This course runs for a total of 40 minutes and the structure is as follows:</p>
<ul>
<li><p>An 8-minute introduction to <a target="_blank" href="https://gist.github.com/RuolinZheng08/cdd880ee748e27ed28e0be3916f56fa6">the template</a></p>
</li>
<li><p>A 15-minute hands-on code-along session for <a target="_blank" href="https://leetcode.com/problems/n-queens/">LeetCode Question 51. N-Queens</a></p>
</li>
<li><p>A 15-minute hands-on code-along session for <a target="_blank" href="https://leetcode.com/problems/sudoku-solver/">LeetCode Question 37. Sudoku Solver</a></p>
</li>
</ul>
<h2 id="heading-the-all-purpose-template">The All-Purpose Template</h2>
<p>For your convenience, I've copied the template over. This is exactly the same template that I use for my coding interviews, or when I'm developing algorithms for my indie games. I even used it once in my research on a non-convex optimization problem.</p>
<pre><code class="lang-python"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">is_valid_state</span>(<span class="hljs-params">state</span>):</span>
    <span class="hljs-comment"># check if it is a valid solution</span>
    <span class="hljs-keyword">return</span> <span class="hljs-literal">True</span>

<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">get_candidates</span>(<span class="hljs-params">state</span>):</span>
    <span class="hljs-keyword">return</span> []

<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">search</span>(<span class="hljs-params">state, solutions</span>):</span>
    <span class="hljs-keyword">if</span> is_valid_state(state):
        solutions.append(state.copy())
        <span class="hljs-comment"># return</span>

    <span class="hljs-keyword">for</span> candidate <span class="hljs-keyword">in</span> get_candidates(state):
        state.add(candidate)
        search(state, solutions)
        state.remove(candidate)

<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">solve</span>():</span>
    solutions = []
    state = set()
    search(state, solutions)
    <span class="hljs-keyword">return</span> solutions
</code></pre>
<p>The first three are all helper functions, and the last and most important one, <code>solve</code>, is essentially the one that a LeetCode problem is asking you to write.</p>
<h2 id="heading-solving-leetcode-problems-hands-on">Solving LeetCode Problems Hands-On</h2>
<p>We will next apply this template to solving two LeetCode hard problems: <a target="_blank" href="https://leetcode.com/problems/n-queens/">LeetCode Question 51. N-Queens</a> and <a target="_blank" href="https://leetcode.com/problems/sudoku-solver/">LeetCode Question 37. Sudoku Solver</a>.</p>
<p>To illustrate the flexibility of the template, see below for how we solve the N-Queens problem by doing nothing fancy other than adapting the four functions (renaming <code>solve</code> to <code>solveNQueens</code>). The complete code for either problem is available <a target="_blank" href="https://gist.github.com/RuolinZheng08/cdd880ee748e27ed28e0be3916f56fa6">in my GitHub gist</a>.</p>
<p>Watch <a target="_blank" href="https://youtu.be/H2gnD7Ixeao">the video course</a> to follow along my analysis and adaptation of the template.</p>
<pre><code class="lang-python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Solution</span>:</span>
    <span class="hljs-comment"># solveNQueens is essentially the solve function</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">solveNQueens</span>(<span class="hljs-params">self, n: int</span>) -&gt; List[List[str]]:</span>
        solutions = []
        state = []
        self.search(state, solutions, n)
        <span class="hljs-keyword">return</span> solutions

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">is_valid_state</span>(<span class="hljs-params">self, state, n</span>):</span>
        <span class="hljs-comment"># check if it is a valid solution</span>
        <span class="hljs-keyword">return</span> len(state) == n

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">get_candidates</span>(<span class="hljs-params">self, state, n</span>):</span>
        <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> state:
            <span class="hljs-keyword">return</span> range(n)

        <span class="hljs-comment"># find the next position in the state to populate</span>
        position = len(state)
        candidates = set(range(n))
        <span class="hljs-comment"># prune down candidates that place the queen into attacks</span>
        <span class="hljs-keyword">for</span> row, col <span class="hljs-keyword">in</span> enumerate(state):
            <span class="hljs-comment"># discard the column index if it's occupied by a queen</span>
            candidates.discard(col)
            dist = position - row
            <span class="hljs-comment"># discard diagonals</span>
            candidates.discard(col + dist)
            candidates.discard(col - dist)
        <span class="hljs-keyword">return</span> candidates

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">search</span>(<span class="hljs-params">self, state, solutions, n</span>):</span>
        <span class="hljs-keyword">if</span> self.is_valid_state(state, n):
            state_string = self.state_to_string(state, n)
            solutions.append(state_string)
            <span class="hljs-keyword">return</span>

        <span class="hljs-keyword">for</span> candidate <span class="hljs-keyword">in</span> self.get_candidates(state, n):
            <span class="hljs-comment"># recurse</span>
            state.append(candidate)
            self.search(state, solutions, n)
            state.pop()
</code></pre>
<p>Check out the video course here:</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/H2gnD7Ixeao" 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>
<p> </p>
<p>You can access the template as well as the solutions to the two LeetCode problems (<strong>N-Queens</strong> and <strong>Sudoku Solver</strong>) in my GitHub gist:</p>
<div class="gist-block embed-wrapper" data-gist-show-loading="false" data-id="cdd880ee748e27ed28e0be3916f56fa6">
        <script src="https://gist.github.com/RuolinZheng08/cdd880ee748e27ed28e0be3916f56fa6.js"></script></div><p> </p>
<h2 id="heading-final-thoughts">Final Thoughts</h2>
<p>Remember that practice makes perfect, so do try applying this template to <a target="_blank" href="https://leetcode.com/tag/backtracking/">more backtracking problems on LeetCode.</a> Best of luck crunching your next coding interview!</p>
<p>For more content like this, check out my YouTube channel:</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/undefined" 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[ System Design Interview Tutorial – The Beginner's Guide to System Design ]]>
                </title>
                <description>
                    <![CDATA[ By Charles M. System Design is an important topic to understand if you want to advance further in your career as a software engineer. Even if you are just beginning your coding journey, it's a good idea to get a head start on learning about system de... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/system-design-interview-practice-tutorial/</link>
                <guid isPermaLink="false">66d45ddb8812486a37369c75</guid>
                
                    <category>
                        <![CDATA[ beginners guide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ distributed systems ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interview tips ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Microservices ]]>
                    </category>
                
                    <category>
                        <![CDATA[ System Architecture ]]>
                    </category>
                
                    <category>
                        <![CDATA[ System Design ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 14 Jun 2021 22:46:31 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/06/youtube-system-design-thumbnail.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Charles M.</p>
<p>System Design is an important topic to understand if you want to advance further in your career as a software engineer. Even if you are just beginning your coding journey, it's a good idea to get a head start on learning about system design. </p>
<p>Early in your career you will mostly just be tested on your coding ability. In higher level interviews, however, there will often be a greater focus on testing your ability and experience at designing applications.</p>
<p>The biggest struggle engineers have with system design interviews is that they are more open-ended and there isn't any single correct answer. This lack of structure can be intimidating, so my goal with this article is to give you a roadmap for navigating these types of interviews with confidence.</p>
<p>What this article will cover:</p>
<ul>
<li>What is a system design interview and why they are used</li>
<li>The main stages of a system design interview</li>
<li>Example interview problem – Design YouTube</li>
</ul>
<h2 id="heading-video-tutorial">Video Tutorial</h2>
<p>You can also watch this tutorial on YouTube if you like:</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/YEwKnGARDZI" 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>
<p>And I've created a playlist of videos on specific topics related to system design and web architecture:</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/undefined" 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-system-design-interview-overview">System Design Interview Overview</h2>
<p>At first glance it seems silly to ask somebody to design a huge app like Twitter or YouTube in 45-60 minutes. These apps were designed over a period of years by hundreds of engineers working together, so it's clearly an impossible task to do in a short interview.</p>
<p>There are two main reasons why companies use these types of interviews. The first is, of course, to test your knowledge about the technologies being discussed. They want you to go deep enough to make sure you aren't just throwing buzzwords around without understanding how things actually work. </p>
<p>The second reason might be more important, though. The system design interview is a way to simulate a realistic scenario where you are working together with the interviewer to determine the best design decision. </p>
<p>Getting the perfect answer isn't necessarily the most important thing here – it's some of the other things you can show, like:</p>
<ul>
<li>How do you handle being challenged? Do you get defensive or take feedback with a positive attitude? Are you stubborn or narrow-minded?</li>
<li>Do you show knowledge of the various tradeoffs certain design decisions involve? There's a big difference between blindly making a decision and not realizing the consequences, and knowing the pros/cons and accepting the tradeoffs.</li>
<li>Are you able to effectively communicate and if necessary explain complex technical concepts in an easy to understand way?</li>
<li>Are you candidate somebody the interviewer would want to work with long term? Even if somebody is a genius, if they are miserable to work with they might not be a good hire.</li>
</ul>
<h2 id="heading-stages-of-a-system-design-interview">Stages of a System Design Interview</h2>
<p>In this section you'll learn a general framework for structuring how to handle a problem during a system design interview.</p>
<h3 id="heading-clarify-the-problem-and-establish-design-scope">Clarify the problem and establish design scope</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/image-106.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>The first thing you'll want to do after your interviewer gives you the problem is to take a few minutes to ask some clarifying questions and figure out what exactly they are looking for. </p>
<p>The worst thing you could do here is just start off in the completely wrong direction because you didn't take the time to ask a few questions. You have a limited amount of time during the interview, so you want to make sure you focus on what's important. </p>
<p>Here are some examples of questions you might ask:</p>
<h4 id="heading-what-are-the-use-cases-features-of-the-app">What are the use cases / features of the app?</h4>
<p>In this article we will be using YouTube as an example. There are hundreds of different features you could design like ad delivery, authentication, recommendation algorithms, comments, video upload, video processing, and many others. </p>
<p>During an interview you only have time to cover a few of those, so make sure to ask the interviewer questions to figure out what they want you to focus on designing.</p>
<h4 id="heading-how-many-users-are-expected-what-is-the-likely-traffic-volume">How many users are expected / what is the likely traffic volume?</h4>
<p>The complexity of the system will depend on the amount of traffic it needs to handle, so make sure to gather this information. </p>
<p>You don't want to over-engineer things if the traffic is relatively low and you also don't want to get stuck with an app that can't scale because you didn't design it properly. </p>
<p>Ask questions like how many users the app will have, the average amount of data per request, how long data needs to be stored, and how reliable and available does the system need to be?</p>
<p>This step is going to help you beyond just getting more information to work with. You're also showing the interviewer that you understand how to gather information about a vague problem. </p>
<h3 id="heading-determine-rough-capacity-estimates">Determine Rough Capacity Estimates</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/image-107.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Using the information you gathered during the first step, you can begin to make some rough estimates and generalizations for things like storage and bandwidth requirements.</p>
<p>This process will involve some basic math like multiplying the number of users by the average request size and the amount of requests each user is expected to make daily. </p>
<h3 id="heading-create-a-high-level-design">Create a High Level Design</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/image-108.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Here you want to create a rough architecture for the system. Draw out things like load balancers, web servers, app servers, task queues, database, caching, file storage, and so on. You should include all the core components you need to create the system. </p>
<p>Make sure to communicate with the interviewer during this stage and check to ensure that you aren't missing anything. While they probably won't tell you directly, they will give you a nudge in the right direction if you forgot about some crucial feature.</p>
<h3 id="heading-api-design">API Design</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/image-114.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>This part is almost cheating because you are using the structure of the interview to your advantage to confirm that you are on the right path. </p>
<p>The interviewer is never going to deliberately lead you down the wrong path, so once you've created your high level design you can start sketching out some rough API endpoints for each component. </p>
<p>For the YouTube example they might look something like this, depending on which features you are building:</p>
<ul>
<li>uploadVideo (userID, video, description, title)</li>
<li>comment (userID, videoID, comment)</li>
<li>viewVideo (videoID)</li>
<li>videoSearch (query)</li>
</ul>
<p>In some cases you might not need to drill down to this level. If the interview question is very high level like "design Youtube", you can probably skip this part. On the other hand if you get a more focused question like "design YouTube's comment system", it would make sense to go more in depth.</p>
<h3 id="heading-create-a-data-schema">Create a Data Schema</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/image-113.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>At this point you should have a good idea of all the requirements and data needed for the application to work, so now you can plan out how your data is structured. </p>
<p>Depending on what you are building and the requirements, you'll need to weigh the costs and benefits of things like using a relational vs non-relational database. When modeling your data you'll also want to account for things like potential data partitioning and replication.</p>
<h3 id="heading-take-a-detailed-look-at-the-components">Take a Detailed Look at the Components</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/image-112.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>What happens during this section will mainly depend on the feedback of the interviewer. They will probably pick out a few specific components to focus on and ask why you made certain decisions. </p>
<p>The most important part here isn't necessarily being 100% right. Instead, it's to show that you didn't just blindly make decisions and understand exactly what tradeoffs you were making. </p>
<p>You should be able to propose alternate design decisions that could have been used and explain why you didn't use them.</p>
<h2 id="heading-how-to-design-youtube">How to Design YouTube</h2>
<p>Now that you have a general idea of how a system design interview works and a framework for handling a system design problem, I'm going to show you how to put it all into practice using YouTube as an example.</p>
<h3 id="heading-step-1-define-problem-scope-and-requirements">Step 1 – Define Problem Scope and Requirements</h3>
<p>This will be a high level problem where we implement a few of YouTube's major features without diving too in-depth on any of them. The features to focus on will be:</p>
<ul>
<li>Users can upload videos</li>
<li>Users can view videos</li>
<li>Users can comment on videos</li>
</ul>
<h3 id="heading-step-2-determine-capacity-estimates">Step 2 – Determine Capacity estimates</h3>
<p>The two biggest capacity factors in an app handling large amounts of video like YouTube will be storing all that content and bandwidth requirements to deliver the content to users. In this section you'll learn how to make rough estimates for capacity requirements. </p>
<p>The main focus here is not on being highly accurate, but showing a logical thought process for calculating these numbers based on the information available to you.</p>
<p>In an interview you would be given the data, but in this case I'm using two key pieces of data that YouTube has made public:</p>
<ul>
<li><strong>YouTube creators upload 500 hours of video every minute</strong></li>
<li><strong>YouTube users watch 1 billion hours of video per day</strong></li>
</ul>
<p>You can use these numbers to calculate storage and bandwidth requirements with a few assumptions.</p>
<h4 id="heading-bandwidth-calculation">Bandwidth Calculation</h4>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/image-92.png" alt="Image" width="600" height="400" loading="lazy">
<em>Daily bandwidth calculation</em></p>
<p>To calculate an estimate for bandwidth, we start with the amount of video watched daily. The key assumption here is how much bandwidth is used per hour watched, as this would depend on the quality of video most users choose to watch. </p>
<p>The 3 Gigabyte estimate is based on a rough percentage of users watching in standard definition and others choosing HD or 4K, which consume much more bandwidth per hour watched.</p>
<p>The math here is fairly simple: multiply 1 billion hours by the average bandwidth of an hour of video, then divide that by 1000 to convert to terabytes, then divide by 1000 again to get to Petabytes. The final bandwidth estimate is <strong>3,000 PB</strong> used daily.</p>
<h4 id="heading-storage-calculation">Storage Calculation</h4>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/image-91.png" alt="Image" width="600" height="400" loading="lazy">
<em>Step by step calculations for storage</em></p>
<p>Based on a few assumptions we can calculate that YouTube will need to store around <strong>2.16</strong> <strong>Petabytes</strong> of new video every day. Here's how we get that number:</p>
<ul>
<li>Convert 500 hours to 30,000 minutes of video uploaded per minute</li>
<li>Each minute of HD video is roughly 50 Megabytes due to having copies of each video in multiple formats. We multiply that by 30,000 minutes and then divide by 1000 to convert to Gigabytes.</li>
<li>We then take the 1,500GB uploaded per minute and multiply by 60 then 24 to calculate the daily amount of video uploaded. We divide by 1000 again to convert Gigabytes to Terabytes</li>
<li>Our final total is 2,160 Terabytes uploaded daily or 2.16 Petabytes</li>
</ul>
<h3 id="heading-step-3-database-design">Step 3 – Database Design</h3>
<p>For our database we will use a standard relational database like MySQL. The schema will look something like this: </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/image-93.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>This design is very simple but has the essentials that you'd need for a basic implementation. It would be a good idea to do some research into the differences between relational and non-relational databases so you understand what kind of situations each excel at and when to use them. </p>
<p>For certain apps with different requirements a NoSQL database might make sense. Often large systems will have many different services that use different types of databases depending on their needs.</p>
<h3 id="heading-step-4-high-level-design">Step 4 – High Level Design</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/image-95.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>That's a pretty complex diagram, so let me break down what's happening:</p>
<ul>
<li><strong>Client</strong> – This could be a user on a mobile app or their computer trying to upload a video, make a comment, or watch a video</li>
<li><strong>CDN</strong> – A content distribution network is used to reduce latency and improve reliability when it comes to delivering static content like videos or images. A CDN works by storing content in data centers all around the world so that the content is closer to users. This results in reduced latency because requests travel a shorter distance. There's also an added benefit of content being stored in multiple locations so even if one location can't serve traffic for some reason, another location can.</li>
<li><strong>Load Balancers</strong> – A load balancer accepts requests and routes them to servers depending on a number of factors. At YouTube's scale, a single server can't handle all the traffic and you want replication to prevent a single point of failure. The load balancer can check the status of servers and verify they can handle traffic or choose another server that can handle the request.</li>
<li><strong>Services</strong> – You can think of this as the app layer of the system. Instead of using a single monolith to handle traffic, we'll use several microservices to handle specific tasks. The second box for each of these services in the diagram represents multiple servers running for each of them to increase reliability. If one replica of the service goes down, there's always another to step in and handle traffic.</li>
<li><strong>Data Stores</strong> – When using microservices it is generally best practice for each microservice to own its own data. If one service needs data from another they can access it through an API.</li>
<li><strong>Video Upload Process</strong> – Handling the video uploads will involve multiple steps, as trying to handle it synchronously with the app server would be fragile and reduce performance. I'll cover this more in depth in the next section</li>
</ul>
<p>I don't want to go too in-depth on these individual components because I could write entire articles on any of them if I wanted to explain them fully. </p>
<p>If you are interested in a more detailed explanation you can check out the system design playlist I linked to above which has videos covering most of these concepts. </p>
<h3 id="heading-step-5-go-over-specific-components-and-details">Step 5 – Go Over Specific Components and Details</h3>
<p>At this stage you have a working design. Now let's look at some of the specific components in detail.</p>
<h4 id="heading-video-upload">Video Upload</h4>
<p>Video content is the lifeblood of YouTube, and it doesn't exist without it. This means that making it quick and easy for users to upload videos is probably the most important feature. </p>
<p>Imagine uploading a multi-gigabyte video to YouTube and then seeing the upload fail after 30 minutes when it's 95% done. To prevent this you'll want to support the ability for resuming uploads if the client's connection is lost temporarily. The uploaded video can then be stored with a distributed file system like HDFS. </p>
<p>Once the upload is complete there's still a lot more to do before the video is ready for users to access. The video needs to be encoded into multiple different quality formats, you need to generate thumbnails, and push copies of the video to the global CDN. </p>
<p>Again, at any stage one of these processes could fail. To prevent this you'll have a task queue to manage this process and retry the processing attempt if it fails at any stage. </p>
<h4 id="heading-database-scaling">Database Scaling</h4>
<p>The database is often the bottleneck of an application. You will probably be tested on whether you understand some of the fundamental concepts around database scaling. This could include caching to handle read requests, sharding, and replication. </p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Hopefully this article has given you a better understanding of what to expect during a system design interview. </p>
<p>This article mainly focused on the structure of the interview itself rather than the concepts you need to understand to answer the questions given during the interview. </p>
<p>Two great resources for beginning to learn about that are:</p>
<p>A great article posted here on Free Code Camp News: <a target="_blank" href="https://www.freecodecamp.org/news/systems-design-for-interviews/">https://www.freecodecamp.org/news/systems-design-for-interviews/</a></p>
<p>The system design primer repo on GitHub: <a target="_blank" href="https://github.com/donnemartin/system-design-primer">https://github.com/donnemartin/system-design-primer</a></p>
<p>Both cover just about every major concept you need to know for your system design interview and should put you in a great position for success.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Get a Cybersecurity Job – Tips from a Hiring Manager ]]>
                </title>
                <description>
                    <![CDATA[ By Aaron Katz Cybersecurity is one of the fastest growing fields in technology. There are 3.5 million unfilled jobs predicted by the end of 2021, there's been a 0% unemployment rate since 2011, and spending reached $123 billion in 2020. Whether you a... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-get-a-cybersecurity-job-tips-from-hiring-manager/</link>
                <guid isPermaLink="false">66d45d61b3016bf139028d13</guid>
                
                    <category>
                        <![CDATA[ cybersecurity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Interview ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 01 Feb 2021 19:10:44 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/02/joshua-gandara-xxn48oa73sM-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Aaron Katz</p>
<p>Cybersecurity is one of the fastest growing fields in technology. There are <a target="_blank" href="https://cybersecurityventures.com/jobs/">3.5 million unfilled jobs</a> predicted by the end of 2021, there's been a <a target="_blank" href="https://www.monster.com/career-advice/article/tech-cybersecurity-zero-percent-unemployment-1016">0% unemployment rate</a> since 2011, and spending reached <a target="_blank" href="https://www.forbes.com/sites/louiscolumbus/2020/08/09/cybersecurity-spending-to-reach-123b-in-2020/?sh=3da156f7705f">$123 billion</a> in 2020.</p>
<p>Whether you are a fresh graduate or are looking to make a shift in careers and nab one of those jobs, knowing how to best position yourself in an interview can give you the edge.</p>
<p>I've been working in cybersecurity for over 10 years, and majored in Business Information Systems and Classical Languages &amp; Literatures (I hated math so Computer Science as a major was out). You don't need an academic background in computer science to get your start in cybersecurity, you just need to be curious and learn. </p>
<p>Below are 10 tips I've put together to help guide you in preparing for your first or next cybersecurity role.</p>
<h2 id="heading-0-apply-for-the-job">0. Apply for the Job</h2>
<p>Forget the qualifications listed on the job posting (well, maybe not completely). Does the job seem interesting? Would you like to work at the company? Do you have <em>some</em> of the criteria? <strong>Then apply!</strong> </p>
<p>Too often, I've seen very qualified individuals not apply for jobs because they felt that they wouldn't meet every single criteria listed. But if you think you can meet some of the requirements, then apply and at least have a dialogue. </p>
<p>Often hiring managers end up throwing every requirement they can think of on the job description, rather than the minimum needed for the role. And forget the degree requirements completely - <a target="_blank" href="https://www.cnbc.com/2018/08/16/15-companies-that-no-longer-require-employees-to-have-a-college-degree.html">some of the largest companies in the world don't require degrees</a> anymore.</p>
<h2 id="heading-1-get-involved-in-the-cybersecurity-community">1. Get Involved in the Cybersecurity Community</h2>
<p>Join local meetup groups, or participate in Capture the Flag competitions, such as those hosted by the <a target="_blank" href="https://nationalcyberleague.org/">National Cyber League</a>. These events are open to beginners and experienced people alike, and help demonstrate your passion and commitment to cybersecurity growth. </p>
<p>I often instruct our recruiters to highlight any résumés they come across where they see the candidate participated in cybersecurity events. </p>
<p>In every interview I conduct, I always ask how the candidate keeps up to date with cybersecurity - this is a great time to talk about your reading list, projects, and the events and groups you are part of.</p>
<h2 id="heading-2-do-your-research">2. Do Your Research</h2>
<p>One area where I see candidates stand out from the pack is when they demonstrate they have researched my company, and the industry my company is in.  </p>
<p>Every candidate should be prepared to answer "What threats do you see against my firm, and what advice would you give leadership to mitigate these threats?". Even better, if you know the name of your interviewer prior to the interview, spend some time researching them on <a target="_blank" href="https://linkedin.com">LinkedIn</a> to get a sense of their background.</p>
<p>One of the best interviews I conducted was with a candidate who actually performed some reconnaissance on my company prior to the interview. They looked up my company's information on <a target="_blank" href="https://shodan.io">Shodan</a>, Google, and other avenues to get a sense of potential exposure and an understanding of our public presence.</p>
<p><em>Note: Please do not try to actively scan the company's infrastructure and report vulnerabilities during your interview. This type of activity is in the grey area of legality at best, and likely won't endear you to the interviewer.</em></p>
<h2 id="heading-3-keep-up-with-current-events">3. Keep Up with Current Events</h2>
<p>Any candidate I interview should be able to tell me basic information about the latest trends in cybersecurity. This includes being able to discuss what "<a target="_blank" href="https://www.csoonline.com/article/3227906/what-is-wannacry-ransomware-how-does-it-infect-and-who-was-responsible.html">WannaCry</a>" is, thoughts on recent breaches (such as the <a target="_blank" href="https://www.businessinsider.com/solarwinds-hack-explained-government-agencies-cyber-security-2020-12">recent SolarWinds attack</a>), and suggestions on how to prevent, contain, respond to, and recover from ransomware. </p>
<p>Depending on the seniority, I may not expect detailed technical information, but a cursory understanding is required.</p>
<h2 id="heading-4-presentation-is-important">4. Presentation is Important</h2>
<p>While it can be tedious, you should make sure to tailor your résumé and cover letter to call out areas of interest that are in line with the job posting.  </p>
<p>Tailor your résumé to the job you are applying for - don't add in a laundry list of unnecessary information.</p>
<h3 id="heading-introduction">Introduction</h3>
<p>The first part of the résumé, aside from your name and contact information, should be a brief introductory paragraph that really sells you to me. Explain what you bring to the table - this section helps separate you from the other résumés that just list work experience without giving context. </p>
<h3 id="heading-work-experience">Work experience</h3>
<p>List the most current position you have, and work your way back. Be prepared to discuss any major noticeable gaps in employment. </p>
<p>If you've been in the professional arena for quite some time, you don't need to list every single career - 10-15 years is a good range to display. No one wants to read a ten page résumé - so make sure that every bullet point is relevant.</p>
<p>Avoid acronyms where possible, and try to provide at least three bullet points for every job listed on the résumé. Make sure these bullets list out your accomplishments, and where possible provide <strong>hard numbers</strong> rather than vague text. For example, "Achieved 60% cost savings" sounds better than "Saved money".</p>
<p><em>A note on grammar: Use present tense for the job you are working in, and past tense for all prior roles. Also, please use grammar and spell-check in your word processing program. A poorly written</em> résumé <em>often gets rejected before it is even sent to the hiring manager.</em></p>
<h3 id="heading-professional-memberships-publications-speaking-engagements-and-certifications">Professional memberships, publications, speaking engagements, and certifications</h3>
<p>If applicable, use this section to list out any boards, communities, or professional organizations you belong to, as well as your membership (for example, member, director, founder, and so on.). </p>
<p>This helps show the hiring manager your involvement in the community outside of your day to day employment and in general makes you a more attractive candidate. </p>
<p>Feel free to add in relevant or interesting memberships outside of cybersecurity groups - such as a troop leader for the Girl Scouts or board member of a non-profit. If your publication or speaking engagement is available online, include links to the content. </p>
<p>Last, list out your certifications, including the issuing body and when you achieved the certification.</p>
<h3 id="heading-technical-skills">Technical skills</h3>
<p>Be careful with this section. It's tempting to list every single technical term under the sun here, but you should focus on the skills that you feel will make you an asset for the role you are applying to.  </p>
<p>My biggest pet peeve in this section is when candidates put down "generic fluff" such as "OSI model", "TCP", "IP", "SSH", "Windows operating system", "Mac operating system", or even just a list of security tools.  </p>
<p>When a hiring manager sees a technical skills section that only lists security tools, their first though is usually "Can this candidate perform if they did not have access to these tools?"</p>
<p><em>Caution</em>: <em>If you list a skill on your</em> résumé<em>, be prepared to discuss it.  I learned this myself in one interview where I was asked a series of very technical questions about the Python language simply because I put it on my</em> résumé<em>.</em></p>
<h2 id="heading-5-develop-your-hard-skills">5. Develop Your Hard Skills</h2>
<h3 id="heading-codingscripting-skills">Coding/Scripting skills</h3>
<p>While not required for many roles, I do pay attention to résumés that indicate that the candidate has some form of development or coding experience. </p>
<p>If you don't have formal development experience, but you can do some basic coding (all of my coding pretty much involves having <a target="_blank" href="https://stackoverflow.com/">StackOverflow</a> open in a browser window), you should absolutely put that on your résumé. </p>
<p>If you have contributed to any open source projects, or worked on code yourself, make sure that is highlighted on your resume as well - this is something I try to look for on résumés. Sites like <a target="_blank" href="https://freecodecamp.org/">freeCodeCamp</a>, <a target="_blank" href="https://codebashing.com">CodeBashing,</a> and <a target="_blank" href="https://leetcode.com">LeetCode</a> can help provide a solid scripting and coding foundation.</p>
<h3 id="heading-technology-fundamentals">Technology fundamentals</h3>
<p>Understanding how a system works is fundamental to being able to efficiently protect it. Based on the role you are applying for, ensure you can speak at about relevant technologies, with insight into the attacks and defenses relevant to the technology. </p>
<p>For example, if I am hiring a network security engineer, I would expect the candidate to explain what DNS is, <a target="_blank" href="https://www.verisign.com/en_US/website-presence/online/how-dns-works/index.xhtml">how it works</a> at a high level, and what protocol it uses (UDP. Only say TCP if you can qualify when specifically it will be used).</p>
<h2 id="heading-6-develop-your-soft-skills">6. Develop Your Soft Skills</h2>
<h3 id="heading-communication-skills">Communication skills</h3>
<p>Communicating well is one of the most important skills any cybersecurity professional can have. Most organizations have a limited team size for cybersecurity, and as such you may be expected to speak to senior leadership that may not have your technical background. </p>
<p>One element I look for in any résumé is whether the candidate has listed public speaking engagements, such as presenting a topic at a conference. I expect any team member to be able to speak with employees and break down complex cybersecurity topics into easily digested, actionable information.</p>
<h3 id="heading-leadership-skills">Leadership skills</h3>
<p>These skills are really hard to put down on paper. However, I expect any candidate to be (eventually) able to lead cybersecurity initiatives and projects. </p>
<p>Come to the interview prepared to discuss any project - whether from your career or a side project or activity (for example, coaching, tutoring, and so on) - where you had to take initiative, and what you learned from the experience.</p>
<h3 id="heading-organization-skills">Organization skills</h3>
<p>Being organized is a key skill for a successful candidate to possess. No matter how good your technical skills, if you struggle meeting deadlines, or being able to multi-task (cybersecurity runs at a rapid pace - it is <em>very</em> difficult to have uninterrupted time focusing on one task), it will be difficult to land that job, especially on a small team.</p>
<h2 id="heading-7-demonstrate-practical-experience">7. Demonstrate Practical Experience</h2>
<p>You don't need to have formal professional experience to apply for a cybersecurity job. However, you can give yourself a leg up over the competition by demonstrating projects and skills you have learned that are relevant to cybersecurity.  </p>
<p>If you have a GitHub link to a project you worked on, or you decided to test out building a Kubernetes cluster on several Raspberry Pis, add that to your résumé!</p>
<h2 id="heading-8-keep-your-resume-relevant">8. Keep your Résumé Relevant</h2>
<p>All too often I receive résumés that take up space listing out completed college courses related to cybersecurity when the candidate has been in the field for 5+ years.  </p>
<p>Make sure that your résumé only lists relevant information - while it may not need to be relevant to cybersecurity (diversity of experience is always nice to see), college classes and a GPA really aren't relevant unless you are applying for your first job out of college.</p>
<p>While I am not of the opinion that a résumé must, no matter what, be only one page, the content should not feel fluffy. I rarely see a need for a résumé to be more than one page unless you have spent years in the field in various roles.</p>
<h2 id="heading-9-be-professional">9. Be Professional</h2>
<p>Cybersecurity in general tends to be a relatively informal industry (even more so in the age of digital interviews). However, first impressions are extremely important, so make sure to dress and act professionally during your interview (and ideally if you get hired too!).  </p>
<p>I have seen candidates interview in stained undershirts, inappropriate graphic tees, and other unprofessional attire. This is your chance to make an impression, and while I wouldn't say you need to dress in a suit and tie, at a minimum you should dress in business casual clothing, similar to what you would wear if you had to come in to an office.</p>
<p>In addition to what you wear, how you speak is extremely important. We have all had bad managers in the past, or worked for terrible companies. However, don't spend your interview badmouthing previous employers or companies.</p>
<p>If you're asked about why you are leaving, or what issues you had with a job, it is better to just say the job "wasn't a good fit" and leave it at that. You don't want the interviewer assuming this is how you would talk about them. </p>
<p>How a candidate conducts themselves, and how diplomatic they are, is extremely important. Given how small many cybersecurity teams are, you can find yourself speaking with senior leadership, and the interviewer will be on the lookout for how you they believe you would conduct yourself in those situations. </p>
<p>Last, and this should go without saying, is always be polite. Whether to the HR recruiter, external recruiter, interviewer, or receptionist - always be polite. People do not want to hire and work with someone they feel is rude or disrespectful.</p>
<h2 id="heading-10-the-star-method">10. The STAR Method</h2>
<p>Cybersecurity is a high stakes, fast paced field where critical and analytical thinking, ego (yours and others) management, conflict resolution, and leadership play a key role in the team's success. </p>
<p>Interviewers typically look for someone who has a <em>hacker mindset</em> - someone who is innovative, and can think critically to solve problems. </p>
<p>Come prepared to discuss situations where you have had to deal with conflicting priorities, solve complex problems, explain technical information to a non-technical audience, and even discuss areas where you see opportunity for growth in your performance.</p>
<p>While I won't go into various scenarios in this post, one key outcome I look for is whether the candidate understands how to frame cybersecurity <strong>risk</strong>. </p>
<p>There are times risks need to be taken, and it is our job to provide the right information so that the decisions made are informed. How well a candidate can analyze a problem is worth more than the experience written down on the résumé.</p>
<p>Especially when responding to behavioral interview questions, the <a target="_blank" href="https://www.themuse.com/advice/star-interview-method">STAR method</a> provides a good framework of how to provide answers:</p>
<ul>
<li>Describe the situation you were in.</li>
<li>What task were you performing, and what was the desired goal?</li>
<li>Describe the action(s) you took to address the situation. Be specific and focus on your contributions.</li>
<li>What was the result of your actions?</li>
</ul>
<p>The jobs available in cybersecurity are many, covering numerous <a target="_blank" href="https://www.globalknowledge.com/us-en/resources/resource-library/articles/8-specializations-that-define-successful-cybersecurity-organizations/#gref">specializations</a> that range from technical, hands on keyboard roles to governance and design roles. Use these tips to land your perfect job, and welcome to cybersecurity!</p>
<h2 id="heading-further-reading">Further reading</h2>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.sans.org/cyber-security-skills-roadmap">https://www.sans.org/cyber-security-skills-roadmap</a></div>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://krebsonsecurity.com/category/how-to-break-into-security/">https://krebsonsecurity.com/category/how-to-break-into-security/</a></div>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.concise-courses.com/how-to-start-your-career/">https://www.concise-courses.com/how-to-start-your-career/</a></div>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://securityintelligence.com/articles/10-dos-and-donts-for-writing-a-winning-cybersecurity-resume/">https://securityintelligence.com/articles/10-dos-and-donts-for-writing-a-winning-cybersecurity-resume/</a></div>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.amazon.jobs/en/landing_pages/in-person-interview">https://www.amazon.jobs/en/landing_pages/in-person-interview</a></div>
 ]]>
                </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[ 10 Mistakes Developers Make While Job Hunting – and How to Fix Them ]]>
                </title>
                <description>
                    <![CDATA[ By Megan Kaczanowski Job hunting is hard. It's not something you ever get comfortable with, because you typically don't do it often enough to get good at it. There's also A LOT of bad advice on the internet about how to job hunt.  Because it can be d... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/job-hunting-mistakes-and-how-to-fix-them/</link>
                <guid isPermaLink="false">66d46061c7632f8bfbf1e45f</guid>
                
                    <category>
                        <![CDATA[ career advice ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Career Change ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ jobs ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 01 Sep 2020 12:00:00 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c98ec740569d1a4ca1cd3.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Megan Kaczanowski</p>
<p>Job hunting is hard. It's not something you ever get comfortable with, because you typically don't do it often enough to get good at it. There's also A LOT of bad advice on the internet about how to job hunt. </p>
<p>Because it can be difficult to figure out which resources online are helpful, and which are useless, I've created a list of my top tips and favorite resources for job hunting, resumes, and interview prepping. </p>
<p>Here's my top tips to help you identify the things you're doing wrong when job hunting.</p>
<h2 id="heading-you-have-a-poor-resumehttpswwwaskamanagerorg201806how-to-write-a-resume-that-doesnt-suckhtml">You have a poor <a target="_blank" href="https://www.askamanager.org/2018/06/how-to-write-a-resume-that-doesnt-suck.html">resume</a>.</h2>
<p>Resumes which are poorly formatted, hard to read, full of grammatical errors, or don't accurately capture your experience can really hurt your changes of getting interviews. </p>
<p>Most people are bad at writing them, which makes sense – after all, you probably only write them every few years. And it involves selling yourself, and your skills, something which most people struggle with. </p>
<p>On top of this, it's difficult to figure out how to sort through all the advice on the internet in order to figure out which is good advice (please avoid the professional resume services). </p>
<p>Plus people rarely think that their resume is the problem, even if they've been struggling to get interviews. They'll often say something like 'but I've had tons of people review it and they all say it's okay!'. </p>
<p>There are a couple of problems with this: first, you want your resume to be better than okay. In order to stand out in an extremely competitive job market, it needs to be stellar. </p>
<p>Second, most people don't know how to write a resume, and therefore they can't help identify the problems with yours. Also, it's often hard for reviewers to provide constructive criticism for fear of hurting someone's feelings. </p>
<p>Finally, you really need someone who has a lot of experience hiring or recruiting in your specific field in order to receive accurate advice. </p>
<p>Need more detailed resume writing tips? <a target="_blank" href="https://www.freecodecamp.org/news/how-to-write-a-resume-that-works/">Read this article</a>.</p>
<h2 id="heading-you-write-a-generic-boring-cover-letter">You write a generic, boring cover letter.</h2>
<p><strong>You should write a personalized, custom cover letter for jobs you care about</strong>. Cover letters are a way that you can stand out from your competition and show the organization why you're interested in working for them, as opposed to any other organization. </p>
<p>This is more important to some organizations than others (FAANG typically don't care), but a great cover letter will never hurt your chances of being hired, only help them. </p>
<p>It can also be a helpful exercise for you, because it gives you the chance to think about and articulate why you're interested in working for this company. </p>
<p>This way, when you're asked in an interview 'why this organization?'  you have an answer readily available. </p>
<p>In addition,  your cover letter should be in the body of your application email - don't send an empty email with two attachments to the hiring manager.</p>
<h2 id="heading-you-fail-to-proofread-everything">You fail to proofread everything.</h2>
<p>If you struggle with grammar and spelling, or English isn't your first language, check out <a target="_blank" href="https://www.grammarly.com/">Grammarly</a>. It is free and will help you identify changes you should make to your writing. </p>
<p>Also, if you can, ask a friend who got great grades in English to help you out. If your resume/cover letter/application is difficult to read due to spelling and grammatical mistakes, the focus won't be on your achievements. </p>
<p>Plus, communication is a big part of any job (no matter how technical) and your application is a place to showcase your communication skills. </p>
<p>Since you've had essentially unlimited time to write and review your resume/cover letter/application, it's expected that they will be free from grammatical mistakes or spelling errors.</p>
<h2 id="heading-you-forget-about-the-behavioral-interview-questions">You forget about the behavioral interview questions.</h2>
<p>Preparing for an interview is extremely important. For the technical questions, <a target="_blank" href="http://www.crackingthecodinginterview.com/">Cracking the Coding Interview</a>, <a target="_blank" href="https://www.interviewcake.com">Interview Cake</a>, <a target="_blank" href="https://leetcode.com/">Leet Code</a>, and <a target="_blank" href="https://www.hackerrank.com/">HackerRank</a> are excellent resources (as is <a target="_blank" href="https://www.freecodecamp.org/learn/">freeCodeCamp</a>!) </p>
<p>However, a common mistake is to ignore the behavioral questions entirely. These questions can set you apart from your peers, and an inability to answer them well can ruin your chances of being hired, even if your technical responses are excellent. </p>
<p>The best place to start is often to look at Glassdoor interview reviews for the company you're interviewing with. This will help you get an idea of what type of behavioral questions they favor, as well as the STAR technique, outlined <a target="_blank" href="https://fairygodboss.com/articles/behavioral-interview-questions-and-answers">here</a>. </p>
<p>In addition, Leet Code and HackerRank also have great discussion forums to talk about behavioral questions for specific companies and how to best prepare.</p>
<h2 id="heading-you-dont-dress-up-for-your-interview-even-if-its-over-video-or-you-show-up-late">You don't dress up for your interview (even if it's over video) or you show up late.</h2>
<p>It will likely make you feel more confident to dress well for your interview. And similarly to proofreading, will ensure that the focus is on what you're saying, not what you're wearing. </p>
<p>What is considered appropriate workplace attire varies based on the geographic location, industry, organization, culture, and so on. So it's important to do some research in advance to figure out what you should wear. </p>
<p>In addition, if you're interviewing via phone or video call, ensure that you've minimized background noise (or distracting items in the background), that your camera and microphone work well, and that you have a quality internet/phone connection from your location. </p>
<p>Again, the focus should be on helping the interviewer focus on what you're saying, not a poor internet connection, background noise, or an odd background. You should definitely be prepared to turn on your video camera during a virtual interview.</p>
<h2 id="heading-you-apply-for-jobs-which-dont-relate-to-your-job-history-with-no-explanation">You apply for jobs which don't relate to your job history with no explanation.</h2>
<p>If you've previously only had jobs doing x and are now applying for jobs doing y, you need a clear and convincing explanation as to why you would be good at this new job. </p>
<p>Employers often receive hundreds, if not thousands of resumes for a single position. They need a fast, easy way to sort through the resumes in order to decide whom they want to give interviews. </p>
<p>Thus, if there's anything wrong with the resume (typos, strange formatting, experience which doesn't match the position), they're likely to simply toss it in the 'no' pile. </p>
<p>It's your job to convince the employer that you would be great at the job (and why!) with your application materials. This is particularly relevant if you're attempting to change careers or are coming from a self-taught or bootcamp background. </p>
<p>That doesn't mean you can't apply for those jobs (<a target="_blank" href="https://www.freecodecamp.org/news/inspirational-success-stories-from-self-taught-web-developers-4f6f375cf17d/">plenty of self-taught developers have successfully changed careers!</a>), but it does make it a little harder. </p>
<p>You need to clearly show to employers why you're qualified with an excellent cover letter and a resume which highlights projects you've done and transferrable skills from previous jobs.</p>
<h2 id="heading-you-dont-follow-instructions">You don't follow instructions.</h2>
<p>It sounds simple, but many people don't follow instructions. </p>
<p>If the job posting asks you to submit a resume/cover letter to a specific email address, do that. Don't print it out and mail it to the hiring manager or mail the hiring manager something other than your resume or submit a video resume when they've asked for a pdf. </p>
<p>They've asked for <em>specific</em> application materials in a <em>specific</em> format because it is easy for them. If you go around that process, your materials may never make it to the appropriate person, or it may annoy them that you've created more work for them (like scanning a resume into an online portal where they asked you to submit it). </p>
<p>Your goal should be to make it easy for hiring managers and HR to look at and review your application. </p>
<h2 id="heading-you-follow-up-right-after-submitting-an-application">You follow up right after submitting an application.</h2>
<p>If they're interested, they'll reach out to you. If they don't reach out, it could have been for a million reasons.</p>
<p>Perhaps they already had an internal candidate in mind, they've already filled the position and forgot to take the job posting down, or your application didn't stand out to them. </p>
<p>Don't overthink why you haven't heard back, and don't bother them. Move on to the next application. </p>
<p>Keep in mind that <em>this is only the case if you haven't been contacted about an interview</em>. If you've already had an interview, there are different rules for following up. </p>
<h2 id="heading-you-think-that-youre-the-exception-to-the-rule">You think that you're the exception to the rule.</h2>
<p>Everyone seems to have a story about a friend of a friend who got a job from doing something highly unusual like mailing the hiring manager a gift, showing up to the office, or another gimmick. </p>
<p>They're almost universally bad ideas. Don't <a target="_blank" href="https://www.askamanager.org/2014/04/i-sent-chocolate-to-a-hiring-manager-but-havent-heard-back.html">mail a hiring manager chocolate</a> or <a target="_blank" href="https://www.askamanager.org/2015/02/should-you-list-a-fun-but-fake-fact-on-your-resume-to-intrigue-an-employer.html">add fake facts</a> to your resume, or <a target="_blank" href="https://www.askamanager.org/2013/06/a-job-applicant-stopped-by-with-a-plant-and-candy.html">drop by the office</a> unexpectedly. </p>
<p>There are times when a candidate is so strong that they're hired regardless, or times when the hiring manager may appreciate an unorthodox approach (often when they are a small organization and/or don't hire frequently). But the vast majority of people will find it annoying. </p>
<p>Plus, you probably don't want to work for an organization where that type of tactic would work. You want to work for a place where what matters is your ability to do the job.</p>
<h2 id="heading-you-dont-use-a-professional-email-address">You don't use a professional email address.</h2>
<p>Something like firstname.lastname@emailprovider.com is fine. University addresses are also fine, but after you have been out of university for a few years, it's probably a good idea to update it. </p>
<p>Something like 'fantasydudette@yahoo.com' is not.</p>
<h2 id="heading-good-luck">Good luck!</h2>
<p>If you've managed to nail all of these, congratulations and best of luck to you on your job search journey!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Get a Developer Job Abroad ]]>
                </title>
                <description>
                    <![CDATA[ By Jakub Kubista Many people dream about working abroad in their industry. But they're often not sure how to do it easily, or how to attract the interest of companies who are hiring. I was looking for a position as a Software Engineer, and I had abou... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-get-a-developer-job-abroad/</link>
                <guid isPermaLink="false">66d45f319208fb118cc6cfbd</guid>
                
                    <category>
                        <![CDATA[ career advice ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ personal development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 28 Aug 2020 19:13:22 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/08/it-job-abroad.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Jakub Kubista</p>
<p>Many people dream about <strong>working abroad in their industry</strong>. But they're often not sure how to do it easily, or how to attract the interest of companies who are hiring.</p>
<p>I was looking for a position as a Software Engineer, and I had about three calls a day from potential companies during my hiring process. Fortunately, I ended up with a lot of options to choose from.</p>
<p>So let me tell you a story so you can learn from the success I've had and the mistakes I've made. </p>
<p>In this article, I'm going to share tips regarding why and how you can take next steps in your career, especially if you are not tied to a specific location. </p>
<p>Strong companies with great products or services have a lot of strong candidates to choose from. But I'll show you how to establish yourself as a strong candidate as well.</p>
<h2 id="heading-why-do-you-want-to-go-abroad">Why do you want to go abroad?</h2>
<p>If you are not sure how to answer to this question, or if your WHY is not strong enough, you will probably quit a few weeks or months after being hired. </p>
<p>Take your time to consider this deeply. There are multiple reasons why you might want to move and work abroad.</p>
<ul>
<li>You might find more work opportunities</li>
<li>You might want to work in a country with less strife</li>
<li>You might be able to get a higher salary in a different location</li>
<li>You might feel like you'd fit in better there</li>
<li>Or you might like to travel in and around that country</li>
</ul>
<p>The reasons are many – just make sure you know yours.</p>
<p>It is also very helpful to know why you want to work for a specific company. Does their why match your why? Do your research to find out for sure (more about that below).</p>
<h2 id="heading-the-easy-way-or-the-right-way">The easy way or the right way</h2>
<h3 id="heading-the-easy-way">The easy way</h3>
<p>First, let's have a look at how to make this process easier for you. If you studied abroad, worked in a “work and travel” program, or something else similar, it should be way easier to get used to a job abroad. </p>
<p>You will have had deeper experience speaking other languages, traveling, meeting people of various cultures, establishing a social life from zero, and learning about different laws. </p>
<p>It should be even easier if you're applying for a job in the same country where you studied – or anywhere with a similar culture. It was also very helpful for me to complete the whole process with someone who similarly applied for an IT job abroad.</p>
<h3 id="heading-the-right-way">The right way</h3>
<p>But in the end, it really depends on what you are looking for and why you want to go abroad. </p>
<p>Maybe you are looking for a big challenge instead of a safe journey. So think more about what fits your requirements and then figure out how to make it easier without sacrificing your needs. I think this is the right way to handle it.</p>
<p>As for me, I wanted to work directly with highly skilled and fast-learning people of different nationalities and ways of thinking. For that reason, I was focused on the diversity aspect more than on any similarities.</p>
<h2 id="heading-evaluate-yourself">Evaluate Yourself</h2>
<p>First things first: you need to analyze the skills required for your desired position, whether you want to work abroad or not. </p>
<p>Are you looking for a position that has requirements a bit out of your reach? Work on those skills for a year or two and give it a try again when you are more prepared. </p>
<p>Is it a position requiring high-level expertise in a certain area, a job that's not so often on the market? Make sure your skills match those requirements closely. </p>
<p>During the first few months you will have multiple opportunities to prove your qualifications for that position and agree on a way forward with the company.</p>
<h3 id="heading-set-ambitious-goals-for-yourself">Set ambitious goals for yourself</h3>
<p>This is just a matter of where you are now and where you would like to get. If you want to be a part of a stronger team with higher standards than you have at the moment, then it’s good to increase your knowledge and skills before you start interviewing. </p>
<p>Keep in mind that some hiring processes can take 5–8 rounds and they test you from many different perspectives. So don’t forget to analyze the hiring process of each specific company.</p>
<p>This part can take months. During that time you can take some online courses from places like <a target="_blank" href="https://www.udemy.com/">Udemy</a>, <a target="_blank" href="https://online-learning.harvard.edu/catalog">Harvard University</a> or <a target="_blank" href="https://www.coursera.org/">Coursera</a>. </p>
<p>Then you can continue with <a target="_blank" href="https://www.topcoder.com/thrive/articles/List%20of%20awesome%20learning%20resources">learning challenges</a> on sites like <a target="_blank" href="https://www.topcoder.com/">Topcoder</a> and <a target="_blank" href="https://www.hackerrank.com/">HackerRank</a>. </p>
<p>Finally, you can start preparing yourself with common interview questions on sites such as <a target="_blank" href="https://www.thebalancecareers.com/">The Balance Careers</a>, <a target="_blank" href="https://www.flexjobs.com/">FlexJobs</a> and <a target="_blank" href="https://blog.hubspot.com/">HubSpot</a>.</p>
<h3 id="heading-establish-your-rate-or-ideal-salary">Establish your rate or ideal salary</h3>
<p>One of the easiest ways to get a more objective review of yourself is to ask a senior ex-colleague to evaluate your performance. </p>
<p>It is also a good idea to test yourself using websites such as <a target="_blank" href="https://devskiller.com/">Devskiller</a> and <a target="_blank" href="https://www.codility.com/">Codility</a>. In that case, you might find out that you perform better than you expected and are able to score a better contract and salary during interviews.</p>
<p>Speaking of interviews, you will be probably asked about your salary expectations. This can be a tricky one to answer. </p>
<p>Many potential employees search the internet for the average salary using keywords such as “average salary of a developer in Prague”. Then they check <a target="_blank" href="https://www.glassdoor.com/">Glassdoor</a>, <a target="_blank" href="https://www.payscale.com/">PayScale</a>, <a target="_blank" href="https://www.jobindex.dk/">Jobindex</a> or <a target="_blank" href="https://www.reddit.com/">Reddit</a>, and, based on their years of experience, they try to find their value on an imaginary scale, where the lowest represents junior and the highest represents a principal developer. </p>
<p>It is better than nothing, but it doesn’t necessarily match your real value. Most times, you have to come up with that on your own.</p>
<h2 id="heading-do-your-research">Do Your Research</h2>
<h3 id="heading-quality-of-life">Quality of Life</h3>
<p>Consider your priorities according to how long you expect to stay. I would set them differently in the case of a half-year contract versus long-term employment. </p>
<p>I was looking for opportunities in countries based on the following factors and values:</p>
<ol>
<li>Intuition</li>
<li>Profit</li>
<li>Quality of life</li>
<li>Work culture</li>
<li>Economic growth (GDP)</li>
<li>Technological level</li>
<li>Traveling and nature</li>
</ol>
<p>It takes time to analyze countries in relation to your career. However, if you are considering working abroad for a couple of years, then a few days or weeks of research can give you an incomparably higher value for long-term happiness. </p>
<p>To help myself figure out where would be best for me, I gathered data and put it in a spreadsheet.</p>
<p>The best-rated locations (Tab. 1) are based on my subjective preferences, so I would recommend making your own spreadsheet since your needs and preferences will likely be quite different.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/1_XTbsMUEF4nkh6I5VE6AEzg.png" alt="Image" width="600" height="400" loading="lazy">
<em>Tab. 1 Results of analysis for developers</em></p>
<p>You can find some indexes such as quality of life or costs at <a target="_blank" href="http://numbeo.com/">Numbeo</a>, <a target="_blank" href="https://www.expatistan.com/cost-of-living/country/ranking/">Expatistan</a>, <a target="_blank" href="https://www.worlddata.info/cost-of-living.php">WorldData</a>, and more. The indexes must be on the same scale, for example, 1–100. Then you can multiply each index based on your priority, for example, 1–3.</p>
<p>You should have your salary expectations prepared for all countries you plan to apply to, in local currency (both monthly and yearly), for recruiters and companies. </p>
<p>Both gross and net salary need to be then converted in domestic currency to calculate the profit indexes for your spreadsheet about countries comparison (Tab. 1). </p>
<p>Profit can be calculated by the expected <strong>net salary</strong> per month of your desired position divided by total costs per month in a specific country. Indexes of profit can be created by a comparative method.</p>
<h3 id="heading-barriers-to-entry">Barriers to Entry</h3>
<p>It is also very important to check what barriers to entry might exist. You should also know the local laws. I would like to highlight some of these areas that might be surprising.</p>
<ol>
<li>Visa requirements</li>
<li>Sponsorship requirements</li>
<li>Language barrier</li>
<li>Invalid driver's license</li>
<li>Pension missed due to short stay</li>
<li>Unpaid vacation days for the first year</li>
<li>Problems with opening a bank account</li>
<li>Higher costs of healthcare for new citizens</li>
<li>Amount of taxes and the difficulty of submitting a tax return</li>
</ol>
<p>As for these highlights, I would like to mention some specific use cases. </p>
<p>For example, imagine you are hired by a German company. You might have to rely on English (based on requirements), but all of your co-workers speak German, even if it is against the company’s policy. This is related to the national diversity of the company. </p>
<p>When I lived in America, Finland, or Norway, it always took a couple of months to get a Social Security number. Having this document can often make your life easier. For example, <a target="_blank" href="https://nabobil.no/en">Nabobil</a> in Norway is an application that lets you rent cars more comfortably and cheaply. </p>
<p>Also, even if you are using <a target="_blank" href="https://www.revolut.com/">Revolut</a> or a similar application for money exchange, it can still cost a lot over a short period. </p>
<p>And perhaps tax returns seem unimportant compared to other issues. But if you've ever spent an entire week in the Netherlands working on taxes, then you know how expensive that can be in terms of a half-year contract.</p>
<h3 id="heading-company-research">Company Research</h3>
<p>Compare your priorities to those of the company. Is it a fast-growing team? What's the average salary? Do you think you'd fit into the company culture? </p>
<p>All of the above and more are worth considering, but you should decide which ones are important to you and your goals. </p>
<p>For example, I asked myself the following questions:</p>
<ul>
<li>How I can help at this company? What are their expectations?</li>
<li>How fast I can learn there? What is the seniority level of people whom<br>I will be working directly with?</li>
<li>What projects I will be working on? What technologies are they using for what issues?</li>
<li>What is their average estimation of project development in terms of time? How accurate are these project estimations? How many users use the application?</li>
</ul>
<p>You can also use multiple strategies to apply for jobs. For example, you can submit applications to a large number of companies to increase your options. In such a case it is a good idea to track your applications (Tab. 2).</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-141.png" alt="Image" width="600" height="400" loading="lazy">
<em>Tab. 2 Companies in an interview process</em></p>
<p>I used to note basic information since I was dealing with a lot of different companies. </p>
<p>But perhaps you are quite picky and you don’t want to apply to a long list of companies. </p>
<p>In that case, first try to gain enough experience in your current position and show evidence of your results. If you don't stand out, large and desirable companies most likely won’t notice your application.</p>
<h2 id="heading-the-interview-process">The Interview Process</h2>
<p>Many people compare going on job interviews to dating. If you go on a first date after a couple of years away from the dating scene, you probably won’t be very confident. You'll be tense, and the whole date will be unpleasant. </p>
<p>It's the same with job interviews. Schedule your first interviews with companies where you would like to work – and then schedule those where you would love to work.</p>
<p>Also, your interview experience partly depends on the position for which you apply. For salespeople, it might be as big of a deal, since they've developed soft skills over time. It's just about presenting themselves like they've done multiple times before. </p>
<p>But what about developers who feel confident presenting their coding skills, but not at presenting themselves during the personal interview? </p>
<p>It would be unfortunate to realize that you spent half a year improving your technical knowledge, but forgot to practice answering questions such as: “Tell me about yourself.”</p>
<p>In the case of huge companies, it's a great sign if you get to the end of the hiring process – those last rounds of interviews which are mostly conducted in person at the office. </p>
<p>Even if you do not pass the interview, you might manage to set up multiple interviews during a single business trip. At the interviews for other companies, you would usually have to proceed with other steps before the physical interview, but now you can make a good first impression and raise your chances against the other candidates by visiting them.</p>
<h3 id="heading-dealing-with-recruiters">Dealing with Recruiters</h3>
<p>Some recruiters try to force developers to be hired for positions unrelated to their field and needs. They might just spam you just based on your social media profile headings, unfortunately.</p>
<p>But there are also those who actually read your expectations in your cover letter and offer something relevant. </p>
<p>Even if you don't get a job or choose a particular company, it is useful to keep contact with your recruiter. Especially if you decide to change jobs in the future or look for something abroad, you can contact multiple HR specialists and get additional help. </p>
<p>Most likely it won’t cost you anything, and as such you have nothing to lose. Just keep this in mind before deciding not to respond to relevant professional offers.</p>
<h3 id="heading-getting-a-competitive-offer">Getting a Competitive offer</h3>
<p>Even if you get a final offer from one company, you still have the prospect of getting more offers from other companies. Have you heard the term competitive offer? In terms of the hiring process, it works as follows:</p>
<p>You complete your interview for a position with another company, where you get a higher salary offer. But it is not your favorite company. So you send the original email with the offer to the company of your choice to see if you can leverage a better salary (or whatever it is you want). </p>
<p>Sometimes this can result in better benefits or more money, and you usually have nothing to lose by sharing this request.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>You don't need to commit to working abroad for the rest of your life. Just try it out, and if it doesn't work you can always take a step back. That's why the trial period at work exists. </p>
<p>I've heard many stories, such as "I was scared when I was younger and now I have too many commitments" – so don't miss out. </p>
<p>Now let's summarize the process one more time to see that it's not rocket science.</p>
<ol>
<li>Decide why you want to work abroad</li>
<li>Consider the requirements in relation to countries based on length of stay and prioritize them.</li>
<li>Find the places where you want to go by comparing the requirements and do deeper research with a focus on laws and restrictions.</li>
<li>Prepare for interviews by boosting your soft skills and hard skills.</li>
<li>Research companies and apply.</li>
<li>Send competitive offers and <strong>get what you deserve</strong>!</li>
</ol>
<p>Just keep in mind that this process can take months. During that time you can take some online courses from places like <a target="_blank" href="https://www.udemy.com/">Udemy</a>, <a target="_blank" href="https://online-learning.harvard.edu/catalog">Harvard University</a> or <a target="_blank" href="https://www.coursera.org/">Coursera</a> to add to your skillset.</p>
<p>If you need some advice on boosting your learning skills, you can check out my other article about <a target="_blank" href="https://medium.com/inspire-story/how-to-succeed-with-your-studies-part-1-947d28fa2ccd">How to Succeed in Your Studies</a>.</p>
<p>If you liked this article, you can <a target="_blank" href="https://medium.com/@jakub.kubista">check out my other stories here</a>.</p>
<p>Cover photo by <a target="_blank" href="https://unsplash.com/@nomadicjulien">Nomadic Julien</a> on Unsplash.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Answer Any Technical Interview Question – Example Included ]]>
                </title>
                <description>
                    <![CDATA[ By Sameer Khoja Technical interviews can be extremely daunting. From the beginning of each question to the end, it's important to know what to expect, and to be aware of the areas you might be asked about.  Fortunately, there's a way to prepare for a... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-answer-any-technical-interview-question-with-example/</link>
                <guid isPermaLink="false">66d460c59208fb118cc6cff8</guid>
                
                    <category>
                        <![CDATA[ coding interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ interview questions ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interview tips ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Interview ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 17 Jul 2020 17:48:26 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c99a9740569d1a4ca2106.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Sameer Khoja</p>
<p>Technical interviews can be extremely daunting. From the beginning of each question to the end, it's important to know what to expect, and to be aware of the areas you might be asked about. </p>
<p>Fortunately, there's a way to prepare for any question that may come your way. It involves four parts:</p>
<ol>
<li><strong>Understand the question</strong></li>
<li><strong>Discuss tradeoffs of solutions</strong></li>
<li><strong>Write the code</strong></li>
<li><strong>Test the code</strong></li>
</ol>
<p>Let's try this technique with sample problem involving LinkedLists.</p>
<h2 id="heading-the-problem">The Problem</h2>
<p><strong>Question:</strong> Given two singly LinkedListNodes, determine if the two lists intersect. Return the intersecting node. Note that the intersection is defined based on reference, not value. If the kth node of the first linked list is the exact same node (by reference) as the jth node of the second linked list, they are intersecting.</p>
<p><img src="https://cdn.substack.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F13a33ada-6399-4679-a631-0e43be042886_1076x292.png" alt="Image" width="1076" height="292" loading="lazy"></p>
<h2 id="heading-step-1-understand-the-question">Step 1: Understand the question.</h2>
<p>It's really important to know exactly what this question is asking. Some questions we could ask the interviewer are:</p>
<ol>
<li>What exactly do we want to return? <em>(A: The intersecting node).</em></li>
<li>Does that mean we can assume the linked lists always intersect? <em>(A: Yes)</em></li>
</ol>
<p>It's always important to gain a sense of the question before thinking about the approach to solving.</p>
<h2 id="heading-step-2-discuss-the-tradeoffs-of-different-solutions">Step 2: Discuss the tradeoffs of different solutions.</h2>
<p>One immediate solution is to traverse both linked lists at the same time until you reach an intersection. For this example, we would make a <strong>pointer</strong> at nodes 2 and 7, and <strong>traverse</strong> each of them one-by-one until we reach a common node.</p>
<p>However, as you may have noticed, this will not work as the lengths of the two LinkedLists may differ. What we want to do essentially is “chop off” the beginning part of the longer LinkedListNode, and then iterate repeatedly.</p>
<p>This would be the kind of conversation to have with your interviewer.</p>
<h2 id="heading-step-3-write-the-code">Step 3: Write the code.</h2>
<p>Below is the method to achieve this.</p>
<p><img src="https://cdn.substack.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa761d963-8a59-4c0a-bd90-489931e6c5e2_1330x660.png" alt="Image" width="1330" height="660" loading="lazy"></p>
<p>We make use of <strong>helper methods</strong> here. We use <code>getKthNode()</code> to get the kth node of the given linked list. This is helpful when traversing the longer linked list to “chop off” extra nodes. </p>
<p>We also use <code>getTailAndSize()</code> which captures both the length and the last node of the given list. This is helpful because we definitely need the size to compare lengths of the lists. We also need the tails because if the tails of the two lists are unequal, then they don’t intersect at all. </p>
<p>Note that when we say “unequal”, we mean that the two nodes do not reference the same <strong>object</strong>. Even though they may have the same value and look identical, they must reference the same LinkedListNode to count as equal. (You can find more information on this <a target="_blank" href="http://shortn/_xLxPLI0JXV">here</a>.) </p>
<p>Going back to the question, if we come across the case where the tails are unequal, we return a failed value (null).</p>
<p><img src="https://cdn.substack.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa50b3b05-93d6-4f2b-bd40-1b2127c18490_1072x966.png" alt="Image" width="1072" height="966" loading="lazy"></p>
<h2 id="heading-step-4-test-the-code">Step 4: Test the code.</h2>
<p>Below are some good test cases we can add. A helpful rule of thumb for test cases is the following:</p>
<ul>
<li>Empty/null case</li>
<li>Considering options in the middle/beginning/end</li>
<li>Sizes equal or different</li>
</ul>
<p>This strategy doesn't only apply to LinkedList questions – this would work for arrays, Strings, and essentially any other data structure. </p>
<p>For this question, our LinkedList tests would be the following:</p>
<ul>
<li>Two linked lists which intersect at the beginning/middle/end</li>
<li>Both/one linked list is null (should return null)</li>
<li>Linked lists are the same/different size</li>
</ul>
<p>We’re done!</p>
<p><img src="https://cdn.substack.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8cae3ba9-33c1-4c92-a8ea-fb0119929389_300x300.gif" alt="Coding GIF by memecandy" width="600" height="400" loading="lazy"></p>
<p><strong>More Questions:</strong></p>
<ul>
<li><a target="_blank" href="https://leetcode.com/problems/linked-list-cycle/">Circular Linked List</a></li>
<li><a target="_blank" href="https://leetcode.com/problems/reverse-linked-list/">Reversing a Linked List</a></li>
<li><a target="_blank" href="https://leetcode.com/problems/palindrome-linked-list/">Palindrome Linked List</a></li>
</ul>
<p><em>Interested in breaking into Computer Science? Eager to expand your knowledge base and learn new things? Enjoy problem solving?</em> </p>
<p><em>If so, <a target="_blank" href="http://sweprep.com">SWEPrep</a> may be the newsletter for you. Subscribe to get fully explained interview prompts commonly given in engineering interviews, from Arrays to Dynamic Programming. Questions come out weekly and are also categorized by subject and difficulty. The above post is a Guest Post from the author, Sameer Khoja.</em></p>
<p><em><a target="_blank" href="http://sweprep.com">Subscribe</a> to get full access to the newsletter. Never miss an update.</em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Hack Together Your Own CS Degree Online for Free ]]>
                </title>
                <description>
                    <![CDATA[ By Randall Kanna I don’t have a Computer Science degree so I had to create my own. When I graduated from a coding bootcamp five years ago, I was completely unprepared for technical interviews. My coding bootcamp not only spent a brief (less than a fe... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-hack-your-own-cs-degree-for-free/</link>
                <guid isPermaLink="false">66d460c99208fb118cc6d002</guid>
                
                    <category>
                        <![CDATA[ algorithms ]]>
                    </category>
                
                    <category>
                        <![CDATA[ coding interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Computer Science ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Interview ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 29 Jun 2020 20:45:58 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/06/freecodecamp.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Randall Kanna</p>
<p><strong>I don’t have a Computer Science degree so I had to create my own.</strong></p>
<p>When I graduated from a coding bootcamp five years ago, I was completely unprepared for technical interviews. My coding bootcamp not only spent a brief (less than a few days!) time on algorithms and the coding interview, but I was out sick during that time. </p>
<p>Other candidates applying for the same jobs as I was had four years in school working on their computer science degree. I had three months at a bootcamp where I learned some basic concepts, Rails, and taught myself Angular.js. </p>
<p>Over the past few years, I’ve had to fill the gaps in my knowledge with resources that I could find online and for free. I’ve worked as a Senior Engineer for companies such as Eventbrite and I’ve even written an O’Reilly book. I’m proof that you don’t need a CS degree to succeed as an engineer.</p>
<p>Here’s how I did it.</p>
<h2 id="heading-introduction-to-computer-science">Introduction To Computer Science</h2>
<p>Before you try to dive in with complicated CS classes, I recommend that you start with a course on the basics. This will help give you a solid overview and will also help you to feel a little less intimidated. If you spend some time getting a solid overview, the rest of your free CS degree classes will be so much easier.</p>
<p>My favorite course was <a target="_blank" href="https://online-learning.harvard.edu/course/cs50-introduction-computer-science">CS50: Introduction to Computer Science by Harvard</a>.</p>
<p>This is probably one of my favorite classes of all time. I’ve always loved the idea of Harvard so it was sort of a no brainer for me to take a free computer science class there. I even briefly considered completing one of the <a target="_blank" href="https://www.extension.harvard.edu/academics/professional-graduate-certificates/programming-certificate">Harvard certifications</a> for programming but it was pricey so I stuck with the free CS50 course.</p>
<p>I didn’t end up getting the certificate with Harvard CS50. I thought it would be just as powerful to list the course on my resume. My general rule when it comes to paying for an online certificate is that unless it’s an AWS certificate from Amazon, it’s probably not worth it. </p>
<p>If you feel intimidated starting with a Harvard course (which I did as well!), you can find an easier course online to make you feel more comfortable before you jump into complicated topics.</p>
<p><a target="_blank" href="https://www.edx.org/course/computer-science-101">Computer Science 101</a> is an introduction to computer science from the very beginning. You’ll learn how the internet works, a little about computer security, what a gigabyte is, some coding knowledge and more. </p>
<h2 id="heading-algorithms">Algorithms</h2>
<p>Get started with Algorithms next. The University of San Diego offers a free course, <a target="_blank" href="https://www.coursera.org/specializations/data-structures-algorithms">Data Structures and Algorithms Specialization</a>, that has a tremendous amount of content available. </p>
<p>It’s overwhelming if you look at this entire course and think you need to finish it right away and understand everything. Try focusing on one section at a time and reviewing the concepts regularly. </p>
<p>And if taking a university course on data structures and algorithms makes you a little queasy, you can start small.</p>
<p>Udacity has a free course, <a target="_blank" href="https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513">Intro to Data Structures and Algorithms</a>. I love taking free courses on Udacity and this one has a ton of great information. You’ll cover arrays, linked lists, stacks, binary search, maps, heaps, and more. This course can give you a great overview which will help you succeed in the more complicated course from the University of San Diego.</p>
<p>If you’re feeling brave after you finish an introductory course, MIT offers a course on <a target="_blank" href="https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-851-advanced-data-structures-spring-2012/">Advanced Data Structures</a>.</p>
<h2 id="heading-operating-systems">Operating Systems</h2>
<p>Udacity has some pretty cool free content. They offer a class called <a target="_blank" href="https://www.udacity.com/course/introduction-to-operating-systems--ud923">Introduction to Operating Systems</a> that is from Georgia Tech. This course will walk you through threads, concurrency, distributed systems and more.</p>
<p>I also found out that the book, <a target="_blank" href="http://pages.cs.wisc.edu/~remzi/OSTEP/">Operating Systems: Three Easy Pieces</a>, is available online and free. Books like this really helped me feel more confident in talking about concurrency and persistence.</p>
<h2 id="heading-databases">Databases</h2>
<p>Databases completely baffled me when I first started out. I tried to avoid working with them as much as possible early on. I asked a senior engineer for help all the time and thought because I didn’t have a CS degree, I shouldn’t be working with a database.</p>
<p>Wow, I was so wrong.</p>
<p>I finally got the courage to work with some backend code, and I loved finding how I could write efficient requests to get data from the backend and writing queries.</p>
<p>Stanford offers a free online course on <a target="_blank" href="https://www.edx.org/course/databases-5-sql">Databases</a>. And if that’s too intimidating to start with, Udacity offers a free course on <a target="_blank" href="https://www.udacity.com/course/intro-to-relational-databases--ud197">databases</a> that will be a lot easier to handle. </p>
<h2 id="heading-mathematics">Mathematics</h2>
<p>When I was contemplating a CS degree in college, everyone told me that I needed to be really good at math. I never got the CS degree, and five years later I haven’t needed to use much math yet.</p>
<p>But mathematics can teach you logic which, in turn, can help you become a better programmer. </p>
<p>Thankfully, MIT offers a <a target="_blank" href="https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/video-lectures/">Mathematics for Computer Science</a> course for free. Taking a course like Mathematics for Computer Science can also help open you up to more possibilities in tech, like creating your own <a target="_blank" href="https://www.mrdbourke.com/aimastersdegree/">degree</a> in Machine Learning.</p>
<p>I found out about MIT’s Mathematics for Computer Science course from <a target="_blank" href="https://teachyourselfcs.com/">TeachYourselfCS</a>, which is an awesome website with a ton of resources for learning about computer science.  </p>
<p>TeachYourselfCS also suggested a course on <a target="_blank" href="https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab">Linear Algebra</a> which is available on YouTube. I love free content so I was super happy to find this <a target="_blank" href="http://joshua.smcvt.edu/linearalgebra/book.pdf">book</a> on Linear Algebra available online free as well.</p>
<p>So as you can see, you don’t need a CS degree to be an engineer. Some of the smartest engineers I've ever worked with didn't have a CS degree. Sometimes they didn't have any degree at all.</p>
<p>Don't worry if you don't have a degree. You just need to be able to do the job.</p>
<p>I'm writing a book on how you can become a Standout Developer, ace the interview and get a job. Find out more <a target="_blank" href="http://thestandoutdeveloper.com/">here</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
