모의면접 결과 정리

dowon kim·2023년 9월 22일

자기소개 부탁드립니다.

  • 카카오 프론트엔드 개발직무에 지원한 신입개발자 김도원입니다. 소중한 면접기회를 제공해주셔서 감사합니다.

  • 웹 디바이스를 통해 사람들의 삶의 질을 향상시키는 것에 큰 관심을 갖게 되어 웹 개발자로의 여정을 시작했습니다. 특히, 사용자와 가장 밀접하게 상호작용하는 프론트엔드 영역에 큰 흥미를 느꼈습니다.

  • 저는 스스로의 목표인 웹어플리케이션 개발역량을 향상시키고 프론트엔드 개발자로써 회사가 원하는 인재가 되기 위하여 각종기술블로그/유튜브/공식문서 등을 꾸준히 참고하며 이를 적용한 다양한 어플리케이션을 개발하여 역량을 갖추기 위해 노력하였습니다.

  • 카카오에서는 세상과의 소통을 통한 다양한 경험과 협업의 기회를 통해 계속해서 성장하고, 회사에 기여하고자 합니다. 회사의 핵심 개발자로서의 제 역할을 희망하며 이번 지원을 결정하게 되었습니다.

개발자로서 본인의 강점과 근거가 되는 경험을 말씀해주실 수 있을까요? (협업 능력 제외)

  • 같은 개발지망생들을 기준으로 개발속도에 자신이 있고 풀스택 개발을 할 수 있다는 것이 강점이라고
    생각합니다.
    이번 항해99 최종 프로젝트에서 60퍼센트의 프론트엔드 파트 개발과 50퍼센트의 백엔드 파트 개발을
    하며 일정에 차질 없이 가장 빨리 완성하여 팀을 기술적으로 리딩한 경험이 있으며 ,
    하품 프로젝트는 역대 항해기수 프로젝트중에서도 손에 꼽히는 볼륨을 자랑하는 프로젝트 였기 때문에
    이를 근거로 저의 개발속도와 풀스텍개발능력이 강점이라고 생각합니다.

개발자로서 본인의 약점은 무엇인가요?

  • 페이스조절이 잘 안되는 게 단점이라고 생각합니다.
    앞에 해야할 일이 있고 팀적인 어려움이 있을때 담당 팀원에게 맡기고 대기하는 것 보다
    직접 함께 해결하는것을 선호하다 보니 담당하는 업무의 양과 스트레스를 효율적으로 관리하지못해
    한번씩 피곤해지는 경우가 생기는 경우가 많습니다.

앞으로 3개월, 6개월, 1년 동안 어떤 것을 공부할 계획인지, 그리고 그러한 계획을 세운 이유는 무엇인지 알려주실 수 있을까요?

  • 원래부터 하던 아침 기상후 알고리즘 풀이 및 기술트렌드 조사를 꾸준히 이어나갈 것 같고 이와 별개로

  • 회사에서 일을 믿고 맡길 수 있는 동료가 되기 위한 공부를 할 것 같습니다.
    3개월 , 6개월 , 1년 이라면 점진적으로 회사에서 핵심 인력이 되기 위한 단계를 정해 이를 실천하여
    발전하기 위한 노력을 꾸준히 할 것 같습니다.

시간복잡도와 공간복잡도가 무엇인지 설명해주실 수 있을까요?

  • 시간복잡도 : 로직이 실행되는데 걸리는 시간의 척도
  • 공간복잡도 : 로직이 실행되는데 소요되는 메모리 리소스의 척도

이분탐색이 무엇이고 시간복잡도는 어떻게 되며 그 이유는 무엇인가요?

  • 이분 탐색은 정렬된 배열에서 특정 값의 위치를 찾는 알고리즘이며, 매 단계에서 배열의 중앙값을 대상 값과 비교합니다. 일치하면 위치를 반환하고, 그렇지 않으면 대상 값을 초과하면 오른쪽 하위 배열에서, 미만이면 왼쪽 하위 배열에서 탐색을 계속합니다. 시간복잡도는 O(log n)입니다. 이유는 배열을 절반씩 줄여나가며 탐색하기 때문에 로그 시간에 원하는 값을 찾을 수 있기 때문입니다.

스택, 큐에 대해 설명해주실 수 있을까요?

  • 스택 : 선입후출 특징 , 브라우저 히스토리 및 괄호검사등에쓰임
  • 큐 : 선입선출 특징 , 대기열 및 스케줄링 로직에 사용됨

배열, 링크드리스트를 비교하여 설명해주실 수 있을까요?

  • 배열 : 메모리주소의 연속성 , 구조 변경시 재할당해야함 , 빈번한 조회에 유리
  • 링크드리스트 : 메모리주소의 비연속성 , 구조 변경시 노드 구조만 수정하면됨 , 빈번한 수정에 유리

HTTPS의 원리를 설명해주실 수 있을까요?

  • HTTPS는 HTTP 프로토콜에 보안을 추가한 프로토콜입니다. HTTPS는 SSL/TLS 프로토콜을 사용하여 데이터를 암호화합니다. 웹 브라우저와 서버 간의 모든 데이터 통신을 암호화하여 중간자 공격(man-in-the-middle attack)을 방지합니다.

