HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🧚
[1기]최종 프로젝트 데브코스
/
🗺️
[팀17] 영업이익 17조 💰
/
🐥
프롱이
/
💬
회의록
/
01/10

01/10

토스 서술형 문제
<토스 서술형>
1번
프론트엔드 개발을 하다 보면 비동기 프로그래밍에 대해 만나게 됩니다.
(1) JavaScript에서 "비동기 프로그래밍"이 무엇인지 설명해주세요. (2) 대표적으로 어떤 문제를 비동기로 해결해야 하나요? 왜 그런 문제들은 비동기로 해결해야 하나요? (3) 본인에게 가장 고민이 되었던 비동기 문제에 대해 소개해주세요. 그 문제를 어떻게 해결하셨나요?
2번
웹 서비스 개발을 할 때 컴포넌트는 필수적인 개념이 되었습니다.
(1) 프론트엔드 웹 개발에서 컴포넌트라고 하는 개념에 대해 소개해주세요. 웹 서비스를 개발할 때 컴포넌트를 이용하면 어떤 장점이 있나요? (2) 본인이 좋은 컴포넌트를 설계하기 위해 따르는 원칙이 있다면 소개해주세요. (3) 지금까지 개발했던 컴포넌트 중에서 가장 고민되었던 컴포넌트가 있다면 소개해주세요. 어떤 부분이 가장 고민이 되셨나요? 그 부분을 어떻게 다루셨나요?
3번
프론트엔드 웹 서비스를 개발하다 보면 UI의 상태를 반드시 관리해야 합니다.
(1) 본인이 개발했던 웹 서비스들에서 상태를 어떻게 관리하셨었는지 소개해주세요. (2) 왜 그렇게 UI 상태를 관리하는 것이 좋다고 생각하셨나요? (3) 상태를 더 잘 관리할 수 있는 방법이 있을까요? 본인이 따르는 상태 관리의 원칙이 있다면 소개해주세요.
참고 자료
https://velog.io/@velopert/create-your-own-design-system-with-storybook#버튼의-theme-만들기
 
  • 컴포넌트 개선(확장성)
    • - atom부터 시작(개선할 컴포넌트 정하고, 부족했던 부분 추가로 필요한 부분을 정리 → 담당자를 정해서 개발 → 사용하던 부분에서 새로운 컴포넌트로 이관 작업)

컴포넌트 리팩토링 규칙

네이밍 규칙

components/refactor/atoms/button
 
  1. 기존 컴포넌트와 별개 파일로 만들기 → 기존 기능에 영향을 주지 않기 위함 → 제작 후 한 부분에서만 새로운 컴포넌트로 바꿔서 테스트하기 → 완료되면 다른 페이지들은 담당자들이 컴포넌트 확인해서 바꾸기
  1. 스토리북 만들기(사용방법 문서화) https://storybook-design-system.netlify.app/?path=/docs/button--basic
  1. 많이 사용되는 컴포넌트부터 리팩토링 시작하기
  1. 인라인 스타일의 사용을 지양 → style 파일을 분리해서 사용할 것

컴포넌트 리팩토링 체크리스트

한 컴포넌트에 코드량이 많지 않은가?
잘 읽히는가? (다른 사람들이 사용하기에 무리가 없는가?)
쓸데없는, 불필요한 로직이 있는가?
js 내장 함수로 대체할 수 있는 로직이 있는가?
중복코드를 줄일 수 있는 방법이 있는가?
 

리팩토링 필요 컴포넌트

Avatar(image컴포넌트에 의존) - 동진

  • 아바타 그룹의 최대 갯수 제한하기(갯수 자유, 선택속성)
  • 최대 갯수가 되면 마지막은 +, ... 등으로 표현될 수 있으면 좋겠다(...사용, 선택속성)
    • notion image
  • hover시 나타낼 정보 보여주기..?
  • 클릭 이벤트 있어야 하나? → 아바타 그룹 전체 클릭 이벤트 하나만 → 아바타 그룹으로 사용시에는 아바타 개별 이벤트 지양

Image

  • round image를 할 수 있으면 좋겠다
 

Button - 소정

  • 크기를 설정할 수 있으면 좋겠다(small, medium, large, 특정 값 까지 아우를 수 있으면 좋을 듯)
  • 색상을 설정할 수 있으면 좋겠다(primary, secondary, 특정 값)
  • 버튼 비활성화, 활성화를 선택할 수 있으면 좋겠다 → 비활에 따른 css 속성도 필요
  • switch문 없애기
  • border-radius주기
  • secondaryBtn, defualtbtn이라는 변수가 잘 안들어옵니다
  • 여러개의 버튼을 함께 사용하는 buttonGroup 컴포넌트가 추가되면 좋겠다
  • hover시 pointer가 되도록 수정(PC 고려)
  • icon과 함께 쓰이는 버튼도 있으면 좋겠다(제작자 선택^^)
 

Input - 정호

→ 새로 추가되면 좋겠다. 많이 사용되기 때문에
  • 활성, 비활성화
  • 조건에 따른 색상 변화 ( 포커스, 검증실패 등)
  • 크기, border-radius, placeholder, focus,
    • notion image
 

layout(소정)

→ 레이아웃을 잡기 위한 컴포넌트

Icon(소정)

→ icon을 사용하는 곳이 많아서, 새로 추가되면 좋겠다 → 버튼에 icon 사용하는 속성 추가하기
 

Toast(동진)

→ 이건 atom으로 옮기면 어떤지?
  • 두줄로 나눠서 문장을 쓸 수 있으면 좋겠다..ㅎㅎ (한줄에 최대 길이 고려 필요(개발자가 알아서 줄여서 써야함), min 320px toast 글자크기 14px, 한줄에 최대 들어갈 수 있는 글자수 15자 이런식의 제한) → 아니면 message를 리액트노드로 받기
  • 축하합니다! ㅇㅇㅇㅇㅇ님의 ㅇㅇㅇㅇ에서 확인하시면 됩니다.
  • 축하합니다! ㅇㅇㅇㅇㅇ님의 ㅇㅇㅇㅇ에서 확인하시면 됩니다.
 

Text(정호)

switch문을 없애면 좋을것 같다

Upload(정호)

  • children 부분 Upload 95줄
  • 이미지 파일, accept image/*로 하면 이미지 아니어도 들어오는 거 수정
  • 업로드 가능한 파일이 아니라면 경고창 뜨도록
 

Modal(소정)

  • 모달이 꺼지고나서 뒤에가 클릭되는 문제가 있네요...
  • 모달 배경을 클릭 했을 때 닫히게 할지 말지를 선택할 수 있으면 좋겠다

기본 모달을 활용한 모달?(ex_confirmModal)

  • 주로 사용되는 형태를 organism에 넣어두면 좋겠다
 

Navigation/GlobalNavigation(하단탭)(동진)

→ 사용하고 있나요? 안쓰네요...ㅠㅠ
→ 범용성있는 네비게이션으로 만들기(현재 GNB는 전혀 확장성이 없다)
  • 둘을 합치면 어떨지
 

Loader(정호)

→ react-lottie에 deprecated 속성 있음 → react-lottie 라이브러리를 쓰는게 맞는가? → lottie-web 을 쓰면 달라지는지는 잘 모르겠음
notion image
 

 

Header

context에서 관리하는것도 괜찮을듯..?
→ context로 한다면, 다음 주차로 넘겨서 해도 괜찮을듯?
 

Badge

  • em가능하게 하기?(알람, 노티 목적) → 어떻게..? 제작자 자유ㅎㅎ