C# 기술면접 아쉬움
태그: C#, CSharp, Interview, Study
카테고리: CSharpStudy
📌C# 아쉬움 기록
✏️닷넷(.Net) 프레임워크란 무엇인가?
📋닷넷(.Net) 이란?
마이크로소프트사에서 제공하는 윈도우 프로그램 개발 및 실행환경입니다.
네트워크 작업, 인터페이스 등의 많은 작업을 캡슐화하여 코딩의 효율성을 증대시켰습니다.
📋특징
CLS(닷넷 프레임워크의 언어가 반드시 지켜야 하는 언어 스펙)을 따르는 언어라면
어떠한 언어라도 닷넷 프레임워크에서 실행 가능하며
CLR 이라는 가상기계 위에서 작동하기 때문에 플랫폼에 독립적이며 궁극적으로 프로그래머가
코딩(특히 윈도우 프로그램)을 하는데 더 편한 환경을 제공해줍니다.
✏️스크립트 언어 vs 컴파일 언어
📋스크립트 언어
소스 코드를 컴파일하지 않고 인터 프리터로 소스코드를 한줄한줄 읽어 바로 실행하는 방식으로 동작하는 언어
인터프리터(Interpreter) : 프로그래밍 언어의 소스코드를 바로 실행하는 컴퓨터 프로그램 또는 환경
컴파일을 하지 않고 바로 실행한다는 특징이 있지만, 소스코드를 읽으며 실행하기 때문에 느리다.
ex) Python
📋컴파일 언어
소스코드를 컴파일한 후 기계어를 CPU/메모리를 통해 읽어 실행하는 방식으로 동작하는 언어
컴파일을 하기 때문에 규모가 큰 프로그램이라면 컴파일 시간이 오래 걸릴 수 있지만,
컴파일 후의 기계어를 통해 프로그램을 실행하기 때문에 실행 시간은 빠르다.
ex) C++, C#
✏️C# 에서 Struct 와 Class 차이
- Struct 객체는 상속이 불가능하지만 Class 객체는 상속이 가능하다.
- Class 는 참조타입(Reference Type)이고 Struct 는 값타입(Value Type) 이다.
- Class 객체는 힙 메모리에 할당되지만 Struct 객체는 스택에 할당된다.
✏️스택 메모리와 힙 메모리의 차이
스택의 경우 사용할 수 있는 메모리의 크기가 작고 한정적인 반면
힙은 많은 메모리크기를 가질 수 있다.
하지만 스택의 경우 가비지컬렉션에 의해 관리되지 않기 때문에 성능상 많은 장점이 있다.
✏️Draw Call
CPU에서 그래픽 API 호출을 통해 GPU에 랜더링을 명령하는 것
유니티가 기본적으로 3D 게임 엔진이기 때문에
Scene 에 있는 버텍스들을 그리기 위해 GPU 에 보내는 요청이다.
이런 버텍스들은 데이터를 가지고 있는데 위치, 노멀, UV 데이터, 재질 등을 가지고
변형과 이동에 대한 계산을 위해 버텍스 버퍼에 추가된다.
버텍스 버퍼가 추가되면 그 안에 데이터가 담겨있게 되고, 화면에 그려야 될 때 그 데이터들을 처리하기 위해
복사 과정을 거치는데 만약 이런 데이터의 종류가 많아질수록 Draw Call 이 많아진다고 생각하면 된다.
✏️Sprite Atlas
Atlas 를 써서 얻게되는 장점은 Draw Call 을 줄일 수 있기 때문이다.
예를 들어 자장면 100 그릇을 주문한다고 가정해보자.
100번 전화해서 주문하는 것과 한 번에 주문하는 것 중 후자가 훨씬 효율적이다.
이와 같이 GPU에게 요청하는 횟수를 줄임으로써 성능상의 장점을 얻을 수 있다.
Project Assets에서 우클릭 후 Create -> 2D -> Sprite Atlas 를 선택하여 사용할 수 있다.
✏️Unity 실행순서
간단하게 설명해도 될 것 같다.
Awake() -> OnEnable() -> Start() -> FixedUpdate() -> Physics Logic
-> OnTrigger -> OnCollision -> Update() -> Game Logic -> LateUpdate()
-> Scene Rendering -> OnDrawGizmos() -> OnGUI()
-> OnDisable() -> OnDestroy()
댓글남기기