-
[TIL] 14주차 2일 기술면접 대비 C# 심화 문법개발일지/스파르타 코딩클럽 부트캠프 2024. 7. 17. 09:04
- 다음 코드에서 제네릭을 사용한 부분을 식별하고, 해당 코드가 제네릭을 사용하지 않았을 때 발생할 수 있는 문제점에 대해 설명하세요.
Box클래스에서 제네릭을 사용했다. 제네릭을 사용하지 않았다면 같은 내용의 매개변수만 다른 함수를 모두 새로 만들어야하는 문제점이 발생할 수 있다.
2. 아래 코드가 어떤 기능을 하는지, 어떤 방식으로 동작하는지 간단하게 설명해주세요.
public static T Max<T>(T a, T b) where T : IComparable<T> { return a.CompareTo(b) > 0 ? a : b; }
a와 b의 값을 비교해서 a가 더 크면 a, b가 더 크면 b를 반환한다.
제네릭으로 선언된 a와 b를 비교하되, IComparable<T>에서 파생된 클래스인 경우에만 사용 가능하도록
where로 제약을 걸어두었다.
설명 문제
💡 질문을 직접 설명해보고, 모르는 부분이 있다면 알아보는 시간을 가집시다.
- 제네릭이란 무엇인가요?
- 람다식(Lambda Expression)이 무엇인지 설명해주세요.
- LINQ란 무엇인가요?
- 리플렉션(Reflection)이 뭔지, 사용을 해봤다면 어떤 이유에서 사용했는지 설명해주세요.
- 리플렉션의 단점에 대해 설명해주세요.
1번 답 :
제네릭이란 데이터 형식을 일반화하여 코드의 재사용성과 유연성을 향상시켜주는 기능이다.
다양한 형식에 대응되는 메서드와 클래스 작성에 용이하며 컴파일 시 안정성을 보장해준다.
2번 답 :
람다식은 => 연산자를 통해서 무명 함수를 표현하는데 사용된다. 대체로 간결하고 가독성이 높은 코드 작성을 도와주며, 메모리를 효율적으로 사용하고 반복적인 작업에서 코드의 재사용성을 높일 수 있다. 하지만 장점과 반대로 복잡한 람다식은 오히려 성능 저하를 유발할 수 있다.
3번 답 :
C#에서 제공하는 LINQ는 데이터를 가공 하여 처리할 때 강력한 기능을 제공하는 문법이다. 배열형식이나 데이터형식들을 가공할 때 쿼리처럼 사용할 수 있어서 직관적이고 편리하게 사용할 수 있는 문법이며, 필터링 매핑 정렬등의 기능들을 활용하여 데이터들을 보다 쉽게 가공할 수 있다.\
4번 답 :
리플렉션은 컴파일 시에 알 수 없었던 타입이나 멤버들을 찾아내고 사용할 수 있게 해주는 메커니즘이다. 간단하게 프로그램이 동적으로 소스 코드를 해석할 수 있게 하는 기술인데 Activity나 Service같이 특정 이름 규칙으로 클래스를 작성하면 따로 코드로 객체를 생성하거나 연결하지 않아도, 프로그램 내에 등록되고 사용할 수 있다.
하지만 이런 리플렉션은 사용하면 컴파일 시에 타입의 안정성을 해치며, 전반적으로 속도가 느리고, 리플렉션을 사용하여 멤버를 호출하면 당연히 성능에 좋지 않은 영향을 미친다.
'개발일지 > 스파르타 코딩클럽 부트캠프' 카테고리의 다른 글
[TIL] 14주차 4일 트러블슈팅 (0) 2024.07.18 [TIL] 14주차 3일 기술면접 대비 (0) 2024.07.18 [TIL] 13주차 5일 기술 면접 대비 ( 가비지 컬렉터, 박싱 언박싱 주의점 ) (0) 2024.07.16 [TIL] 13주차 4일 기술 면접 대비 (0) 2024.07.15 [TIL] 14주차 1일 DOTween (0) 2024.07.15