분류 전체보기
[프로그래밍 패러다임] 선언형과 함수형 / 객체지향 / 절차형
본 포스팅은 [면접을 위한 CS 전공지식 노트]의 내용을 참고하여 작성하였습니다. 1.2 프로그래밍 패러다임 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론이다. 어떤 언어는 특정 패러다임을 지원하기도 하는데, 대표적으로 jdk 1.8 이전의 JAVA가 객체지향 프로그래밍, 하스켈은 함수형 프로그래밍을 지원한다. C++, 파이썬, 자바스크립트는 여러 패러다임을 지원한다. 프로그래밍 패러다임은 크게 선언형과 명령형으로 나뉜다. 선언형은 함수형이라는 하위 집합을 갖고, 명령형은 객체지향, 절차지향으로 나눌 수 있다. 1) 선언형과 함수형 프로그래밍 선언형 프로그래밍은 '무엇을' 풀어내는가에 집중하는 패러다임이다. 함수형 프로그래밍은 선언형 패러다임의 일종으로, 작은 순수 함수들을 블록..
[디자인 패턴] MVC 패턴 / MVP 패턴 / MVVM 패턴
본 포스팅은 [면접을 위한 CS 전공지식 노트]의 내용을 참고하여 작성하였습니다. 1.1 디자인 패턴 프로그램을 설계할 때 발생했던 문제점들을, 객체 간의 상호 관계를 이용하여 해결할 수 있도록 '규약' 형태로 만든 것이다. 1) MVC 패턴 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 디자인 패턴이다. 애플리케이션의 구성 요소를 세 가지 역할로 구분하여 개발 프로세스에서 각각의 구성 요소에만 집중해서 개발 가능하다. 재사용성과 확장성이 용이하고, 애플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해진다. 모델 모델은 애플리케이션의 데이터인 데이터베이스, 상수, 변수 등을 뜻한다. 뷰에서 데이터를 생성하거나 수정하면 컨트롤러를 통해 모델을 생성하거나 갱신한다. 뷰 inpu..
[디자인 패턴] 프록시 패턴 / 이터레이터 패턴 / 노출모듈 패턴
본 포스팅은 [면접을 위한 CS 전공지식 노트]의 내용을 참고하여 작성하였습니다. 1.1 디자인 패턴 프로그램을 설계할 때 발생했던 문제점들을, 객체 간의 상호 관계를 이용하여 해결할 수 있도록 '규약' 형태로 만든 것이다. 1) 프록시 패턴 대상 객체에 접근하기 전, 그 접근에 대한 흐름을 가로채 객체 앞단의 인터페이스 역할을 하는 디자인 패턴이다. 이를 통해 객체의 속성, 변환 등을 보완할 수 있고 보안, 캐싱, 로깅, 데이터 검증에 사용한다. - 프록시 서버 서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템 혹은 응용 프로그램이다. 2) 이터레이터 패턴 이터레이터를 사용하여 컬렉션의 요소들에 접근하는 디자인 패턴이다. 순회 가..
[디자인 패턴] 싱글톤 패턴 / 팩토리 패턴 / 전략 패턴 / 옵저버 패턴
본 포스팅은 [면접을 위한 CS 전공지식 노트]의 내용을 참고하여 작성하였습니다. 1.1 디자인 패턴 프로그램을 설계할 때 발생했던 문제점들을, 객체 간의 상호 관계를 이용하여 해결할 수 있도록 '규약' 형태로 만든 것이다. 1) 싱글톤 패턴 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다. 보통 데이터베이스 연결 모듈에 많이 활용된다. 하나의 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에, 인스턴스를 생성할 때 드는 비용이 줄어드는 장점이 있다. 하지만 의존성이 높아진다는 단점이 있다. 싱글톤 패턴은 TDD(Test Driven Developmenet)를 할 때 문제가 된다. TDD를 할 때 단위 테스트를 주로 하는데, 단위 테스트는 서로 독립적이어야 하며 어떤 순서로든 실행할 수 있어야 한..
[SSAFY 8기] 비전공자 합격 후기 (면접 스터디 X)
안녕하세요! 저는 SSAFY 8기 교육생 하이플로입니다. 어느덧 9기 모집이 다가오고 있어, 저만의 합격 후기를 공유해드리려합니다 :) 삼성 청년 SW 아카데미 9기 모집안내는 아래 링크를 참고해주세요~!! 삼성 청년 SW 아카데미 9기 모집안내 www.ssafy.com 1. 지원서 접수 & 에세이 제출 저의 지원스펙은 다음과 같습니다. 최종학력 4년제 학사 졸업 학과 전자공학과 학점 3점대 초반 어학 관련 스펙 無 SW 관련 스펙 無 인턴, 취업 경력 無 제 생각엔 비전공자라면 SW 관련 스펙이 당락을 좌우하는 것 같지는 않습니다. 중요한 것은 함께 제출하는 에세이인데요! 지원서 제출 후 일정기간 내에 500자 내외의 에세이를 제출해야 합니다. 저는 에세이를 작성 및 퇴고하는 데 시간을 많이 쏟았습니다..
[자료구조] 5.3. 비선형 자료 구조
본 포스팅은 [면접을 위한 CS 전공지식 노트]의 내용을 참고하여 작성하였습니다. 5.3. 비선형 자료 구조 비선형 자료 구조란 일렬로 나열하지 않고, 자료 순서나 관계가 복잡한 구조를 말한다. 1) 그래프 그래프는 정점과 간선으로 이루어진 자료 구조를 말한다. 정점과 간선 ' 어떠한 곳에서 어떠한 곳으로 무언가를 통해 간다. ' 위에서 '어떠한 곳'은 정점(vertex)이고, '무언가'는 간선(edge)이 된다. 이와 같이 정점과 간선으로 이루어진 집합을 '그래프(graph)'라고 한다. 정점으로 나가는 간선을 해당 정점의 outdegree라고 하며, 들어오는 간선을 해당 정점의 indegree라고 한다. 또한, 간선과 정점 사이에 드는 비용을 '가중치'라고 한다. 2) 트리 트리는 그래프 중 하나로 ..
[자료구조] 5.2. 선형 자료 구조
본 포스팅은 [면접을 위한 CS 전공지식 노트]의 내용을 참고하여 작성하였습니다. 5.2. 선형 자료 구조 선형 자료 구조란 요소가 일렬로 나열되어 있는 자료 구조를 말한다. 1) 연결 리스트 연결 리스트는 데이터를 감싼 노드를 포인터로 연결해서 공간적인 효율성을 극대화시킨 자료구조이다. 삽입과 삭제에 O(1), 탐색에 O(n)이 걸린다. 위와 같이 prev 포인터와 next 포인터로 앞과 뒤를 연결한 것이 연결 리스트이다. 연결 리스트는 다음과 같이 3가지 연결 리스트가 존재한다. 싱글 연결 리스트: next 포인터만 가진다. 이중 연결 리스트: next 포인터와 prev 포인터를 가진다. 원형 이중 연결 리스트: 마지막 노드의 next 포인터가 헤드 노드를 가리키는 이중 연결 리스트. 2) 배열 배열..
[자료구조] 5.1. 복잡도
본 포스팅은 [면접을 위한 CS 전공지식 노트]의 내용을 참고하여 작성하였습니다. 5.1. 복잡도 복잡도는 시간 복잡도와 공간 복잡도로 나뉜다. 1) 시간 복잡도 문제를 해결하는 데 걸리는 시간과 입력의 함수 관계. 알고리즘의 로직이 얼마나 오랜 시간 걸리는지. 빅오 표기법*으로 나타냄. (빅오 표기법*: 가장 영향을 많이 끼치는 항의 상수 인자와 나머지 항을 없앤 것. 예를 들어 10n^2+n의 시간이면 O(n^2)로 표기한다.) 필요한 이유: 효율적인 코드로 개선하는 데 쓰이는 척도. 2) 공간 복잡도 프로그램을 실행시켰을 때 필요로 하는 자원 공간의 양. 정적 변수는 물론이고 재귀함수로 인해 동적인 공간을 계속해서 필요할 경우도 포함. int a[1005]; 위와 같은 코드를 예시로 들면, a 배열..