본문 바로가기
방법론

[방법론] 면접 - 개발자 면접

by cogito21_python 2024. 5. 11.
반응형
 Index
 1. 면접 종류
 2. 코딩 테스트
 3. 코딩 과제
 4. 이론적 기술 면접
 5. 시스템 설계 면접
 6. 인성 면접
Reference

1. 면접 종류

면접 종류

1. 코딩 테스트

- 지원자의 코딩 실력 확인

- 라이브 코딩 테스트: 면접관과 영상 통화를 하며 실시간으로 면접관이 내는 문제를 코드로 구현

- 온라인 코딩 테스트: 코딩 테스트를 볼 수 있는 링크를 제공

 

2. 코딩 과제

- 코드로 구현해야하는 기능 목록이 과제로 제시

- 제한 기간 안에 코드를 작성하고 면접관이 평가

 

3. 이론적 기술 면접

- 이론적인 기술에 대한 질의응답을 하는 방식

- 컴퓨터 공학 지식부터 특정 프로그래밍 언어 관련 지식

- 회사의 기술 스택에 따라 질문이 다름

 

4. 시스템 설계 면접

- 특정 프로덕트의 전체 시스템 또는 일부를 설계하는 면접

- 질문을 통해 면접관이 원하는 것이 무엇인지 파악하여 전체 시스템을 넓고 얕게 훑거나 한 부분을 집중적으로 공략

- 주로 시니어 레벨의 면접에서 사용

 

5. 인성 면접

- 팀의 문화와 맞는지 평가하는 면접

- 지원자의 성향을 파악

 

2. 코딩 테스트

코딩 테스트

1. 자료구조 및 알고리즘 개념 학습

- 자료구조: 배열 / 해시 테이블 / 연결 리스트 / 스택 / 큐 / 힙 / 트리 / 그래프

- 알고리즘: 이진 탐색 / 정렬 / 재귀 / BFS&DFS / 백트래킹 / 동적 계획법

 

2. 빅오 표기법 마스터하기

- 자료구조 및 알고리즘 별 시간 복잡도와 공간 복잡도를 파악

 

3. 알고리즘 문제 풀기

- 프로그래밍 언어 선택: Java, Javascript, Python 추천

- 알고리즘 기출문제 플랫폼 선정: 프로그래머스 / 백준 / 삼성 SW Expert Academy

- 스터디 플랜 세우기: 주제별로 문제를 선정하여 풀기

 

4. 결과 분석하기

- 빅오 표기법으로 시간 및 공간 복잡도 분석

- 다른 사람의 답과 비교하여 효율적인 방법 확인

- 문제풀이에 걸린 시간 측정하기

 

3.  코딩 과제

코딩 과제

- 코딩 테스트의 대체 유형 혹은 코딩 테스트 사전 과제로 출제

- 실제 업무와 유사한 문제 출제

- 특정 요구사항을 정확하게 이해하고 구현하는 것이 목표

 

확인 요소

- 이해하기 쉬운 코드인지

- 일관성 있는 코드인지

- 효율성 있는 코드인지

- 적절한 자료구조 및 디자인 패턴을 사용했는지

- 테스트 코드가 존재하는지, edge case까지 커버하는지

 

1. 정확하게 기능 구현

- 필수 요구사항을 정확히 이해하고 구현하는 것이 목표

- 요구사항을 명확하게 파악하여 해당하는 기능을 하나씩 구현

- 제출 전 모든 기능이 구현되었는지 확인

 

2. 테스트 코드 작성

- 테스트 코드를 통한 기능 구현 검증

- 기본적인 케이스 이외에 에지 케이스까지 커버하도록 작성

 

3. 코드 리팩토링

- 코드의 퀄리티를 위한 리팩토링

- 이해하기 쉽고 협업하기 좋은 코드를 작성했는지 평가

- 코드의 가독성과 효율성에 집중하여 리팩토링

 

4. README 작성

- README는 과제를 리뷰하는 면접관이 보는 문서

- 포함할 내용

    - 프로젝트 구성: 전체 구조를 어떻게 설계했는지 설명

    - 기능 목록: 요구사항을 요약하고 각 기능을 어떻게 구현했는지 설명

    - 사용할 기술 스택 및 라이브러리: 어떤 언어와 버전을 사용했는지, 외부 라이브러리는 어떤 기준으로 선택했는지 명시

    - 코드 실행 방법: 코드 실행하는 방법 안내

 

4. 이론적 기술 면접

이론적 기술 면접

- 이론적 기술 면접은 기술적 질문에 구도로 답하는 방식

- 모르는 경우 모른다고 답변

 

1. 면접에 자주 나오는 주제 파악

- 상세한 면접 질문은 지원 분야에 따라 다름

- 해당 회사의 기술 스택에 맞는 질문이 출제되므로 회사의 기술 스택을 미리 파악

- 면접 질문 모음

 

2. 공부 방법 정하기

- 기술 도서 읽기

- 동영상 강의 듣기

