기술 정리 & CS/기술면접 대비 12

[기술면접 대비] Python & 자료구조

Python 자료구조 👉 Python의 list, dictionary의 메모리 접근 시간 복잡도 리스트 시간 복잡도 append, pop() : 특정 원소 추가, 삭제 - O(1) insert(), remove() : 특정 위치 원소 추가,삭제 - O(N) sort() : 정렬 - O(Nlog(N)) dictionary 시간 복잡도 내부적으로 해시테이블을 사용 데이터의 검색, 삽입, 삭제, 수정 - O(1) 👉 Python List는 Array vs Linked-list? Python의 List의 원소로는 다양한 자료형을 내포할 수 있어, Array처럼 연속된 메모리에 저장되기 어려움. 연속되지 않은 메모리에 저장된다는 점에서 Linked List와 좀 더 가깝지만, 다음 주소를 가리키는 방식이 아니기 ..

[기술면접 대비] Operating System 1 - Process, Thread

프로세스 & 스레드 👉 프로세스와 스레드의 차이 프로세스(Process) : OS로 부터 자원을 할당 받아 독립적으로 실행되고 있는 객체(프로그램) 프로세스별로 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당 프로세스당 최소 1개의 스레드(메인 스레드)를 가짐. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근 불가 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다. (ex. 파이프, 파일, 소켓 등을 이용한 통신 방법 이용) Context Switching 비용이 비교적 큼 / 동기화 작업 (공유 자원 관리) 필요 x 스레드..

[기술면접 대비] Operating System 3 - 메모리, 명령어

메모리 영역 종류 👉 메모리 영역 4가지 Code : 실행 명령과 코드를 포함 Data : 전역변수, 정적변수 (Static 변수나 Global 변수) Heap : 사용자가 동적으로 할당한 메모리를 위함 Stack : 지역변수, 매개변수, 반환값 등 일시적인 값 👉 메모리 계층 비교 레지스터 : 속도 빠름 / 용량 작음 / CPU 안에 있는 매우 빠른 임시 기억장치(휘발성)로 데이터를 저장할 방법이 없는 CPU는 레지스터를 거쳐 데이터를 전달함 캐시 : 속도 빠름 / 용량 작음 / CPU와 주기억장치 간의 메모리 사용 속도 향상을 위해 사용하는 메모리 (L1, L2 캐시) 주기억장치 : 속도 보통 / 용량 보통 / RAM과 같은 현재 CPU에서 활동되고 있는 메모리 보조기억장치 : 속도 낮음 / 용량 많..

[기술면접 대비] Operating System 2 - Mutex, Semaphore, DeadLock

DeadLock , 임계영역 👉 Deadlock (교착상태)의 개념과 막는 방법 Deadlock은 서로 필요한 자원 사용을 위해 상대방의 종료를 기다리며, 무한 대기에 빠지는 상황 ex) 첫 번째 스레드는 두 번째 스레드가 들고 있는 객체의 락이 풀리기를 기다리고, 두 번째 스레드도 첫 번째 스레드가 들고 있는 객체의 락이 풀리기를 기다리는 상황 예방 : 기존 deadlock이 프로세스들 끼리 자원 사용시 서로 상호 배제한단 것이 문제가 되었으니, 자원을 공유하게 하여, 대기에 빠지지 않도록 함 회피 : 프로세스에 대한 교착 상태 가능성을 미리 판단하는 것, 예로 은행원 알고리즘 처럼 사전에 필요로 하는 최대 자원을 파악하여 교착상태를 최대한 피함 탐지 및 회복 : deadlock이 발생함을 확인하고, ..

[기술면접 대비] Database 3 - Index, Replication

