기술 면접용 질문들/프로그래밍 관련 맨텀 2023. 1. 8. 16:00
최대 공약수, 최소 공배수는 코딩테스트 등에서 은근 많이 쓰이는 개념이다. 식을 외워두면 금방 구하기 떄문에 특히 최대공약수 공식은 외워 두는게 좋다. 최대공약수 (Greatest Common Divisor, GCD) 유클리드 호재법으로 구할 수 있다. 재귀를 이용하면 짧은 코드를 만들 수 있다. 나머지가 0이 될 때까지 두 수의 자리를 바꿔가면서 구하면 된다. // 최대공약수 재귀 함수. 한쪽이 0이 될 때까지 스왑하면서 나머지를 구한다. public int GCD(int a, int b) { if(b == 0) return a; else return GCD(b, a % b); } 최소공배수 (Least Common Multiple: LCM) 두 수를 곱한다음, 최대공약수로 나눠주기만 하면 되기 때문에..
기술 면접용 질문들/프로그래밍 관련 맨텀 2021. 5. 8. 16:26
왜 두 키워드가 비교될까? const 키워드와 readonly 키워드는 비슷한 기능을 하기 때문에 많이 비교되곤 한다. 두 키워드 모두 최초 값을 정한 뒤에는 값을 변경할 수 없게 만드는 기능을 가지고 있다. public const int myConst = 1000; public readonly int myRead = 2000; 그렇다면 다른점은 무엇일까? 조금 더 자세히 말하자면, const는 컴파일타임 상수를 정의한다. readonly는 런타임 상수를 정의한다. 컴파일타임 상수 const는 컴파일 타임에 변수가 값으로 대체된다. 그래서 반드시 변수의 선언과 동시에 값을 할당하며, 변경할 수 없다. 컴파일 시점에서 결정된 값이 변할 수 없음으로 모든 클래스의 인스턴스가 동일한 값을 가진다. 사용자 정의..
기술 면접용 질문들/프로그래밍 관련 맨텀 2021. 4. 15. 19:36
선형구조 - 자료를 순차적으로 나열한 형태 - 배열, 연결 리스트, 스택, 큐 비선형 구조 - 하나의 자료 뒤에 다수의 자료가 올 수 있는 형태 - 트리, 그래프 배열(Array) - 메모리를 연속적으로 미리 선언하고 사용함. - 중간 요소를 삭제할 경우, 해당 부분은 메모리를 돌려받지 않고 놔둠. - 장점 : 메모리 주소가 연속적이다. 접근 빠름. - 단점 : 배열의 크기를 변경할 수 없다. 동적 배열(ArrayList) - 연속된 메모리 공간을 사용한다. - 배열의 크기를 유동적으로 조정 가능하다. - 저장 가능한 메모리 용량(Capacity)과 현재 사용 중인 공간의 크기(Size)가 있으며, 현재 가용량(Capacity)을 넘어갈 때 더 큰 공간의 메모리를 할당함. (전체 이동할 때 비용이 크기 ..
기술 면접용 질문들/프로그래밍 관련 맨텀 2021. 4. 15. 18:20
Big-O 표기법 - 점근 표기법 이라고도 한다. - 알고리즘의 효율의 지표를 나타내는 표기법 - 실행속도는 환경에 의존적이며, 입력 N의 크기에 따라 영향을 받을 수 있기 때문에 지표화 시키기 어려움. 때문에 차선책인 Big-O 표기법을 사용함. O(N^2) - O는 Order Of 라고 읽는다. 1) 수행 연산의 개수를 대략적으로 판단 - 일반 연산은 1개 - N번 수행되는 반복문 안에 있다면 N개 - N번 반복되는 중첩반복문에 있다면 N^2개 2) 대표 항목만 남긴다. - 차수가 가장 높은 것만 남기고, 상수 또한 삭제한다. public int Test(int N) { int result = 0; for(int i = 0; i < N; i++) result += i; for(int i = 0; i ..
기술 면접용 질문들/프로그래밍 관련 맨텀 2021. 4. 14. 21:55
추상화(Abstraction) - 객체들의 공통적인 특징을 도출해 내는 것. - 우리가 구현하는 객체들이 가진 공통적인 데이터와 기능을 도출해 내는 것을 의미한다. 캡슐화(Encapsulation) - 연관 있는 변수와 함수를 하나로 묶는 것 (클래스) - 클래스라는 캡슐에 분류된 집단 별로 넣어 실체화 하면 객체를 만들 수 있다. - 접근한정자를 통해 객체가 내부적으로 기능을 어떻게 구현하는지를 감출 수 있어, 정보은닉이 가능하다. - 목적 : 내부의 기능 구현이 변경되더라도 그 기능을 사용하는 코드는 영향을 받지 않도록 함. 상속성(Inheritance) - 재사용성과 확장성 - 상위 클래스의 특징을 하위 클래스에서 물려받는 것. - 상위 클래스에 정의된 동작을 다시 사용, 확장 및 수정하는 하위 클..
기술 면접용 질문들/프로그래밍 관련 맨텀 2021. 4. 13. 22:07
타입 클래스는 '참조 타입'이며, 구조체는 '값 타입'이다. - 함수의 매개변수로 넘겨준다면, 클래스는 참조라서 메모리 주소만을 넘기고, 구조체는 값을 복사해서 스택에 다시 할당한다. - 값 자체를 복사해야 하기 때문에 구조체 자체의 크기가 크면 클수록 메모리 사용량이 늘어나며, 스택은 메모리가 한정적이기 때문에 스택 오버플로우의 위험이 있다. 메모리 클래스는 '힙 영역'에 할당되며, 구조체는 '스택 영역'에 할당된다. - 클래스는 힙에 할당되기 때문에 메모리 크기는 여유롭지만 가비지 컬렉션에 의해서 수거되야한다. - 반대로 구조체는 스택에 할당되기 때문에 메모리 크기가 한정적인 대신 메모리 해제가 즉시 일어난다. 클래스 구조체 타입 참조 타입(Reference) 값 타입(Value) 메모리 힙(heap..