-
최종 프로젝트 진행 중..
장르가 비주얼 노벨이다보니 이미지랑 스토리가 주된 것이기도 해서 핵심을 만드니깐 크게 할게 없네요.
아이템들 배치정도?
우선 하는 일이 더 있긴 하지만 기술 면접 질문 답변을 정리해보도록 하겠습니다.
우수 답변
1. float와 int의 표현 가능한 수의 범위가 다른 이유는 무엇인가요?
★2진수 활용에 따른 표현 가능한 수의 차이
int와 float가 표현 할 수 있는 수의 차이는 확연히 다릅니다. 개발을 할 때 목적에 따라 int를 사용할지 float을 사용할지 고민할 때가 종종 생길텐데 두 자료형의 차이점을 잘 알고 있으면 쉽게 적용이 가능합니다.
float
- 32비트 사용
- 첫 1비트는 부호를 결정
- 8비트는 지수를 결정, 23비트는 가수를 결정
- 2^23 = 8,388,608 이므로 이 이상의 수에서는 소수점 표현 불가
- 지수는 2^8 = 256 → -128~127까지 표현 가능
- 자릿수를 표현하는데 8비트가 사용되므로 매우 큰 수나 작은 수를 표현할 수 있다.
int
- 32비트 사용
- 첫 1비트는 부호를 결정
- 남은 31비트로 수를 결정
- 비트당 1 or 0 2가지 수 가능하므로 2^31 = 2,147,483,648까지 가능
- 음수는 -2,147,483,648 ~ -1, 양수는 0을 포함하므로 1 ~ 2,147,483,647까지 가능수를 표현하는데 사용하는 비트가 float는 23, int 31이므로 정밀도의 차이가 있다.=> 표현 가능한 수의 범위(숫자)를 기억하기에는 기억해야하는 부분이 많으므로 패스
float과 int 모두 32비트를 사용하며 첫 1비트는 부호를 결정합니다.
float는 8비트는 지수, 23비트는 가수를 결정하므로 지수는 2^8까지 표현 가능하고, 2^23 이상의 수에서는 소수점 표현이 불가합니다. 따라서 float은 자릿수를 표현하는데 8비트가 사용되므로 매우 큰 수나 작은 수를 표현할 수 있습니다.
int는 31비트로 수를 결정하기 때문에 2^31까지 가능합니다.
가능한 수를 표현하는데 사용하는 비트가 float은 23비트, int는 31비트이므로 정밀도의 차이가 있습니다.
2. 'ref'와 'out'의 사용 시 차이는 무엇인가요?
★매개변수 전달 방식
★ref, out 호출 시 초기화 유무의 차이
★ref,out 키워드의 활용 용도
ref와 out 모두 매개변수 전달을 할 때 사용 되는 키워드 입니다. 최적화, 가독성 등 다양한 목적을 가지고 사용 될 수 있기 때문에 적용 사례도 같이 생각하면 좋습니다.
ref와 out 모두 매개변수를 참조형태로 전달하는데 사용됩니다.
가장 큰 차이점이라고 한다면 ref는 변수를 전달하기 전에 변수가 꼭 초기화가 되어있어야하고 out은 변수를 전달하기 전에 전달할 변수를 초기화하지 않아도 괜찮지만 메서드 안에 반드시 할당되어야 한다는 차이점이 있습니다.
그 이유는 바로 ref는 메모리 자체를 읽어와서 사용하기 때문에 바깥에서 가져온 변수가 초기화 되어있지 않다면 그 값을 불러올 수 없기 때문에 오류가 나지만 out은 ref와 같이 메모리 주소로 접근하지만 그 곳에 값을 할당해 주기까지 하는 차이점이 있기 때문입니다. 그래서 저는 공부할때 out은 출력전용 매개변수라고 공부하면서 사용법을 익혔습니다.ref와 out 모두 매개변수를 참조형태로 전달하는데 사용됩니다.
ref는 변수를 전달하기 전에 변수가 초기화 되어있어야 합니다. 메모리 자체를 읽어와서 사용하기 때문에 초기화가 되어있지 않으면 값을 불러올 수 없으며, 메서드 내에서 변수의 값이 변할 경우에는 변한 상태를 유지하게 됩니다.
out은 외부에서는 초기화할 필요가 없지만 사용하는 메서드 내에서는 초기화하고 값을 할당해줘야 하므로 여러 값을 반환하는 것이 가능해집니다.
3. 접근제한자란 무엇이며, 각각 어떤 차이가 있는지 비교해서 설명해주세요.
객체지향 - 캡슐화(정보 은닉)
접근 제한자에 대한 차이점 설명은 누구나 할 수 있습니다. 이를 왜 사용하는지에 대한 부가적인 설명이나 확장을 할 수 있으면 좋습니다.
C#에서 접근 제한자는 접근 한정자라고 불리기도 하며, 타입의 범위뿐만 아니라 멤버의 접근 범위를 정의하는데 사용되는 기술이다. 클래스 또는 클래스의 멤버를 접근 가능 여부는 접근 제한자에 의해 정의된다.C#에서의 존재하는 접근 제한자는 4가지이다.
1. public : public으로 선언된다면 어느 곳에서든 자유롭게 사용될 수 있다. 아무런 제한을 받지 않고 원하는 곳에서 사용된다.
2. private : private으로 선언되면 약간의 제한을 갖게 된다. 예를 들어 어떤 클래스에 변수들이 private으로 선언된 경우 해당 클래스에서만 접근이 가능하다.
3. internal : internal로 선언된다면 해당 프로젝트에 public처럼 사용된다. 자신의 프로젝트에서 내부적으로 사용된다는 뜻이다. 이는 외부에서 사용될 가능성이 있는 프로젝트에서 유용하게 사용된다. 해당 프로젝트의 사용자가 굳이 몰라도 되는 정보를 감추는 것이다.
4. protected : protected로 선언된다면 상속받은 자식의 클래스에서만 사용 가능한 제한을 갖는다.접근 제한자는 타입의 범위뿐만 아니라 멤버의 접근 범위를 정의하는데 사용되는 기술입니다. 클래스나 클래스의 멤버의 접근 가능 여부는 접근 제한자에 의해 정의됩니다.
C#에서 존재하는 접근 제한자는 총 4가지가 있습니다.
public은 제한 없이 자유롭게 사용이 가능합니다.
private는 예를 들어 클래스의 변수들이 private로 선언되면 해당 클래스에서만 접근이 가능합니다.
internal은 해당 프로젝트에서만 자유롭게 사용이 가능하며, 외부 프로젝트에서는 접근이 불가능합니다.
protected는 상속받은 자식의 클래스에서만 사용이 가능합니다.
우수 답변이랑 우수 답변과 제가 정리한 것을 섞어서 머릿 속에 남을 수 있도록 정리해봤습니다.
이 다음은 GC랑 연관된 것들이 있어서 내일 정리해보겠습니다.