분류 전체보기
-
[기술 면접 공부] C# 코루틴 (Coroutine)기술 면접 공부 2021. 1. 7. 14:54
정의 호출 루틴과 피호출 루틴이 대등 관계를 유지하는 처리 절차로 피호출 루틴의 수행이 완전히 끝나기 전에 호출 루틴으로 제어가 돌아가고 제어가 다시 피호출 루틴으로 돌아왔을 때는 중단된 부분부터 수행된다. 사용하는 이유 게임 프로그래밍은 수많은 오브젝트들의 상호 작용으로 표현되기 때문에 동시성을 표현하는 것이 중요하다. 유니티는 .NET을 사용함에도 불구하고 단일 스레드로 동작한다. 그 이유는 멀티 스레드 프로그래밍은 버그 발생률이 높아지고 스레드 간 교착 상태 경합 등 신경 써야 할 부분이 많아지기 때문이다. 따라서 깔끔하게 단일 스레드만 사용하되 동시성을 확보하기 위해 코루틴을 이용해 여러 개의 스레드가 동시에 동작하는 효과를 보여준다. 장점 싱글 스레드를 유지하면서 멀티 스레드처럼 동시성을 확보할..
-
[기술 면접 공부] Factory Pattern (팩토리 패턴)기술 면접 공부 2021. 1. 7. 11:47
정의 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 파생 클래스에서 결정 장점 객체의 생성을 한 군데에서 관리할 수 있다. 동일한 인터페이스를 준수하는 클래스들을 생성하기 때문에 외부 코드 수정이 거의 없다. 구조 Product Creator Product Creator Concrete ConcreteProduct ConcreteCreator Product : 팩토리 메서드로 생성될 공용 객체. 주로 추상 클래스이거나 인터페이스 ConcreteProduct : Product를 상속받는 구체적인 객체 Creator : Product를 구현하는 메서드가 존재. 주로 추상 클래스이거나 인터페이스 ConcreteCreator : Creator를 상속받아서 각각의 Concrete..
-
[기술 면접 공부] C#의 메모리 구조기술 면접 공부 2021. 1. 7. 10:51
4가지 메모리 영역 Stack 영역 지역 변수, 매개 변수 저장, 컴파일 시점에 크기 할당하는 정적 할당을 사용 Heap 영역 사용자 관리 영역, 사용자 정의에 의해 할당된 메모리에 저장하거나 해제하는 동적 할당을 사용 Data 영역 전역 변수, static 변수, 프로그램이 종료될 때까지 지워지지 않고 컴파일 시점에 크기 할당 Code 영역 소스 코드, 기계어로 제어되는 메모리 영역 Stack 영역 값 형식(Value Type)이 들어가는 메모리 공간이다. 일반적인 value type인 int, char, bool 같은 것이 있다. (string은 reference type이다) 사용자가 선언한 struct도 value type으로 stack에 저장된다. 선언되었던 코드 블록이 끝나면 자동으로 메모리에..
-
[기술 면접 공부] C#의 메모리 관리기술 면접 공부 2021. 1. 7. 00:51
C#의 메모리 관리 장점 메모리 해제에 신경 쓰지 않아도 된다. 이미 삭제된 메모리에 접근하는 실수를 방지해준다. 잘못된 캐스팅으로 엉뚱한 메모리에 접근하지 않게 한다. 가비지 컬렉터 (GC : Garbage Collector) 가비지 컬렉터는 사용하지 않는 메모리를 정리하는데 동작 횟수가 많을수록 성능에 심각한 영향을 끼친다. 힙(heap) 영역에 메모리가 계속 쌓이다 특정 시점에 GC에 의해 사용되지 않는 메모리가 해제된다. Root Reference에서 사용하는 객체와 그 객체에서 할당한 객체를 찾고 나머지를 참조하지 않는 메모리 영역으로 간주해서 해제한다. 해제 후 남은 메모리를 재배치하고 다음 객체를 할당할 메모리의 포인터 위치도 재배치한다. 가비지 (Garbage) 프로그램이 실행되면서 어디에..
-
[기술 면접 공부] 싱글톤 패턴기술 면접 공부 2021. 1. 6. 23:51
싱글톤 (singleton) 정의 해당 클래스의 인스턴스가 하나만 생성이 되는 것을 보장하며 어디서든지 그 인스턴스에 접근이 가능하도록 만드는 패턴 생성 및 사용법 클래스에 instance라는 private한 멤버 변수를 선언, 생성자를 private하게 외부에 노출이 되지 않도록 선언한다. static으로 전역에서 접근이 가능한 메서드를 생성해 instance를 반환한다. 사용 목적 및 용도 시스템에서 전역으로 관리되고 단 하나의 클래스에서만 정보가 유지되는 것을 원할 때 사용한다. 주로 시스템 자원이나 정보를 관리하는 용도로 사용한다. 장점 모든 데이터를 전역으로 관리할 수 있기 때문에 쉽게 접근 가능하다. 중복 생성 및 메모리 낭비를 방지할 수 있다. 단점 정적 메모리에 할당된 객체이므로 너무 큰 ..
-
[기술 면접 공부] 추상 클래스, abstract기술 면접 공부 2021. 1. 6. 21:52
요약 추상 클래스는 인스턴스화 되지 않고 다른 클래스의 기본 클래스로만 사용 추상 멤버는 추상 클래스에서 파생된 비추상 클래스에 의해 구현 abstract 특징 추상 클래스 추상 클래스는 인스턴스화 할 수 없다 추상 클래스에 추상 메서드 및 접근자가 포함될 수 있다 추상 클래스에서 파생된 비추상 클래스에는 모든 추상 멤버의 실제 구현이 포함되어야 한다 추상 메서드 추상 메서드는 암시적으로 가상 메서드이다 추상 메서드 선언은 추상 클래스에서만 허용된다 추상 메서드는 실제 구현을 제공하지 않으므로 본문이 없다 추상 메서드 선언시 static, virtual을 사용할 수 없다
-
[기술 면접 공부] 가상 함수, virtual기술 면접 공부 2021. 1. 6. 21:42
virtual 키워드 메서드, 속성, 인덱서 또는 이벤트 선언을 수정하고 파생 클래스에서 재정의하도록 허용 특징 static, abstract, private, override 한정자와 함께 사용할 수 없다 파생 클래스에서 new 또는 override 키워드를 사용할 수 있다. new를 사용할 경우 기본 클래스의 메서드를 숨기고 독립적으로 정의되고 override를 사용할 경우 기본 클래스 메서드를 대신해서 확장한다 파생 클래스에서 base 키워드를 사용해 부모 클래스의 함수를 호출할 수 있다 abstract와는 달리 파생 클래스에서 구현은 선택이다
-
[기술 면접 공부] 인터페이스기술 면접 공부 2021. 1. 6. 20:59
요약 추상 멤버만 갖는 추상 기본 클래스와 같다 인터페이스를 구현하는 모든 클래스, 구조체는 모든 멤버를 구현해야 한다 직접 인스턴스화 할 수 없고, 인터페이스를 구현하는 클래스, 구조체에 의해 구현된다 클래스, 구조체는 여러 인터페이스를 구현할 수 있다 인터페이스 (Interface) 정의 메서드 원형들의 집합에 이름을 붙인 것, 작은 논리적인 메서드 집합 클래스 및 구조체로 구현할 수 있는 규약 구현 객체의 같은 동작을 보장하기 위한 목적 특징 선언(Declaration)은 있고, 정의(Definition)는 없다 다중 상속이 가능하다 C#의 Property는 내부적으로 메서드로 구현되기 때문에 포함할 수 있다 C#의 컴파일러는 인터페이스 메서드를 구현할 때, public으로 선언하도록 요구한다 인터..