면접 자기 소개 작성

 

더보기

안녕하십니까, 소통을 중시하는 클라이언트 프로그래머 [송명성]입니다. 
제 열정과 노력으로 이 분야에서 역량을 키우고 있습니다.

2020년부터 2년간 공장 라인설비 회사에서 엔지니어로 근무하며 공장 라인 출장 업무를 주로 담당했습니다. 
이를 통해 문제 해결 능력과 관계자와의 원활한 소통 능력을 키울 수 있었습니다. 
이 경험은 이후 게임 개발 프로젝트에서도 팀원들과 협업하고 소통하는 데 큰 도움이 될 것입니다.

2022년부터는 본격적으로 프로그래머가 되기 위한 여정을 시작했습니다. 부산 아텐츠 게임아카데미에서 C/C++, 자료구조, 
컴퓨터 그래픽스를 배우며 기초를 다졌고, Unity를 활용해 2D 슈팅 게임을 모작하며 실제 개발 경험을 쌓았습니다. 
이를 통해 기초적인 게임 개발 과정과 Unity 엔진의 활용법을 익혔습니다.

2024년 8월에는 대전 인디게임잼에 프로그래머로 참가하여 **<마지막 빵>**이라는 스토리 어드벤처 게임을 개발했습니다. 
여기서 전체기획과 프로그래머로써 Scene 간 데이터 전달 파트를 맡으며, 제한된 시간 안에 팀원들과 협업하며 결과물을 만들어내는 
경험을 했습니다. 
하지만 당시 제 실력과 협업 능력의 부족함을 느껴, 이를 보완하고자 내일배움캠프 유니티 6기에 지원하게 되었습니다.

캠프에서는 매주 진행되는 미니 프로젝트의 리더를 맡으며 개발 실력뿐만 아니라 팀원들과의 소통, 리소스 분배, 일정 관리 능력을 키웠습니다. 
현재는 최종 프로젝트로 2.5D 방치형 게임을 개발하고 있으며, 이 게임은 itch.io에 배포할 예정입니다. 
이 과정에서 Unity 엔진을 심도 있게 다뤄보고, 팀원들과의 협업을 통해 하나의 완성된 게임을 만들어가는 기쁨을 느끼고 있습니다.

이러한 경험들을 통해 저는 단순히 개발 역량뿐만 아니라, 협업과 커뮤니케이션 능력을 갖춘 개발자로 성장하고 있습니다. 감사합니다.
앞으로도 제가 가진 열정과 팀워크 능력을 바탕으로 더 많은 도전을 통해 성장해 나가고 싶습니다. 감사합니다.

자기소개 나열식은 좋지 않다. -> 서사 얘기는 좋지 않다.
자기 소개 :: 듣는사람 입장에서 이사람이 나를 어떡해 기억할 수있지??

팀원과의 프로젝트에서 소통 및 갈등,트러블슈팅 등을 스토리텔링 서사를 풀어야된다. 

 


면집 질문 준비

C#의 event란 무엇인가요? Delegate 기반으로 구현된 대리자이며 ,
객체 간 비동기 통신을 가능하게 해줍니다.
event에 메서드를 첨삭하는것은 내부/외부에서도 가능하지만
event를 실행시키는 것은 내부에서만 가능합니다.
event는 Observer패턴과 동작방식이 유사합니다.

장점으로는 발행자와 구독자 간의 느슨한 결합으로
모듈화 및 유연성을 장점으로 가지고 있습니다.
Unity에서 사용하는 델리게이트 혹은 이벤트에는 어떤 것이 있나요? Unity의 Button 컴포넌트, InputSystem의 키 맵핑시
동작방식을 event로 선언할 수 있으며 , 여러 콜백 메서드가
있습니다.
참조 형식과 값 형식에 대해 설명해주세요. 값 형식의 Stack에서 생성되는 데이터들을 의미합니다.
흔히 사용되는 int,float,struct,,enum이 여기에 속합니다.

