Booking.com 코딩 인터뷰는 어땠나요?

이것이 해커랭크 챌린지 때의 경험이었습니다.



120분 동안 MVP를 만들어 사용자 입력보다 높거나 같은 리뷰로 결과를 렌더링했습니다.

안타깝게도 테스트가 잘못되었고 설명 문제가 혼란스럽고 파일의 주석도 테스트 사례 및 문제 설명과 다른 내용을 말했기 때문에 좋은 경험이 아니었습니다.

React/Node를 사용하여 백엔드와 프런트엔드를 20분 안에 해결할 수 있었고 10분 더 리팩토링하여 솔루션을 배송할 계획이었지만 테스트가 실패했기 때문에 너무 불안해서 솔루션을 제출하지 않았습니다. 문제가 내 코드 자체에 있다고 생각했습니다.

테스트가 잠겨 있고 Hackerrank 메트릭에 직접적인 영향을 줄 수 있기 때문에 테스트를 변경할 수 없었기 때문에 실패했습니다.

제가 힘들었던 부분은 다음과 같습니다.




/*
  Example output:

  [{
    name: "Boat Tour A",
    score: 5
  },{
    name: "Boat Tour B",
    score: 4
  }]
*/
exports.getAttractionsByReviewScore = (score) => {
  // TODO: Implement a method that gets all attractions with an average review score equal to or higher than a certain score.
}



보시다시피 출력을 예제로 반환하도록 요청되었지만 테스트는 다음과 같이 예상되었습니다.

it('it should GET all attractions with a review score higher than 1', (done) => {
        chai.request(server)
            .get('/attractions/search?score=1')
            .end((err, res) => {
                  res.should.have.status(200);
                  attractions = res.body;

                  attractions.should.be.a('array');
                  attractions.length.should.be.eql(5);

                  for (attraction of attractions) {
                    👉 attraction.average_review_score.should.gte(1) 👈
                  }
              done();
            });
    });



문제 설명을 이해할 수 없다고 생각하여 반복해서 읽었습니다.

설명과 일치하지 않는 테스트 사례



테스트는 점수가 10 이상이어야 하지만 API에 숫자 7을 보내고 결과를 10과 비교하는 시나리오를 설명했습니다.

it('it should GET all attractions with a review score higher than or equal to 10'🥲, (done) => {
    chai.request(server)
        .get('/attractions/search?score=7')🤯
        .end((err, res) => {
              res.should.have.status(200);
              attractions = res.body;

              attractions.should.be.a('array');
              attractions.length.should.be.eql(1);

              for (attraction of attractions) {
                attraction.average_review_score.should.gte(10)👈
              }
          done();
        });
 });



복사 및 붙여 넣기



위에서 언급한 문제에 직면했고 파일에 대한 일부 의견이 말이 되지 않았기 때문에 이 도전 과제를 다른 저장소를 사용하여 복사하여 붙여넣은 느낌이 들었습니다.

class Attraction {
    constructor(id, name) {       // Accept name and age in the constructor👈
        this.id = id || null;🥲
        this.name = name || null;🥲
    }

    getName() {
        return this.name;
    }

    setName(name) {
        this.name = name;
    }

    getId() {
        return this.id;
    }

    setId(id) {
        this.id = id;
    }
}

module.exports = Attraction;



결국 비공개 노션 페이지를 작성해 면접관에게 공유했지만 아무런 답변을 받지 못했다. 예약 지원 이메일에 연락을 시도했지만 아무런 응답도 받지 못했습니다.

내가 이것을 공유하는 이유는 이러한 코딩 문제에 직면한 사람들을 돕기 위한 것이지만 때로는 제대로 보정되지 않아 일부 문제나 자기 의심으로 이어질 수 있습니다.

Booking.com 는 크고 거대한 회사이며 제 사례에 대한 업데이트를 받기를 고대하고 있습니다. 이러한 놀라운 기술 회사에서 일할 수 있도록 자신과 후보자를 개선하기 위해 노력할 것을 권장합니다.

아래 댓글에서 이와 같은 상황에 이미 직면했다면 알려주세요.

좋은 웹페이지 즐겨찾기