Skip to content

이직하기까지의 준비 과정. 참고하시는 분들께 도움이 되시길 바라며, 모두 행복합시다.

License

Notifications You must be signed in to change notification settings

2dongyeop/technical-culture-interview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

technical-culture-interview

개요

전 직원이 7명인 스타트업에서 유일한 서버 개발자로 근무하다, 토스로 이직하기까지의 준비 과정을 정리했습니다.

여러 분야의 기본 개념들과 예상 면접 질문들로 이루어져 있으니, 아래 나열한 조건에 해당되시는 분들께 도움이 되셨으면 합니다.

  • 첫 커리어를 시작하는 신입 & 이직을 준비하는 주니어 서버 개발자
  • 서버 직군이 아니여도, 컬쳐핏 면접을 앞두고 있는 개발자

모두 행복하세요.


목차

  1. 기술면접 : CS 지식부터 프로젝트 기반 기술 면접까지
  2. 인성/컬쳐핏 면접 : 메타인지부터 조직문화 적합성까지
  3. 면접 마지막에 물어보면 도움될 질문 목록
  4. 기타

기술 면접

1. CS

아래에 나올 CS 항목들은 필자가 "스스로 개념을 정리할 필요가 있는 항목들을 수집한 내용"입니다.
보시는 분들도 자신이 어느 파트가 공부해야 할 지 찾아보고, 필요한 항목들을 수집하여 면접을 준비하시면 좋을 것 같습니다.


공통

1-1. Java

1-2. Spring

1-3. JPA

1-4. Database

1-5. Network

1-6. 인프라/운영/안정성


2. 프로젝트 경험

안내

개인 프로젝트 경험 관련 내용은 첨부한 이력서 를 기반으로 키워드를 추출하여 작성했습니다.

개인적인 경험이다보니 겹치는 내용은 없겠지만, 문제를 어떻게 파악하고 어떤 고민을 통해 어떻게 해결했는지 등을 참고하시는 데에 도움이 되었으면 합니다.

답변 팁

  1. 답변을 아래와 같은 순서로 진행하면 좋습니다.
    a. 진행 배경 → 기술 선택 및 이유 → 해결 방법 및 고민 내용 → 성과 혹은 아쉬운 점
  2. 어떤 역량을 평가하는 질문인지를 구분하여 역량별 답변을 준비하는 것도 좋은 방법이라고 생각합니다.
    a. 의사결정 과정 / 문제 해결 능력 / 협업 경험

2-1. 공통

2-2. 문자 전송 클라이언트 변경

2-3. 송아리에어 서브사용자 모니터링 기능 개발

2-4. 서비스 복구 및 백업 프로세스 설립

2-5. 사내 온프레미스 서버 이관

2-6. 송아리 프리미엄(정기 구독 서비스) 개발

2-7. AWS RDS 모니터링 시스템 구축

2-8. 이미지 리사이징 처리 서버 구축

2-9. 송아리당뇨 API Server 마이그레이션

  • 모놀리식 아키텍처 구조의 프로젝트를 마이크로서비스로 전환한 이유
  • MSA로 전환하며 겪었던 어려움과 해결 방안에 대해 설명해주세요.
  • 대용량 데이터(약 60만 건) 조회 성능을 개선한 방법은 무엇인가요?
  • API 서버들 간, 혹은 외부 API 통신이 작용하고 있을 때, 서킷 브레이커는 어떻게 설정되어 있나요?
    • 만약, 서버가 스케일업 방식으로 이중화되어 있을 때, 외부 API에 문제가 생긴 상황에서 모든 서버들의 서킷브레이커 상태를 동기화하려면 어떻게 해야 할까요?
  • DB도 개별 DB로 분리를 하셨나요? 단일 DB와 개별 DB의 운영 방식에 대한 차이를 알고 계신가요?
  • 아키텍처는 어떤 것을 사용하고 계신가요? 비즈니스 로직은 (서비스, 도메인) 중 어디에 작성하고 계신가요? 해당 방법의 장단점과 연관지어 이유를 설명해주세요.

2-10. 평가 역량별 예상 질문 구분 예시

위에서 나온 키워드 질문들을 평가 역량별로 그룹핑한 예시입니다.

