The detailed test report of candidates available on HackerRank for Work highlights some key components that help hiring managers make a more informed decision on the candidate’s approach to solving the coding challenge. Here is a quick guide that will help you understand these components better.
What is Code Quality?
Code Quality is a loose approximation of how useful and maintainable the candidate’s code is in the long run. We use the SonarQube platform to continuously inspect candidate code and provide insights to hiring managers about the coding style of the candidate.
This feature enables hiring managers to make better hiring decisions based on the code quality report of the candidate. Below are some of the key pointers that the Code Quality Report highlights:
- Duplicate blocks of codes
- Number of non-useful comments in the code
- Identifies the usefulness and maintainability of the solution in the long run.
- Highlights coding errors that might lead to security vulnerability of the system
Customer Use Case 1
John, a senior hiring manager uses the Code Quality Report during the technical hiring process in his organization. This feature helps him understand the refactoring techniques used by the candidate just by looking at the report. The code quality report helps in making the overall hiring process much faster and efficient at his company.
Customer Use Case 2
Paul, a Sr. Java Developer, who is a part of the technical hiring panel for his organization, was in charge of evaluating candidates for the Java Developer role. Below is a screenshot of the code quality report of one of the candidates. The clear feedback and recommendations on the coding approach taken by the candidate made the evaluation process easier and faster for Paul.
How it Works
What is Code playback?
This feature helps in playing the recording of the candidate’s code submitted for a given HackerRank Assessment. We capture the code snippet written by the candidate whenever the candidate runs the code and display the playback in the report.
You can understand the thought process/ approaches taken by the candidate while taking the coding challenge.
Customer Use Case 1
In a particular hiring challenge, a question was there to find distinct pairs in a given array of integers. The code playback feature in one of the candidate’s reports showed that he first started solving the problem using if-else statement but later changed it to a switch-case statement with a for increment loop. However, the final solution that he submitted had a function with a for loop and a return statement.
This detailed report helped the hiring manager get a clear understanding of the various approaches taken by the candidate while solving the problem.
How does it work?
What are Memory Limit and Time Limit?
The HackerRank coding environment supports about 35 different programming languages, and for each language, there is a definite memory limit and a specific time limit for code execution. If the time taken by the compiler to read and process the candidate’s inputs and return output for all the test cases exceeds the time and memory limit specified for the chosen programming language, it gets captured in the detailed candidate report with the message “Terminated due to timeout”.
If the coding solution provided by the candidate is within the specified limit, it gets captured in the report with the message as “Success”.
The test cases are designed in a way to follow specific constraints of memory and time limits on the HackerRank platform. Executing the code under the specified limits would yield successful results. For Example, a sorting question with a hard test case associated with it with a threshold of (108 ) will fail in 4 seconds which is the upper limit if executed in Java.
Please refer to HackerRank Coding Environment Specifications Page to know more on the specific memory and time limit allotted to any given language.
The “terminated due to timeout” error typically implies that the submitted solution is not optimized enough and there are rooms for improvement in the candidate’s code.
When multiple candidates submit a correct answer, the memory and time limit error comes handy in identifying the candidate with a more optimal solution.
Customer Use Case
In a particular coding assessment, there was a question that required candidates to sort large data set using an efficient sorting algorithm. While reviewing the candidate reports, Phillip, the hiring manager found that candidate A received terminated due to timeout error while candidate B’s solution was a success.
Upon digging deeper into the code, it was found that candidate A used bubble sort technique which is an iterative process of sorting that is O(n2), while B used merge sort which uses a recursive process that is O(N log N). In this case, the complexity of bubble sort is higher then merge sort due to large dataset and hence candidate’s A report showed timeout issues while executing test cases due to complexity and slower sorting, compared to candidate’s B report who used merge sort which was faster and executed all the test cases in the given time.
How does it work?
Case 1 - When a candidate's code exceeds the memory or time limit.
Case 2 - When a candidate's code is within the memory or time limit.
What is HackerRank’s take on plagiarism?
HackerRank for work uses a comprehensive and swift plagiarism detection methodology with the goal to identify candidate submissions with the likelihood of plagiarism by determining if codes are similar. We optimize our algorithms for candidate experience and reduce false alarms so that no candidate is wrongly penalized.
Our Plagiarism Detector uses a derivative of Moss algorithm to report the following in a candidate’s test report.
- Any overlap in code submitted by different Candidates within the same test as well as across all submissions on the HRW platform.
- Replicated code from original sources on the internet.
- Code which is reproduced by changing the variable names, formats, etc.
Learn more about how we detect plagiarism in the candidate’s code here.
Plagiarism Detection at HackerRank for Work detects candidates who have the same structure of code and logic used but could have changed variable names, looping constructs and more.
Our improved plagiarism detection algorithms compare candidate codes across all submissions that are available on the HackerRank for Work platform and provide you a more comprehensive and accurate report.
Note: Although we detect code similarity, we cannot determine the reason for code similarity. This is to help you in saving time as we point out the cases that are worth a detailed examination.
Customer Use Case 1
Sania who works as a Sr. Software Engineer evaluates tests for junior developers/freshers for her organization. As the test is for junior developers or freshers it contains basic coding questions to check the coding capability of the candidate. One of the questions in the test was “Fibonacci Series” for which she found out that one of the candidate's test report was flagged for plagiarism. However, while checking the code Sania was able to understand that since the problem statement is simple and there are only a few ways in which this question can be solved he chose to ignore the plagiarism flag and recommended his team to go forward with the candidate for further rounds of interview.
Customer Use Case 2
Vanessa who works as an Engineering Lead evaluates tests for senior developers for her organization. The test is designed in such a way to test some deeper algorithms and data structures concepts of the candidate. One of the questions in the test is to perform a binary search on a given dataset. To find out more accurate plagiarism reports for candidates, Vanessa has taken the test and submitted the code as a dummy candidate by copying the code of binary search available online.
When she was reviewing the candidate report for candidate A, she found out that the code was flagged for plagiarism against the dummy candidate that Vanessa used while taking the test. This helped her understand that the code was copied from an online source and she chose not to go forward for further rounds of interview for that candidate.