참조 형식은 Heap영역에 생성되는 데이터들을 의미하며
Heap영역의 데이터들은 Stack영역에 있는 데이터들을
참조를 하여 사용하게 됩니다.

그러기 때문에 참조 형식의 데이터는 변경이 되어도
다른 값형식의 변수에서 변경된 값을 가져오게 됩니다.
메모리에서 스택과 힙의 차이점에 대해 설명해주세요. 스택은 함수내에서 선언시나 변수 할당시 메모리가 생성이되며
함수가 종료될때 스택 영역의 데이터는 삭제됩니다.

힙은 new키워드나 Unity 에서 Instaniate를 통해 생성이 가능하고
참조를 끊을수는 있지만 heap에 저장된 메모리는 GC를 통해서만
삭제가 가능합니다.
1번과 2번 질문의 답안을 기반으로 struct와 class의 차이점에 대해 설명해주세요. 구조체는 Stack 영역에 저장되며 , 매개변수 없는 생성자를
작성할 수 없습니다. (C# 10 이상 예외)

클래스는 Heap 영역에 저장되며 매개변수 없는 생성자를
명시적으로 작성해서 사용합니다.
얕은 복사와 깊은 복사의 차이점은 무엇인가요? 얕은 복사는 데이터의 주소를 복사해 가는것이기에
외부에서 데이터가 변경 되는경우 원본 데이터가 변경이 됩니다.

깊은 복사는 데이터 그 자체를 복사하는것이기에
데이터가 변경되어도 원본 데이터는 유지를 하고 있습니다.
박싱과 언박싱이 일어나는 과정을 메모리 관점에서 설명해주세요. 우선 C#에서 박싱 언박싱을 하기위해서는
참조형식의 변수인 object가 필요합니다.
object 변수는 모든 데이터의 부모이기에 형변환이
가능하기 때문입니다.

박싱할 변수를 object 변수에 대입 하게되면
Stack 영역에 참조할 object 변수가 생성되고
Heap 영역에 object 에 박싱한
자료의 데이터가 저장되어있습니다.

언박싱은 heap영역에 존재하는
object 변수의 데이터를 Stack으로 복사하여
언박싱 할 변수에 생성하게 됩니다. 이
때 언박싱한 데이터는 독립적인 데이터가 됩니다.
클래스를 다른 클래스로 상속하기 위한 방법은 무엇인가요? 상속할 클래스 명 뒤에 세미콜론 과 부모클래스명 을 입력합니다.
클래스 상속에서 다이아몬드 문제(diamond problem)가 발생하는 이유와 이를 해결하는 방법에 대해 설명해주세요. C#에서는 Class간의 다중상속을 지원하지 않습니다.
C++ 에서는 Class간의 다중상속을 지원하기에 다이아몬드 문제가
발생 할수 있습니다.

다이아몬드 문제가 발생하는 이유는 두개의 자식클래스에서
동일한 부모 클래스를 상속 받은뒤 , 다른 클래스가 두개의 자식클래스를
둘다 상속 하고 있는경우 발생하게 됩니다,

부모의 있는 메서드나 필드에 접근하려고 할때
두 자식 클래스 호출이 애매모호 해짐

유니티<C#>에서는 해당 문제를 대처하기위해 다중 상속을 interface에만
지원을 해놓았습니다. 인터페이스는 구현체를 포함하지 않으므로
다이아몬드 문제와 같은 모호성 문제가 발생하지 않습니다.

C++ 에서는 가상 상속을 이용하여 다이아몬드 문제를 방지가 가능합니다.
인터페이스란 무엇인가요? 인터페이스란 ,일종의 행동의 약속이라고 볼수있습니다.
행동 즉, 메서드를 인터페이스에 정의하면 인터페이스를 상속한
클래스들은 반드시 해당 메서드를 재정의 해야됩니다.

 

Heap 영역은 답변시 완전이진트리 키워드가 나와야한다.

오늘은 2024-12-23(월) 중간발표를 할 자료를 만들기로 하였고 

팀원들에게 각자 자기가 작업하였던 파트를 문서화 하라고 지시한 뒤

오전에는 영상작업 진행을 하였다.

 

그러나 영상 녹화를 하면서 생각밖으로 치명적인 버그가 있었는데

치명적인 버그로 3스테이지 보스의 스킬로 사용하는 투사체가 오브젝트 풀로 관리를하는데 Destroy()메서드로 파괴되는 로직이 있어서, 해당 작업을 진행한 팀원에게 버그 수정을 요청하였다.

 

PPT 및 영상 자료를 제작한 뒤 내일은 모의면접 준비 및 코드 리팩토링 + 폴더링의 시간을 가질것 같다.

영상 자료의 일부

 

 

MVP 이전 중간점검(튜터님 지도)

1.MVP 이전 폴더링 및 코드 가독성 올릴것

2.Boss 등장시 연출 추가할것

3.Player가 죽을경우 , 가식성을 올릴것 

 

MVP 이후 진행 예정 (약 2주)

1.Player의 인벤토리, Soul(Skill) 시스템을 Player와 연동하여 UserData로 저장/불러오기 사용하게 할것

2.Boss Try 기능 추가

3.Stage 추가(숲 맵)

4.Player 무기 교체 이미지 추가

5.Player 계정 레벨 및 계정 경험치 구현

6.추가 컨텐츠 기획하기 -> 보스 러쉬 및 요일던전 등등


 Boss 등장시 연출 컷씬 추가 

임시 테스트로 적용 한상태 , 나중에 MVP 이후 교체 예정

 

UI이기에 코드는 MVP 패턴에 UI매니저를 추가하였고 , All In 1 Sprite 에셋을 사용하여 쉽게 이펙트를 적용 시켰다


 

 Unity Mask 적용

 

마스크로 쓸것을 부모 객체로 ,마스크를 적용시킬 이미지(Target)을 자식객체로 선언한뒤

부모 객체는 Mask 컴포넌트를 적용시키면 정상적으로 동작하게된다. 

원 프레임에 들어가게되는 버튼

1.도전과제 MVC 리팩토링체크

ㄴ 도전과제 알람에 내용이 제대로 출력되지 않아서 다시 한번더 리팩토링 하였음

ㄴ 인스펙터에 컴포넌트가 미싱되어있는 상황이여 수정하였음

2.Player HP 스텟 UI와 연결

ㄴLobby 화면에 있는 체력UI를 플레이어 객체와 연결하여 사용

적에게 공격을 받아 체력이 감소
MVC 패턴으로 설계한뒤 UI매니저에 등록하여 사용 중

 

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using ScottGarland;

public class UIPlayerHPDisplayView : MonoBehaviour, IUIBase
{
    [SerializeField] private RectTransform HPFrontImg;
    [SerializeField] private TextMeshProUGUI HpText;

    public void HpRatioChange(BigInteger curHp , BigInteger maxHP)
    {
        int curHpNum = BigInteger.ToInt32(curHp);
        int maxHpNum = BigInteger.ToInt32(maxHP);
        float result = curHpNum / (float)maxHpNum;

        HPFrontImg.localScale = new Vector3(result, 1, 1);

        string curHealthString = Utils.FormatBigInteger(curHp);
        string maxHealthString = Utils.FormatBigInteger(maxHP);

        HpText.text = $"{curHealthString} / {maxHealthString}";
    }

    public void HideUI()
    {
        gameObject.SetActive(false);
    }

    public void Initialize()
    {
        
    }

    public void ShowUI()
    {
        gameObject.SetActive(true);
    }

    public void UpdateUI()
    {

    }
}

UIPlayerHPDisplayView.cs에 BigInterger를 적용하여 큰 숫자를 더욱 쉽게 출력 할 수 있게 구현

 

3.Player가 죽었을때 밀려나는 버그 해결

ㄴ Player가 죽으면 , Player의 동작이 비활성화 되어(enabled = false) 적의 공격을 맞고 멀리 날라가는 버그가 발생하였다. 

    [ContextMenu("PlayerDie")]
    public void Die()
    {
        if (!baseHpSystem.IsDead)
        {
            baseHpSystem.IsDead = true;
            Debug.Log("Player Die!!! ");
            string animName = PlayerAnimationController.DeathAnimationName;
            PlayerAnimationController.spineAnimationState.SetAnimation(0, animName, false);

            rb.velocity = Vector3.zero; //캐릭터 이동되지않게 속도를 0으로 수정
            rb.isKinematic = true;
            GameManager.Instance.GameOver();
            enabled = false;
        }
    }

    public void Respwan()
    {
        //ToDoCode : 플레이어가 죽을경우 재세팅하는 함수
        statHandler.CurrentStat.health = statHandler.CurrentStat.maxHealth;
        transform.position = Vector3.up;
        rb.isKinematic = false;
        enabled = true;
        baseHpSystem.IsDead = false;
        UIManager.Instance.ShowUI("PlayerHPDisplay");
    }

Die 메서드에서 죽으면 리지드바디의 키네마틱 옵션을 true로바꿔 물리충돌 연산을 하지 않게 막은뒤

Respwan 메서드에서 다시 부화할때 리지드바디의 키네마틱을 false로 바꿔 처리 하였다.

 

4.현재 이슈 : Stage 맵 중복 생성

스테이지가 진행될때마다 맵이 복사가 되고있다.

몬스터 헌터 과제 완료 : 몬스터 1마리를 쓰러트리면 얻는 도전과제 획득 팝업

 

구현을 목적으로 팀원이 작성한 도전과제 시스템을 리팩토링하여 UI매니저에 등록하였고 구현까지 하였다.

아직 버그가 있는지는 확인을 못한 상태이고 , 몬스터 처치 업적은 제대로 완수되는것이 확인 되었다. 

 

도전과제와 도전과제 알람 팝업창 코드를 MVC 패턴을 적용하였다.

도전과제와 도전과에 알람 팝업창을 UI매니저에 등록시키기 위해 MVC패턴을 사용 하였다. 

UIManager에 UIController로 저장을 하게 해놓고 필욜할떄 Controller를 호출하여 Model과 View에 접근하는 방식을 취하고 있다.

 

인벤토리와 아이템 정보창 UI 에셋 적용한 상태

선택한 아이템(아이템 정보창)이 왼쪽으로 좀 치우러져 있어 조정이 필요한듯 하다. 

금일 MVP가 일주일 정도 남은 기간에 테스트해보기위헤 작업하던것을 Merge를 해본 결과

UI에 필요한 Data 를 세팅하는 과정에서 각각 호출시점이 꼬여 null값이 들어가거나 잘못된 데이터가 들어가는 경우가 발생하였다.

 

판단하기로는 몇시간만에 끝날 작업은 아니라고 판단하여 , 데이터를 초기화하는 매니저들과 UI들의 호출시점을 다시 선정하고 리팩토링하기로 진행하였다.

 

이번 주말 ( 토~ 일) 안에 작업을 진행하고 , Player의 Stat 및 데미지 표기 + Stage 진행 과정을 구현 해야 MVP에 제대로 된 피드백을 받을수 있을것 같다.

 

글로 설명하기가 힘들어 간단하게라도 구조를 그려보았다.

 

ItemStatusView 클래스에 EquipBtn 변수가 있고 해당 Button변수에 컨트롤러에 있는 데이터를 인자값으로 받아와 이벤트를 등록해놨는데 이때 인자값의 초기값은 null값으로 설정이 되있었다.

 

ItemSlot 클래스에 버튼을 눌러 Item 데이터를 컨트롤러로 보내 초기화를 하였기에 null값은 사라졌다고 생각했다

왜냐하면 Class는 참조값이기에 변경될것이기 때문이다),

 

