Firecode - Ace the Coding Interview
Written by Nikos Vaggalis   
Monday, 27 June 2016

Another code learning platform, in this case focused on preparing candidates for a job interview that involves writing code. What's different about it? Let's find out.

firecodebanner

After signing up, you have to choose the language you'll be working with. Only Java,C or Python are currently available, but the platform has immediate plans for beefing up its range of supported languages.

Then you work through a mini series of questions in order to gauge your current knowledge and skills and establish an entry level for training and assessment best suited to your experience and knowledge.

For example, choosing Java brings up the following: 

  • Can you easily write a Java method that uses a for loop to reverse a Singly Linked List?
    Choose: Yes or I'm not completely sure

  • Referring to the previous question, at a minimum, how many pointers (or references) would you need to reverse a singly linked list with iteration?
    Choose: 1 or 2 or 3 or No Idea

  • Can you comfortably write a method that searches for an integer in a sorted array using binary search?
    Choose: Duh...easy! or What's a Binary search?

  • What would be the time complexity of a method that uses the binary search algorithm to check if an integer exists in a sorted array?
    Choose: O( n2) or O( log(n) ) or O( n log(n) ) or I don't know!

  • Have you seen and used the StringBuilder or StringBuffer classes before?
    Choose: Yeah! or Nope!

and a couple more. The questions are uniform across all languages, and are neither tricky nor difficult to answer; you just know the answer or you don't.

The engine then assigns a level ranging from 1 (novice) to 5 (expert), and calibrates the study material accordingly. You are, however, free to manually override the Level assigned or Language chosen from within the dashboard.

The dashboard has everything that you need to know concentrated in one screen; the level you are currently in, how many problems have been solved and how many are remaining, how many minutes per week you spend practising, and other helpful statistics that keep you on track.

 

 

The Work Environment
There are no tutorials or other diversions; there's only one thing required, write code and, as in other learn-to-code-online platforms, the IDE is your browser.

At this point I have to say that Fircode's IDE environment stands out from the rest. First of all it has the workspace and its informational panels well placed and organized. In the usability scale it scores 'A++' due to its  customizable interface which sports features that you would think only a offline IDE could support. As such it incorporates autocompletion, notes taking, zooming in and out, changing the theme, as well as a collapsible console area.

Learning aids are plentiful too. Each level has a number of problems to  solve. For example Level 1 has 18 problems that must be completed for making it through to the next level.

The way it works is that you're presented with a description of the problem at hand such as:

"Find the first non-duplicate character in a string. Return null if no unique character is found"

and a few lines demonstrating what the expected result should be given a set of input values:

firstNonRepeatedCharacter( "abcdcd" ) --> 'a'
firstNonRepeatedCharacter( "cbcd" ) --> 'b'
firstNonRepeatedCharacter( "cdcd" ) --> null

The coding workspace contains the declaration of the function which you have to implement for solving the problem, in this case:

public static Character firstNonRepeatedCharacter(String str){

}

If you feel confident that you know the answer and don't want to waste time typing a solution just to get it over with and progress to the next level, you can press 'I know this'', which will let you progress to the next next one, marking it as not complete.

If on the other hand you need some help, some is available as a single hint :

Maintain the count of all the different characters from the input and then check if there is a character with a count of one

If it still doesn't "click" you can take a peek at the steps necessary:

  1. Create the character count HashMap. For each character, if there is no value stored in the HashMap, set it to 1. Else increment the value of the Character count by 1.

  2. Scan the string, return the character if the count in the HashMap is 1 . If no characters have count of 1 , return null

firecode.work

 

Where things are still not clear you may then press the "See answer and Skip" button which will reveal the answer in the form of a complete code listing :

public static Character firstNonRepeatedCharacter(String str) {
  HashMap<Character, Integer> characterhashtable = 
new HashMap<Character, Integer>();
  int i, length;
  Character c;
  length = str.length(); // Scan string and build hash table
  for (i = 0; i < length; i++) {
      c = str.charAt(i);
      if (characterhashtable.containsKey(c)) {
        // Increment count corresponding to c
        characterhashtable.put(c, characterhashtable.get(c) + 1);
     } else {
        characterhashtable.put(c, 1);
     }
  }
  // Search character hashtable in order of string str
  for (i = 0; i < length; i++) {
      c = str.charAt(i);
      if (characterhashtable.get(c) == 1)
          return c;
  }
  return null;
}

 

If on the other hand you want to take a shot at it, feel free to start typing some code, an action that will trigger the autocomplete feature which saves both keystrokes and time otherwise spent in navigating through the available framework classes to locate the pieces necessary for the completing the exercise.

Whether you complete the exercise by doing it or by skipping it, you are then confronted with something very interesting:

Take a break!
Why? Because you've been killing it non-stop for the past 24 minutes! Taking a break every now and then helps your memories consolidate. Do get get up from your chair, get yourself a glass of water, and maybe enjoy this random Youtube video when you're back! A 10 minute break for every 20 - 30 minutes of practice is recommended by researchers and memory psychologists

This is a refreshing example of incorporating ergonomics into the standard workflow, surely a trend that needs to be established.

 

 

Solving problems continues until you complete all 136 of them (the sum of all levels), at which point you are deemed "ready" and with enhanced probabilities of acing that crucial interview.

So, I would say that Firecode does make a difference.  It's a well structured and organized platform driven by usability and ergonomics, packing  the extra advantage of being entirely targeted to a very specific group. It's a meeting place of like minded people who know exactly what to look for and the willpower to achieve it; in this case that's pursuing the challenge to the end.

As such Firecode should enjoy a high user retention rate, something that benefits both the platform and its users as it prompts it to be quick on its feet, continuously improving and finding new ways to advance its user experience. One example, is the introduction of a new feature, Firedocs, which brings up the documentation when clicking on the most common methods and class structures from within the IDE, as well as the Solution Overflow in which you help your fellow interviewees by voting and commenting on solutions, à la StackOverflow.

Firecode is currently in beta and still free. There's no news on whether and when it will start charging, so it might be a good idea to create an account now.

firecodesq

More Information

Firecode.io

Related Articles

HackerRank - Advance Your Coding Through Problem Solving

FreeCodeCamp - Not Just A Bootcamp

Hacksplaining - Learn Through Hacking

Skillset - Pass Your Certification Exam

CodeSchool - The Sequel to SQL

 

To be informed about new articles on I Programmer, sign up for our weekly newsletter,subscribe to the RSS feed and follow us on, Twitter, FacebookGoogle+ or Linkedin

Banner


Extend NGINX With The New JavaScript Module
28/10/2024

Inject middleware functionality into NGINX with the expressive power of Javascript. NGINX JavaScript or NJS for short is a dynamic module under which you can use scripting for hooking into the NGINX e [ ... ]



Microsoft Introduces Vector Abstractions Library For .NET
21/11/2024

Microsoft has announced a preview release of the Microsoft Extensions VectorData Abstractions library, which can be used to help integrate vector stores into .NET applications and libraries.


More News

espbook

 

Comments




or email your comment to: comments@i-programmer.info

 

Last Updated ( Monday, 27 June 2016 )