목차
- React에서 동적 <script> 관리와 컴포넌트화
- TanStack Query 캐시와 메모리 구조 이해
- 프린터 출력 시 HTML 바 차트 문제
- 내부망 보안과 외부 서드파티 사용 이슈
- React Swiper 슬라이드 너비 문제
- Context API vs Redux/Recoil 비교
- 커스텀 훅과 합성 컴포넌트 활용법
- 코딩 테스트 플랫폼과 채용과제 현황
- React useSelector 남발에 대한 의견
- 면접 질문: Access Token 보관과 보안 문제
1. React에서 동적 <script> 관리와 컴포넌트화
- React에 <script> 태그를 동적으로 가져와서 쓰는 상황에서, 계속 바뀌는 값이 있을 경우 상태 관리를 어떻게 할지 질문.
- React에서 상태(state) 관리는 UI 재렌더링과 데이터 흐름의 핵심임.
- 동적으로 바뀌는 값은 state 혹은 props로 관리해야 하며, 스크립트 관련 로직은 별도의 React 컴포넌트로 만들어 재활용하는 게 좋음.
- 초보자 팁: React의 컴포넌트화는 UI와 로직을 독립적이고 재사용 가능하게 만들어 유지보수를 쉽게 함.
2. TanStack Query 캐시와 메모리 구조 이해
- TanStack Query의 캐시 저장 위치가 궁금했음.
- 답변으로 캐시는 프로세스 메모리(heap)에 있다고 봄.
- **콜 스택(Call Stack)**은 함수 실행 컨텍스트 관리에 쓰이는 메모리 구조이며, 상태 저장 구조로는 부적합.
- React Query 캐시는 애플리케이션이 실행중인 메모리에 저장되고, 페이지 리로딩이나 앱 종료 시 초기화됨.
- 따라서 앱 생명주기와 연관되어 캐시 지속 여부가 결정됨.
3. 프린터 출력 시 HTML 바 차트 문제
- PC화면에서는 바 차트가 정상적으로 나오지만 프린트기로 출력하면 바가 사라지는 이슈 발생.
- PDF로 변환 시에는 정상 출력됨.
- 원인 가능성:
- CSS 미디어 쿼리에서 프린트용 스타일이 누락되었거나 다르게 적용
- 캔버스가 아니라 HTML과 CSS만으로 바 차트를 만들 경우, 인쇄용 스타일링을 별도로 관리해야 함
- 프린터 드라이버 혹은 브라우저 인쇄 엔진의 호환성 문제도 있음
- 해결 팁:
- @media print CSS로 프린트 전용 스타일 점검 및 수정
- 바 차트 라이브러리에서 PDF 출력 기능 활용 권장 (예: Chart.js)
- 브라우저에서 인쇄 미리보기 기능으로 출력 상태 먼저 확인
4. 내부망 보안과 외부 서드파티 사용 이슈
- 내부망 환경에서 외부 서드파티 사용이 어려워 보안 문제 발생.
- 보안 회피를 위해 내부망에서 외부 서비스 직접 호출 금지 사례 다수.
- 보안은 기술보다 의식이 중요하며, 물리적 보안(스티커 부착 등)과 교육 병행 필요.
- VPN 속도 감소, 사내 모니터링 강화, 암호화 통신 중요성도 언급됨.
- 외부 API나 CDN 사용 시 보안 검증, 프록시 서버 사용 등 대안 고려 가능.
5. React Swiper 슬라이드 너비 문제
- Swiper 라이브러리에서 일반 슬라이드 너비를 100px, 활성화된 슬라이드는 200px로 설정했는데 슬라이드 이동 폭이 200px씩 움직여 문제가 생김.
- 원인 분석:
- Swiper는 슬라이드 이동 거리를 슬라이드 너비에 따라 조정하므로 활성 슬라이드 너비가 기준이 됨.
- 해결 팁:
- 슬라이드 너비를 일정하게 유지하거나, Swiper 옵션인 slidesPerView, spaceBetween, centeredSlides 조절
- 커스텀 CSS와 이벤트 활용해 이동 효과 직접 구현 고려
6. Context API vs Redux/Recoil 비교
- Context API는 React에서 props drilling(중첩된 컴포넌트 간 props 전달 문제)을 줄이기 위한 내장 기능.
- Redux, Recoil 등은 상태를 전역으로 관리하는 라이브러리로, 복잡한 큰 애플리케이션에서 상태 관리에 효율적임.
- Context API 장점:
- 추가 라이브러리 없이 React 내장 기능 사용
- 소규모 데이터 또는 UI 상태 관리에 적합
- Redux/Recoil 장점:
- 미들웨어 지원, 비동기 로직 관리, 개발 도구 지원 등 풍부한 기능 제공
- 대형 프로젝트 및 복잡한 상태 구조 관리에 유리
- 선택 기준은 프로젝트 복잡도 및 팀 규모에 따라 달라짐.
7. 커스텀 훅과 합성 컴포넌트 활용법
- 자주 사용하는 onChange, value 같은 input 처리 로직을 반복하는 대신, 커스텀 훅(custom hook)을 만들어 재사용하는 게 효율적.
- 합성 컴포넌트는 여러 하위 컴포넌트를 조합하여 관리하기 쉽게 만드는 방식.
- 예를 들어, TextField 컴포넌트를 만들어 내부에 label, input, 오류 메시지 등의 컴포넌트 합성 가능.
- 초보자 팁: 커스텀 훅은 로직 추상화, 합성 컴포넌트는 UI 추상화에 적합.
8. 코딩 테스트 플랫폼과 채용과제 현황
- 최근 코딩테스트 플랫폼(Codility 등) 계약 종료 및 과제로 전환하는 기업 증가.
- Codility는 문제 제출 시 입력까지 캡처하며 부정행위(복붙, 유사코드 등)를 감지할 수 있음.
- Codility는 영어 문제로 인해 국내 지원자들에게 다소 어려움이 있음.
- 프로그래머스 등은 채점 시스템과 다른 특성 보유.
- 과제 기반 채용은 제출물 개별 검증 필요해 인력과 비용 소모 많음.
- 실무 팁: 코딩 테스트는 문제풀이 능력뿐 아니라 제출 시스템 이해도 중요.
9. React useSelector 남발에 대한 의견
- Redux의 useSelector 훅을 하나의 함수나 컴포넌트 내에서 여러 번 사용하는 경우 질문.
- 특별한 에러는 없고, 원하는 대로 작동하지만 남발이 성능에 영향을 줄 수 있음.
- useSelector는 리덕스 스토어 상태 업데이트 시 변경된 부분만 리랜더링하도록 도와주나, 과도한 사용은 오히려 비효율.
- 권장 방법은 필요한 최소한의 상태를 선택해서 한 곳에서 관리하는 것.
- 훅은 컴포넌트 또는 커스텀 훅 내에서만 호출해야 함.
10. 면접 질문: Access Token 보관과 보안 문제
- 토큰 인증 시 Access Token을 어디에 저장하는지 면접 질문.
- 일반적으로 로컬스토리지 또는 쿠키에 저장함.
- 보안 이슈:
- 로컬스토리지 저장 시 XSS 공격에 취약할 수 있음.
- 쿠키는 HttpOnly 옵션을 설정하면 스크립트 접근을 차단해 보안성이 높지만 CSRF 공격에 대비 필수.
- 따라서 각 저장 방식에 맞는 보안 대책 마련이 중요함.
- 면접 팁: 보관 위치뿐 아니라 각 저장소의 장단점과 보안 위협 대응 방안도 함께 설명할 것.
면접팁⚡
- React에서 상태 관리 라이브러리 선택 기준: 프로젝트 규모, 복잡도, 팀 역량을 고려.
- 코딩 테스트 관련 질문엔 문제 풀이뿐 아니라, 플랫폼 특징, 제출 방식, 부정행위 방지 방법에 대해서도 답변 준비.
- Access Token 저장 위치와 보안 이슈에 대해, 로컬스토리지와 쿠키 각각의 특성과 보안 대책을 명확히 말할 수 있도록 준비.
링크🔗
- React 컴포넌트와 Hooks 관련 질문
https://velog.io/@typo/new-client-side-hooks-react-19?utm_source=substack&utm_medium=email - TanStack Query 사용법 및 사례
https://youtu.be/nkXIpGjVxWU?si=-qz_anWQwpN4Jt1i - Swiper 슬라이드 관련 영상
https://www.youtube.com/watch?v=Ghexzbb_4GI - 인쇄용 CSS 미디어 쿼리 가이드
https://m.blog.naver.com/PostView.naver?blogId=inmotion99&logNo=222713156692 - 코딩테스트 플랫폼 Codility 소개
https://www.codility.com/ - 개발자 노동요 추천
https://www.youtube.com/watch?v=M1N_wbhAfQ4&list=RDuX8yoT9ct6k&index=2
#React#TanStackQuery#코딩테스트#커스텀훅#내부망보안#Swiper#ContextAPI#Redux#useSelector#면접질문