기술 면접용 질문들/프로그래밍 관련 맨텀 2021. 4. 13. 22:07
타입 클래스는 '참조 타입'이며, 구조체는 '값 타입'이다. - 함수의 매개변수로 넘겨준다면, 클래스는 참조라서 메모리 주소만을 넘기고, 구조체는 값을 복사해서 스택에 다시 할당한다. - 값 자체를 복사해야 하기 때문에 구조체 자체의 크기가 크면 클수록 메모리 사용량이 늘어나며, 스택은 메모리가 한정적이기 때문에 스택 오버플로우의 위험이 있다. 메모리 클래스는 '힙 영역'에 할당되며, 구조체는 '스택 영역'에 할당된다. - 클래스는 힙에 할당되기 때문에 메모리 크기는 여유롭지만 가비지 컬렉션에 의해서 수거되야한다. - 반대로 구조체는 스택에 할당되기 때문에 메모리 크기가 한정적인 대신 메모리 해제가 즉시 일어난다. 클래스 구조체 타입 참조 타입(Reference) 값 타입(Value) 메모리 힙(heap..
기술 면접용 질문들/프로그래밍 관련 맨텀 2021. 4. 12. 22:51
각각의 원칙의 앞글자를 따서 SOLID 원칙이라고 부른다. 단일 책임의 원칙(SRP : Single Responsibility Principle) - 클래스는 하나의 책임만을 가진다. 개방 폐쇄의 원칙(OCP : Open-Closed Principle) - 확장에는 열려있고, 변경에는 닫혀있어야 한다. - 추가사항이 발생하더라도 기존 구성요소는 수정이 일어나지 말아야 한다. 리스 코브 치환의 원칙(LSP : Liskov Substitution Principle) - 상위 타입의 객체는 언제나 하위 타입의 객체로 치환할 수 있어야 한다. - 즉, 상속은 is-A 관계일 때만 상속관계로 존재해야 한다. 인터페이스 분리의 원칙(ISP : Interface Segregation Principle) - 자신이 사..
기술 면접용 질문들/프로그래밍 관련 맨텀 2021. 4. 12. 22:36
사실 전혀 하는 일이 다른데, 이름이 비슷해서 자주 비교당하는 녀석들. 오버 로딩 (Overloading) - 정의 : 메서드의 이름은 동일하지만 매개변수의 개수나 타입이 다른 메서드를 여러 개 정의하는 것. - 목적 : 컴파일 타임 다형성을 실현한다. (컴파일 시점에 어떤 동작인지 결정됨) public int MyMethod() => 0; public int MyMethod(int a) => a; public int MyMethod(int a, int b) => a + b; 오버 라이딩 (Overriding) - 정의 : 상속관계에서 상위 클래스의 메서드를 하위 클래스에서 재 정의함. - 목적 : 런타임 다형성을 실현한다. (실행중 어떤 하위 클래스냐인지에 따라서 동작이 결정됨) class Parent..
기술 면접용 질문들/프로그래밍 관련 맨텀 2021. 4. 12. 21:04
박싱과 언박싱을 이해하려면 값형식과 참조형식, 그리고 스택과 힙에 대한 이해부터 해야한다. 값형식 vs 참조형식 값형식은 System.ValueType을 상속받는다. (이 또한 System.Object를 상속받으니 참조형과 형변환이 가능하다) 구조체, 열거형, 숫자(System.Int32) 는 값형식이다. 값형식은 스택에 할당되며, 스택은 성능이 빠르고 스코프가 끝나면 사라진다. 값형식은 주고받을 때, 복사가 일어난다. 참조형식은 System.Object를 상속받는다. 모든 클래스는 참조형식이다. 참조형식은 힙 영역에 할당되며, 힙은 메모리를 관리해야되기 때문에 조심히 다뤄야하는 영역이다. (GC가 있는 언어의 경우 사용이 끝났어도 GC가 수거할때까지 메모리에 상주한다) 참조형식은 주고받을 때, 주소만을..
기술 면접용 질문들/운영체제 관련 맨텀 2021. 4. 12. 20:47
메모리 구조 - OS의 메모리 구조는 유저 영역, 커널 영역의 2가지 영역으로 나뉜다. - 커널영역은 시스템 운영에 필요한 메모리이며, 사용자는 커널영역에 접근할 수 없다. - 유저영역은 다시 4가지 영역으로 나뉘어진다. 1) 코드 영역 2) 데이터 영역 3) 스택 영역 4) 힙 영역 코드 영역 - 기계어로 컴파일되어 적재되는 코드 자체의 영역 - Read-Only 데이터 영역 - 프로그램이 구동되는 동안 항상 접근 가능한 변수가 저장됨 - 전역(Global) 변수 / 정적(Static) 변수 - Read-Write 스택(stack) 영역 - 값 형식을 저장하는 영역. - 지역변수와 매개변수가 저장되는 영역. - 코드 블록 안에서 생성된 변수들은 블록이 닫히면 메모리에서 제거됨. - 장점 : 액세스가 빠..