오늘은 기술 면접을 받아보았다.
https://velog.io/@amberjack/24.03.13-기술면접
오늘 했던 자기 소개는 정말 끔찍 그 자체였다. holy... 아무래도 사전에 생각을 하지 못하고 해서 즉석에서 지어내느라 그랬던 것 같다. 다음에는 미리 할 말들을 생각해봐야 겠다.
내가 오늘한 자기 소개는 내가 왜 게임 개발에 관심을 갖는가에 대해 소개를 했다.
나는 게임 개발, 또는 게임 디자인에 대해 공부를 하고 있다. 그 이유는 평소에 게임을 좋아하는 것도 있지만, 게임이라는 매체가 나에게 주는 느낌이 되게 고무적으로 다가와서 그렇다.
라고 말을 했다. 그랬더니 튜터님께서 왜 고무적이냐고 물어보셨다.
제가 고무적이라는 표현을 쓴 이유는, 제가 평소에 인터넷 방송이나 주변인, 또는 커뮤니티에서 게임에 대한 반응, 리뷰를 자주 확인하는 데 이 때 사람들이 말하는 감정이 제게 '나도 내가 만든 게임을 통해 다른 사람들에게 저런 감정을 주고 싶다'라는 생각을 들게 했기 때문에 고무적이라고 표현했다.
라는 취지의 대답을 했다. 문제는 굉장히 두서 없이, 절어가면서 대답을 했기 때문에 문제다... 다음에는 미리 이런 생각을 정리해놓는 것이 필요할 것 같다.
나는 구조체와 클래스의 차이에서 가장 큰 차이는 값 형식과 참조 형식의 차이라고 했다. 구조체는 값 형식이고, 클래스는 참조 형식인 점이 가장 큰 차이라고 했는데, 사실 부가적인 점은 기억이 나질 않아 이 정도로 마무리를 했다. 찾아보니 상속 가능 여부 또한 차이가 있다고 한다.
따라서 다음부터는 메모리 할당 방식과 상속 가능 여부를 말하면 될 것 같다.
구조체와 클래스의 가장 큰 차이점은 메모리 할당 방식입니다. 구조체는 값 형식으로, 스택에 할당되게 됩니다. 따라서 값을 변경하더라도 값이 변경되지 않고 복제가 이루어지게 됩니다.
반면 클래스는 참조 형식으로, 힙 영역에 할당되게 됩니다. 따라서 내부 값이 변경될 경우, 원본의 값 또한 변경되게 됩니다.
객체 지향이 무엇이냐... 라고 했을 때. 나는 굉장히 멍청하게 답을 했다. 이 세상을 이루는 것을 객체로 보고 이를 코드에 클래스나 구조체를 통해 만드는 것을 객체 지향이라고 했다. 전혀 좋지 못한 답변이라고 생각한다.
객체 지향 프로그래밍이란, 프로그램을 '객체'라는 단위로 나누고, 이들의 상호 작용을 통해 문제를 해결하는 프로그래밍 방법입니다.
객체 지향의 가장 큰 4가지 특징은 추상화, 캡슐화, 상속, 다형성입니다. 저는 그중에서 이번 최종 프로젝트에서 아이템 데이터 구조를 만들기 위해 상속을 사용하여 코드를 작성했습니다.
제가 만든 아이템 데이터 구조에는 모든 아이템들의 기초가 되는 ItemBase를 만들었습니다. 그리고 이를 상속받는 Weapon, Armor, Consumable 아이템들을 만들어 ItemBase에서 필요한 메서드나 변수들을 사용하도록 작성했습니다.