사용자 패스워드를 전송하고 보관하는 방법을 설명해주실 수 있을까요?

  • 전송: 패스워드는 사용자가 입력할 때 HTTPS를 통해 안전하게 서버로 전송되어야 합니다.
    해시와 솔트: 서버에서는 패스워드를 평문으로 저장하지 않고, 해시 함수를 사용하여 변환합니다. 또한 솔트를 추가하여 더 안전하게 만들어야 합니다.
  • 보관: 해시와 솔트된 패스워드를 데이터베이스에 저장합니다.

프로세스와 스레드를 비교하여 설명해주실 수 있을까요?

  • 프로세스: 운영 체제에서 실행 중인 프로그램 인스턴스입니다. 독립된 메모리 공간과 자원을 할당받습니다.
  • 스레드: 프로세스 내에서 실행되는 작은 단위입니다. 프로세스의 자원과 메모리 공간을 공유합니다.
  • 비교: 스레드는 프로세스보다 메모리 소비가 적고 컨텍스트 스위칭이 빠르지만, 한 스레드에서 발생한 오류가 전체 프로세스에 영향을 줄 수 있습니다.

동기와 비동기를 비교하여 설명해주실 수 있을까요?

  • 동기: 작업이 순차적으로 실행됩니다. 한 작업이 완료될 때까지 다음 작업이 대기합니다.
  • 비동기: 작업이 병렬적으로 실행됩니다. 한 작업이 완료되기를 기다리지 않고 다음 작업이 실행됩니다.
  • 비교: 비동기 방식은 시스템의 자원을 효율적으로 활용하고 사용자 경험을 개선할 수 있지만, 코드 복잡도가 증가할 수 있습니다.

저는 한사람이 두손으로 일을 처리하는 것과 여러명의 직원을 고용해 여러일을 동시에 처리하는것으로 비유하여 설명하였습니다.

동시성과 병렬성을 비교하여 설명해주실 수 있을까요?

  • 동시성(Concurrency): 여러 작업이 동시에 실행되는 것처럼 보이지만, 실제로는 작업들이 번갈아 가며 진행됩니다. 주로 단일 프로세서 환경에서 사용됩니다.
  • 병렬성(Parallelism): 여러 작업이 동시에 실행됩니다. 주로 멀티 프로세서 또는 멀티 코어 환경에서 사용됩니다.
  • 비교: 동시성은 작업의 흐름을 관리하는 데 중점을 둡니다. 병렬성은 작업들을 동시에 수행함으로써 성능을 향상시키는 데 중점을 둡니다.

진행한 여러가지 프로젝트중 가장 집중도 와 기여도가 높았던 프로젝트는 무엇이고 어떤 파트를 담당하였나요?

  • 토큰을통한 보안 및 인증 / 구글애널리틱스 / PWA / 실시간 소켓통신 / 멀티미디어 업로드 기능 등등

해당 프로젝트에서 겪었던 트러블슈팅중 가장 기억에 남는것은?

  • YOUTUBE API 검색 QUOTE 제한량
    • 문제: 유투브 API 일일 검색량 부족
    • 원인: Youtube Data v3 api의 기본 quote 제공량이 매우 저조하여 서비스가 불가하였음
    • 해결: 팀원 전원의 api키를 백서버에서 관리하며 병렬 연결하여 하루 제공 quote를 7배로 늘려 해결

해당 프로젝트에서 중심이 되었던 기능중 한가지를 설명한다면?

  • 이미지 관리: 데스크톱 환경에서 드래그 앤 드랍이 지원되고 업로드 시도한 파일이 jpg/png 파일인지를 체크하여 필터링 하며 업로드 받은 이미지를 s3-multer 최대 지원 크기로 지정한 5mb가 될때까지 반복로직을 통해 20퍼센트씩 파일 크기를 줄여가며 5mb이하인지를 체크해 리사이징 시키는 방식을 채택하여 이미지 원본화질 및 비율을 최대한 보장함과 동시에 다양한 디바이스에서 문제없이 업로드 되도록 구현.

프로젝트에서 JWT토큰을 사용한 방식에 대해 설명한다면?

  • JWT 토큰 관리: Access/Refresh 토큰 전략을 사용하여 CSRF 공격을 방지. Access 토큰크로스플랫폼 에서도 유연하게 동작할 수 있도록 (특히 IOS 14버전 이후의 애플 디바이스) 바디에서 주고받으며, Refresh 토큰HttpOnly /SameSite 쿠키에 저장하여 관리.
  • Axios 인터셉터 구현 : 로그인 유지 요청 커스텀훅에 의한 토큰 인증시 헤더에 Access 토큰을 담아 서버에
    전달하고 토큰 만료시 리프레시 토큰을 조회하여 액세스토큰 갱신 및 재로그인 요청
  • 토큰인증 커스텀훅 구현 : 로그인 유지 및 토큰인증이 필요한 페이지에서 CLIENT SIDE 상황인지를 체크한 후 해당하는 경우에만 서버에 토큰 인증을 요청하여 유저 로그인 정보를 유지함

답변하지못한 질문

  • 인덱스란 무엇이고 일반적인 원리는 어떠한지 설명해주실 수 있을까요?
  • 트랜잭션이란 무엇이고 원자성, 일관성, 고립성, 지속성이란 무엇인지 설명해주실 수 있을까요?
  • 정규화란 무엇이고 대표적인 장점과 단점은 무엇이 있을까요?
profile
The pain is so persistent that it is like a snail, and the joy is so short that it is like a rabbit's tail running through the fields of autumn

0개의 댓글