기술 면접 핵심 키워드 정리 - (1~18)

이준호·2024년 2월 4일
0

📌 기술면접 모범 답안 핵심 키워드 정리 (1~18)



추후 다시 정리를 할 때, 키워드를 참고하여 다시 정리하며 기억하기 위해서 핵심 키워드만 따로 정리.

📌 1 ~ 10

1. float와 int의 표현 가능한 수의 범위가 다른 이유는 무엇인가요?

각 자료형이 내부적으로 어떻게 구성되어있는지를 묻는 질문입니다.

자료형마다 몇 비트를 차지하는지,
주어진 메모리를 어떻게 사용하는지(부호,지수,가수 등)를 학습했는지 확인하기 위함입니다.

개발을 진행하여 익숙하게 사용해왔던 여러가지 자료형들을
다시 한번 공부해보면서 내부원리까지 이해하고 본인의 것으로 만드는 것이 중요합니다.




2. 'ref'와 'out'의 사용 시 차이는 무엇인가요?

둘 다 매개변수에서 사용됩니다.
ref는 메모리자체를 읽어와서 사용합니다.
초기화가 되어있지 않다면 그 값을 읽어와서 쓸 수 없기 때문에 오류가 발생합니다.
따라서 매개변수로 넘길 값이 초기화가 완료되어있어야만 합니다.
out도 메모리 주소로 변수에 접근하지만, 그곳에 값을 할당까지 해줍니다.
고로, 초기화를 하지 않았더라도 함수 내부에서 계산 후 결과 값을 뱉어낼 수 있습니다.




3. 접근제한자란 무엇이며, 각각 어떤 차이가 있는지 비교해서 설명해주세요.

C#의 기본 문법을 잘 알고 사용하고 있는지를 묻는 질문입니다.
해당 내용은 실제 프로젝트에서 기본 중에 기본이므로 반드시 숙지해야합니다.
접근제한자가 가지는 명확한 의미 차이를 확실하게 알아두어야합니다.

가볍게 public, private, protected 정도만 알아두면 되고
internal과 그 조합형태는 추가적으로 학습정도만 해둬도 좋을 것 같습니다.




4. struct와 class를 비교해서 설명해주세요.

대표적인 값 타입과 참조타입인 struct와 class에 대해 이해하고 있는지에 대한 질문입니다.
주요 내용은 값타입과 참조타입 구분에 따른 메모리 구분이고, 이외에도 상속 가능 여부 등 짚고가면 좋을 내용을 짚어주시면 되겠습니다.




5. 가비지 컬렉터에 대해 설명해주세요.

C#의 성능 최적화에 매우 중요한 영향을 끼치는 GC에 대한 이해도에 대해 묻는 문제입니다. 5-7번 문항이 다소 비슷하나, 5-7번 문항을 총체적으로 답변하는 것이 필요합니다.
구체적으로는, 5번 문항에서는 가비지 컬렉터의 개념, 기본적 동작 방식, 6번 문항에서는 다양한 회피 기법, 7번 문항에서는 가비지 컬렉션의 동작 방식을 위주로 설명하는 것이 필요합니다




6. 가비지 컬렉터를 회피하기 위한 전략은 무엇이 있나요?

C#의 성능 최적화에 매우 중요한 영향을 끼치는 GC에 대한 이해도에 대해 묻는 문제입니다. 5-7번 문항이 다소 비슷하나, 5-7번 문항을 총체적으로 답변하는 것이 필요합니다.
구체적으로는, 5번 문항에서는 가비지 컬렉터의 개념, 기본적 동작 방식, 6번 문항에서는 다양한 회피 기법, 7번 문항에서는 가비지 컬렉션의 동작 방식을 위주로 설명하는 것이 필요합니다




7. 가비지 컬렉션이란 무엇인지 설명해주세요.

C#의 성능 최적화에 매우 중요한 영향을 끼치는 GC에 대한 이해도에 대해 묻는 문제입니다. 5-7번 문항이 다소 비슷하나, 5-7번 문항을 총체적으로 답변하는 것이 필요합니다.
구체적으로는, 5번 문항에서는 가비지 컬렉터의 개념, 기본적 동작 방식, 6번 문항에서는 다양한 회피 기법, 7번 문항에서는 가비지 컬렉션의 동작 방식을 위주로 설명하는 것이 필요합니다




8. 박싱과 언박싱에 대하여 설명해주세요.

(꼬리질문) 박싱, 언박싱을 사용할 때 주의해야 할 점이 있다면 무엇이 있나요?

박싱과 언박싱은 값형과 참조형 사이의 변환과정에서 일어나며, 쉽게 지나칠 수 있는 성능 저하 요인입니다. 이에 대한 이해도를 물으면서, 전반적인 C#의 메모리 할당 구조까지 설명하면 좋은 답변이 되겠습니다!