의사결정 과정
  • API 서버를 모놀리식에서 MSA로 전환할 때, 공통 라이브러리를 만들기로 결정한 이유와 과정은?
  • JDK 21, Spring Boot 3.4, Spring Cloud 2024.0으로 마이그레이션을 준비하면서 가장 중요하게 고려한 요소는?
  • APM 도구를 비교/분석할 때 최종적으로 선택한 기준과 그 과정에서 팀과 어떻게 합의했는가?
  • EC2의 Launch Template 업데이트를 자동화할 때, 어떤 전략을 선택했으며 그 선택이 가져온 장점과 단점은?
  • Google Play 및 Apple App Store의 구독 결제 상태를 통합 정의할 때, 기존 방식과의 차별점 및 최종 모델을 선택한 기준은?
문제 해결 능력(겪은 어려움과 해결 방법)
  • Pinpoint APM을 JDK 8 → JDK 17 환경으로 업그레이드할 때 가장 큰 기술적 문제는 무엇이었고, 이를 어떻게 해결했는가?
  • Prometheus 기반 모니터링을 설정할 때 예상치 못한 장애나 데이터 수집 문제를 경험한 적이 있는가? 어떻게 해결했는가?
  • Spring Boot 기반 GraphQL을 도입할 때 발생했던 주요 문제는 무엇이었고, 이를 어떻게 극복했는가?
  • 대규모 성능 테스트를 진행할 때 JMeter, Gatling, k6, Locust 중 특정 도구를 선택해야 했을 때 어떤 문제가 있었고, 어떻게 해결했는가?
  • AWS RDS(MySQL 8.0) 모니터링을 rds_exporter로 구축할 때 성능 최적화와 관련된 어려움이 있었나? 어떻게 해결했는가?
협업 경험
  • 모놀리식 API 서버를 MSA로 전환하면서 프론트엔드, 데이터 엔지니어 팀과의 협업은 어떻게 진행했는가?
  • APM 시스템(Pinpoint) 도입 후, 개발팀/운영팀과 데이터를 공유하거나 활용할 때 어떤 협업이 필요했으며, 어떻게 조율했는가?
  • 구독 결제 시스템 개발 시, Google/Apple 정책 변경과 관련하여 비즈니스 팀과 협업한 경험이 있는가? 어떻게 소통했는가?
  • 대규모 성능 테스트를 진행할 때 다른 개발자나 QA 팀과 어떻게 협업하여 효율성을 높였는가?
  • 내부 기술 발표를 15회 진행하면서, 발표 주제 선정과 피드백 반영 과정에서 팀원들과 어떻게 협력했는가?

인성 및 컬쳐핏 면접

답변 팁

  • 구체적인 경험을 포함하면 설득력이 높아집니다.
  • STAR 기법(상황, 과제, 행동, 결과)을 활용하면 논리적인 답변 구성이 가능합니다.
  • 면접을 보러 가는 회사 혹은 팀에서 운영하는 서비스에 대해서 알아가는 것도 중요합니다. 관심도가 영향을 미칠 수 있다고 생각해요.

인성 면접 준비 팁


지원하는 회사의 인재상 및 비즈니스 알아보기

관심이 있어야, 이 회사에 입사하여 어떤 기여를 할 수 있을 지 기대하는 바를 말할 수 있음.

  1. 지원하는 회사 홈페이지에서 지향하는 인재상 파악하기
  2. 해당 기업의 일하는 방식/원칙 찾아보기
    • e.g. 토스의 경우 : "자율"과 "책임"을 중요시.
  3. 채용 공고 검토하기(맡게될 업무, 지원자격, 우대사항 등)
  4. 해당 기업의 뉴스 기사를 통해 사업 현황 파악하기
  5. 해당 기업의 최근 투자 현황과 경쟁 업체들의 현황 파악하기
  6. 링크드인 > 해당 기업 검색 > 사람들 프로필을 통해 어떤 기술스택으로, 어떤 프로젝트를 진행했는지 파악하기
  7. 파악한 프로젝트의 소개/기술 중 주요 키워드를 추출하여 관련 기술블로그 아티클 읽기

가치관이 없으면 떨어진다.

  • 가치관을 통해 지금까지 일할 때(혹은 살아올 때) 어떤 기준을 가지고 판단을 내리고, 행위를 하는지 설명이 가능
  • 자신이 우선시하는 특정 가치를 정하여 면접 캐릭터를 준비하면 좋음.
    • 일관성, 속도, 완벽함, 고객지향, 장기성장, 안정성 등등
  • 그리고 자신의 가치관을 증명하기 위한 사례를 반드시 함께 말하기

