SSAFYcial

신입 개발자 첫 기술 면접 회고록

five2week 2023. 9. 27. 01:17

이제 9기는 1학기가 끝나고 2학기 중 특화 프로젝트를 하고 있는 시기입니다. 공통 프로젝트할 때는 시간이 너무 촉박하고 개발하는 것 만으로 바빠서 회사에 서류를 넣지 못했습니다. 특화 프로젝트를 시작하니까 두번째라고 공통때보다는 덜 바빠서 대기업 공채에도 자소서를 적어서 넣고 스타트업들에도 서류를 넣었습니다. 

 

스타트업에는 원티드를 통해서 지원했고, 두번째로 서류 합격한 회사에서 기술면접이 더 빨리 잡혀서 1차 기술 면접을 보게되었습니다. 

 

제가 준비한 부분은 일주일 뒤에 면접이 잡히는 동안 한 준비는 아래와 같습니다.

면접 준비로 한 것

1. 회사조사

- 회사 규모와 투자 단계

- 개발팀 크기

- 시니어 개발자가 있는지

- 매출이 발생하는지, 사업 아이템이 뭔지

- 현재 운영중인 서비스

- 회사 연봉 및 복지

- 회사의 위치

- 회사 후기 사이트 평가 및 점수

 

2. 채용 공고에 적힌 기술스택에 대한 정리

- BLE 통신

- Unit Test

- Kotlin, Java

- Retrofit

- MVP, MVVM

 

3. 제 포트폴리오에 적힌 기술스택 정리

- Retrofit

- Coroutine

- SSA

- Hilt

- UI 테스트

- SQLite 등

 

4. 안드로이드에 대한 기초지식 정리

- Lifecycle

- Context

- Process, Thread

- 4대 컴포넌트

 

회사는 개발자가 얼마나 있는지, 회사 문화는 어떤지, 현재 사용하는 스택 등을 알기 위해서 링크드인과 깃허브에 회사 이름을 검색해서 찾아보고, 블라인드와 잡플래닛 후기도 찾아봤습니다. 

 

채용 공고에 적힌 기술스택과 제가 포트폴리오에 적은 기술스택이 좀 유사한 편이었기 때문에 3번에 2번이 포함되어 있는 형태였습니다.

 

면접 때 받은 질문으로는 안드로이드 기초 지식에 대한 질문은 없었던 것 같습니다. 포트폴리오와 회사에서 사용하는 기술 관련으로 질문이 나왔습니다. 기억나는 질문은 아래와 같습니다. 꼬리질문 같은 경우는 잘 기억이 나지 않습니다.

 

면접 때 받은 질문

단순히 제가 한 답변으로 정답이 아님을 알립니다..

 

1. 자기소개

준비를 안해가서 그냥 제 이력을 대충 설명해버렸고(안드로이드 개발자로 지원했고, 현재 삼성청년SW를 다니고 있고,,, 이이런거), 회사에 어필할 점을 말해달라고 한번 더 말씀해주셔서 회사 직무와 비슷한 프로젝트를 한 점을 말했습니다.

 

2. 프로젝트를 하면서 기술적으로 어려웠던 점 + 해결 방법

가장 최근 프로젝트에서 발생했던 OutOfMemory가 발생한 경우, 이 오류를 해결하기 위해서 적용한 것들에 대해서 설명했습니다. 너무 짧게 말한 것 같아서 넓은 폭의 범위의 기기에서 사용할 수 있도록 개발을 진행했고, 권한 처리가 좀 어려웠던 점도 설명했습니다.

 

3. 가장 최근에 한 프로젝트 코드 설명 + 기여한 정도

위의 프로젝트와 같은 프로젝트로 깃허브에서 코드 보여드리면서 설명했고(Retrofit, Okhttp, Hilt 등,,), 안드로이드 파트 부분에 40퍼 정도 기여한 것 같다고 말씀 드렸습니다. 덜 긴장했으면 안드로이드 앱으로 보여드리고 화면과 같이 설명이라도 했을텐데 ,, 하는 아쉬움이 있습니다. 그리고 제가 개발한 다른 부분도 다 날려버리고 설명도 못했습니다.

 

3. 해당 기술 스택을 사용한 이유(Retrofit)

자바에 내장된 커넥션과 Volley, AsyncTask, Retrofit 정도의 선택지가 있는 것으로 알고 있는데, 라이브러리를 사용하지 않으면 기초 코드를 다 개발자가 작성해야하기 때문에 그러한 코드를 라이브러리 단에서 처리하고 개발 효율을 위해서 라이브러리를 사용하는 방향으로 정했고 위의 라이브러리 중 가장 빠르고 팀원들이 모두 사용한 Retrofit을 채택했다고 했습니다.

 

4. 적용한 아키텍처의 장단점(MVVM) + 적용한 이유