그리고 실제로 콘솔창에서는 null값이 들어온다고 오류가 발생하였다.

 

원인은 item이 참조형 변수라고 해도, 이 참조가 유효하려면 메모리 상의 객체를 가리키고 있어야 하는데 이미 처음 초기값을 null로 설정 한 뒤였고, 해당 변수는 다른 클래스(ItemStatusView)로 넘어가 있는 상태였기에 아무리 Controller에서 item이 초기화가 되더라도 view에서 받는 이벤트의 인자값은 null이 들어오는 것이였다.

 

즉, 이 문제를 일으킨 이유는 

null 빈 데이터라고만 착각을 해버려서 발생한 문제였다. 

null은 빈데이터가 아닌 주소값이 없다라는 의미이기 떄문이다.

 

C++에서는 포인터 개념이 있기에 주소값 및 할당을 하게되면 무조건 해제를 해야만하지만 

C#을 계속 사용하다보니 주소값에 대해서 깜빡했던것 같다.

C#은 포인터 개념이 없기 때문에 자동으로 Heap영역에 알아서 할당이 되었기 때문에 간단히 생각을 했던것이다. 

 

 

대처법으로는 View의 버튼 변수를 프로퍼티로 선언한뒤 호출하여 Controller에서 이벤트를 등록하였다.