미리 생각을 정리해놓아야 할 대표 질문 목록

  1. 이전에 경험했던 조직문화 중 가장 잘 맞았던 조직문화 & 잘 맞지 않았던 조직 문화는 무엇인가요?
    • 잘 맞았던 조직 문화 : 지원하는 회사의 문화와 유사한 경험을 강조
    • 잘 맞지 않았던 조직 문화 : 지원하는 회사의 문화와 반대되는 경험을 말하고, 이를 성장 기회로 삼았다는 점을 강조
  2. 우리 회사에 입사한다면 조직문화와 일하는 방식 측면에서 가장 기대되는 점은 무엇인가요?
    • 지원하는 회사의 문화와 연결 & 기존 경험과 비교하여 차별점을 부각
    • 단순한 기대가 아니라, 구체적인 성장 기회와 연결
  3. 주어진 업무 범위와 가이드를 넘어서 공동의 목표를 위해 스스로 주도적으로 기획하고 실행해 본 사례를 말씀해주세요.
    • 주어진 역할을 넘어서 자율적으로 기획하고 실행한 사례를 나열
    • 단순히 기술적인 기여 뿐만 아니라, 비즈니스 성과로 연결되는지 검토
  4. 팀 내/외부의 사람들로부터 협업을 원활하게 이끌어내서, 성과를 창출한 사례를 말씀해주세요.
    • 근본적인 공동의 목표(문제)를 파악하고, 이를 해결한 사례를 제시
  5. 어떤 분들과 함께할 때 가장 즐겁고 헌신적으로 일할 수 있나요?
  6. 같이 일하고 싶은 & 일하기 싫은 개발자는 어떤 유형인가요?
    • 단순한 호불호가 아니라, "어떤 동료와 함께할 때 최고의 성과를 낼 수 있는지" 설명하도록 연결
  7. 자신의 성격 장점과 단점은 무엇이고, 이를 보완하기 위해 어떻게 노력하고 계신가요?
    • 강점은 어떻게 업무에 도움이 되는지
    • 단점을 개선하기 위해 노력에서 나온 결과나 경험을 함께 설명
    • 자기 인식이 높은 점이 포인트. 이로 인해 평소 삶의나 일의 방식으로 연결되기 때문.
  8. 회사/인생에서의 실패/성공 경험에 대해 말씀해주세요.
    • "실패와 성공을 통해 무엇을 배웠는가"를 강조
    • 특히 개인의 성장과 태도 변화를 보여주어도 좋음.
      • 실패를 남 탓하지 않고, 본인의 판단 실수를 인정하는 태도 등..
  9. 실패했던 프로젝트를 다시 하게 된다면 어떻게 성공하도록 시도할 것인가요?
  10. 업무를 진행하는데 있어서 동료들과 소통은 어떤방식으로 하시나요? 문제가 있다면 바로 직접적으로 말하시는 편인가요?
    • 피드백 문화에 대한 개인적인 견해를 노출
    • 래디컬 캔도어 (Radical Candor) 검색해보기
  11. 주변 사람들에게 받았던 긍정적 혹은 부정적인 피드백은 무엇인가요?
    • 본인이 주요하게 생각하는 가치를 강조할 수 있도록 긍정적 피드백을 어필(e.g. 자기주도적인 성장 태도)
    • 부정적인 피드백을 받고, 수용할 줄 아며 개선하려는 노력을 함께 말할 것
  12. 평소 스트레스를 받는 요인이 있다면, 어떤 것들인가요?
    • 스트레스 관리 능력과 휴식의 중요성을 강조 → 더 나은 업무 성과로 이어지도록

카테고리별 예상 질문 목록

지원 동기

메타인지

  • 성격이 외향적인지 내향적인지?
  • 주변 사람들은 나를 어떤 사람으로 생각하는지?
  • 본인의 강점과 약점은 무엇이라고 생각하나요?
  • 본인이 주도적으로 진행한 프로젝트가 있다면 소개해주세요.
  • 예상보다 성과가 좋지 않았던 경험이 있다면? 어떻게 대처했나요?
  • 가장 최근에 배운 새로운 기술이나 개념은 무엇인가요?
  • 자신이 성장했다고 느낀 순간은 언제인가요?

