코딩공부/개발지식 62

[3회] 자바스크립트&타입스크립트 / Let Var Const 차이점

1. 자바스크립트와 타입스크립트의 차이점을 설명해주세요. 자바스크립트는 동적타입의 인터프리터 언어로 런타임에서 오류를 발견할 수 있습니다. 반면 타입스크립트는 정적타입의 컴파일언어로 컴파일타임에 오류를 발견할 수 있습니다. 주요 차이점은 타입시스템의 유무입니다. 자바스크립트는 빠른 코드 작성과 작고 간단한 프로젝트에는 적합하지만, 타입스크립트는 대규모 프로젝트와 유지보수가 필요한 프로젝트에는 더욱 적합합니다. 동적타입은 변수의 타입이 실행 시간에 결정되는 것을 의미합니다. 즉, 변수를 선언할 때 타입을 지정하지 않습니다. 반면 정적타입은 변수의 타입을 컴파일 시간에 결정하는 것을 의미합니다. 즉 변수를 선언할 때 반드시 타입을 지정해야 합니다. 인터프리터 언어는 컴파일 과정 없이 코드를 한 줄씩 읽어가며..

[24회 - 데일리과제] PCB/PC/캐시메모리 & Hash Function, HashTable

1. 프로세스 관련 용어인 PCB/PC/캐시메모리에 대해 설명해주세요. PCB(Process Control Block)은 운영체제에서 프로세스를 관리하기 위해 해당 프로세스의 상태 정보를 담고 있는 자료구조를 말합니다. 컨텍스트 스위칭을 할때 기존 프로세스의 상태를 알아야 다음에 작업을 이어나갈 수 있습니다. 즉, PCB는 프로세스 스케줄링을 위해 프로세스에 관한 모든 정보를 저장하는 임시저장소입니다. PC(Program Counter)는 CPU의 레지스터 중 하나로, 다음에 실행할 명령어의 주소를 저장합니다. 캐시 메모리는 CPU와 주기억장치 사이에 위치한 고속 메모리입니다. 캐시 메모리는 주기억장치에서 자주 사용되는 데이터를 저장하여 CPU가 데이터에 빠르게 접근할 수 있도록 합니다. 🔥꼬리질문🔥 2..

[23회 - 데일리과제] Closure

1. Closure에 대해 설명해주세요. 클로저는 함수 안에 또 다른 함수가 있을 때, 안쪽의 함수가 바깥쪽의 함수의 변수에 접근할 수 있도록 해주는 기능입니다. 이를 통해 안쪽의 함수는 바깥쪽의 함수가 끝나고 사라진 후에도 그 변수를 계속 사용할 수 있습니다. 이렇게 클로저를 사용하면 변수를 보호하거나 데이터를 숨기는 등의 기능을 구현할 수 있습니다. 클로저에 의해 참조된 변수를 자유변수라고 합니다. 🔥꼬리질문🔥 클로저는 JavaScript에서 강력한 도구가 될 수 있지만 복잡할 수도 있습니다. 클로저는 함수가 종료된 후에도 외부 변수에 액세스할 수 있으므로 메모리 누수의 원인이 될 수 있습니다...

[22회 - 데일리과제] CORS / Priority Queue

1. CORS에 대해 설명해주세요. CORS(Cross-Origin Resource Sharing)는 웹 브라우저가 다른 출처의 리소스에 접근할 수 있는 권한을 부여하는 체제입니다. 이를 통해 웹 애플리케이션은 자신의 출처와 다른 출처의 리소스에 안전하게 접근할 수 있습니다. 즉, 무분별하게 클라이언트가 다른 리소스에 접근하는 것을 막는 보안 이슈입니다. CORS를 허용하려면 서버 측에서 응답에 접근 권한을 주는 헤더를 추가해야 합니다. 이를 위해서는 서버에서 CORS를 지원하는 미들웨어나 라이브러리를 사용하거나, 직접 HTTP 응답 헤더를 설정하는 방법을 사용할 수 있습니다. 2. Priority Queue에 대해 설명해주세요. 우선순위 큐(Priority Queue)는 각 요소가 우선순위를 가지고 있..

[21회 - 데일리과제] 시스템콜 / Tree

1. 시스템콜에 대해 설명해주세요. 시스템 콜은 사용자가 커널 기능에 접근하기 위한 인터페이스입니다. 프로그램이 다른 프로그램을 사용하기 위한 인터페이스인 API와 유사합니다. 작동방식은 시스템 콜에는 번호가 할당되고 시스템 콜 인터페이스는 이 번호에 따라 색인되는 테이블을 유지합니다. 이 테이블은 응용 프로그램에서 시스템 콜을 호출하면 번호를 보고 해당 함수가 호출한 후 시스템 콜의 상태와 반환 값을 돌려줍니다. (커널이란? 시스템의 모든 것을 완전히 통제하는 운영체제의 핵심이 되는 프로그램입니다) 🔥꼬리질문🔥 시스템콜은 모든 컴퓨터 리소스에 접근할 수 있기 때문에 다양한 문제가 발생할 수 있습니다. 일반적인 문제로는 프로그램 충돌, 데..

