우아한테크코스5기

[우테코] 레벨로그: 레벨1 인터뷰를 준비하며

깃짱 2023. 3. 29. 15:34
반응형

 

⭐ 레벨1 인터뷰를 준비하며

 

드디어 약 두 달 간의 우테코 레벨1 생활을 마치고, 오늘 이리내, 오잉, 제나와 만나서 인터뷰를 준비하고 있다.
그동안 학습한 내용들을 바탕으로, 짧게 키워드를 정리해 보았다.
키워드에 대해 질문하고 싶은 것이 있다면 댓글로 남겨주세요!

 

 

 

💋 자동차 경주 미션

✔ 페어 프로그래밍

  • 페어 프로그래밍은 페어와 함께 설계와 구현의 모든 과정을 진행하는 방식이다.
  • 페어 프로그래밍을 통해 생산성이 향상되는 경우가 많다고 한다.

✔ 단위 테스트

  • 단위테스트는 테스트 가능한 가장 작은 소프트웨어를 실행하여 예상대로 동작하는지 확인하는 것이다.

✔ 네이밍의 중요성

  • 네이밍은 너무 짧아도 좋지 않다. 정확하게 역할을 설명하는 이름을 지어주는 것이 좋다.
  • 이름을 통해서 의도를 드러내는 것이 좋다.

✔ 원시값 포장

  • 원시 타입을 사용해 객체의 의미를 나타내지 않고, 의미있는 객체를 포장하는 것이다.
  • 객체 내부에서 유효성 검사, 동등성 검사, 불변 등을 관리할 수 있다.
  • 더 안정적이고 명확한 도메인을 만들 수 있다.

✔ 랜덤한 요소에 대한 테스트

  • Random한 요소가 섞여 있으면 코드를 테스트하기 어렵다.
  • 코드에서 랜덤한 요소와 랜덤하지 않은 부분을 분리한 후, 랜덤한 요소를 인터페이스를 사용해 구현하면 테스트하기 좋은 코드를 만들 수 있다.

 

 

 

💋 사다리 게임 미션

✔ 테스트 코드는 도메인의 설명서이다.

  • 많은 사람들은 프로덕션을 이해하기 위해 테스트 코드를 사용한다.
  • 따라서 @DisplayName은 적어주는 것이 좋으며, 네이밍은 최대한 일관성을 지키는 것이 좋다.

✔ TDD

  • TDD를 통해 도메인에 대한 지식을 늘릴 수 있다.
  • 테스트 코드 작성, 테스트 코드 성공하게 만들기, 세부내용 리팩터링 하기 중 한 번에 한 가지에 집중할 수 있어서 몰입도가 높아진다.

 

 

 

💋 블랙잭 게임 미션

✔ 람다식은 함수형 인터페이스의 구현체이다?

  • 함수형 인터페이스를 구현하기 위해서는, 딱 한 개의 추상 메서드를 구현하면 되는데, 이 때 람다식을 사용해서 이 인터페이스를 구현하게 된다면, 아직 미설계 상태의 메서드가 람다식과 딱 1:1로 매칭이 되면서 인터페이스가 구현된 객체가 만들어지는 것이다.

✔ 테스트 코드의 맹점은 완벽하지 않은 테스트가 신뢰될 때

  • 테스트 코드를 작성하면, 코드의 세부 구현을 리팩터링해 코드 품질을 높일 때, 전체 기능에 변동사항이 없는지 곧바로 확인할 수 있다는 점에서 효과적이다.
  • 하지만 내가 작성한 테스트 코드의 케이스에 해당하지 않는 예외는 종종 발생한다.
  • 테스트 코드의 맹점은 완벽하지 않은 테스트가 신뢰될 때이다.

 

 

 

💋 체스 게임 미션

✔ 설계를 완벽히 오래 VS 설계는 간단히 구현 다이빙

  • 체스 게임을 처음 주어진 기한 안에 제출하지 못했다.
  • 앞으로는 시간을 정해두고 설계를 하는 등 설계와 구현 시간의 조화를 맞추기 위해 고민이 필요할 것 같다.

✔ 파라미터로 Optional을 받는 것은 안티패턴이다.

  • Optional은 메서드의 반환값으로만 사용하는 것이 좋다.

✔ 함수형 프로그래밍 정신을 장착해 안정적이고 예측 가능한 코드를 작성할 수 있다.

  • 메서드는 각자 자신의 input에 대해서 일정한 output을 내놓는다.
  • 하나의 메서드는 다른 객체의 필드나 메서드를 알지도, 참조하지 않는다. 따라서 외부 환경에 대해 철저히 독립적이다.
  • 외부 요인에 영향을 받지 않은 채 오로지 주어진 input을 통해서만 정해진 작업을 수행하기 때문에, 동일한 input에 대해서는 언제나 동일한 output을 반환한다. 이런 것을 순수 함수라고 한다.
반응형