Sign In
TIL 웹개발

TIL 웹개발 - CS 모의 면접 정리

서경태
우선 CS 면접의 경험을 정리해보면, 왜 CS를 공부해야하는지 이제서야 알게 된 느낌이었다.
단순히 개념과 설명을 반복해서 표현하는게 아니라 각 개념들 간 관계를 알고 차이점까지 설명할 줄 알아야 실무에서도 적용할 수 있다.
💬
주로 두 가지 개념에 대해 묻는다.
이렇게 두 가지를 물어보는 이유는 차이점이 존재하기 때문에 그 특징을 잘 설명하는 것이 중요하다.
1.
배열, 연결리스트
자료구조에서 배열과 연결리스트는 모두 데이터를 저장하고 관리하는데 사용된다.
배열
연속적인 메모리 공간에 정하는 데이터 구조
고정 크기를 가지며 한번 선언되면 크기를 변경할 수 없다.
→ 이는 단점으로도 작용하는데 배열의 크기를 동적으로 변경할 수 없다.
인덱스를 사용해 데이터에 접근이 빠르다. → O(1)의 시간복잡도를 가진다.
삽입 및 삭제의 비효율성 → 배열 중간에 삽입하거나 삭제할 경우 나머지 요소들을 이동시켜야하므로 O(n)이 걸린다.
연결리스트
각 요소가 노드로 구성되고, 각 노드는 데이터와 다음 노드를 가리키는 포인터를 표함되는 데이터 구조
동적 크기로 필요에 따라 노드를 추가하거나 제거하여 크기를 동적으로 변경할 수 있다.
→ 각 노드는
효율적인 삽입/삭제 리스트의 중간에 요소를 삽입하거나 삭제하는데 O(1) 시간이 소요된다.
→ 반면 특정 위치를 찾는데 O(n)의 시간이 걸려 접근이 느리다.
비연속적 저장으로 메모리 활용이 유연하다.
2.
프로세스와 스레드
프로세스
실행중인 프로그램의 인스턴스를 의미하며, 프로그램이 메모리에서 실행되는 상태를 말한다.
각 프로세스는 독립된 메모리 공간을 가지며, 다른 프로세스와 메모리 공간을 공유하지 않는다.
실행에 필요한 자원(파일, 메모리, CPU 등) 을 소유한다.
운영체제는 프로세스를 생성, 스케쥴링, 종료등의 작업을 관리한다.
한 프로세스의 오류가 다른 프로세스에 영향을 미치지 않는다.
스레드
프로세스 내에서 실행되는 작업의 단위
프로세스는 하나 이상의 스레드를 가질 수 있으며, 이를 멀티스레딩이라고 한다.
같은 프로세스 내의 스레드들은 메모리 공간(코드, 데이터, 힙)을 공유한다.
→ 각 스레드는 독립적인 스택을 가진다.
스레드는 프로세스보다 생성 및 종료에 필요한 자원이 적다. → 경량 프로세스
여러 스레드를 사용하여 병행 작업을 수행할 수 있어, 프로그램의 성능을 향상시킬 수 있다.
스레드 간 통신은 같은 프로세스 내에서 이루어지기 때문에 프로세스 간 통신보다 빠르다.
💬
프로세스 : 웹 브라우저, 텍스트 편집기, 시스템 유틸리티 등 각각 독립적으로 실행되는 프로그램
스레드 : 웹 브라우저 내에서의 탭들, 텍스트 편집기의 자동 저장 기능, 시스템 유틸리티의 배그라운드 작업 등 병행 처리가 필요한 작업
3.
TCP, UDP
우선 이 용어들은 네트워크와 관련된 것인데, 우리가 인터넷을 사용할 때 서버와 어떻게 상호작용하는지에 대한 내용이다. 패킷을 통해 데이터를 전송하는데 이 패킷을 어떻게 다루는지에 대한 규약이다.
TCP(Transmission Control Protocol)
서버와 통신할때 syn, arc를 통해 신뢰성을 보장하는 연결지향적 프로토콜
만약 분할된 패킷을 잃어버렸다면 서버에게 어떤 패킷이 없는지 알려주고 다시 전송을 받는다.
UDP에 비해 속도가 느리다.
UDP(User Datagram Protocol)
서버와 통신할때 TCP와 달리 일방향으로 주고 받는 비연결성 프로토콜
패킷을 잃어버려도 서버에게 다시 알리지 않는다.
TCP에 비해 속도가 빠르다.
비디오 스트리밍에 자주 사용된다.
4.
HTTP , HTTPS
HTTP (HyperText Transfer Protocol)
웹브라우저와 서버간에 데이터를 주고받기 위한 프로토콜
일반 텍스트로 데이터를 전송하기 때문에 보안에 취약하다.
보안이 필요하지 않은 웹사이트나 페이지에 주로 사용된다.
포트번호: 기본적으로 포트 80을 사용한다.
HTTPS (HyperText Transfer Protocol Secure)
HTTP에 SSL 또는 TLS라는 암호화 프로토콜을 추가하여 보완성을 높인 프로토콜
HTTPS를 통해 주고받는 데이터는 암호화되어, 중간에 누군가가 데이터를 가로채더라도 내용을 읽을 수 없도록 보호
금융 거래, 로그인 정보 입력 등의 민감한 데이터가 오가는 웹사이트에 주로 사용
HTTPS는 포트 443을 사용한다.
5.
객체지향 프로그램의 특징
캡슐화
객체의 속성과 데이터를 하나로 묶어 외부에서 객체의 내부 상태를 직접 접근하지 못하도록 보호하는 것 → 객체 내부의 세부 구현을 감추고, 외부에는 필요한 부분만 공개해 데이터의 무결성을 유지한다.
상속
기존 클래스의 속성과 메소드를 새로운 클래스가 물려받아 재사용 하는 것 → 코드의 재사용성을 높이고 계층 구조를 형성한다.
다형성
동일한 메소드나 연산자가 서로 다른 객체에서 다르게 동작하도록 하는 것
주로 메소드 오버로딩과 메소드 오버라이딩을 통해 구현된다.
추상화
복잡한 시스템에서 필요한 부분만을 모델링하여 표현하는 것
구체적인 구현을 감추고, 필요한 기능만을 인터페이스로 제공함으로 써 복잡성을 줄이고 이해하기 쉽게 한다.
6.
SQL, NoSQL
SQL (Structured Query Language)
관계형 데이터베이스 관리 시스템(RDBMS)로 데이터를 테이블 형태로 저장한다. 각 테이블은 행과 열로 구성되며, 데이터는 엄격하게 구조화되어 있다.
데이터베이스 스키마(schema)를 사전에 정의해야 하며, 모든 데이터는 이 스키마를 따라야 한다.
NoSQL (Not only SQL)
비구조화된 데이터로 테이블 기반이 아닌 다양한 데이터 모델(키-값, 문서, 그래프, 컬럼 패밀리 등)을 지원한다. → 비정형 데이터, 반정형 데이터 처리에 적합
스키마가 없거나 굉장히 유연하다.
Subscribe to 'kyugntae-ai'
Subscribe to my site to be the first to receive notifications and emails about the latest updates, including new posts.
Join Slashpage and subscribe to 'kyugntae-ai'!
Subscribe
👍