[20회 - 데일리과제] JWT / 완전탐색

1. JWT에 대해 설명해주세요. JWT(JSON Web Token)는 사용자 인증 정보를 담은 토큰입니다. 서버와 클라이언트 간 정보를 주고 받을 때 HTTP 리퀘스트 헤더에 JWT를 넣어 서버는 별도의 인증 과정 없이 헤더에 포함되어 있는 JWT 정보를 통해 인증합니다. 일반적으로 Access token의 유효기간이 만료되면 Refresh token을 이용하여 새로운 Access token을 발급받습니다 다른 API 서비스 호출 시 인증 처리 방식은 서비스 제공자마다 다르며 일반적으로 Authorization header에 Access token을 담아서 보내거나, URL 파라미터로 Access token을 전달하는 방식 등이 있습니다. 🔥꼬리질문🔥 일반적으로 JWT를 사용하는 서버에서 클라이언트의 ..

[2회] Nest.js

[2] Nest.js NestJS는 Node.js 웹 애플리케이션을 구축하기 위한 프레임워크입니다. 특징은 아키텍처가 정의되어 개발자들 간에 협업하기 편하고, 타입스크립트를 기본으로 제공하며, 테스트 코드를 작성을 지원합니다. 🔥꼬리질문 : 프로젝트에서 Nest.js를 왜 사용하셨나요?🔥 Nest.js를 사용하게 된 가장 큰 이유는 아키텍처가 정의되어 있었기 때문입니다. 프로젝트를 진행하면서 많은 것을 팀원끼리 의사결정을 하여야 했는데, 자유로운 Node.js보단 아키텍처가 있는 Nest.js가 협업하기 편했습니다. 또한 개발에 자주 사용되는 기능들이 Nest.js에 내장되어 있습니다. express에서는 IoC와 유효성검사를 위한 기능을 설치해야 했지만, Nest.js는 이러한 기능들을 데코레이터를 통..

[1회] Node.js

Node.js란 자바스크립트를 실행시키는 런타임환경으로, 특징은 단일쓰레드 이벤트 루프 기반과 비동기, 논블로킹 I/O모델입니다. Node.js는 멀티쓰레드 대신에 이벤트루트 기반의 싱글쓰레드를 선택했습니다. 멀티쓰레드의 경우, 자원의 낭비가 발생하고, 상대적으로 비효율적이고, 교착상태(데드락)을 발생시킬 가능성이 높습니다. 이벤트루프 : https://pyoja.tistory.com/243 더보기 이벤트 루프는 자바스크립트에서 비동기 작업을 처리하는 방식입니다. 이벤트 루프는 스택이 비어있는지 계속 확인하고, 비어있다면 큐에서 작업을 하나씩 꺼내서 스택에 넣습니다. 이 방식을 통해 자바스크립트는 싱글 스레드임에도 비동기 처리가 가능하게 됩니다. No..

[19회 - 데일리과제] TCP와 UDP / MST 알고리즘

1. TCP와 UDP에 대해 설명해주세요. TCP와 UDP는 모두 인터넷 프로토콜 스택의 전송 계층에서 사용되는 프로토콜입니다. TCP는 연결 지향형 프로토콜로, 높은 신뢰성을 보장하지만 속도가 느립니다. 반면, UDP는 비연결형 서비스로 신뢰성이 낮지만 속도가 빠르며 네트워크 부하가 적습니다. 간단하게 말하면, TCP는 신뢰성이 높은 전송이 필요할 때 사용하고, UDP는 연속성이 중요한 서비스에 자주 사용됩니다. 사용예시로는 TCP는 파일전송, 메일 등에서 주로 사용되며, UDP는 실시간 반응이 중요한 온라인게임, 화상회의에서 사용됩니다. 🔥꼬리질문🔥 더보기 3-way handshake는 TCP 세션 연결을 위해 수행되는 과정입니다. 이 과정은 다음과 같습니다: 1. 클라이언트가 서버에게 SYN 패킷을..

[18회 - 데일리과제] OSI 7계층 / DP 알고리즘

1. OSI 7계층에 대해 설명해주세요. OSI 7계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것으로, 국제표준화기구 (ISO)에서 네트워크 간의 호환을 위해 OSI 7 계층이라는 표준 네트워크 모델을 만들었습니다. 이 모델은 물리 계층, 데이터 링크 계층, 네트워크 계층, 전송 계층, 세션 계층, 표현 계층 및 응용 계층으로 구성됩니다. OSI 7계층은 다음과 같습니다: 1. 물리 계층: 전기적 신호로 변환하여 물리적인 전송이 가능하게 합니다. (리피터 , 케이블 , 허브) 2. 데이터 링크 계층: 인접한 노드간의 신뢰성 있는 데이터 전송을 제어합니다. ( 브릿지 , 스위치 ) 3. 네트워크 계층: 종단간 전송을 위한 경로 설정을 담당합니다. ( 라우터 , IP ) 4. 전송 계층: 종단간..