We help companies in making the right hiring decision. Our goal is to identify candidate submissions with the likelihood of plagiarism by determining if codes are similar and checking for specific behavioral signals. We optimize for candidate experience and reduce false alarms to not penalize any innocent candidate.
Our plagiarism flag is an indicator that someone might have plagiarized the code. Although we use code similarity and behavioral signals, we cannot determine the source of plagiarism. This is to help you save time as we point out the cases worth a detailed examination. We recommend that a developer should review the highlighted code to decide if this is an actual case of plagiarism or not. We do not recommend auto-rejecting a candidate based on the plagiarism flag.
We use Moss (Measure of Software Similarity) to detect plagiarism: Moss is an improved algorithm where it tokenizes the code. The tokenized versions of all candidates' source code are compared to identify pairs of documents with substantial overlap. Some candidates try to change the variable name or introduce white spaces to deceive plagiarism detection. Moss typically does not work in their favor because the structure of the program is unchanged, and the number of tokens and line matches between the documents is still the same. Additionally, we will look at the candidate's suspicious activities (like copy-paste, etc.) and other behavioral signals during the attempt to further ascertain whether the candidate actually plagiarized.
The plagiarism check is conducted for the same question that is used within and across HackerRank customers. Additionally, we will also look for cases of plagiarism across different versions of a language as well. While flagging for plagiarism, the recent submission of a candidate is compared across all the previous submissions and we would also flag the previous submission for plagiarism only if there is some overlap in duration between the two attempts.
The following screenshot shows how Moss is able to detect candidates who have the same structure of code and logic used but changed the variable names, used for loop instead of while loop.