SQL
CS
스쿼드 튜터님 설명
- OOP (Object Oriented Programming)
프로그래밍 패러다임. 여기서 패러다임이란 프로그래밍을 구성하는 요소들을 어떤 관점으로 보고 이해할 것인가 하는 방식이다.
OOP는 프로그래밍에 필요한 데이터를 추상화해서 상태(속성)와 행위(함수)를 가진 객체로 만들고, 그 객체들의 상호작용을 통해 로직을 구성한다.
e.g. 파이썬의 class
- 상속을 이용하기 때문에 코드의 재사용성이 증가한다.
- 클래스를 사용하여 모듈화를 진행하므로 대규모 프로그램 개발에 적합하다.
- 객체 단위로 코드를 나누어 작성하기 때문에 디버깅이 쉽고 유지보수에 적합하다.
- 주요 특징: 추상화, 상속, 다형성, 캡슐화
참고)
프로그래밍 패러다임의 다른 종류로 함수형 프로그래밍 -> 파이썬에서 사용
함수형 프로그래밍은 자료 처리를 함수의 계산으로 취급한다.
- 동일한 입력에는 항상 같은 값을 반환해야 한다는 특징.
- 코드가 추상화되어 이해하기 어려울 수도 있다.
e.g. list comprehension, map, filter, lambda
arr = [ 0 for i in range(n) ] 는
다르게 써보면
arr = []
for i in range(n):
arr.append(i) 와 같다.
인접 행렬은 2차원으로 표현되며, 메모리가 정점의 제곱수를 필요로 한다. O(v^2)
반면, 인접 리스트는 각 정점에 연결된 정점과 간선으로 나타낸다.
따라서 O(v+e) 의 공간 복잡도로 인접 행렬에 비해 더 효율적이다.
IaaS (Infrastructure as a Service)
- 가상화된 컴퓨팅 리소스 제공
- 클라우드 서비스 제공 업체가 제공하는 가상화된 가상 서버, 스토리지, 네트워크 등의 인프라를 이용.
e.g. Amazon 의 AWS, Microsoft Azure, Google의 GCP
PaaS (Platform as a Service)
- 애플리케이션 개발과 배포를 빠르게 수행하며, 유지보수 및 업그레이드를 쉽게 수행하기 위한 서비스
- 사용자가 자체적으로 애플리케이션을 구축하는 것보다 더 쉽게 배포, 관리 가능
- 라이브러리, 프레임워크, 데이터베이스를 선택만 하면 관리할 필요 없이 개발과 배포 가능
e.g. Heroku, Google App Engine, Microsoft Azure App Service
SaaS (Software as a Service)
- 가장 일반적인 서비스 모델
- 사용자가 설치할 필요 없이, 웹 브라우저를 통해 액세스 가능
- 사용자에게 완전한 애플리케이션을 제공
e.g. 구글 드라이브, 구글 스프레드 시트, 드롭박스, 마이크로소프트 오피스 365
- 주소창에 google.com을 치면 일어나는 일을 설명해보세요. (면접 많이 출제됨)
1. 사용자가 브라우저에 URL(www.google.com)을 출력
2. DNS 서버에 도메인 이름(google.com)으로 서버의 IP 주소를 찾음
3. IP 주소로 웹 서버에 TCP 3 way handshake로 연결 수립 ()
4. 클라이언트는 서버에 HTTP 요청 메세지 보냄
5. 웹 서버는 HTTP 응답 메세지 보냄
6. 도착한 HTTP 응답 메세지는 웹 페이지 데이터로 변환되고, 웹 브라우저에 의해 출력됨