취업을 준비하면서 받은 면접 질문들을 정리해보려고 합니다.
(IoT 기업 iOS 개발 지원)
면접 흐름 : 사전과제(코딩문제, 지방행정문제, Swift 문제) 15문제를 약 20분간 풀고 면접 진행
면접시간 : 약 30~40분
1. 지원 동기
답: 가장 큰 이유는 제가 목표로 하고 있던 iOS 개발자로서 첫발을 내딛고 싶어서 지원하게 되었고, 서비스를 개발하는 부분이 굉장히 매력적이었습니다. 그래서 세상 밖의 새로운 분야와 사역을 개척하면서 동시에 목표를 달성하면서 더 발전할 수 있을 것 같아서 지원했다고 답했습니다.
1.1 다른 많은 IoT 회사가 있는데 왜 우리 회사입니까?
답변: 지원 당시 답변은 귀사가 유일하게 IoT 회사이고 iOS 개발 일자리를 찾고 있었다는 것이었습니다. (그건 생각도 못했네요..)
2. 사전할당 때 위임 패턴을 자세히 작성하지 않았는데 자세히 알려주실 수 있나요?
답변: 위임 패턴의 개념만 설명하고 실제 프로젝트에 패턴이 적용된 적이 없다고 설명하십시오.
3. SwiftUI의 강점은 무엇이라고 생각하십니까?
답변: 기존의 스토리보드 방식보다 가독성이 좋고 유지보수가 쉽다는 느낌이 들었습니다.
4. 의존성 관리 도구로 cocoapod와 spm을 모두 사용한 이유는 무엇이며 어느 것이 더 편하다고 느꼈습니까?
답변: 저는 서로 다른 종속성 관리 도구를 시도하기 위해 둘 다 작성했으며 cocopods 사용에 더 익숙하므로 cocopods에 더 익숙합니다.
5. MVVM 패턴을 적용한 것 같은데 왜 더 단순한 MVC를 적용하지 않았나요?
답: 초기에 앱을 만들 때 MVC 패턴을 사용한 경험이 있습니다. 그런데 MVVM이 iOS에 더 어울리는 디자인 패턴이라고 해서 프로젝트를 할 때 MVVM 패턴을 적용했다고 답했다.
6. 포트폴리오를 보면 안드로이드 프로젝트도 있다. Android에서 iOS로 이동한 것이 확실합니까?
답변: 학교 프로젝트 특성상 iOS에서 프로젝트 진행이 어려웠습니다(공부하는 학생이 적어서). 따라서 프로젝트 당시에는 Android를 사용하여 앱을 개발했습니다.
7. 안드로이드와 iOS 중 iOS를 선택해야 하는 이유
A: iOS를 처음 탐색하기 시작했을 때 더 매력적이었기 때문에 선택했습니다. 하지만 개발할 때 답은 iOS가 Android보다 사용자 인터페이스나 앱 평가 측면에서 더 어렵고 품질이 좋은 것 같아서 여전히 iOS를 선택했습니다.
7-1 입사하면 iOS 작업을 하게 되는데, 안드로이드 관련 프로젝트를 받으면 싫을 것 같나요?
답: 저 같은 초보에게는 어떤 프로젝트를 진행하든 그 과정에서 많은 것을 배우게 됩니다. 학교 팀 프로젝트에서 안드로이드 관련 프로젝트를 진행하면서 많은 것을 빼앗을 수 있었습니다. 그래서 그런(?) 일은 없는 것 같고 안드로이드 관련 프로젝트를 받는다는 말이 싫다. (그는 농담조로 앞으로 안드로이드가 정규직이 되는 것이 싫다고 하여 원하지 않는 방향이라고 답했다.)
8. 포트폴리오 내 소포정보서비스 관련 질문
답: 현역 디자이너는 사용자 인터페이스(디자인이 좋다고 들었다)를 디자인했고 로그인 및 로그인 화면 구성과 커뮤니케이션을 담당했다. 그리고 메인화면이 형성이 되었고 답은 보기로 50%정도 완성된 것 같다는 것이었습니다.
8-1 완료 날짜는 언제입니까
답은 1월 준공을 목표로 사업을 진행하고 있다는 것이다.
8-2 swiftui에서 지원하지 않는 기능은 uikit을 사용해야 합니다. 이 부분은 어떻게 하나요?
프로젝트에서 작업하는 동안 swiftui가 아직 지원하지 않는 부분이 있으므로 UIkit을 사용하는 것을 알고 있습니다. 현재 이 부분은 최대한 추후에 개발할 예정이며, 답변은 합의가 되었다는 것입니다.
8-3 Rxswift 대신 Combine을 사용하는 이유는 무엇입니까?
나는 Rxswift를 사용하지 않았고 Combine이 swiftui에 더 적합하다는 문서를 읽었고 그래서 Combine을 사용했다고 대답했습니다.
9. 갈등 해결 방법
남의 입장이 되어 먼저 들어주는 편인 것 같아요. 나는 서로의 입장을 먼저 이해하면 더 잘 조율할 수 있을 것 같아서 이런 식으로 갈등을 해결하는 편이라고 답했다.
9-1 그래도 개발자들 중에 고집 센 사람들이 많을 텐데, 튜닝이 잘 안 될 때는 어떻게 해야 할까요?
답변: 최대한 서로의 입장을 이해하고 상대방의 의견을 수용하도록 노력하겠지만, 고집이 일정 수준을 넘으면 대화를 통해 해결하겠다고 답하겠습니다.
10. 인턴십 기간 동안 무엇을 했는지에 대한 질문
답변: 기획과 관련하여 약 80페이지의 흐름도, UI 기능 정의, 기능 사양 및 사이트맵이 준비되었습니다. 프로젝트를 진행하면서 프로젝트에 대한 이해도를 높일 수 있을 것 같다고 답했습니다.
10-1 계획에 따라 어떤 프로젝트가 수행 되었습니까?
답변: 회사 대표님께서 직접 프로젝트를 맡기셨는데 회사에서 인턴을 돌볼 시간이 없었던 것 같습니다. 아쉽게도 응답이 없었습니다. 아쉽지만 작업하면서 프로젝트에 대한 아이디어를 얻을 수 있어서 좋았다고 답했습니다.
11. (어려웠던 질문) Fluming에서 URL 세션을 사용하지 않고 Alamofire를 사용한 이유는 무엇입니까?
답: (공백 답변 2초 후) 해당 프로젝트의 iOS 개발을 담당하고 있었고 Stack Overflow나 기타 자료에 Alamofire를 사용한 문서가 많아 라이브러리를 이용했다고 답했습니다.
12. 회사에 대해 궁금한 점이 있습니까?
귀사에서 제공하는 앱 중 000 앱을 사용하려고 하다가 앱 메인 화면으로 가보니 오류 메시지가 떴습니다. 문제는 이러한 부분들이 향후 수정될 것인지 여부입니다.
-> 앱 설명에 답변하셨습니다.
다른 질문
1. 당신의 취미는 무엇입니까? (답을 잘 못드렸네요..)
2. 희망연봉
3. 거주지 등
전체적인 느낌
면접관이 3명뿐인 다대일 면접이었지만 생각보다 떨리지는 않았다. 그런 부담감을 주는 질문은 없었던 것 같고, 준비한 말이 최대한 잘 나오도록 대답한 것 같다. 첫 면접인 만큼 합격하면 좋겠지만 떨어지더라도 좋은 경험이었고 많이 배운 것 같다.
cs 관련 질문
1. CPU GPU 차이
2. 가상 메모리란?
3. 데이터베이스 색인이란 무엇입니까?
4. 프로세스와 스레드의 차이점
5. 다중 프로세스와 다중 스레드의 차이점
6. 메모리 영역의 힙과 스택이란?
iOS에 대한 질문
1. 바운드와 프레임의 차이점
2. 핵심데이터란?
3. ViewController 라이프사이클
4. 메모리 누수 질문(약함, 소유되지 않음 및 누수가 발생하는 이유 등)
5. 초기화와 편의 초기화의 차이점
6. 돌연변이 키워드는 무엇입니까?
7. Swift의 구조와 클래스
8. KVO란?
9. ARC란?