public class ItemStatusController : UIController
{
    public ItemSlot SelectItem;
    private ItemStatusModel itemStatusModel;
    private ItemStatusView itemStatusView;

    public override void Initialize(IUIBase view, UIModel model)
    {
        itemStatusModel = model as ItemStatusModel;
        itemStatusView = view as ItemStatusView;

        base.Initialize(itemStatusView, itemStatusModel);
        //아이템 장착 버튼 이벤트 함수 등록 (장착 , UI 출력)
        itemStatusView.EquipButton.onClick.AddListener(() => GameManager.Instance.player.EquipItem(SelectItem.item));
        itemStatusView.EquipButton.onClick.AddListener(() => OnShow());

        //아이템 장착해제 버튼 이벤트 함수 등록 (장착해제 , UI 출력)
        itemStatusView.DisEquipButton.onClick.AddListener(() => GameManager.Instance.player.DisEquipItem());
        itemStatusView.DisEquipButton.onClick.AddListener(() => OnShow());
    }
}

 

public class ItemStatusView : MonoBehaviour, IUIBase
{
    [SerializeField] private TextMeshProUGUI curUpgradeLevelText;
    [SerializeField] private TextMeshProUGUI maxUpgradeLeveText;
    [SerializeField] private TextMeshProUGUI UpgradeCostText;
    [SerializeField] private TextMeshProUGUI itemPassiveEffectText;
    [SerializeField] private TextMeshProUGUI itemEquipEffectText;
    [SerializeField] private Image ItemIcon;
    [SerializeField] private Button UpgradeBtn;
    [SerializeField] private Button EquipBtn;
    [SerializeField] private Button DisEquipBtn;


