본문 바로가기

Unity/Interview

Unity: 게임 클라이언트 프로그래머 기술 면접 키워드 리스트

C# 의 이해

언어 스펙

구조체와 클래스 (필드 크기의 합이 16 byte가 넘는 구조체가 Heap 할당이 발생한다는 정보는 잘못되었음에 주의하세요)

인터페이스와 추상, 가상함수

상속과 다형성

배열과 리스트

namespace

partial

객체지향(추상화, 캡슐화, 상속성, 다형성)

지역변수와 전역변수

delegate와 event 차이
유니티와 C#의 관계

메모리

힙 할당 되는 케이스와 아닌 케이스

오브젝트 타입에 밸류 타입을 대입하면 생기는 일

박싱과 언박싱

가비지에 대하여

세대별 가비지 컬렉션

LOH, SOH (라지 오브젝트 힙, 스몰 오브젝트 힙)

최신 기능

패턴 매칭

Nullable

유니티에 대한 이해

기능

코루틴과 Invoke

게임루프와 델타 타임에 대한 이해

CLR과 유니티 Mono

Mono와 IL2CPP

Update, FixedUpdate, LateUpdate

Awake, Start, OnEnable, OnDisable, OnDestroy

최적화

스태틱 게임오브젝트와 배칭

유니티의 가비지 컬렉션

드로우 콜과 배치

렌더링 파이프라인 (큐브 하나를 게임뷰에 그리기 위해 유니티 코어 로직에서 일어나는 일)

경험

String Concat 루프 대책

최적화 전략 수립 과정

코루틴과 비동기에 대하여

스크립트 실행 순서

Fake Null에 대해

Dictionary의 Key로 Enum 사용 (버전 별 상이)

스레드, 유니티 메인 스레드

펀더멘탈

프로세스와 스레드

API란?

값 형식과 참조 형식

메모리구조 (코드영역, 데이터영역, 힙 영역, 스택 영역)

리스트, 딕셔너리, 큐, 스택, SortedList, LinkedList

AOT와 JIT, 인터프리터

컴퓨터 구조에서 캐시 히트와 캐시 미스

L1, L2, L3 캐시

컨텍스트 스위칭

콜스택

보안

PE구조

커널모드와 유저모드

IOCTL

드라이버

프로세스와 모듈, 스레드

언어

C와 C++의 차이점

C#과 C++의 차이점

C++11/C++14/C++17 다뤄본 것

C++ 가상함수 테이블

C++ 스마트포인터

C++ 캐스팅 종류와 작동방식 static_cast, dynamic_cast, interpret_cast, const_cast

C++ stdcall과 cdecl 차이

C++ 구조체 패딩

C++ 이중 포인터를 이용한 이차원 동적할당과 이차원 배열과의 차이점

 

자료구조

list, vector, map

요소 전체 순회시 가장 빠른 순서대로 나열 및 BigO 표기

삽입 및 삭제의 속도가 빠른 순서대로 나열 및 BigO 표기

랜덤 액세스가 빠른 순서대로 나열 및 BigO 표기

사용해야하는 상황, 하지 말아야 할 상황 구분하기

 

디자인패턴

싱글톤 패턴

옵저버 패턴

스트레이트지 패턴

팩토리 패턴

빌더 패턴

커맨드 패턴

브리지 패턴

 

그래픽스

버텍스 셰이더와 픽셀 셰이더

래스터라이저

포워드와 디퍼드 렌더링

디더링

텍스처 압축 포맷

드로우콜

오클루전 컬링과 프러스텀 컬링

소프트마스크

스텐실

알파테스트, 알파블렌딩

 

알고리즘

DFS 구현 방식

DFS와 다익스트라 차이, 장단점

퀵소트 버블소트

가장 빠른 머지소트 구현법

쿼드트리, 옥트리

 

네트워크

TCP/UDP 차이

리틀 엔디언, 빅 엔디언

패킷 컨테이너

소켓

P2P, 릴레이, 데디케이트 서버

데드레커닝

락스텝

 

하나씩 찾아가며 공부해가는 것이 기술 면접 대비에 도움이 됩니다.