목록면접 질문 정리 (21)
Deff_Dev

1. 유니티 최적화 기법은 어떤 것들이 있나요?최적화를 해본 적이 있나요? 없다면 어떤 최적화가 있는지 설명해주세요.GetComponent 및 객체 생성 최적화문제: GetComponent는 비용이 높은 연산이며, new로 객체를 생성하면 힙 메모리에 계속 할당된다.해결: 자주 사용되는 컴포넌트는 캐싱하고, 객체 풀링(Object Pooling)을 사용해 객체 재사용한다.Coroutine 최적화문제: StartCoroutine은 메모리 할당을 동반하므로 자주 시작/중단하는 것은 비효율적이다.해결: 시작/중단을 자주하는 기능은 코루틴이 아닌 다른 방법을 사용한다.ex) UniTask문자열 최적화문제: 문자열 비교와 연결은 새로운 문자열을 생성하며, 이는 메모리 상으로 비효율적이다.해결: 문자열 비교는 변수..

1. 코루틴의 동작원리에 대해 설명해주세요.Coroutine은 IEnumerator를 이용하여 함수를 작성하고 yield return을 사용하여 특정 조건이 충족될 때까지 실행을 일시 중단하고, 그 후에 실행한다.StartCoroutine을 이용하여 해당 Coroutine을 실행할 수 있고, Unity의 메인 스레드에서 동기적으로 처리된다. YieldInstructions 키워드더보기FixedUpdate 이후yield return new WaitForFixedUpdate()모든 스크립트의 FixedUpdate 함수가 실행이 끝난 후에 yield return new WaitForFixedUpdate() 이후 내용을 실행합니다.Update 이후yield return null현재 프레임의 모든 Update 함..

1. Time.timeScale을 0으로 하면 Update와 FixedUpdate는 모두 호출이 되지 않을까요? 그 이유는 무엇일까요?Update와 FixedUpdate는 timeScale에 영향을 받기 때문에 호출되지 않는다.Time.timeScale을 0으로 설정하면 게임의 시간 흐름이 멈추게 되어, 시간에 의존하는 Update와 FixedUpdate는 실행되지 않는다.2. Update의 호출주기에 영향을 주는 것은 무엇일까요?컴퓨터의 프레임에 영향을 받는다. (프레임 당 Update 호출)즉, 프레임 당 한 번씩 호출되기 때문에, FPS가 높은 컴퓨터에서는 Update가 더 자주 호출되고, FPS가 낮은 컴퓨터에서는 Update가 덜 자주 호출된다.이를 보정하기 위해 Time.deltaTime을 사..

[Unity/C#] 큐 (Queue)해당 포스팅은 고박사님의 유니티 C# 강의를 보고 공부한 내용과 추가적으로 공부한 내용을 정리한 포스팅입니다. Queue 요소 추가와 삭제의 위치가 양 끝으로 나누어진 자료구조 FIFO (First In Firstdeff-dev.tistory.com1. Queue가 무엇인지 알고 있나요? 어떤 방식으로 작동하는지 설명할 수 있을까요?데이터를 저장하고 관리하는 자료구조 중 하나로, 요소 추가와 삭제의 위치가 양 끝으로 나누어져 있다.2. Queue의 특성을 설명해주세요.선입선출 (FIFO, First In First Out)먼저 저장된 데이터가 먼저 나간다.연산 속도큐는 양 쪽 끝에서만 삽입/삭제가 일어나기 때문에 Enqueue, Dequeue, Peek등을 사용할 때,..

[Unity/C#] 스택 (Stack)해당 포스팅은 고박사님의 유니티 C# 강의를 보고 공부한 내용과 추가적으로 공부한 내용을 정리한 포스팅입니다. 스택 (Stack) 요소 추가와 삭제의 위치가 한쪽 끝에서만 이루어지는 자료구조 LIFdeff-dev.tistory.com1. Stack가 무엇인지 알고 있나요? 어떤 방식으로 작동하는지 설명할 수 있을까요?Stack은 데이터를 저장하고 관라하는 자료구조 중 하나로, 데이터 추가와 삭제가 한 쪽 끝에서만 일어난다. 즉, LIFO (Last In First Out)로 작동된다.2. Stack의 특성을 설명해주세요.후입선출 (LIFO, Last In, First Out)데이터가 스택에 추가될 때는 항상 맨 위에 쌓이고, 제거될 때는 가장 나중에 추가된 데이터부터..

1. LinkedList가 무엇인지 알고 있나요? 어떤 방식으로 작동하는지 설명할 수 있을까요?일련의 노드로 구성되어 데이터를 저장하는 선형 자료구조. 각 노드는 데이터를 저장하는 필드(Data)와 다음 노드를 가리키는 포인터(Next)를 가지고 있고, 포인터를 통해 노드들을 탐색하고 삽입, 삭제 등의 연산을 수행한다.2. LinkedList의 특성을 설명해주세요.선형 자료구조LinkedList는 데이터를 순차적으로 저장하는 선형 자료구조입니다.동적 크기LinkedList는 크기가 고정되지 않고, 필요에 따라 동적으로 크기를 조절할 수 있습니다.데이터 삽입 및 삭제:ArrayList: 데이터 삽입과 삭제 시 해당 데이터 뒤쪽의 모든 데이터를 이동시켜야 하므로 비용이 높습니다.LinkedList: 삽입과 ..
제네릭이란 무엇인가요?제네릭(Generic)은 데이터 형식을 일반화하여 코드의 유연성을 높이는 기능일반화 ⇒ 특수한 개념으로부터 공통된 개념을 찾아 묶는 것 → 데이터 형식제네릭을 사용하면 데이터 형식에 의존하지 않는 클래스를 작성할 수 있어, 코드 재사용성과 타입 안정성을 높일 수 있다. [Unity/C#] 일반화 프로그래밍 (Generic)일반화란 ?- 특수한 개념으로부터 공통된 개념을 찾아 묶는 것 이러한 일반화를 이용하는 프로그래밍이 일반화 프로그래밍 ! 일반화 프로그래밍의 일반화 대상 ▶ 데이터 형식 (Data Type)일반화deff-dev.tistory.com람다식(Lambda Expression)이 무엇인지 설명해주세요.(input-parameters) => expression // 식 람다..
가비지 컬렉터란 무엇인가요?가비지 컬렉터는 CLR의 메모리 관리 소프트웨어로, 할당할 힙 메모리 공간이 부족할 때, 가비지 컬렉터가 힙 메모리를 돌며 사용하지 않는 메모리를 회수한다.참조형 변수를 선언하는 경우 stack영역의 주소값과 heap영역의 실제 값이 나뉘게 된다. 프로그램을 실행하던 중 stack영역의 값을 pop하는 경우 heap 영역의 실제 값은 쓰이지 않지만 메모리 공간에 남아있게 된다. 이를 자동으로 추적하여 메모리를 회수한다.가비지 컬렉터의 장점과 단점에 대해 설명해주세요.프로그래머가 직접 메모리 해제를 안 해줘도 알아서 GC가 돌면서 메모리를 해제하기 때문에 편리하다.가비지 컬렉터가 실행되는 동안 프로그램의 성능이 일시적으로 저하될 수 있으며, 가비지 컬렉터는 힙 메모리가 부족할 때..