최근 여러 기업의 면접을 거치며 얻은 경험과 통계를 바탕으로, 면접 준비와 성공률 향상을 위한 전략을 소개합니다.
면접 프로세스
graph LR A(지원) -->|면접 초대|B(1차 기술 면접) B --> C(2차 기술 면접) C --> D(3차 리더십 면접) D --> |HR 협상|E(HR 급여 결정) E --> |Offer 승인|F(Offer 발행) F --> |배경 조사|G(입사)
데이터 분석
| 단계 | 수량 | 전환율 |
|---|---|---|
| 소통 수 | 572 | |
| 지원 수 | 209 | 36.54% |
| 면접 초대 | 43 | 20.57% |
| 1차 면접 | 36 | 83.72% |
| 2차 면접 | 16 | 44.44% |
| 3차 면접 | 8 | 50.00% |
| 4차 면접 | 3 | 62.50% |
| Offer 수 | 5 | 75.00% |
- 종합 이력서 전환율:
17.22% - 종합 면접 전환율:
13.89%
개선 목표
- 면접 초대율: > 30%
- 해외 지원과 무분별한 지원으로 인한 업무 적합도 저하
- 대기업에서 이미 진행 중인 이력서로 인한 불필요한 지원
- 1차 및 2차 면접 통과율: > 60%
- 기본적인 SQL 쿼리, 그룹화 통계, Linux 명령어 미숙지
- 알고리즘 문제에 대한 준비 부족
- 성능 테스트, MySQL 인덱스, Redis, Nginx 로드 밸런싱 등에 대한 이해 부족
면접 일정
graph LR S(07-28 내부 추천)-->|2일|A(07-30 1차 기술 면접) A-->|4일|B(08-03 2차 기술 면접) B-->|3일|C(08-06 3차 리더십 면접) C-->|3일|D(08-09 4차 BP 면접) D-->|1일|E(08-10 HR 협상) E-->|2일|F(08-12 HR 급여 결정) F-->|4일|G(08-16 Offer 발행)
문제 복기
네이버 유도
- 프로그래밍: 정렬된 리스트 합치기
def merge_sorted_lists(A, m, B, n):
i = m - 1
j = n - 1
k = m + n - 1
while i >= 0 and j >= 0:
if A[i] > B[j]:
A[k] = A[i]
i -= 1
else:
A[k] = B[j]
j -= 1
k -= 1
while j >= 0:
A[k] = B[j]
j -= 1
k -= 1
return A
A = [4, 5, 6, 0, 0, 0]
m = 3
B = [1, 2, 3]
n = 3
merge_sorted_lists(A, m, B, n)
print(A)
ByteDance
- SQL: 학생 테이블에서 수학 점수가 80점 이상인 학생의 이름 찾기
SELECT s.name FROM student AS s JOIN score AS sc ON s.id = sc.id WHERE sc.course = '수학' AND sc.score > 80;
- 프로그래밍: 2차원 증가 행렬에서 특정 숫자 찾기
def search_matrix(matrix, target):
if not matrix or not matrix[0]:
return False
row, col = 0, len(matrix[0]) - 1
while row < len(matrix) and col >= 0:
if matrix[row][col] == target:
return True
elif matrix[row][col] < target:
row += 1
else:
col -= 1
return False
matrix = [[1, 3, 5, 10], [2, 4, 6, 11], [7, 9, 12, 20]]
target = 4
print(search_matrix(matrix, target))
Meituan
- SQL: 평균 점수가 60점 이상인 학생의 이름 찾기
SELECT name FROM score WHERE chinese + math + english > 180;
Tencent
- 프로그래밍: 중복 구간 합치기
def merge_intervals(intervals):
if not intervals:
return []
intervals.sort(key=lambda x: x[0])
merged = [intervals[0]]
for current in intervals[1:]:
last = merged[-1]
if current[0] <= last[1]:
last[1] = max(last[1], current[1])
else:
merged.append(current)
return merged
intervals = [[1, 3], [2, 6], [8, 10], [15, 18]]
print(merge_intervals(intervals))
Zhihu
- SQL: 동일 나이의 사람 중 가장 많은 나이 찾기
SELECT age, COUNT(*) as count FROM users GROUP BY age ORDER BY count DESC LIMIT 1;
- 프로그래밍: 괄호 매칭 확인
def is_valid_parentheses(s):
stack = []
mapping = {')': '(', '}': '{', ']': '['}
for char in s:
if char in mapping.values():
stack.append(char)
elif char in mapping.keys():
if stack == [] or mapping[char] != stack.pop():
return False
return stack == []
s = "([{}])"
print(is_valid_parentheses(s))