9. 배열과 List, ArrayList, Dictionary 의 차이점을 설명해주세요.

(꼬리질문) Dictionary는 어떻게 구현해야 하나요?

(꼬리질문) Dictionary 검색이 빠른 이유는 무엇인가요?

기본적인 자료구조에 대해서 묻는 문제입니다.

프로그래밍 요소들은 분명한 목적을 가지고 만들어 진 것들입니다.
그러므로 언제 어떤 자료구조를 사용해야 하는지에 대한 지식은 필수입니다.

자료구조의 메모리 할당, 성능, 내부적인 특징 등에 대해서 정리가 필요하고,
각각의 예시 정도를 설명할 수 있도록 연습해 보세요.




10. 제네릭이란 무엇인가요?

제네릭의 일반적인 정의는 다들 잘 알고 계실겁니다.

제네릭의 특징인 재사용성과, 타입 안정성, 그리고 제약조건을 걸 수 있다는 점을
잘 설명할 수 있으면 됩니다.

컴파일 시 타입이 지정되어 런타임에서 타입 안정성을 보장하고, 박싱 언박싱이 필요 없는점, 등에 대해 구체적으로 설명 가능하도록 연습하시길 바랍니다.












📌 11 ~ 18

11. 델리게이트(Delegate)의 개념에 대해 설명해주세요.

델리게이트는 기본적으로 메소드를 참조하여 매개변수처럼 전달할 수 있고,
여러 개 메소드를 등록해서 사용할 수 있다는 것을 특징으로 합니다.

이벤트 헨들링, 콜백 등의 키워드와 함께 예시를 들어 설명할 수 있어야 합니다.
프로그래밍에 사용되는 기법들은 작동 원리도 설명할 수 있어야 하지만,
어떤 점이 좋은지를 설명할 수 있어야 합니다. 이러한 부분도 신경써서 답변하는 연습을 해 보시기 바랍니다.




12. 'delegate', 'event', 'action', 'func' 간의 차이를 설명해주세요.

(꼬리질문) 프로젝트에 적용해 본 경험이 있다면 설명해주세요.

delegate와 delegate 기반의 event, action 등의 차이를 묻는 질문은 면접 시
출제될 가능성이 높은 질문 중 하나
입니다.

각각의 특징과 차이점에 대해서 설명할 수 있어야 되고,
Unity에서 어떻게 사용될 수 있는지에 대해서도 함께 예시를 들어 설명하는 연습을 해 보세요.

강의에서 delegate, event, action, func를 적어도 한 번 씩은 다뤘던 것으로 알고 있습니다. 프로젝트에 반영한 내용에 대해서도 구체적으로 설명할 수 있어야 겠습니다.




13. 람다식(Lambda Expression)이 무엇인지 설명해주세요.

람다식은 코드의 가독성을 높일 수 있지만, 또 복잡하게 사용한다면 오히려 가독성을 해칠 수 도 있습니다.

또 간단하게 사용한다면 메모리 효율을 높일 수 있지만, 반복문 등에 남발한다면 내부적으로 성능을 떨어뜨릴 수 도 있는 것처럼 양날의 검처럼 사용되는 부분을 주의해서 사용해야 합니다.

람다식의 장점과 단점을 명확하게 제시할 수 있으면 되겠습니다.




14. 콜백이란 무엇인가요? 사용해봤는지?

(공통 평가항목) 비유적 표현 지양.
비동기 작업과의 관계에서 callback의 필요성 설명
추가적으로 구현방법과 사용경험




15. 정렬 알고리즘이란 무엇이며, 사용 이유에 대해 설명해주세요.

(공통 평가항목) 비유적 표현 지양.
정렬 알고리즘의 정의, 사용이유(탐색)
추가 질문에 대한 답변
추가적으로 정렬 알고리즘의 종류, 사용경험




16. 선택 정렬과 버블 정렬에 대해 설명해주시고, 코드를 작성해보세요.

선택 정렬과 버블 정렬에 대한 설명(시간 복잡도 설명 포함)




17. 스택, 힙 메모리란 무엇이며 어떤 차이가 있는지 비교해서 설명해주세요.

(공통 평가항목) 비유적 표현 지양.
Stack 과 Heap의 메모리 관리 차이
(할당방법, 자료 입출력 등)
추가적으로 GC와의 관계




18. 값 형식과 참조 형식의 차이에 대해 설명해주세요.

(공통 평가항목) 비유적 표현 지양.
값 형식과 참조 형식을 메모리 관점에서 잘 설명하였는가.
복사 작업 시 두 형식의 차이점을 현상과 메모리 관점에서 모두 설명하였나.

profile
No Easy Day

0개의 댓글