객체지향 4가지 특징: 추상화, 상속, 다형성, 캡슐화
상속을 왜 사용하는가 :
만약 상속을 사용하지 않는다면, 비슷한 기능을 구현할 때마다 동일한 코드를 작성해야 하기 때문에,
상속을 사용해서 클래스의 기능을 재사용하고, 확장할 수 있습니다.
🐬Feedback
다형성과 캡슐화에 대한 설명이 조금 부족함. 이 부분은 추가적인 공부가 필요함.
객체지향에 대해 설명할 때, 절차지향과 비교하면서 설명해도 좋음.
캡슐화는 금융관련 코딩에만 쓰이지 않기 때문에 한정적인 표현은 좋지 않음. 어디에 사용하는 것이 적합하다고 설명하는 게 좋음.
HTTP / HTTPS 차이
HTTP(80)
- 서버랑 클라이언트가 웹상에서 정보를 주고 받을 수 있도록 해주는 프로토콜을 의미, http는 암호화를 하지 않는 프로토콜, http는 평문으로 되어있어서 탈취의 가능성이 있음
HTTPS(443)
- 보안성이 취약한 문제를 극복하기 위해 암호화를 하는 http프로토콜
HTTP 요청과 응답을 암호화하고 해당 요청과 응답에 디지털 서명을 한다
🐬Feedback
어떤 용어를 말할 때, 정확한 약자가 생각나지 않을 경우 면접에선 그 용어를 사용하지 않는 것이 좋음.
UDP / TCP 차이
UDP(UserDatagramProtocol)
- 비연결형 데이터그램 방식의 프로토콜로 신뢰성을 보장하지 않음
- TCP에 비해 구조가 단순하고 빠름
ex)스트리밍, 게임 같은것에 주로 사용, 데이터가 손실되더라도 속도가 더 중요한 경우 udp를 사용함
TCP(TransmissionControl Protocol)
- 연결형 가상회선 방식의 프로토콜로 신뢰성을 보장함
- UDP에 비해 구조가 복잡하고 느려요.
ex)보안이 필요할 때 사용(공인인증같은), 파일 전송/이메일 전송 일반적인 데이터는 손실이 안돼서 tcp를 사용함
OSI 7계층
1계층_물리 : 물리적 접속(허브, 리피터) (비트(bit) 단위)
2계층_데이터링크 : 링크의 접속(스위치, 브릿지, 랜카드) : 주소 할당 (MAC주소) (프레임(frame) 단위)
3계층_네트워크 : 데이터 교환(라우터, IP주소) (패킷 단위)
4계층_전송 : 정확한 정보 교환(오류 검출 및 수정) (TCP, UDP, 포트번호) (TCP : segment 단위, UDP : Datagram 단위)
5계층_세션 : 응용 프로그램 간의 연결 관리(연결 및 연결 복구)
6계층_표현 : 데이터 번역(서로 다른 데이터 표현 방식 간 번역) (암호화, 복호화)
7계층_응용 : 응용프로그램 서비스 제공(각종 응용 프로그램) (HTTP, FTP, SMTP, DNS)
🐬Feedback
슬랙을 OSI계층으로 표현하라는 질문. (Case : 슬랙 메시지를 보내는 상황)
1계층_물리 :
메시지를 발송하기 위해 인터넷이 필요함. 무선 통신 매체를 통신해서 데이터를 전송하기 위한 신호로 바꿈.
2계층_데이터링크 :
물리 계층에서 어플리케이션(추상화)계층까지 가기 위한 계
3계층_네트워크 :
전송된 메시지를 패킷으로 쪼개어 패킷에 담아 전송한다. 또, 패킷의 송신지와 수신지 주소들을 포함하는 필드를 가진다. 최적의 데이터 경로를 설정해준다.
(ex. 내배캠 민준 튜터님, 최고 ==> 내배캠 / 민준 / 튜터님, / 최고)
4계층_전송 :
TCP/UDP 중 어떤 것으로 보낼지 설정. 패킷의 전송이 유효한지, 전송에 실패된 패킷을 재전송 하는 등 신뢰성 있는 통신을 보장함. 메시지를 전송하여 도착함.
5계층_세션 :
슬랙은 켰지만, 로그인이 안 돼있거나 화면을 켜지 않으면 메시지를 볼 수 없음. 즉 메시지를 보기 위해 어떠한 세션을 연결해줌.
6계층_표현 :
암호화인지, 아닌지 구분함.
7계층_응용 :
슬랙(어플리케이션) 그 자체
배열(Array)과 연결리스트(Linked list) 차이
배열이랑 연결리스트 공통점 : 선형구조(1차원적)
배열은 정적자료구조, 연속된 메모리 주소를 할당받기 때문에 인덱스를 가지게 됨. 인덱스를 가지고 있기 때문에 접근과 탐색에 용이함. 수정이 어려움
연결리스트는 동적자료구조, 연속된 메모리 주소를 할당 받지 않고, 노드 안에 다음 노드의 주소를 가지고 있음.데이터 추가/삭제가 자유로움
🐬Feedback
어렵다라는 표현이 조금 애매할 수 있음. (왜 어렵나요? 라는 역질문 받을 수 있음) 다른 거에 비해 속도가 더 빠르다, 용이하다
데이터 추가/삭제_시간복잡도: 배열이 O(n), 연결리스트 O(1)
일반적으로 시간복잡도는 배열 O(1), 연결리스트 O(n)
SQL과 NoSQL 차이
SQL: DBMS를 조작하기 위한 프로그래밍 언어
(DDL, DML, DCL, TCL)
스키마 : DB의 구조와 제약 조건에 관한 전반적인 명세를 정의한 메타데이터의 집합
SQL 데이터베이스 관계형 데이터베이스, NoSQL 데이터베이스는 비관계형 데이터베이스
SQL
: 행과 테이블과 같은 구조화된 데이터를 관리할 수 있도록 하는 기존 접근 방식의 프로그래밍 언어
NoSQL(Not Only SQL)
: 유연한 비관계형 접근 방식을 제공하여 구조화되지 않은 데이터 또는 동적 데이터를 처리
🐬Feedback
SQL , NoSQL 둘다 채팅서비스를 구현할 수 있음. 근데 어떤 걸로 만들 것인지 본인이 설득하는 게 필요함.
조인과 서브쿼리 차이
조인은 두 개 이상의 테이블을 결합하는 데 사용, 서브쿼리는 쿼리 내에서 다른 쿼리를 실행하는 데 사용.
조인
: 일반적으로 더 효율적이며 데이터를 조회하는 더 직관적인 방법.
서브쿼리
: 복잡한 쿼리를 작성하는 데 사용할 수 있지만 성능이 저하될 수 있음.
자료구조
스택은 LIFO, 큐는 FIFO
스택
: 재귀함수를 구현할 수 있고, DFS탐색에 사용됨.
큐
: BFS탐색에 사용되어 작업이 순차적으로 진행될 때 사용됨.
트리와 그래프
트리
: 그래프 중 하나이지만 특수한 목적이 있는 자료구조. 사이클이 없고 루트노드 혹은 부모-자식 관계가 존재함. (계층이 존재함)
그래프
:노드와 노드 간을 연결하여 방향 혹은 무방향 그래프가 있고, 사이클이 존재할 수 있음. (네트워크로 존재함)
소프트웨어 개발 표준문서
SRS(Software Requiremetns Standards)
: 소프트웨어가 만족해야하는 요구사항을 상세하게 명세한 문서,
SDS(Software Design Standards)
: 소프트웨어의 전반적인 설계에 대해 상세하게 명세한 문서
SCS(Software Code Standards)
: 소프트웨어를 코딩하기 위해 사용되는 프로그래밍 언어, 방법, 룰, 그리고 툴을 정의한 문서
📁추가 내용
✨Keyword
클라이언트, 서버, RESTful, OSI 7계층, TCP/IP 4계층별 설명, 보안, DBMS(데이터베이스 관리 시스템)
클러스터링, 병렬컴퓨팅, 프로토콜, HTTP, HTTPS, HTML
클라이언트-서버
클라이언트
: 네트워크를 통해 서버에 요청을 하고 서비스를 제공받는 주체
(ex. 모바일에서 음식 배달 서비스 요청, 데스크탑에서 게임 웹사이트에서 게임 다운로드 버튼 클릭)
서버
: 네트워크를 통해 클라이언트의 요청을 받고 서비스를 제공하는 주체는 모두 서버
서버 종류:
- 클라우드 서버
- 웹 서버
- 데이터베이스 서버
- 어플리케이션 서버
- 프록시 서버
클러스터링-병렬컴퓨팅
클러스터링
: 네트워크에 접속된 다수의 컴퓨터들을 통합하여 하나의 거대한 병렬 컴퓨팅 환경을 구축하는 기법
(꼭 하나의 작업만을 위한 것은 아님)
병렬 컴퓨팅
: 하나의 큰 문제를 여러 컴퓨터가 나누어 해결하는 방법, 2개 이상의 CPU가 각자 맡은 역할을 수행하는 개념
(꼭 같은 시스템을 사용하는 것은 아님)
Domain-DNS
Domain(도메인)
: 네트워크 상에서 호스트를 가리키는 이름
(ex. www.google.com, www.naver.com)
DNS(Domain Name System)
: 컴퓨터가 읽기 편한 구조인 IP주소를 도메인 이름으로 바꿔주는 시스템을 의미
(원래 192.xxx.xxx.xxx ==> www.naver.com, www.google.com 이런 도메인 이름으로 바꿔주는 시스템)
RESTful
: HTTP와 URI 기반으로 자원에 접근할 수 있도록 제공하는 아키텍처를 지향하는 웹서비스
'특강' 카테고리의 다른 글
웹 심화 이해 (0) | 2024.08.14 |
---|---|
웹 기본 이해 (0) | 2024.08.12 |
CS 특강(소프트웨어 설계) (0) | 2024.07.26 |
CS 특강(컴퓨터 구조와 운영체계) (0) | 2024.07.25 |
Git 기초_git 초기 설정 (0) | 2024.07.12 |