ICT 인턴십 지원 후기
블로그 첫 글을 쓰다.
예전에도 블로그를 할까 말까 고민은 많았지만, 블로그는 양날의 검이라는 선배, 멘토, 주변 사람들의 말을 듣고 하지 않았다. 글 쓰는 것에 너무 집중해서 시간을 헛되게 보내지 않을까 걱정했기 때문이다.
하지만 지금 내가 공부한 것, 깊게 생각하고 고민한 것들은 ‘지금의 나’만 경험할 수 있는 것이라 생각한다. 이러한 값진 경험을 기억하기 위해 블로그를 시작해본다.
1. 지원
1학기 종강 후 원래 계획 했던 대로 다음 학기는 인턴을 하기 위해 준비하기 시작했다. 어떤 인턴을 할까 고민하던 중 ICT 인턴이 눈에 들어왔다. 아직 2024 하반기 기업 목록이 나오지 않았기에 지난 ICT 인턴 기업 목록을 자세히 살펴보며 나와 어울리는 기업을 찾아보았다. 몇 곳 눈에 들어온 곳이 있었고 ICT 인턴을 지원 해야겠다고 마음 먹었다.
하지만 이후 2024 하반기 참여 기업 목록이 나왔는데, 봐둔 곳은 이번에 모집하지 않았다. 아쉽지만 다른 기업을 리스트업해서 지원을 했다.
2. 코딩테스트
총 세 곳을 지원할 수 있었는데, 두 곳은 코딩테스트를 보지 않는 곳이었고 한 곳은 코딩테스트를 보는 곳이었다. 그래서 코딩테스트를 치게 되었다. 코딩테스트는 해커랭크라는 코딩테스트 플랫폼에서 진행되었고, 문제는 모두 영어로 출제되었다. 나는 모두 자바로 풀이하였다.
1번. map을 이용하는 문제 (예상 난이도 - 실버 5)
간단한 문제였다. 특정 알파벳 하나씩 포함된 쌍이 몇 개가 나오는지 구하면 되는 문제였다.
- 특정 알파벳 배열을 char 배열에 저장
- map을 이용하여 알파벳이 주어진 String에 몇 개가 있는지 check
- 가장 적은 숫자 return
이 문제의 핵심은 map을 이용해서 개수를 count할 수 있는 지를 물어보는 문제 같았다.
2번. 배열 분석 및 modulo 계산하기 (예상 난이도 - 실버 3)
이것도 간단한 문제였는데, 배열이 주어지고 문제에서 제시한 조건 식을 계산해서 가장 큰 값이 나오는 index를 return하는 문제였다. 만약 같은 값을 가지는 index가 있다면 그 중 가장 작은 값을 return 한다.
문제는 간단하였지만 주어진 조건 식이 좀 복잡하였다. 배열의 요소들을 이용해서 지수, mod 계산을 해야 했다.
- mod 계산식을 int로 변환하여 저장, 값을 저장할 maxVal, 인덱스를 저장할 maxIdx를 선언한 후 -1로 초기화
- 계산에 필요한 배열 요소 값을 저장한 후 식 계산
- 값과 인덱스를 알맞게 update
이 문제의 핵심은 수학적 구현을 할 수 있는지, int의 범위를 알고 있는 지를 물어보는 문제 같았다.
3번. 방향 찾기 문제 (예상 난이도 - 실버 1 ~ 2)
이 문제는 주어진 Command List가 있을 때, 그것을 수행하면 원을 그릴 수 있는지(순환하는지)를 체크하는 문제였다.
나는 이 문제를 단순 구현으로 풀이하였다. Command를 char 나누어 방향을 계산했다.
- x, y, dir 선언하고 0으로 초기화
- G이면 dir의 값에 맞게 x축, y축 값 update
- L과 R이면 나머지 연산을 이용하여 dir값 update
- 순환 여부 확인 후 “YES” 또는 “NO” 출력
이 문제의 핵심은 문제를 이해하고 구현할 수 있는지 여부를 물어보는 것 같았다.
4번. 재귀를 이용하여 스케줄 계산하기 (예상 난이도 - 골드 4 ~ 5)
workHours, dayHours, pattern이 주어질 때 스케줄을 계산하는 문제였다. 가능한 모든 스케줄을 생성하는 것이다.
- 총 시간과 알 수 없는 시간을 계산한다.
- 재귀를 이용하여 가능한 모든 스케줄을 생성한다. → 스케줄 배열의 특정 인덱스부터 시작하여 남은 시간 배분
이 문제는 재귀를 사용할 수 있는 가를 물어보는 것 같았다.
5번. 가장 큰 Sub-Grid 찾기 (예상 난이도 - 골드 3 ~ 4)
2차원 배열과 maxSum값이 주어질 때, 모든 sub-grid에 대해 모든 요소 값의 합이 maxSum 값 이하인 정사각형 sub-grid의 최대 크기를 결정하는 문제였다.
- 구현과 이분 탐색을 통해 풀어보려 했으나 실패..
이 문제는 테스트 케이스의 반만 맞았다. 아무래도 내 접근 방식이 틀렸던 것 같다.
이렇게 최종 4.5솔로 코딩테스트를 마무리했다.
3. 면접
운이 좋게도 지원했던 세 곳 중 두 곳에서 서류 전형 합격 소식을 들었다. 나머지 한 곳은 서류 전형 탈락이었다. 풀스택 개발자를 원하던 곳이라 탈락할 수 있겠다는 생각을 했지만 조건이 마음에 들어서 지원했던 곳이었다.
면접은 두 곳 모두 프로젝트와 인성을 위주로 질문하셨고, 간단한 CS도 물어보셨다. 면접은 모두 화상 면접이었고 면접관님들이 편안하게 분위기를 리드해주셔서 감사했다. 최근 진행하고 있는 두레 프로젝트에 관련한 질문은 꽤 심도 있게 질문하셨는데, 기획부터 개발까지 모두 직접 했기 때문에 어렵지 않게 대답할 수 있었다.
4. 결과 및 마무리
면접에서 모두 좋게 봐주셔서 두 곳 모두 합격 소식을 들을 수 있었다.
하지만 오랜 고민 끝에 ICT 인턴 취소를 결정했다. 코딩테스트 후 팀원들과 이야기를 하며 정말 가고 싶은 곳이 생겼기 때문이다. 가고 싶은 회사는 문화를 중시하는 회사였고, 다녔던 친구, 다니고 있는 친구들의 후기를 들어봐도 너무 좋았다. 값진 경험을 할 수 있을 것 같았다. ICT 인턴을 지원하면서도 마음 한 부분에 이게 과연 맞을까? 라는 생각을 많이 하였는데, 이 회사는 듣자마자 이건 맞아! 라는 생각이 들었다.
코딩테스트부터 면접까지 시간이 그렇게 길지 않아 고민도 제대로 못하고 일단 면접부터 보았는데,결과가 나온 후 오래 고민한 끝에 생각을 정리할 수 있었다.
오늘 인턴 취소 메일을 보냈다. (면접 합격 했는데 인턴 진행을 하지 않길 원한다면 메일 보내야 함)
꼭 인턴 확정 버튼을 누르지 않고 메일을 보내야 한다. (확정 버튼을 누른 이후 참여 취소를 하면 참여 기업 및 타 지원학생에게 중대한 피해를 주기 때문)
- 형식 : 이름_학교_기업명_인턴취소
답장도 매우 빨리 왔다.
이제 새로운 목표를 위해 최선을 다해 준비해야겠다.