저번 질문 준비(1)에 이어서 두 번째 면접 준비 포스팅 시작!
이번 포스팅은 저번 포스팅 마지막에 작성했던 클래스와 객체, 인스턴스를 제 식대로 쉽게 이해하기 위한 예를 정리하고
추상 클래스와 인터페이스에 관한 정리와 기술 이외 질문에 대해 정리하겠습니다.
7. Class & Object & Instance (2)
이 세 가지 개념을 제가 좋아하는 게임에 대입하여 이해하기 위한 예로 만들었습니다.
먼저 클래스는 게임의 캐릭터 생성 화면, 즉 '틀'입니다.
이 캐릭터 생성 틀을 이용해 캐릭터를 생성할 수 있는데,
그 과정에서 캐릭터의 머리 모양이나 색, 초기 복장, 직업, 성별 등 다양한 것들을 바꿀 수 있습니다.
그리고 이렇게 생성된 캐릭터가 하나의 객체가 됩니다.
만약 내가 아닌 다른 유저가 접속하여 캐릭터를 새로 생성하게 되면 동일한 '틀'에서 캐릭터(객체)를 생성하기 때문에
전체적인 외형은 다를 수 있지만 머리 모양, 색, 초기 복장, 직업, 성별 등의 공통된 속성을 가지게 되는 것입니다.
따라서 속성은 공통적으로 갖지만 따로 존재하는 새로운 캐릭터(객체)가 생성되는 것이죠.
이렇게 생성된 캐릭터(객체)가 실제 게임 서버에 접속하여 내가 직접 조작할 수 있는 상태를 인스턴스라고 합니다.
8. Abstract Class vs Interface
추상 클래스(Abstract Class)는 실체 클래스의 공통적인 부분(변수, 메서드)을 추출하여
하나 이상의 추상 메서드를 선언한 클래스로,
아직 실체성이 없고 구체적이지 않기 때문에 자신의 생성자로 객체를 생성할 수 없고,
실체 클래스와 상속관계를 통해 객체를 생성할 수 있습니다.
인터페이스(Interface)는 추상 클래스보다 훨씬 더 극단적으로 동일한 목적에 동일한 기능을 수행하게끔
강제하는 역할이자 개념입니다.
따라서 자신을 implement 하는 클래스들에게 메서드 구현을 강제하여 여러 클래스의 사용 방법이 같음을 보장합니다.
이는 상속관계가 아니어도 공동되는 로직을 구현하여 쓸 수 있도록 합니다.
이런 특징으로 인해 자바의 다형성을 극대화하고 개발 코드의 수정을 줄이고,
프로그램 유지보수성을 높이기 위해 사용됩니다.
추상 클래스와 인터페이스의 차이점은 사용 목적에 있습니다.
추상 클래스는 기본적으로 상속을 통한 기능 확장을 목적으로 사용하고,
인터페이스는 해당 인터페이스를 구현한 객체들이 동일한 동작을 약속하게 하기 위해서 사용합니다.
9. Call By Reference, Call By Value
Call By Reference(참조에 의한 호출)는
매개변수의 원래 주소에 값을 저장하는 방식으로 클래스 객체를 인수로 전달하는 것입니다.
Call By Value(값에 의한 호출)는
인수로 기본 데이터형을 사용하고, 주어진 값을 복사하여 처리하는 방식입니다.
메서드 내의 처리 결과는 메서드 밖의 변수에 영향을 주지 않습니다.
web.archive.org/web/20170420162138/blog.java2game.com/401
10. 자신의 능력 개발을 위해 어떠한 것들을 하시나요?
현재는 취업 준비로 인해 잠시 멈춰있지만,
9월 24일 학원을 수료한 후 동기들을 모아 스터디 그룹을 개설하여 약 세 달간 운영했습니다.
학원 과정중엔 모두 소화하기 힘들었던 기술일반에 관한 사항, 알고리즘, 혹은 따로 공부해보고 싶은 언어나 기술들을
학습하고 공유해왔습니다.
갑작스레 코로나도 심해지고 모두들 면접을 보러 다니거나 하면서 잠시 휴식하고 있지만 대부분이 취업을 한 후에는
행아웃이나 적은 인원씩 모여 주말 스터디를 다시 진행할 예정입니다.
이외에도 프로그래머스의 유/무료 강의나 노마드 코더의 강의를 보며 배우고 싶은 기술에 대해 학습하고 있습니다.
11. 만약 새로운 개발 업무가 주어졌을 때, 회사에서 그 누구도 그 개발 업무에 관한 지식이나 경험을 가지고 있지 않아서 가르쳐 줄 수 없을 때 어떻게 해결하시나요?
만약 그런 상황에 처한다면 전 해당 기술의 개발문서를 토대로 공부하여 직접 구현할 것입니다.
실제로 마지막 프로젝트 때 카카오 API를 이용해 로그인, 결제, 지도, 로컬 서비스 등의 개발을 담당했는데,
인터넷에 떠돌아다니는 카카오 API에 관한 많은 레퍼런스들이 과거 버전을 구현한 것을 다시 재사용하여
API 업데이트가 적용되지 않은 구버전의 구현이었습니다.
실제로 카카오 API의 로그아웃 서비스는 2020년 6월 19일 '카카오 계정과 함께 로그아웃' 기능을 추가했는데
이 부분은 카카오 계정을 통해 인증하고 웹서비스에 로그인하는 저희 프로젝트에서 중요한 부분이었습니다.
하지만 이 부분에 대한 레퍼런스를 못 찾아 결국 직접 개발 문서를 보고 공부하며 개발을 하게 되었고,
성공적으로 기능을 추가했고, 개발문서를 보고 구현할 수 있다는 사실이 저에게 자신감을 주었습니다.
'Interview > 신입 개발자 취업 준비' 카테고리의 다른 글
신입 개발자 면접 질문 준비(1) (1) | 2020.12.10 |
---|