목록면접 질문 정리/C# (7)
Deff_Dev
제네릭이란 무엇인가요?제네릭(Generic)은 데이터 형식을 일반화하여 코드의 유연성을 높이는 기능일반화 ⇒ 특수한 개념으로부터 공통된 개념을 찾아 묶는 것 → 데이터 형식제네릭을 사용하면 데이터 형식에 의존하지 않는 클래스를 작성할 수 있어, 코드 재사용성과 타입 안정성을 높일 수 있다. [Unity/C#] 일반화 프로그래밍 (Generic)일반화란 ?- 특수한 개념으로부터 공통된 개념을 찾아 묶는 것 이러한 일반화를 이용하는 프로그래밍이 일반화 프로그래밍 ! 일반화 프로그래밍의 일반화 대상 ▶ 데이터 형식 (Data Type)일반화deff-dev.tistory.com람다식(Lambda Expression)이 무엇인지 설명해주세요.(input-parameters) => expression // 식 람다..
가비지 컬렉터란 무엇인가요?가비지 컬렉터는 CLR의 메모리 관리 소프트웨어로, 할당할 힙 메모리 공간이 부족할 때, 가비지 컬렉터가 힙 메모리를 돌며 사용하지 않는 메모리를 회수한다.참조형 변수를 선언하는 경우 stack영역의 주소값과 heap영역의 실제 값이 나뉘게 된다. 프로그램을 실행하던 중 stack영역의 값을 pop하는 경우 heap 영역의 실제 값은 쓰이지 않지만 메모리 공간에 남아있게 된다. 이를 자동으로 추적하여 메모리를 회수한다.가비지 컬렉터의 장점과 단점에 대해 설명해주세요.프로그래머가 직접 메모리 해제를 안 해줘도 알아서 GC가 돌면서 메모리를 해제하기 때문에 편리하다.가비지 컬렉터가 실행되는 동안 프로그램의 성능이 일시적으로 저하될 수 있으며, 가비지 컬렉터는 힙 메모리가 부족할 때..
클래스를 다른 클래스로 상속하기 위한 방법은 무엇인가요?public class C {}public class D : C // 상속{ }클래스를 선언할 때, 클래스 이름 옆에 : 상속 받을 클래스 이름 작성하면된다.클래스 상속에서 다이아몬드 문제(diamond problem)가 발생하는 이유와 이를 해결하는 방법에 대해 설명해주세요.다이아몬드 문제는 두 개의 다른 하위 클래스가 동일한 상위 클래스를 상속받고, 이를 다시 다중 상속받는 클래스에서 발생한다. 이러한 구조로 인해 다중 상속을 받는 클래스는 동일한 상위 클래스의 인스턴스를 두 번 상속받게 되어, 메서드 호출이나 속성 참조 시 어떤 경로를 통해 상속받은 것인지 모호해진다.C#, Java은 다중 상속을 지원하지 않고 단일 상속만 지원하여 다이아..
1. 참조 형식과 값 형식에 대해 설명해주세요. public class MyClass{ public int Value;}// 참조 형식 변수 생성 및 초기화MyClass obj1 = new MyClass();obj1.Value = 10;// 참조 형식 변수를 다른 변수에 할당하면 같은 객체를 가리키는 참조가 복사MyClass obj2 = obj1;obj1.Value = 20; // obj1이 가리키는 객체의 속성 변경Debug.Log(obj1.Value); // 출력: 20 (객체를 공유하므로 obj1과 obj2는 같은 객체를 참조)Debug.Log(obj2.Value); // 출력: 20참조 형식데이터를 힙 메모리에 저장하고 스택에는 데이터에 대한 참조(주소)를 저장한다.class, interfa..
1. 콜백이란 무엇인가요? 콜백을 사용해본 경험이 있을까요? 콜백 : 피호출자가 호출자의 메소드를 호출하는 것콜백은 특정 이벤트나 조건이 발생했을 때 호출되는 함수로, 주로 비동기 프로그래밍에서 사용된다. (작업 완료 시점을 명확하게 처리 가능)위 처럼 보통 매개 변수에 콜백 함수를 넣어서 사용한다. 사용MonoBehaviour 이벤트 함수 (Awake, Start, Update …)UI 이벤트 콜백Button.OnClickSlider.OnValueChanged물리 처리 관련 콜백OnCollisionEnter/Exit/StayOnTriggerEnter/Exit/Stay2. 델리게이트(delegate; 대리자)란 무엇인가요?함수에 대한 참조를 저장하고 호출할 수 있는 객체하나의 델리게이트에 반환 타입과 매..
1. SOLID 원칙에 대해 설명해주세요.단일 책임의 원칙 (SRP)하나의 클래스는 하나의 목적을 위해 생성한다.⇒ 하나의 클래스는 하나의 기능만 담당해야 된다는 얘기개방 폐쇄의 원칙 (OCP)확장에는 열려있고, 수정에는 닫혀있어야 한다.⇒ 기능이 추가될 때, 원래 존재하는 클래스는 수정하지말고 새로운 클래스를 추가해야 된다는 얘기리스코프 치환의 법칙 (LSP)서브 타입(상속받은 하위 클래스)은 어디서나 자신의 기반 타입(상위 클래스)으로 교체할 수 있어야 한다..⇒ 자식 클래스는 부모 클래스의 기능을 확장하되, 부모 클래스가 제공하는 모든 기능을 동일하게 제공하고 일관성을 유지하라는 말인터페이스 분리의 원칙 (ISP)클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안된다.⇒ 인터페이스에 하..
using System;using UnityEngine;public class Character{ // static, 접근 제한자 public static int Num { get; private set; } public string Name { get; private set; } public Character(string name) // 생성자 { this.Name = name; Num++; }}public class Test : MonoBehaviour{ private void Start() { // 객체 생성 Character deff = new Character("Deff"); Characte..