조직 문화 적합성

  • 이상적으로 생각하는 조직/개발 문화
  • 조직 문화에 적응하는 나만의 방법이 있는지
  • 팀 내에서 커뮤니케이션할 때 가장 중요하게 생각하는 것은?
  • 코드 리뷰나 피드백을 받을 때, 또는 줄 때 중요하게 여기는 점은?
  • 같이 일하고 싶은 동료 유형과 같이 일하기 싫은 동료 유형
    • 원하는 동료 = "어떤 환경에서 잘 협업하는지"에 중점을 두기
    • e.g. "서로 피드백을 주고받으며 개선해 나가며 성장할 수 있는 동료들과 일하고 싶습니다."
  • 협업 중 의견 충돌이 발생했을 때 어떻게 해결하는 편인가요?
  • 개발자로서 성장하기 위해 동료에게 기대하는 것이 있나요?
  • 스스로 어떤 동료가 되고 싶으신가요?
    • 자신의 개발자로써의 성장 방향을 녹이기
    • e.g. 제가 가진 경험을 공유하고, 저도 동료들에게 배우면서 함께 성장할 수 있는 환경을 만드는 개발자.
    • e.g. 단순히 주어진 개발만 하는 것이 아니라, 개발 과정에서 문제를 미리 발견하고, 해결 방안을 함께 고민하는 동료
      • "이 API 호출이 많아질 경우 성능 이슈가 발생할 가능성은 없을까?"
      • "이 데이터 구조가 향후 확장성을 고려했을 때 적절할까?"
  • 팀원들에게 본인을 소개해달라고 하면, 어떤 동료라고 설명이 될 것 같으신가요?
  • 다른 사람을 설득할 때, 주로 사용하는 접근 방식이 어떻게 되시나요? (e.g. 경험 기반, 데이터 기반, ...)
  • 협업할 때 중요하게 생각하시는 것은 무엇인가요?
  • 조직에서는 리더형이신가요? 아니면 팔로우형이신가요?
  • Top-down 형식으로 일이 진행된 것 같은데, Bottom-up 형식으로 일하신 경험이 있으실까요? 혹은 Top-down 형식으로 일하면서 마주한 불편함이 있으실까요?

삶의 태도 및 가치관

  • 주기적으로 회고를 진행하는지? 그렇다면 가장 기억에 남는 회고는?
  • 장기적인 목표나 커리어 플랜이 있다면?
  • 스트레스 해소 방법(취미, 주말)
  • 삶에서 가장 중요하게 생각하는 가치
  • 개발자로서 지속적으로 성장하기 위해 어떤 노력을 하고 있나요?
  • 최근 가장 관심있게 접한 기술은 무엇인가요?
  • 코드를 작성할 때, 어떤 부분을 가장 중요시 여기시나요? (e.g. 가독성, 성능 ..) 그리고 그 이유는 무엇인가요?
  • 어떤 개발자가 되고 싶으신가요?
  • 회사생활에서 ‘동료와의 화합, 나의 성장, 회사의 성장’ 중 어느 것이 가장 먼저인가요?
  • 회사에서 받았던 피드백은 어떤게 기억에 남나요? 그리고 개선하셨나요?

면접 마지막에 물어보면 도움될 질문 목록

업무 및 개발 프로세스 관련

  • 신규 기능 개발 시, 업무 프로세스가 어떻게 되나요?
    • e.g.) Top-down / Bottom-up 인지, 일정 산출은 어떻게 진행되는지
  • 배포 및 운영 프로세스는 어떻게 진행되나요?
    • CI/CD 및 배포 환경, 인프라 환경 유무 등
  • 장애 대응(백업 및 복구) 체계는 어떻게 구성되어 있나요?

팀 및 조직 문화 관련

  • 팀 구성이 어떻게 되어 있나요?
  • 팀에서 사용하는 기술 스택이 어떻게 되나요?
  • 팀원들(특히 서버측)의 평균 연차 및 근속 연수가 어떻게 되나요?
  • 회사/팀 내 개발문화가 존재하나요? (코드리뷰, 1 on 1, 테크니컬 도큐먼트 작성, 장애 회고 등..)
  • 평소 팀 분위기는 어떤가요? (잡담.. 회식.. 동아리.. 등등 유무)

커리어 성장 및 평가 관련

  • 신입/경력 개발자의 온보딩 프로세스는 어떻게 진행되나요?
  • 입사를 하게 되면 담당하게 될 업무는 무엇인가요?
  • 개인의 성장과 역량 개발을 위한 피드백/평가 방식이 있나요?

회사 및 비즈니스 관련

  • 레퍼런스 체크는 어떤 방식으로 진행되나요?
  • 지원한 회사에 스페시픽한 질문 추가하기

기타

이력서 작성 시 참고하면 좋을 자료들

주변 선배나 혹은 커피챗을 통해 작성한 이력서를 피드백 받아보세요. 쑥스러워도 반드시 필요한 과정입니다.

CS 지식 정리 시 참고하면 좋을 자료들

인성 및 컬쳐핏 면접 준비 시 참고하면 좋을 자료들

이직 준비시 멘탈 관리

About

이직하기까지의 준비 과정. 참고하시는 분들께 도움이 되시길 바라며, 모두 행복합시다.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published