프로그래밍 면접 이렇게 준비한다? 7

[필기,면접]객체지향 프로그래밍

대부분이 Java, Phyton 등을 사용하면서 객체지향언어에 대해 이해를 하고 있을 것 같다. 그래도 본 책에 있는 내용을 정리해보았다. 필자는 C++사용자라 가비지 컬렉터에 대해 잘 모르지만 면접에서 자주 물었던 개념이다. C++ 사용자라면 스마트 포인터에 대해서도 알고있으면 좋다. 객체지향 프로그래밍 다형성 : 한 클래스에서 서로다른 매개변수로 한 메서드를 두가지 버전으로 정의, 부모 클래스와 서브클래스에서 정의한 메소드를 다르게 정의하여 서브 클래스의 인스턴스에 대해서는 서브클래스에서 정의한 메서드가 부모 클래스에서 정의한 메서드를 오버라이드하도록 할 수 있음 가비지 컬렉터 : 메모리할당을 추적하고 할당된 메모리가 더 이상 필요없을 때 자동으로 해체하는 작업 스마트 포인터 : 메모리 누수(memo..

[필기,면접] 디자인패턴

디자인 패턴 : 객체지향 프로그래밍에서 공통적인 디자인 문제를 찾아내고 해결하는 가이드라인 프레임워크나 클래스 라이브러리와 달리 추상적임 왜 쓰는가? -> 공통적인 SW디자인 문제를 해결하는데 도움이 되기때문 디자인 문제와 그 해결책을 논할 떄 디자인패턴이 간결한 용어모음을 제공 *안티패턴 : 사용하면 안 되는 패턴, 비효율적이거나 효과적이지 못한 코드를 만들어냄 생성패턴 - 싱글톤 : 어떤 클래스의 인스턴스 개수가 최대 한개를 넘지 않도록 하는 패턴 싱글톤이 정적 메소드보다 나은 이유? 상속과 인터페이스, 동적 바인딩, 다수 객체로 전환가능(싱글톤패턴을 안쓰는 셈) 빌더 : 객체가 어떤 식으로 구축되는지에 대해 모르는 상황에서 단계별로 객체를 생성하는 패턴, 객체를 초기화하는 과정이 깔끔하고 이해하기 ..

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

동시성 스레드 : 어플리케이션 실행의 기본 단위, 실행중인 어플리케이션은 최소 하나의 스레드로 구성 각 스레드마다 별도의 스텍이 있으며, 다른 스레드와 독립적으로 움직임, 파일핸들이나 메모리 자원을 공유함 -> 공유자원에 대한 접근을 잘 제어해야함 스레드는 운영체제에서 생성 및 관리 - 커널 수준 스레드 운영체제 위의 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/..

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

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