    public Button EquipButton { get => EquipBtn; }
    public Button DisEquipButton { get => DisEquipBtn; }
    public Button UpgradeButton { get => UpgradeBtn; }
}

 

이런식으로 사용하니, 우선 item은 null값이 들어가있는 상태에서 외부에서 데이터가 초기화 되더라도 

Controller 클래스 안에 멤버변수로 되어있으니 참조값을 제대로 활용 할 수 있게 되었다. 

면접 질문 모음

C# 문법

  1. 객체란 무엇인가요? 클래스와 어떤 연관이 있나요?
  2. 생성자에 대해 간단하게 설명해주세요.
  3. 접근제한자란 무엇이며, 각각 어떤 차이가 있는지 비교해서 설명해주세요.
  4. static 한정자에 대해 설명해주세요.
  5. SOLID 원칙에 대해 설명해주세요.
  6. 객체지향 프로그래밍의 속성 중 하나인 다형성과 이를 활용한 설계의 장점에 대해 설명해주세요.
  7. override와 overload에 대해 설명해주세요.
  8. 확장 메서드에 대해 설명하고 어떻게 활용했는지 알려주세요.
  9. 콜백이란 무엇인가요? 콜백을 사용해본 경험이 있을까요?
  10. 델리게이트(delegate; 대리자)란 무엇인가요?
  11. C#의 event란 무엇인가요?
  12. Unity에서 사용하는 델리게이트 혹은 이벤트에는 어떤 것이 있나요?
  13. 참조 형식과 값 형식에 대해 설명해주세요.
  14. 메모리에서 스택과 힙의 차이점에 대해 설명해주세요.
  15. 1번과 2번 질문의 답안을 기반으로 struct와 class의 차이점에 대해 설명해주세요.
  16. 얕은 복사와 깊은 복사의 차이점은 무엇인가요?
  17. 박싱과 언박싱이 일어나는 과정을 메모리 관점에서 설명해주세요.
  18. 클래스를 다른 클래스로 상속하기 위한 방법은 무엇인가요?
  19. 클래스 상속에서 다이아몬드 문제(diamond problem)가 발생하는 이유와 이를 해결하는 방법에 대해 설명해주세요.
  20. 인터페이스란 무엇인가요?
  21. 인터페이스와 추상클래스의 차이는 무엇인가요?
  22. 가비지 컬렉터란 무엇인가요?
  23. 가비지 컬렉터의 장점과 단점에 대해 설명해주세요.
  24. 가비지 컬렉터의 세대 개념에 대해 설명해주세요.
  25. 박싱, 언박싱을 사용할 때 주의해야 할 점은 무엇일까요?
  26. 오브젝트 풀을 사용하면 메모리 관리에 도움이 되는 이유가 무엇일까요?
  27. 제네릭이란 무엇인가요?
  28. 람다식(Lambda Expression)이 무엇인지 설명해주세요.
  29. LINQ란 무엇인가요?
  30. 리플렉션(Reflection)이 뭔지, 사용을 해봤다면 어떤 이유에서 사용했는지 설명해주세요.

