분류 전체보기 264

[필기,면접]운영체제_스레드

동시성 스레드 : 어플리케이션 실행의 기본 단위, 실행중인 어플리케이션은 최소 하나의 스레드로 구성 각 스레드마다 별도의 스텍이 있으며, 다른 스레드와 독립적으로 움직임, 파일핸들이나 메모리 자원을 공유함 -> 공유자원에 대한 접근을 잘 제어해야함 스레드는 운영체제에서 생성 및 관리 - 커널 수준 스레드 운영체제 위의 SW계층에서 구현 - 녹색 스레드 , 멀티코어 활용X ,Blocking I/O, Synchronous I/O 구현힘듬, 멀티코어 시스템이 주류가 되면서 거이 안씀 동시에 돌릴 수 있는 스레드수는 컴퓨터 코어 갯수로 제한-> O/S에서 각 스레드에 조금씩 시간을 나눠주면서 여러 스레드 운영 선점형 스레딩 : O/S에서 마음대로 실행을 멈추고 다른 스레드를 실행시킬 수 있음 협력형 모델 : 어..

[필기,면접] 정렬

이번에는 자료구조와 알고리즘 및 프로그래밍언어를 배우는데 있어 기본으로 많이 나오는 정렬에 대해 간단하게 알아보자 먼저, 정렬을 할때 다음과 같은 조건을 따지고 어떤 정렬을 쓰며 좋을지 생각해야한다.정렬 --> 1. 데이터양 2. 데이터와 메모리 - 데이터가 메모리에 있어야 효율적 3. 데이터가 정렬된 정도 - 방법에 따라 다름 4. 필요한 추가 메모리 양 - 원소를 바꾸는 방식으로 가능한지 5. 상대위치 보존여부 : 안정정렬 *안정정렬 : 동일한 값에 대해 기존의 순서유지 최적의 정렬이란 : 정렬된 데이터, 데이터의 크기, 중복된 키값을 따지며 최적의 정렬을 선택해야한다. 정렬 알고리즘은 최악기준 O(nlogn)보다 빠를수 없다. 선택정렬 : 첫 원소부터 가장 작은 값을 첫 인덱스와 교환 ~~~~~ 끝..

[필기,면접]재귀호출과 메모리 영역

본 책에서 재귀호출에 대한 내용이 있었다. 재귀호출은 코딩테스트에서도 기본문제로 자주 나오는 편이고 필자는 필기시험에서 피보나치수를 재귀호출을 사용하여 손코딩을 하는 문제를 많이 봤었다. 혹시 모르는 사람을 위해 간단한 Persuade code를 보자면 12345678910111213141516171819202122#include#include#include#include#include#include#include using namespace std; int fibonacci(int n) { if (n==0) { printf("0"); return 0; } else if (n==1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(..

[필기,면접] 배열, 문자열 인코딩

이번에는 배열과 문자열 인코딩에 관한 내용을 잠깐 살펴볼 것이다. 필기시험이나 면접에서 질문받은적은 거이 없지만 기본내용이고 책에서 소개하고 있기에 간단하게 정리하였다. 책 내용을 바탕으로 또 알아야 할 부분에 대해 잠깐 살펴보자 배열 : 어떤 메모리 블록에 연속적으로 나열된 같은 유형의 변수모음연결리스트와 마찬가지로 선형적 저장, 특징은 다르다탐색 연산은 O(1) - 인덱스만 알면 바로 찾음, 삭제ㅡ삽입이 느림 O(n), *포인터 상수 : char *const ptr -> 다른 위치를 가리키는걸 바꿀 수 없다, 포인터가 가리키는 메모리 내용(char) 변경가능 상수 포인터 : const char* ptr -> 다른 위치를 가리키는걸 바꿀 수 있지만, 그 메모리의 내용을 변결할 순 없다. 문자열 : C/..

백준 [16234] 인구이동

삼성 SW역량테스트 문제이다. 링크 : https://www.acmicpc.net/problem/16234BFS를 통한 4방향탐색을 진행하면서 문제의 조건에 맞게끔 국경선을 열어 인구이동을 진행하여 각 칸의 인구수를 갱신시켜준다. 유의할점은 BFS를 한번진행하고 끝날 때, 인구수를 갱신시켜주면 Time Limit가 발생한다. 처음 모든 칸에 대한 인구이동이 일어난 후 모든칸에 대해 인구수를 갱신시켜야 Time Limit를 피할 수 있다. 이를 위해 한 영역에 대한 나라수와 총합을 저장하는 변수가 필요하다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606..

[C++] 가상함수 테이블

