목록면접 질문 정리 (21)
Deff_Dev
1. C# 구조체와 클래스의 차이는 ?구조체는 값 형식의 데이터 구조이고 클래스는 참조 형식의 데이터 구조이다.2. 클래스를 사용할 때, 주의 할 점클래스 객체의 할당을 자주하다 보면 GC에 부하를 줄 수 있기 때문에 꼭 필요한 객체만 생성해야한다.클래스를 이용해 새로운 인스턴스를 만들 때, 깊은 복사를 이용해야 새로운 인스턴스가 생성된다.3. GC 내부 동작힙 메모리에 할당할 수 있는 공간이 없을 때, GC가 자체적으로 실행되는데, 힙 메모리를 탐색하면서 사용하지 않는 객체를 찾고 메모리를 해제하는 방식으로 동작한다.4. GC 제네레이션GC는 0, 1, 2 세대로 나눠서 0, 1 ,2 세대 순으로 메모리를 탐색하고 쓰레기 메모리를 할당 해제한다.GC에서 살아남은 메모리들은 다음 세대로 넘어가는 형식이다..
1. 네트워크 프로토콜 (IP, TCP, UDP)에 대해 설명해주세요. 네트워크 프로토콜은 데이터를 주고받는 데이터 통신을 원활하게 하기 위해 미리 정해놓은 통신 규약이다. 더보기 Application 계층사용자와 바로 연결되어 있다.사용자로부터 정보를 입력받아 하위 계층으로 전달 or 하위 계층에서 전송한 데이터를 사용자에게 전달한다.Presentation 계층받은 데이터를 인코딩 or 디코딩하여 데이터의 형식을 정해주는 계층이다.Session 계층네트워크 상 양쪽 연결을 관리하고 연결을 지속시켜주는 계층TCP/IP 세션을 만들고 없애는 역할Transport 계층데이터가 실제로 전송될 때 신뢰성을 보장하기 위한 계층이다.데이터 패킷이 정상적으로 전달되었는지 확인하고, 정상적으로 전달되지 못했다면 재전송..
1. 오일러 각의 한계점에 대해 설명해주세요 오일러 각강체가 놓인 방향을 3차원 공간에 표시하기 위해 레온하르트 오일러가 도입한 세 개의 각도로 3개의 서로 수직인 X,Y,Z 축 각도로 표현하는 일반적이고 직관적인 방법이다.오일러 각도는 회전한 축을 기준으로 삼아 순차적으로 회전한다.오일러 각은 회전을 세 번(X, Y, Z)에 나눠서 순차적으로 계산하기 때문에 종속적이다. 한계점짐벌락세 개의 회전 축 중 두 개가 겹쳐서 하나의 회전 자유도가 상실되는 현상을 말하고, 특정 각도에서 두 개의 축이 동일한 평면에 놓이면서 발생한다.보간 문제3축에 대해 회전이 종속적이므로 2개의 오일러 각도 사이를 보간할 때, 어느 방향으로 돌아갈지 중간 값을 결정할 수 없는 문제가 생긴다.2. 쿼터니언을 사용하는 이유에 대..
1. 프로세스와 스레드의 차이는 무엇인가요 ?프로세스는 컴퓨터에서 실제로 실행 중인 프로그램을 의미하고 스레드는 같은 프로세스 내에서 돌아가는 여러 작업 (흐름) 단위를 의미한다.프로세스는 독립된 힙 메모리 공간에서 실행되지만, 스레드는 같은 프로세스 내에서 독립된 스택 메모리 영역을 할당 받는다.다른 스레드에 있는 정보를 가져오는 것을 문맥 교환하는데, 같은 프로세스에 있는 스레드들은 Code, Data, Heap 영역을 공유하기 때문에 문맥 교환이 가볍다프로세스는 한 개 이상의 스레드를 가질 수 있다.2. Unity에서 Main Thread가 아닌 다른 스레드에서 Transform을 변경할 수 있을까 ?결론적으로 말하자면 멀티 스레딩을 이용하면 메인 스레드의 Transform 값을 변경할 수 있다.하..
1. 아래와 같이 코드를 작성하고 오브젝트에 작성한 스크립트 컴포넌트를 추가했습니다.public class SomeClass : MonoBehaviour{ [SerializeField] private int intValue = 2; private void Start() { Debug.Log(intValue); }} 인스펙터에서 intValue의 값을 3으로 변경하고, intValue 앞에 선언된 [SerializeField]를 제거했습니다.private int intValue = 2; 이 때 Debug.Log(intValue);의 출력 결과는 어떻게 될까요? 2가 출력된다.SerializeField는 직렬화되지 않은 해당 private 변수를 직렬화하여 인스펙터 창에 표시하..
1. Graph가 무엇인지 알고 있나요?정점 ( Node/Vertex)과 간선 (Edge)로 이루어진 자료구조2. Tree는 Graph인가요? Graph는 Tree인가요?트리는 그래프의 일종이지만, 그래프는 정점마다 간선이 존재하지 않을 수도 있고 루트 노드와 부모 노드, 자식 노드 개념이 존재하지 않기 때문에 트리가 아니다.3. NavMesh가 길찾기를 위해 사용하는 알고리즘은 무엇인가요?A* 알고리즘을 이용하여 최단 경로를 계산한다.4. 길찾기 알고리즘에 대해 알고 있는 것이 있나요?BFS 알고리즘너비 우선 탐색으로 현재 위치에서 가까운 노드부터 탐색하여 점차 멀리 있는 노드를 탐색한다.다익스트라 알고리즘가중 그래프에서 출발점에서 다른 모든 정점까지의 최단 경로를 찾는 알고리즘가중치가 음수인 경우에는..
1. 인터페이스와 추상클래스의 차이점 인터페이스와 추상클래스는 상속받는 하위 클래스에게 필드나 메소드의 구현을 강제한다는 공통점이 있지만인터페이스는 다중 상속을 지원하고 추상클래스는 단일 상속을 지원한다. 2. 인터페이스를 사용해본 경험 FSM을 구현할 때, IState라는 인터페이스를 만들고 각각의 상태 클래스에 상속하여 인터페이스에 구현된 메소드를 강제했다.그리고 상태 전환 시 IState 변수를 사용하여 현재 상태를 변경하고, IState 인터페이스에 정의된 메소드들을 호출하는 방식으로 구현했다. 3. FSM을 구현할 때 추상클래스를 사용하지 않은 이유 추상클래스를 사용해도 무방하지만 IState는 구현부가 존재하지않기 때문에 인터페이스를 사용했다. 4. C++은 다중 상속을 지원하는 이유 C++은..
1. Tree가 무엇인지 알고 있나요? Tree의 종류에는 어떤 것들이 있나요?트리 (Tree)란 노드들이 나무 가지처럼 연결된 비선형 계층적 자료구조로, 루트 노드에서 시작하여 자식 노드들이 연결되어 있는 형태를 가진다.더보기편향 트리 (Skewed Tree):모든 노드가 한쪽 방향으로만 치우친 트리.이진 트리 (Binary Tree):각 노드가 최대 두 개의 자식 노드를 가지는 트리.이진 탐색 트리 (Binary Search Tree, BST):왼쪽 서브트리에는 작은 값, 오른쪽 서브트리에는 큰 값을 가지는 이진 트리.완전 이진 트리 (Complete Binary Tree):마지막 레벨을 제외한 모든 레벨이 완전히 채워져 있는 이진 트리.포화 이진 트리 (Full Binary Tree):모든 노드가 ..