Unity 문법

  1. Unity 생명주기(Unity Life Cycle)에 대해서 설명해주세요.
  2. MonoBehaviour 클래스의 주요 메서드와 그 기능에 대해 설명해주세요.
    • MonoBehaviour 클래스에서 Start와 Awake의 차이점은 무엇이며, 이를 적절히 사용하는 방법에 대해 설명해주세요.
  3. Update, FixedUpdate, LateUpdate의 차이점에 대해 설명해주세요.
  4. Time.deltaTime이란 무엇이며, 사용하는 이유에 대해 설명해주세요.
  5. 코루틴의 동작원리와 사용해본 예시를 함께 설명해주세요.
  6. Invoke와 코루틴의 차이에 대해 설명해주세요.
  7. 코루틴과 멀티쓰레딩은 어떤 차이가 있는지 설명해주세요.
  8. 유니티 최적화 기법은 어떤 것들이 있나요?
    • 최적화를 해본 적이 있나요? 없다면 어떤 최적화가 있는지 설명해주세요.
    • 최적화에서 가장 중요한 부분은 무엇인가요?
    • 최적화를 위해서 적용해본 텍스쳐 포맷이 있나요?
  9. 드로우콜에 대해서 설명하고, 최적화하는 방식에 대해 알고 있는 것이 있으면 설명하세요.
  10. Find 함수 사용을 자제해야 하는 이유에 대해 설명해주세요.
  11. Update에서 GetComponent와 그 계열의 캐싱을 지양해야하는 이유를 설명하세요.
  12. CSV/JSON 등 데이터 저장 포맷에 대해 설명하고, 활용에 적절한 상황을 설명해주세요.
  13. 특정 데이터를 JSON으로 활용하기 위해 해야하는 작업은 무엇인가요?
  14. Unity에서 필드를 직렬화하려면 어떻게 해야하는지 설명해주세요.
  15. Unity에서 멀티스레딩을 구현하기 위한 방법에 대해 설명해주세요.
  16. CPU와 GPU의 작동 방법은 어떤 차이가 있는지 설명해주세요.
  17. 월드 스페이스 (World Space) 와 로컬 스페이스 (Local Space)의 차이에 대해 설명해주세요.
  18. 벡터의 내적과 외적을 어느 상황에 사용할 수 있는지 설명해주세요.
  19. 쿼터니언을 사용하는 이유에 대해 설명해주세요.
  20. 네트워크 프로토콜 (IP, TCP, UDP)에 대해 설명해주세요.
    1. TCP와 UDP의 차이를 설명해주세요.
  21. 렌더링 파이프라인에 대해 설명해주세요.
  22. 3D 공간에 있는 오브젝트들이 화면에 표현되는 픽셀로 표시되기까지의 과정을 설명해보세요.
  23. 셰이더를 활용해본 경험이 있을까요? 어떻게 활용했는지 설명해주세요.

