[Interview] TCP와 UDP의 차이를 설명해주세요
·
Develop Diary/Interview
TCP (Transmission Control Protocol)● 전송 제어 규칙, TCP는 연결 지향적 통신 방식입니다. 3-way handshake로 연결을 설정합니다.  - 데이터를 순차적으로 전송하고, 오류가 발생하면 재전송을 함으로써 신뢰성을 보장합니다.  - 네트워크 상황에 따라서 데이터 전송 속도를 조절합니다. = 흐름 제어, 혼잡 제어    ○ 3-way Handshake (연결을 할 때)   1) SYN (Synchronize), 클라이언트에서 서버로 연결 요청을 보냅니다.   2) SYN-ACK (Synchronize-Acknowledge), 서버에서 클라이언트로 요청 수락과 동시에      연결을 요청합니다.   3) ACK (Acknowledge), 클라이언트에서 서버로 최종 확인을..
[Interview] Stack과 Heap에 대해서 설명해주세요
·
Develop Diary/Interview
메모리의 영역● stack 영역과 heap 영역에 대해서 설명하기 위해서는 메모리 구조에 대해서 알아야 할 필요가 있습니다.  - 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(Load)되어야 합니다.  - 프로그램에서 사용되는 변수들을 저장할 메모리도 필요합니다.  - 컴퓨터 운영체제(OS)는 프로그램의 실행을 위해서 다양한 메모리 공간을 제공하고 있는데    1) 코드(code) 영역    2) 데이터(data) 영역    3) 스택(stack) 영역    4) 힙(heap) 영역  - 이미지와 같은 형태로 4가지의 영역이 존재합니다. stack 영역에 대해서● 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역입니다.  - 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 ..
[Interview] 레이스 컨디션이 무엇인가요
·
Develop Diary/Interview
Race Condition (경쟁 상태)● 여러 스레드(Thread)나 프로세스(Process)가 동시에 같은 메모리 영역, 자원에 접근하여 읽거나   쓰기를 할 때, 각 작업의 순서가 결과에 영향을 미치고 있다면 Race Condition이라 합니다.    - 두 스레드가 같은 변수의 값을 읽고, 그 값을 바탕으로 연산 후 다시 저장하려 할 때,      어느 스레드가 먼저 값을 저장하느냐에 따라서 변수의 최종 값이 달라질 수 있습니다. ● 왜 발생하는가  - 한 스레드가 공유 변수의 값을 읽은 후 수정하여 저장하는 사이에 다른 스레드도 같은 작업을 수행하면    서로의 작업이 덮여 쓰여 원치 않는 결과가 발생할 수 있습니다. 이를 Read-Modifiy-Write라 합니다.   - 어떤 조건을 확인하..
[Interview] 데이터베이스 인덱스의 자료구조를 설명해주세요
·
Develop Diary/Interview
데이터베이스 인덱스● 테이블 내에서 원하는 데이터를 빠르게 찾기 위해 별도의 자료구조를 사용하는 기법입니다. ● Index는 전체 테이블을 순차적으로 검색(Full Table Scan)하는 대신, 미리 정렬되거나  매핑된 자료구조를 활용하여 검색 속도를 향상시켜줍니다. 주로 사용하는 인덱스 자료구조● B-Tree / B+ Tree  ○ B-Tree :      - 균형적인 다중 분기 트리, 각 노드에 여러 개의 키와 자식 노드의 포인터를 저장합니다.     - 데이터를 정렬된 상태를 유지하며, 검색, 삽입, 삭제 시 트리의 높이가 낮도록 자동으로       균형을 맞추고 평균적으로 O(log n)의 시간 복잡도로 작업을 수행합니다.   ○ B+ Tree :     - B-Tree의 변형으로, 모든 식제 ..
[Interview] TDD 란 무엇인가요
·
Develop Diary/Interview
TDD (Test-Driven Development)● 테스트 주도 개발, 실제 기능 코드 작성 전에 실패하는 테스트 케이스를 먼저 작성하고   그 테스트를 통과시키기 위해 최소한의 코드를 구현한 후 리펙토링하는 반복적인 개발 방법론입니다. ● Red (테스트 실패), Green (테스트 통과), Refactor (코드 개선) 3가지의 사이클로 진행되며,  요구사항에 맞게 코드를 작성하고 동시에 테스트 커버리지를 높입니다. 테스트 커버리지 (Test Coverage)- 시스템 또는 소프트웨어의 테스트를 논할 때 얼마나 테스트가 충분한가를 나타낸 것 TDD를 한다면 장점은 무엇인가요● 코드 품질, 모듈성이 향상합니다.   - TDD를 수행한 코드는 테스트를 기준으로 모듈화되며, 테스트 케이스가 코드의 의도..
[Interview] 트랜잭션이란 무엇인가요
·
Develop Diary/Interview
트랜잭션 (Transaction)● 여러 SQL연산(INSERT, UPDATE, DELETE)을 하나의 논리적 단위로 묶어 처리하는 작업입니다.   - JavaScript로 치면 함수에 비유할 수 있습니다. ● 묶인 작업은 모두 성공해야 데이터베이스에 반영이 됩니다. 중간에 하나라도 실패한다면   전체 작업이 취소됩니다(ROLLBACK). 즉, 데이터 무결성을 보장합니다. ACID● 트랜잭션은 4가지의 특성을 가져야만 트랜잭션이라 할 수 있습니다. ○ 원자성(Atomicity) : 트랜잭션 내의 모든 연산이 전부 성공하거나 전혀 실행되지 않아야 합니다. 예)  은행 계좌 간의 송금에서, 계좌 A에서 돈을 인출한 후 계좌 B에 입금하는 두 단계가        하나의 트랜잭션으로 묶여 있습니다. 만약, 입금..
[Interview] 브라우저에 네이버 홈페이지 url을 입력했을때 일어나는 과정을 설명해주세요
·
Develop Diary/Interview
흔하게 사용하던 네이버 웹 사이트에 들어가면 생기는 일1 단계 : URL 입력● 크롬, 엣지 등 브라우저 앱을 사용하여 URL 창에 'https://www.naver.com'을 입력합니다. ● 브라우저 앱은 URL을 단어별, 특수문자를 분석하여 프로토콜(=https), 도메인(=www.naver.com),   경로(생략된 경우 기본적으로 '/'를 사용합니다)를 확인합니다. 2 단계 : DNS(Domain Name System) 조회● 브라우저는 도메인 이름(www.naver.com)을 IP주소로 변환하기 위해 DNS 서버에 요청을 보냅니다.   두 개의 과정을 거치게 됩니다.      ○ 캐시 확인 : 브라우저, 운영체제, 또는 로컬 네트워크에 DNS 캐시가 존재하면 우선 확인합니다.       ○ DN..
[Interview] 해시 테이블과 이진 검색트리에 대해 설명해주세요
·
Develop Diary/Interview
해시 테이블 (Hash Table)● 해시 함수를 통해 key를 index로 변환하여 데이터를 빠르게 접근할 수 있습니다.   - 단, 데이터의 순서가 보장되지 않고 충돌 문제에 영향이 있습니다.   - BigO 시간 복잡도로 표현하면 O(1)입니다. 속도에 특화되어 있습니다.key : 출석번호, value : 이름(1, 김하나)(2, 이두리)(3, 신 석)(4, 박 사)(5, 오이오)  - key에 대해 해시함수를 적용하여 배열 상의 index를 결정한 후 데이터를 저장하는 방식입니다.  - 또 다른 단점으로는 키-값 들이 별도의 순서를 유지하지 않습니다. 알파벳 순서로 정렬은 어렵습니다. 이진 검색트리 (Binary Search Tree / Tree Map)● 노드들이 key의 크기순으로 정렬되어 저..
[Interview] Stack과 Queue를 비교 설명해주세요
·
Develop Diary/Interview
선형 자료구조 (Linear Data Structure)● Stack : 마지막으로 삽입된 데이터가 가장 먼저 제거되는 구조입니다. ● Queue :  첫 번째로 삽입된 데이터가 가장 먼저 제거되는 구조입니다.  ● 주로 데이터의 삽입 및 삭제 방식에서 차이가 가장 많이 보입니다.  Stack은 후입선출(LIFO, Last In First Out) 원칙을 따르고,  Queue는 선입선출(FIFO, First In First Out) 원칙을 따릅니다. Stack과 Queue는 어디에 사용되나요 Stack은 가장 많이 사용하는 것으로는 Undo/Redo 기능이고 더 가시적인 것은 웹 브라우저에서 뒤로가기 버튼이 가장 좋은 예시입니다. Queue는 작업 대기열에 주로 사용되며, 가장 알기 쉬운 예는 입력 장치..
[Interview] 정규화에 대해서 설명해주세요
·
Develop Diary/Interview
정규화 (Normalization)● 관계형 데이터베이스(RDBMS) 설계할 때 데이터의 중복을 최소화하고 삽입, 수정, 삭제 시   발생할 수 있는 이상 현상(Anomaly)을 방지하여 데이터 무결성을 유지하기 위해   테이블들을 구조적으로 분해하고 재구성하는 과정입니다. ● 왜 있어야 할까요?  - 데이터 중복을 줄인다면 저장 공간을 절약할 수 있습니다.  - 데이터 이상 현상을 예방함으로써 효율적인 데이터 관리를 가능하도록 만들어줍니다. 정규화의 단계● 제 1 정규화 (1NF)  - 테이블의 각 칼럼(column)이 원자값(Atomic value)만을 가지도록 하는 단계입니다.  - 하나의 셀에 여러 개의 값이 들어가지 않도록 데이터를 분리합니다. 학생취미들(학생 이름, 취미들)이름취미들김하나게임,..