- 기술 블로그 보기

 

3. 예제를 활용해 설명

 

5. 시스템 설계 면접

시스템 설계 면접

- 주니어 엔지니어는 주어진 요구사항에 맞추어 코드를 구현

- 시니어 엔지니어는 직접 시스템 아키텍처를 설계하고 기술적 요구사항을 생산

 

시스템 설계시 고려 요소

1. 신뢰성(Reliability)

- 소프트웨어 시스템은 어떠한 장애가 있더라도 정상적으로  작동하도록 신뢰성이 높게 설계되어야 함

 

2. 확장성(Scalability)

- 늘어나는 사용자 부하와 사용자가 주고 받은 방대한 양의 데이터를 처리하는 방법을 고려

 

3. 유지보수성(Maintainability)

- 유지보수: 새로운 기능을 추가하고 기존 기능이 잘 작동하도록 관리하는 작업

- 유지보수 작업을 쉽고 간편하게 만드는 것

 

시스템 설계 면접 학습법

- 사용자 부하를 여러 서버에 분산시키는 Load Balancer, 데이터에 빠르게 접근하도록 임시 저장하는 Cache, 이미지가 빠르게 로딩되도록 사용자 근처 서버에 저장하는 CDN 등의 기술을 이용하여 시스템을 설계

 

1. 시스템 설계 기본 다지기

- 시스템 설계에 사용할 수 있는 기술의 종류와 개념을 익히기

- 기술 도서 및 온라인 자료를 통한 학습

 

2. 케이스 스터디를 통해 실제 적용 사례 분석하기

- 실제 적용 사례를 살펴보면서 다른 기업에서는 문제를 해결하기 위해 어떤 기술을 도입했고, 어떻게 활용하는지 파악하기

- 기업의 기술 블로그 또는 컨퍼런스 자료를 통한 학습

 

3. 실전 면접을 위한 팀

- 설계 시작전 충분한 질문을 통해 요구사항 파악

- 설계 범위를 넓고 얕게 할지, 특정 영역에 집중하여 볼지 면접관과 상의

- 대략적인 설계안을 제시한 뒤, 상세 설계로 들어가기

- 본인이 자신있는 부분을 집중하여 설명하기

- 두 개 이상의 설계안을 제시하고 각 설계안의 장단점을 비교

- 면접관과 계속 소통하면서 진행

 

6. 인성 면접

인성 면접

- 전반적인 역량을 파악하는 것이 목적

- 기업의 문화와 직무에 적합한 경험, 직급에 맞는 소프트 스킬을 갖추었는지 확인

- 어떤 상황에 어떻게 행동했는지 묻는 행동 면접과 상황을 가정하여 미래의 행동 의지를 묻는 상황 면접

 

행동 면접 준비법

1. 중요한 경력 선정하기

- 이야기하고 싶은 성과, 자신의 장점을 보여줄 사례를 10가지 이상 작성하여 준비

 

2. 기업 문화에 맞는 사례 준비하기

- 기업 문화를 파악하여 각 항목에 맞는 예제를 미리 준비하기

- 항목에 따른 사례 준비하기

- 여러 회사에서 공통적으로 중요하게 생각하는 가치에 주목하기

 

3. 자주 나오는 질문에 답변 준비하기

- 기업별로 자주 나오는 답변을 파악하기

- 질문 유형 5가지

    - 문제해결: 어려웠던 점과 해결 방법 

    - 프로젝트 관리: 우선순위 결정 및 프로젝트 진행 방식

    - 갈등 해결: 동료 갈등시 해결 방안

    - 커뮤니케이션: 피드백시 어떻게 하는지

    - 혁신: 혁신적인 경험(창의적 아이디어)이 있는지

 

4. STAR 기법을 활용해 답변하기

- STAR: Situation, Task, Action, Result 방식을 활용하여 어떤 상황에서 어떤 과제를 어떻게 해결하고 결과는 어땠는지 답변

    - Situation: 언제 어디서 일어난 일이고 구체적으로 어떤 상황이였는지

    - Task: 해결하고자하는 문제가 무엇이였는지, 문제를 해결함으로써 얻고자하는 목표는 무엇인지

    - Action: 어떤 방식으로 해결했는지, 과정에서 나의 역할은 무엇이였는지, 어떤 어려움이 있었는지

    - Result: 행동의 결과는 어떠했는지, 결과의 trade-off는 무엇이였는지, 과정에서 배운 점은 무엇인지

 


Reference

[Doc: 원티드(개발자 면접 완전 정복하기 - 코딩 테스트 편)]
https://www.wanted.co.kr/events/22_11_s01_b15
[Doc: 원티드(개발자 면접 완전 정복하기 - 코딩 과제 & 이론적 기술 면접 편)]
https://www.wanted.co.kr/events/22_12_s01_b01
[Doc: 원티드(개발자 면접 완전 정복하기 - 시스템 설계 & 인성 면접 편)]
https://www.wanted.co.kr/events/22_12_s01_b07
반응형