{"id":6690,"date":"2022-04-28T06:49:37","date_gmt":"2022-04-28T13:49:37","guid":{"rendered":"https:\/\/coderpad.io\/?p=6690"},"modified":"2024-05-28T06:10:00","modified_gmt":"2024-05-28T13:10:00","slug":"the-1-best-anti-cheat-interview-question-ever","status":"publish","type":"post","link":"https:\/\/coderpad.io\/blog\/interviewing\/the-1-best-anti-cheat-interview-question-ever\/","title":{"rendered":"The #1 Best Anti-Cheat Interview Question Ever"},"content":{"rendered":"\n<p>It\u2019s inevitable.<\/p>\n\n\n\n<p>You interview 23 developers to fill a junior role, and you notice more than one of them pasting not-insignificant amounts of code during their technical interview.<\/p>\n\n\n\n<p>At some point during the months-long interview process, one of those candidates posted that question to Glassdoor\u2019s <em>Interview<\/em> review section, and someone else was <s>smart<\/s> morally compromised enough to post it on Stack Overflow.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img decoding=\"async\" src=\"https:\/\/d2h1bfu6zrdxog.cloudfront.net\/wp-content\/uploads\/2022\/04\/img_626a856d44007.png\" alt=\"Meme of woman with accusing face telling cat \u201cYou told me you were fullstack!\u201d and cat responds \u201cYeah\u2026full stackoverflow\u201d\" style=\"width:621px;height:587px\"\/><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/www.reddit.com\/r\/ProgrammerHumor\/comments\/diobfu\/full_stack_overflow\/\" target=\"_blank\" rel=\"noopener\">Via Reddit<\/a><\/figcaption><\/figure>\n<\/div>\n\n\n<p><a href=\"https:\/\/www.reddit.com\/r\/ProgrammerHumor\/comments\/diobfu\/full_stack_overflow\/\" target=\"_blank\" rel=\"noopener\"><\/a>Then all it takes is a developer with even a basic amount of Googling or ChatGPT skills to find that question and its answer during the interview and use it for their professional gain.<\/p>\n\n\n\n<p>That can certainly be frustrating as an interviewer \u2013 finding the right developer or engineer is hard enough in today\u2019s job market without having candidates misrepresent their skills.<\/p>\n\n\n\n<p>So how do you stop this? What\u2019s the #1 best anti-cheat question?&nbsp;<\/p>\n\n\n\n<p><strong>Maybe the problem isn\u2019t that your interview candidates found the answer with ChatGPT. Perhaps it\u2019s that your questions can be answered with ChatGPT.&nbsp;<\/strong><\/p>\n\n\n<div class=\"coderpad-container-buster-block\" style=\"margin: 0 calc(50% - 50vw);\"><div style=\"max-width: 90rem; margin: 0 auto;\">\n<section class=\"\n\tsurvey-report-signup-form-block\n\t\t\n\" data-block-name=\"coderpad-survey-report-signup-form\" data-block-bg-color=\"black\" data-block-padding-bottom=\"medium\" >\n\n\t<div class=\"inner\">\n\t\t\t\t\t<h2 class=\"title\">Like what you\u2019re reading?<\/h2>\n\t\t\n\t\t\t\t\t<p class=\"sub-title\">Why not subscribe to our monthly newsletter?<\/p>\n\t\t\n\t\t<div class=\"content\">\n\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"920\" height=\"507\" src=\"https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/coderpad-newsletter-signup-illustration.png\" class=\"attachment-large size-large\" alt=\"\" srcset=\"https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/coderpad-newsletter-signup-illustration.png 920w, https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/coderpad-newsletter-signup-illustration-300x165.png 300w, https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/coderpad-newsletter-signup-illustration-768x423.png 768w, https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/coderpad-newsletter-signup-illustration-18x10.png 18w\" sizes=\"auto, (max-width: 920px) 100vw, 920px\" \/>\n\n\t\t\t<div class=\"important-parts\">\n\t\t\t\t\t\t\t\t\t<div class=\"description\"><p>Once a month, you\u2019ll receive a hand-picked selection of tech recruitment content: blog posts, checklists, podcasts, videos, studies and statistics\u2026 including insights from our own developer and HR communities! Just drop us your email below.<\/p>\n<\/div>\n\t\t\t\t\n\t\t\t\t<div class=\"\n    hubspot-form\n            hubspot-form--single-input\n            \n\" >\n\t\t<div\n\t\tid=\"coderpad-form-wmovha\"\n\t\tclass=\"hubspot-form-container js-coderpad-hubspot-form\"\n\t\tdata-cp-form-options=\"{&quot;portalId&quot;:&quot;26307476&quot;,&quot;formId&quot;:&quot;b426bea5-fad2-4747-a539-20fae02248e2&quot;,&quot;region&quot;:&quot;eu1&quot;}\"\n\t>\n\t<\/div>\n<\/div>\n\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n<\/section>\n\n<\/div><\/div>\n\n\n<h2 class=\"wp-block-heading\">AI and Google-proof your interview<\/h2>\n\n\n\n<p>Before you start interviewing, check the internet to see if your question has already been answered.&nbsp;And use your preferred Generative AI (GenAI) tool to see what kind of answer it comes up with.<\/p>\n\n\n\n<p>Typically if you\u2019re asking a standard algorithm question, not only will the answer easily be found, but <a href=\"https:\/\/coderpad.io\/blog\/interviewing\/crafting-effective-technical-interview-questions-a-4-step-guide\/\">it\u2019s probably not a good question to begin with<\/a>.<\/p>\n\n\n\n<p>Algorithm questions don\u2019t test much other than one\u2019s ability to pay attention in computer science classes. It\u2019s an easy way to eliminate great candidates with non-traditional backgrounds because instead of testing their ability to solve an actual business problem, you\u2019re testing their memory of a particular and not-often-used set of skills.<\/p>\n\n\n\n<p>Plus, what\u2019s the point of testing something that most people \u2013 even your senior devs and tech leads \u2013 will probably need to Google even while on the job?<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/d2h1bfu6zrdxog.cloudfront.net\/wp-content\/uploads\/2022\/04\/img_626a8571e9378.png\" alt=\"A meme from the movie \u201cFinding Neverland\u201d with a junior dev asking a senior dev if they still use Google, and senior dev hugs junior dev while saying \u201cWe\u2019re with you.\u201d\"\/><figcaption class=\"wp-element-caption\">We all know this is true. <a href=\"https:\/\/www.facebook.com\/CleverProgrammerr\/photos\/when-you-spend-all-your-time-thinking-that-great-developers-dont-use-google-and-\/1105998069802926\/\" target=\"_blank\" rel=\"noopener\">Via Facebook<\/a>.<\/figcaption><\/figure>\n<\/div>\n\n\n<p><strong>Unpopular opinion:<\/strong> Googling and ChatGPT should be encouraged, as developers of all levels use them to solve issues other engineers have already encountered.&nbsp;<\/p>\n\n\n\n<p>As a manager, I\u2019m sure you\u2019d rather have your employees look up to see if there is an existing solution to a common problem rather than spend hours (or days) trying to come up with a solution that already exists. They have more important things to spend their time on \u2013 like coming up with unique solutions to your business cases.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\">\n<p>\u2139\ufe0f Interested in more information on cheating mitigation measures? <a href=\"https:\/\/coderpad.io\/events\/how-to-prevent-and-detect-cheating-in-your-tech-recruitment-process\/\">Check out this webinar on <em>How to Prevent and Detect Cheating in Your Tech Recruitment Process<\/em><\/a>.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Make your questions realistic and specific to your business<\/h2>\n\n\n\n<p>If you\u2019re using a business-specific question, it will be a lot harder for a candidate to find the answer \u2013 usually because there is no one correct answer.<\/p>\n\n\n\n<p>Like in a business, there should be collaboration as the candidate works through the question with you. This will give you a better idea of their problem-solving approach and if it\u2019ll be a good fit for your team.<\/p>\n\n\n\n<p>It\u2019s also less likely that someone random will attempt to answer the question even if it does make its way to the internet.&nbsp;<\/p>\n\n\n\n<p>Answering generic algorithm questions on Stack Overflow benefits everyone, but who wants to spend their spare time solving a problem for a company they\u2019re not going to interview with?<\/p>\n\n\n\n<p>Additionally, GenAI tools still have a lot of trouble figuring out how to deal with the nuances that are typical of an actual business use case.<\/p>\n\n\n\n<p>Having candidates solve problems related to your business also gives you a better idea of how they\u2019d actually work. It can show you if they know the domain, bring a unique perspective, or can learn how to adapt to new spaces.&nbsp;<\/p>\n\n\n\n<p>With that said, as we mentioned earlier, sometimes questions just make their way out into the world no matter how unique they are.<\/p>\n\n\n\n<p><a href=\"https:\/\/coderpad.io\/resources\/docs\/interview\/quick-start-guides\/interviewers\/interview-best-practices\/\">We recommend<\/a> that interviewers rotate and refresh their questions because it\u2019s inevitable that the question will end up on the internet (and scanned by a GenAI service).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Example of a Good Interview Question<\/h2>\n\n\n\n<p>Here\u2019s a question we have asked when interviewing engineers at CoderPad. It has them implement a part of a feature of our product called <a href=\"https:\/\/coderpad.io\/resources\/docs\/interview\/pads\/playback-mode\/\">Playback Mode<\/a>.<\/p>\n\n\n\n<p>First, we give them an overview of the feature and why it\u2019s essential to our business:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\">\n<p><em>During CoderPad interviews, people write code in an editor. After an interview is completed, we let interviewers \u201cplay back\u201d the editor state like a video, so they can see the candidate\u2019s coding process over time and reference key parts of the interview.<\/em><\/p>\n\n\n\n<p><em>To implement this, CoderPad tracks editor changes (edits) as text insertions and deletions. During playback, we reconstruct the editor states at each timestamp, and these are called frames.<\/em><\/p>\n<\/blockquote>\n\n\n\n<p>Then we give a usage example along with the business logic that\u2019s operating behind the scenes:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\">\n<p><strong><em>Editor history<\/em><\/strong><em>:<\/em><\/p>\n\n\n\n<p><em>time=0: \u201c\u201d (Editors start empty.)<\/em><\/p>\n\n\n\n<p><em>t=1: Insert \u201chello\u201d.<\/em><\/p>\n\n\n\n<p><em>t=2: Change \u201chello\u201d to \u201chi!\u201d.<\/em><\/p>\n\n\n\n<p><em>t=3: Insert \u201c, world\u201d before the bang. The editor says \u201chi, world!\u201d.<\/em><\/p>\n<\/blockquote>\n\n\n\n<p>We then provide them with example inputs of varying degrees of complexity, in this particular case it\u2019s a JSON object of editor changes. This is followed by an in-depth description of how the feature works.<\/p>\n\n\n\n<p>We\u2019ll offer additional clarifying information as needed, but the important thing is to be as transparent as possible about how the existing code base carries out the necessary business logic.<\/p>\n\n\n\n<p>Lastly, we present them with the task, which represents a task similar to what they\u2019d be doing at CoderPad:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\">\n<p><em>Your task for this Challenge is to implement a function which takes 1 parameter target_timestamp, reads edits from the local file \/data\/playback_ops.json, and returns 1 string, the frame at that timestamp.<\/em><\/p>\n<\/blockquote>\n\n\n\n<p>Notice the main thing that makes it harder to cheat:<\/p>\n\n\n\n<p><strong>The candidate has to apply their knowledge to an actual business case rather than memorizing a common trivia question.<\/strong>&nbsp;<\/p>\n\n\n\n<p>Most importantly, questions like this give you insight into how the candidate approaches new challenges and their ability to understand your business. And that\u2019s a much more valuable signal about whether the candidate will be successful on the job than their ability to recall university-level computer science lessons.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\">\n<p>\u2139\ufe0f Check out <a href=\"https:\/\/coderpad.io\/blog\/interviewing\/how-interviewers-are-leveraging-chatgpt-to-hire-developers\/\">the advice from our expert Q&amp;A panel on how you can use ChatGPT to become a better interviewer<\/a>.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">The real anti-cheat solution<\/h2>\n\n\n\n<p>At CoderPad, we believe that successful coding interviews occur when interviewers are genuine, lead with trust, and create a process that tests for depth, breadth, communication, and collaboration. <\/p>\n\n\n\n<p>The real solution for cheating concerns is to create an \u201con the job\u201d style interview, where a single correct answer cannot be easily Googled or found using ChatGPT, and you get an accurate read on the candidate\u2019s capabilities.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image-23.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"528\" src=\"https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image-23-1024x528.png\" alt=\"The image is a visual guide from CoderPad about creating better questions for coding assessments. It emphasizes that more complex, iterative questions are more resistant to cheating compared to simpler, single-pass questions. The image categorizes questions into two groups:\n\n- **Less Resistant:**\n  - Algo questions\n  - Single pass\n  - Single file exercise\n\n- **More Resistant:**\n  - Complex questions\n  - Iterative questions\n  - Multi-file exercise\n\nThe message suggests leveraging more resistant question types in your screening process to minimize cheating.\" class=\"wp-image-40742\" srcset=\"https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image-23-1024x528.png 1024w, https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image-23-300x155.png 300w, https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image-23-768x396.png 768w, https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image-23-18x9.png 18w, https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image-23.png 1285w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>If this seems like a monumental task to you, fret not \u2013 CoderPad can work with you to help you create questions that are relevant to your business.<\/p>\n\n\n\n<p>Happy Interviewing!<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<p>P.S. If you\u2019re still concerned about your candidates using code from an outside source\u2026<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\">\n<p>\ud83e\udd14 Before you assume you know a candidate\u2019s intentions when you see them pasting code, ask them about the reasoning behind the pastes and have them clarify what the code does. Interviews should be a conversation, not an interviewer staring silently in judgment at an anxious candidate.&nbsp;<\/p>\n<\/blockquote>\n\n\n\n<p>In CoderPad Interview, there are simple ways to see if candidates are writing code from scratch or potentially copying it from an outside source.<\/p>\n\n\n\n<p>If you\u2019re conducting a live interview, you can see them actively coding; if they leave the pad for another screen \u2013 say to look up an answer \u2013 then you&#8217;ll see a notification that they&#8217;ve left their pad window.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image.png\"><img loading=\"lazy\" decoding=\"async\" width=\"544\" height=\"100\" src=\"https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image.png\" alt=\"\nBenedict cheaterson's focus has left coderpad.\" class=\"wp-image-40439\" srcset=\"https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image.png 544w, https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image-300x55.png 300w, https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image-18x3.png 18w\" sizes=\"auto, (max-width: 544px) 100vw, 544px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>Additionally, you can quickly see in the playback when text is copied and pasted by the yellow dots in the playback timeline:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"486\" src=\"https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image-1-1024x486.png\" alt=\"Coderpad playback with an arrow pointing to the &quot;External paste&quot; notification on the candidate's playback timeline.\" class=\"wp-image-40441\" srcset=\"https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image-1-1024x486.png 1024w, https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image-1-300x143.png 300w, https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image-1-768x365.png 768w, https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image-1-1536x730.png 1536w, https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image-1-18x9.png 18w, https:\/\/coderpad.io\/wp-content\/uploads\/2024\/08\/image-1.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Concerned that your job candidates are cheating? We have some advice for you&#8230;<\/p>\n","protected":false},"author":12,"featured_media":39969,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[12],"tags":[],"persona":[],"blog-programming-language":[],"keyword-cluster":[],"class_list":["post-6690","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-interviewing"],"acf":[],"_links":{"self":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/posts\/6690","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/comments?post=6690"}],"version-history":[{"count":31,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/posts\/6690\/revisions"}],"predecessor-version":[{"id":40425,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/posts\/6690\/revisions\/40425"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/media\/39969"}],"wp:attachment":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/media?parent=6690"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/categories?post=6690"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/tags?post=6690"},{"taxonomy":"persona","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/persona?post=6690"},{"taxonomy":"blog-programming-language","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/blog-programming-language?post=6690"},{"taxonomy":"keyword-cluster","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/keyword-cluster?post=6690"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}