Index & Cluster Index, Non-Clustered Index 👉 Index란? Index 는 DB Table에 대한 검색 성능의 속도를 높여주는 자료 구조 👉 Index 특징 필드에 Index 설정시 Index Table이 별도의 메모리 공간에 물리 주소와 함께 생성됨 (추가 메모리 사용 발생) Index Table에 쿼리 요청시 해당 주소로 바로 연결하여 결과 값을 조회 index는 테이블은 특정 key로 찾으며, 해당 key 값은 B-Tree 형태로 평소 저장되어 빠르게 탐색 가능 👉 Clustered Index, Non-Clustered index 란? Clustered Index : 특정 컬럼을 index로 설정하여 index table에 정렬된 상태로 유지하는 것 (ex. id를..

[기술면접 대비] Database 2 - Transaction, 격리레벨, 동시성

Transaction 개념과 ACID 원칙 👉 Transaction 이란? DB에서 Query문에 의해 발생하는 일정 작업의 최소 단위 👉 Transaction 4원칙 트랜잭션의 4원칙으로 원자성, 일관성, 독립성, 영구성을 의미 원자성 : 트랜잭션 연산의 단위는 다 반영되거나, 다 안되거나 일관성 : 트랜잭션을 반복적으로 실행하더라도 그 결과 일정한 것 독립성(isolation) : 여러개의 트랜잭션간 분리되어서 실행 되는 것 영구성 : 한번 트랜잭션이 완료되면, 그 결과가 유지되는 것 👉 Transaction의 ACID 원칙 깨진 사례 ACID 깨진 경험이 있었냐, 1개의 함수에서 2개의 Table을 각각 수정하는 경우, 1번째 경우만 성공하고 2번째에서 오류 나는 경우에서 Transaction Tr..

[기술면접 대비] Django, DRF, 배포

Django 👉 Django의 장단점은? 장점 : 관리자 admin 패널 제공, 기존에 개발되어 있는 다양한 패키지들이 많음, 로그인 로그아웃 등 미리 구현 단점 : 기본적으로 요소들이 다 포함되어 있기 때문에 오히려 무겁다는 점, 자유도가 떨어집니다. 👉 Django의 MTV 패턴 시스템은 무엇입니까? Model : DB에 대한 ORM Model Template : 사용자에게 보여지는 화면 View : 프로그램이 동작하는 비즈니스 로직 부분 참고 링크 [Django] MTV 패턴과 동작 Flow Django https://www.djangoproject.com/ The web framework for perfectionists with deadlines | Django Django Django make..

[기술면접 대비] Web 일반 & 보안

HTTP 👉 HTTP 란? Hyper Text Transfer Protocol로 클라이언트와 서버 간에 정보를 주고 받는 프로토콜 (규약) HTTP Request 메시지 = Request Header + Request Body HTTP Response 메시지 = Response Header + Response Body 👉 HTTP Header HTTP 메시지에 대한 정보를 포함하며, key-value 형태 content-type : 본문의 Type을 나타냄. ex) application/json, text/html Accept : 클라이언트가 처리 가능한 Type을 나타냄 ex) application/json, text/html 등 👉 HTTP 의 주요 특징 비연결 (서버-클라 전송 완료시 연결 종료, ..

[기술면접 대비] Network

네트워크 계층 구조 (OSI 7계층, TCP/IP 5계층 등) 👉 OSI 7 계층 이란? 두 호스트가 네트워크를 통해 데이터를 전달하면서 수행되는 일련의 프로토콜을 의미 응용->표현->세션->전송->네트워크->데이터링크->물리 로 수행됨 응용 계층 : 응용 서비스를 통해 최초 데이터를 생산 표현 계층 : 시스템 간의 형식을 변환 하며 암호화 복호화, 인코딩-디코딩 등을 수행 (SSL 수행) 세션 계층 : 양 끝단 연결 기기에 대한 세션 관리 (TCP/IP 세션을 만들고 없애는 책임) 전송 계층 : TCP/UDP 프로토콜을 통해 세션을 유지하는 사용자와의 데이터 통신 보장 네트워크 계층 : 위 계층에서 완성된 데이터-Header 조합을 패킷 단위로 목적지(IP주소) 까지 라우팅 역할 수행 데이터 링크 계층..

[기술면접 대비] Database 1 - DB 기본, 정규화, 종류

DB 기본 👉 DB Key의 개념과 종류 슈퍼키(Super Key) : 유일성을 가진 키 전체 후보키 (Candidate Key) : 릴레이션을 구별 할 수 있는 기본키들의 부분집합 기본키 (Primary Key) : 후보키들 중 하나 고른 것 대체키 (Alternate Key) : 후보키들 중 선택된 기본키를 제외한 나머지 외래키 (Foreign Key) : 다른 릴레이션 기본키 참조 복합키 (Composite Key) : 2개 이상 속성을 조합하여 만든키 👉 데이터 관계 1:1 관계 : 하나의 레코드가 다른 테이블의 하나의 레코드와 연결 된 것 1:N 관계 : 하나의 레코드가 다른 테이블의 다수의 레코드와 연결 된 것 N:M 관계 : 다수의 레코드가 다른 테이블의 다수의 레코드와 연결 된 것 (ex...