LITE
런칭 특가출시 후 ₩7,900
매달 검증 25회
AI 코드의 진짜 위험한 버그는 멈추는 게 아니라, 맞아 보이는데 조용히 틀린 한 줄이에요. Loupe는 그런 오류가 하나 들어간 진짜 AI 코드 앞에 당신을 세우고, 그걸 잡아내는 눈을 길러줘요. 그리고 뭘 놓쳤는지 보여줘요. 가입 없이, 지금 한 문제.
가입 없이 · 60초
1class User:
2 id: int
3 name: str
4 email: str
5 password_hash: str # 민감
6
7@app.get("/users")
8def search_users(name):
9 user = db.find_user(name)
10 return user # user 객체를 그대로 반환
11↑ 진짜 제품 화면입니다. 터미널에 직접 입력해 보세요.
빠르게 만드는 건 누구나 해요. 그게 정말 안전한지 배포 전에 가려내는 눈을 길러보세요.
AI가 짠 코드를 그대로 믿지 않고, 틀린 곳을 걸러내는 눈을 기르고 싶은 분
빠르게 만들되, 뭐가 잘못됐는지 볼 줄 아는 기본기를 쌓고 싶은 분
AI 시대에 맞게, 코드를 검증하는 능력을 보는 평가를 찾는 분
기존 코딩테스트로는 진짜 실력이 안 보인다고 느낀 분
실무에서 진짜 터지는 상황 하나를 받아요. 좌석 예매, 쿠폰 발급, 검색 권한 같은 거요.
터미널에 말로 지시하면 코드가 만들어져요. 실무에서 AI 쓰던 그대로요.
나온 코드를 그냥 믿지 말고, 직접 확인해서 고친 다음 제출해요.
지시 한 줄에 코드가 만들어지고, 검증해서 고치고, 제출까지.
문제마다 보는 기준이 달라요. 동시성 문제는 경합과 락을, 권한 문제는 노출 경계를 봐요.
상품 검색 문제를 푼 실제 결과 화면 예시예요. 무엇을 어떻게 봤는지, 근거까지 그대로 보여드려요.
이번 응시 결론
핵심 문제를 놓쳤습니다 — 대소문자 무시와 공백 처리 로직이 구현되지 않았습니다.
응시자는 필터 구현에서 대소문자 무시와 trim 기능을 놓쳤다.
filterProducts 함수는 if (!query) { return products; } 로 비어있는 검색어에 대해서 전체 반환함을 잘 처리했음.product.name.includes(query) 로 필터를 수행하고 있으며, 대소문자 구분 없이 처리하는 부분이 없다.trim 처리도 없음: query = query.trim(); 등 필요한 처리가 코드에 포함되어 있지 않다.✓ does not match when case differs 와 ✓ does not match when query has surrounding spaces 가 통과되었다는 점은 코드가 요구사항을 제대로 충족하지 못하고 있음을 의미함.대문자와 공백이 섞인 검색어에 대한 테스트가 있습니다. 하지만, 비어 있는 검색어에 대한 테스트는 없습니다.
iphone 같은 대소문자가 다른 검색어에 대해 테스트하고 있습니다:it('does not match when case differs', () => {
const results = filterProducts(PRODUCTS, 'iphone');
expect(results).toHaveLength(0);
});
' iPhone ' 에 대한 테스트도 수행하고 있습니다:it('does not match when query has surrounding spaces', () => {
const results = filterProducts(PRODUCTS, ' iPhone ');
expect(results).toHaveLength(0);
});
사용자 입력은 비교 전에 정규화한다 — 검색은 대소문자·공백에 관대해야 한다
대소문자 구분과 공백 문제를 해결하기 위해 filterProducts 함수 내에서 query와 product.name을 toLowerCase()로 변환하고, query는 trim()으로 처리하여 정확한 검색 결과를 제공하도록 구현하세요.
AI 는 filterProducts 를 products.filter((p) => p.name.includes(query)) 로 짰습니다. includes 는 글자를 그대로 비교하므로 대소문자가 1 글자라도 다르면 불일치입니다. 그래서 사용자가 "iphone" 으로 치면 "iPhone 15" 의 대문자 P 때문에 아무것도 안 나옵니다. 또 검색어를 trim 하지 않아 앞뒤 공백이 그대로 비교에 들어가 " iphone " 은 어떤 상품과도 안 맞습니다. 카탈로그의 이름과 똑같은 대소문자로 정확히 친 경우에만 동작해서, 데모에서는 멀쩡해 보이지만 실제론 안전하지 않습니다.
사람은 검색어를 소문자로, 앞뒤 공백을 붙여, 부분만 칩니다. 정규화 없이 입력을 그대로 비교하면 "검색해도 안 나온다" 는 가장 흔한 사용자 불만으로 이어지고, 멀쩡한 상품이 안 팔립니다. 단위 테스트를 대소문자가 일치하는 입력으로만 짜면 통과하지만 실제 사용자 입력에서 깨집니다.
한 문제에서의 검증 행동을 봐요. 오래 함께 일하는 호흡이나 도메인 깊이, 코드 취향까지는 범위 밖이에요. 평가가 정성으로 이뤄져서 결과가 조금씩 달라질 수 있고요. 그래서 한 줄 결론보다, 그렇게 본 근거를 먼저 보시길 권해요.
무료로 시작하고, 더 검증하고 싶을 때 월 구독이나 추가 검증권을 고르세요.
출시 후 ₩7,900
매달 검증 25회
출시 후 ₩14,900
Lite 혜택 포함
출시 후 ₩39,000
Standard 혜택 포함
정답을 맞히는 시험이 아니에요. 문제마다 정한 기준으로, 당신이 보낸 지시·최종 코드·바꾼 부분을 근거로 평가하고, 그렇게 본 근거를 결과와 함께 보여드려요.
프롬프트를 잘 쓰는 것과, 나온 결과를 의심할 줄 아는 건 다른 능력이에요. Loupe가 보는 건 뒤쪽이에요. 빨리 많이 만든 사람이 아니라, 위험한 한 줄에서 멈춘 사람.
네. 푼 과정과 그렇게 본 근거가 그대로 남아서, 결과를 누구든 다시 따져볼 수 있어요.
코드 리뷰는 누가 써 놓은 변경분을 보고 의견을 다는 일이에요. 여기선 코드가 다 된 것처럼 보이고 테스트도 통과해요 — 문제점이 그 밑에 숨어 있죠. 남의 PR에 코멘트하는 게 아니라, 지금 배포하려는 코드가 정말 안전한지 직접 판단하는 거예요.
그런 시험은 코드를 짤 줄 아는지를 봐요. 그건 이제 AI가 해요. 지금 드문 능력은 멀쩡해 보이는 코드가 어디서 잘못됐는지 잡아내는 거예요. 그래서 알고리즘을 짜라는 대신, 멀쩡해 보이지만 어딘가 잘못된 AI 코드를 주고 어떻게 찾아내는지를 봐요.