728x90
반응형

CS Interview 37

C++ 에서의 자료구조 forward_list를 쓰는 이유

배열과 벡터같은 얀속된 자료 구조에서는... 임의의 위치에서 삽입 삭제가 비효율적이고 말할 수 있다. 즉, 연결된 자료구조를 C++이 제공하느냐?? **list도 있지만 list에서 뺄 것을 빼서 기름기가 쫙빠진 것이 forward_list라고 할 수 있다. 그렇다. 제공한다. 그것이 바로 forawrd_list이다. 연결리스트의 성능은 유지하면서 추가적인 기능을 제공한다. 하지만 성능 유지를 위해 임의의 위치에 대한 직접 접근을 허용하지 않으며 전체 리스트의 크기를 바로 알 수는 없다. 즉, 맨 처음 원소에 접근하는 front()는 제공하지만 맨 뒤의 원소에 접근하는 back()같은 것은 지원하지 않는다. 그리고 연결된 구조와 연속된 구조의 iterator, 반복자는 종류가 다름을 생각하자 forwar..

CS Interview 2021.06.15

C++ 에서의 자료구조 Array 대신 Vector를 쓰는 이유

C++에서는array도 제공하지만 vector도 제공한다. 왜 우리는 vector를 쓰는가? 우선 array는 컴파일할 때 크기가 결정된다. 즉, 미리 알고 선언해야한다는 말이다. 크기가 고정되어있으므로 원소의 데이터는 바꿀 수 있어도 원소를 추가하거나 삭제하는 일은 불가능하다. 또한 컴파일할 때 크기가 결정되므로 무조건 스택 메모리를 사용한다. 솔직히 거의 모든 응용프로그램에서는 데이터가 동적이며 크기도 고정되어 있지 않은 게 현실이다. 때문에 데이터의 크기를 미리 알고 있는 것은 어렵다 **다만 메모리가 많다면 미리 선언하는 것도 나쁘지는 않다고 본다. 하지만 효율적인 활용을 위해선, 위 상황을 제외하면 가변 크기의 데이터 컨테이너가 있었으면 좋겠다고 생각한다. 바로 그것이 vector이다. //1...

CS Interview 2021.06.15

C++ 에서의 자료구조 Array vs Linked List; 배열과 연결리스트

기본 중에 기본부터 알아보자 응용프로그램을 설계할 때 가장 중요하게 고려해야 할 점 중 하나인 데이터 관리는 매우 중요하다. 즉, 우리는 응용 프로그램에 적합한 자료 구조를 사용하는 것이 정말 중요하다. 해결하고자 하는 문제에 적합한 자료구조를 이용하는 것이 응용프로그램 개발에 도움이 된다. 기본 내장 자료구조가 한계가 있다면 우리는 사용자 정의 자료 구조를 구현해야 한다. -> 결국 자료구조를 배우면서 어떤 문제를 해결하는 데에 어떤 자료구조가 필요할 것인가? 임을 배우는 것이 자료구조를 배우는 목적이라고 하겠다. C++에는 자료구조 중 대표적으로 선형 자료구조(Linear Data Structure)가 있다. 선형 자료구조는 또 다시 2가지로 나뉘는데 연속된 구조와 연결된 구조로 나눌 수 있다. (C..

CS Interview 2021.06.15

C#에서의 GC(Garbage Collector), 가비지 컬렉터

C#에서는 닷넷프레임워크가 제공하는 자동메모리관리를 이용한다. **C/C++에서는 Memory leak가 쉽게 일어남. 닷넷프레임워크에서는 Managed heap 이나 Stack에다 메모리를 할당한다. 아래 그림을 살짝 보자. 위에서 Managed heap과 Stack을 쓴다고 했다. value type은 스택에 할당되고, LIFO reference type은 힙에 할당된다 **해당 범위(scope)를 벗어나면 스택에 있는 값은 자동 소멸된다. **하나라도 참조하고 있으면 힙의 값은 소멸되지 않는다. CLR(공통언어런타임, Common Language Runtime)이 어플리케이션을 위한 메모리 공간을 확보한다. 아래와 같이 힙을 확보한다. (reference 타입) ?? 스택에 저장되는 것은 뭔데?? ..

CS Interview 2021.06.05

라이브러리(Library)와 프레임워크(Framework)

컴퓨터를 하다보면 "라이브러리를 이용하면 되잖아?" "아니 그런 기능 가지고 있는 라이브러리 없어?" 또는 "아니 그런 프레임워크를 가지고도 그것도 못해?" "우리 회사는 프레임워크를 제작하는데 힘쓰고 있습니다" 와 같은 말을 들을 수 있는데 도대체가 뭐길래 저렇게 쓰느냐 이거다... ? dev.to/juliatorrejon/what-is-the-importance-of-understanding-libraries-and-frameworks-3nfm 오늘은 그 둘에 대해서 알아보자 위의 링크를 봐도 좋다. 우선 프레임워크를 설명해보겠다. 사실 사전적의미를 보자면 소프트웨어 어플리케이션이나 솔루션의 개발을 수월하게 하기 위해 소프트웨어의 구체적 기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화..

CS Interview 2020.12.01

API란?( Application Programming Interface)

맨날 오픈 API 있냐 없냐 없으면 뭐 어쩌고 저쩌고 라는데 도대체 이게 뭘까??? www.redhat.com/ko/topics/api 참고자료가 여기있다. 근데 어렵게 써놓은 것 같다. 간단하게 설명하겠다. 어플리케이션을 위해서 조작하는 도구들의 모임들이다. 어플리케이션= Application program , 조작하는 도구들(약속) = Interface -> 백엔드(서버)에게 요청을 하기 위한 도구라고 보면 되겠다. **모든 어플리케이션은 API를 통해 만들어진다고 해도 과언이 아님. 어플리케이션을 처음부터 모든 것을 하는 것은 요즘에는 말도 안되는 것이니까. API를 사용하는 이유 API를 사용하면 구현방식을 몰라도 제품 또는 서비스가 서로 커뮤니케이션할 수 있고 개발도 간소화할 수 있다. -> 시..

CS Interview 2020.11.30
728x90
반응형