**면접에서 가상함수가 무엇인지 가상함수 테이블의 생성 등에 대해 묻는 경우가 있다.** 가상함수의 특징은 동적 바인딩으로 컴파일이 아니고 프로그램이 실행, 함수가 호출될 때, 바인딩할 주소가 결정되는것 그렇기에 컴파일은 빠르지만 실행시간이 느릴 수 있다. 동적 바인딩을 위한 주소를 담을 메모리를 미리 만들어 줘야한다. 가상함수 테이블 한 개 이상의 가상함수를 포함하는 클래스에 대해서는 컴파일러가 다음 가상함수 테이블을 만든다. 이것을 V-Table(Virtual Table)이라고도 하는데, 이는 실제 호출되어야 할 함수의 위치정보를 담고 있는 테이블이다. 12345678910111213141516171819202122232425262728293031#include#include#include using..

C , C++, C# 2019.03.12

[필기+면접] 연결리스트, 트리

최근에 도서관에서 발견한 '프로그래밍 면접 이렇게 준비한다'를 읽으면서 내용을 간단하게 요약하여 남기면 좋을 것 같다는 생각이 들었다. 취업준비를 하면서 매일 참고했던 자료들을 돌이켜보면 봤던 내용을 보고 1회성에 멈춘것이 마음에 걸렸다. 물론 공부내용을 연습장에 적었지만 나만의 사이트를 통해 간단하게 정리하면 더 좋을것 같다. 이 책은 학부과정을 충실히 이해하면 알 수 있는 기본내용으로 필기시험 및 기술면접을 돌이켜보면 반정도는 관련내용이 들어있었다. 내가 잘 아는 내용보다는 생소하고 필요한부분만을 간단하게 정리할 예정이다. 코드수정 -> 1. 데이터가 함수에 제대로 들어오는가 2. 코드 한줄한줄 작동하는가 3. 함수에서 데어터가 올바르게 나오는가 4. 빈번히 발생되는 오류조건 체크(비어있는 자료, N..

C++ 가상함수 이해정리

참고 : https://koocci.github.io 가상함수를 하기 전, 다음을 확인하자. int main(){ Base* bptr = new Derived(); //컴파일 ok Derived* dptr = bptr; //컴파일 에러 ... Derived* dptr = new Derived(); // 컴파일 ok Base* bptr = dptr; // 컴파일 ok}// Base는 부모 클래스, Derived는 자식 클래스Derived 클래스는 Base 클래스의 유도 클래스이므로 Base 클래스의 포인터 변수로 Derived 객체의 참조가 가능하고 문제 없이 컴파일이 가능하다. 그러나 bptr은 Base형 포인터이므로 bptr이 가리키는 대상은 Base 객체일 수도 있는 것이다. 그럴 경우, Derive..

C , C++, C# 2019.03.06

C++ 함수 오버라이딩 간단정리

참고 : https://koocci.github.io/ 다형성과 상속은 아주 중요한 개념이다. 항상 머리속으로 생각하고 있어야 한다. 이와 함께 C++ 함수 오버라이딩에 관해 알아보자. 알아보기전에, 보통 C++프로그래머라면 기술시험 및 면접에서 오버로딩(Overloading)과 오버라이딩(Overriding)에 대해 자주 묻는다. 오버로딩(Overloading) : 같은 이름의 함수에 매개변수를 다르게 사용하여 매개변수에 따라 다른 함수가 실행 특징) 메소드 이름이 같다. 리턴형이 같아도 되고 달라도 된다. 파라미터 갯수가 달라야함 파라미터 갯수가 같으면, 자료형이 달라야함 오버라이딩(Overriding) ; 상속받았을때, 부모클래스의 함수를 사용하지 않고 다른 기능을 실행할때, 함수를 자식클래스에 같..

C , C++, C# 2019.03.06

C++ 다형성,상속 간단정리

출처 : https://koocci.github.io/c++/2016/11/17/C++_16.html 상속 - 부모꺼를 자식이 물려받음 -> 자식은 자식꺼 + 부모꺼 사용가능 자식 클래스의 생성자는 자신이 상속한 부모클래스의 맴버를 초기화해야함 -> 부모클래스를 호출하는 방식으로(이니셜라이져사용)*자식 클래스 객체생성과정은 부모클래스를 무조건 호출!! 명시하지 않으면 부모클래스의 void 생성자 호출 자식 클래스 객체가 소멸될 떄, 자식 클래스 소멸자 실행 후 부모클래스 소멸자 실행 접근 제한자에서의 상속은 해당 접근 제한자보다 넓은 것들을 지정한 걸로 바꿈Ex) Class 자식 : private 부모 -> private보다 넓은 맴버는 private로변경 -> 다른 클래스가 솔찍히 접근할 수 없다. (..

C , C++, C# 2019.02.26