자료구조 & 알고리즘

  1. LinkedList의 특성을 설명해주세요.
    1. LinkedList는 언제 사용하면 좋은 자료구조인가요? 반대로 언제 사용하기 불리할까요?
    2. LinkedList를 본인의 프로젝트에 적용해본 경험을 말해주세요.
  2. Stack의 특성을 설명해주세요.
    1. Stack은 언제 사용하면 좋은 자료구조인가요? 반대로 언제 사용하기 불리할까요?
    2. Stack을 본인의 프로젝트에 적용해본 경험을 말해주세요.
  3. Queue의 특성을 설명해주세요.
    1. Queue는 언제 사용하면 좋은 자료구조인가요? 반대로 언제 사용하기 불리할까요?
    2. Queue를 본인의 프로젝트에 적용해본 경험을 말해주세요.
  4. Tree의 순회(Traversal) 방법에 대해 설명해주세요.
  5. DFS와 BFS에 대해 설명해주세요.
    1. DFS와 BFS를 본인의 프로젝트에 활용한 경험이 있다면 설명해주세요.
  6. 행동 트리 (Behaviour Tree) 에 대해 설명해주세요.
  7. 길찾기 알고리즘에 대해 알고 있는 것이 있나요?
  8. 각 길찾기 알고리즘의 차이점은 무엇인가요?
  9. A* 알고리즘에 대해 설명해주세요.
  10. 해당 알고리즘들을 프로젝트에 적용해본 경험이 있나요?

기타

  1. 게임 개발 학습 과정에서 자신이 가장 재미있었거나 자신 있게 설명할 수 있는 부분이 있다면 설명해주세요.
  2. 포트폴리오에서 본인이 담당한 부분이 무엇인가요?
  3. 만약 본인이 개발한 것을 다시 개발한다면, 어떻게 개선할 것인지 설명해주세요.
  4. 본인이 활용하는 디버그 방법을 설명해보세요.
  5. 협업하면서 가장 어려웠던 점이 무엇인가요?
  6. 구현하면서 기술적으로 어려웠던 부분을 어떻게 해결하였나요?
  7. Git Repository를 팀원들과 공동으로 작업하면서 발생했던 문제점이 있다면 무엇이었는지, 어떻게 해결하였는지 이야기해주세요.

'기술면접질문' 카테고리의 다른 글

기술 면접 질문과 답변(1)  (0) 2024.12.09

+ Recent posts