화면과 로직이 분리되어 유지보수가 쉽고, 테스트코드 작성이 용이한 점이 장점, 러닝 커브가 있는 점이 단점이며 작은 프로젝트에서는 굳이 필요하지 않다고 말했습니다. 적용한 이유로는 해당 프로젝트가 계속해서 기능을 추가하며 업데이트 하는 방식으로 운영이 되기 때문에 유지보수가 필요했다고 말했습니다. 또한 개발자가 여럿이기 때문에 코드를 합쳤을 때 일어날 수 있는 오류들은 테스트 코드를 통해서 확인하고 싶었다는 점도 말했습니다.

 

5. BLE 통신 방식과 적용한 경험

디바이스 검색 후 연결을 하고, GATT 서비스를 검색, 데이터 통신 정도의 단계로 이루어진다라고 말했고, 대학생 시절 연구실에서 센서가 달린 iot 기기와 통신하는 앱을 유지보수 해봤고, 싸피에서 1학기에 비콘 및 센서 통신에 대해서 배웠다고 말했습니다.

 

6. 최근 관심을 가지고 있는 기술(Compose) 장단점

최근 관심 있는 기술을 말해달라고 해서 컴포즈를 말했고, 공부 중인지 물어보셔서 지금 진행중인 프로젝트에 적용 중이라고 했습니다. 장단점을 말해달라고 하셔서 화면 컴포넌트 재사용이 쉽고, 상태관리 부분에 대해서 정리가 잘 되어있는 점을 말했습니다. 그리고 단점으로는 이전에 사용하던 xml 기술보다 화면과 비즈니스 로직이 결합된 느낌이라서 제대로 학습하지 않고 사용하면 유지보수 및 테스트에 용이한 코드 작성이 어려울 것 같다고 말했습니다.

 

7. CI/CD에 대해서 적용한 적이 있는지

없다고 했습니다.

 

8. TDD에 대해서 어떻게 생각하는지, 적용해봤는지

TDD는 좋은지 잘 모르겠다고 했습니다. 테스트코드 작성은 필요하지만 테스트코드를 먼저 작성하고 기능을 구현하는 것은 어짜피 사람이 생각할 수 있는 범위 내인 것 같다고 말했고, 하지만 유지보수를 하면서 코드 바뀌는 것 등으로 일어나는 사이드 이펙트를 사람이 다 검사할 수 없으므로 테스트코드는 필요하다고 생각한다고 말했습니다. 환율 정보를 받아오는 사이드 프로젝트에서 단위 테스트와 화면 테스트 코드를 작성한 것을 말했습니다.

 

9. 기재된 해커톤에서 어떤 일을 했는지

안드로이드 앱 개발 역할을 맡은 점을 말했습니다.

 

10. 자신의 성격에 대해서 소개, 장단점

이 질문도 생각을 안해본 질문이라 mbti 풀이 느낌으로 말해버렸습니다.. 상상력이 풀부하고,, 공감능력이 떨어진다.. 어쩌고 저쩌고,,

 

11. 타인과 협업하는 방식 + 만약 이런 상황이라면 어떻게 할건지 예제 상황 3개

말은 최대한 예쁘게 한다고 말했습니다. 그리고 상황에 대해서 생각해서 그냥 솔직하게 말한 것 같습니다.

 

12. 회사에 궁금한 점

안드로이드 개발말고 다른 개발의 역할도 맡게 될 수 있는지만 물어봤습니다. 조사를 너무 열심히 해서 아는거 물어보기도 그렇고 긴장해서 생각나는 질문도 없었습니다..

 

모르는 부분에 대해서는 그냥 모르겠다고 했습니다. 새삼 그냥 모르고 그냥 사용한 부분이 많다는 생각을 했습니다. 그리고 2차 면접이 있는데 1차인 기술 면접에서도 생각보다 인성 관련 질문이 많이 나온 것 같습니다. 

 

면접 피드백을 받았는데, 각자 좋았던 점과 고치면 좋을 점 한가지씩 들었습니다. 제가 생각했을때는 첫 면접치고는 그냥저냥 잘 본 것 같습니다. 면접 자체도 꼬리질문이 엄청 깊지는 않고 깔끔하게 끝나는 느낌이었습니다. 면접을 보면서 스스로 부족한 점도 많이 알게되었고, 피드백도 들을 수 있어서 좋은 시간이었던 것 같습니다.

 

면접 동안 아주 친절하시고, 우리 회사가 현재 어떤 사업을 하고 있는지와 제가 입사하게 되면 할 일에 대해서 설명을 잘해주셨습니다. 물과 음료수를 주셔서 면접 보는 동안 먹었고, 끝나고 나니 면접비를 주셔서 면접 확인서와 같이 받아서 나왔습니다. 

 

한줄 정리 : 면접과 회사 둘 다 좋았습니다.