공부(112)
-
[면접준비] JWT + Node.js 질문 (24/04/25)
JWT 처리 및 토큰 생성: JWT(JSON Web Token)는 주로 서버 측에서 처리됩니다. 사용자가 자격 증명을 사용하여 로그인하면 인증 서버는 이러한 자격 증명을 확인하고 확인에 성공하면 JWT를 생성합니다. 토큰은 점(.)으로 구분된 세 가지 인코딩된 부분(헤더, 페이로드 및 서명)으로 구성됩니다. 헤더는 일반적으로 JWT인 토큰 유형과 HMAC SHA256 또는 RSA와 같이 사용되는 서명 알고리즘의 두 부분으로 구성됩니다. 페이로드에는 클레임이 포함되어 있습니다. 클레임은 엔터티(일반적으로 사용자) 및 추가 메타데이터에 대한 설명입니다. 청구에는 등록, 공개, 개인 청구의 세 가지 유형이 있습니다. 서명은 JWT의 발신자가 누구인지 확인하고 메시지가 도중에 변경되지 않았는지 확인하는 데 사용..
2024.04.25 -
[면접준비] 해시테이블과 이진 검색 트리 (24/04/24)
해시 테이블해시 테이블은 키를 기반으로 요소에 매우 빠른 액세스를 제공하는 데이터 구조입니다. 해시 함수를 사용하여 원하는 값을 찾을 수 있는 버킷 또는 슬롯 배열에 대한 인덱스를 계산합니다. 이상적으로 해시 함수는 각 키를 고유한 버킷에 할당하지만 대부분의 해시 테이블 디자인은 어떤 형태의 충돌 해결을 사용합니다. 장점:빠른 조회: 검색, 삽입 및 삭제에 대해 O(1)의 평균 시간 복잡도를 제공합니다.시간 측면에서 효율적: 특히 해시 함수가 좋고 부하율(요소 수/버킷 수)을 관리할 수 있는 경우.직접 액세스: 계산된 해시 키를 사용하여 데이터에 직접 액세스할 수 있습니다. 단점:공간 비효율성: 해시 테이블에는 구조를 위한 추가 공간이 필요하며 충돌 처리를 위한 오버헤드가 발생할 수 있습니다.해시 함수에..
2024.04.24 -
[면접준비] 프로그래밍 패러다임 (24/04/23)
객체지향 프로그래밍 프로그램 설계방법론의 일종으로, 에 속한다.프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다. 객체란 '메소드, 변수'를 가지며, 특정 역할을 수행하도록 인간이 정의한, 추상적인 개념. 다 프로그램의 상태에 대한 문장들을 작성하는 스타일을 일컫는다.객체지향형 프로그래밍이란 객체를 먼저 만들고 이렇게 만들어진 여러 객체들을 조립해서 하나의 완성된 프로그램을 만드는 프로그래밍 방법론이다.가장 큰 장점은 프로그램을 보다 유연하고 변경이 용이하게 만들 수 있다는 점이다.소프트웨어를 설계할 때 객체 지향적 원리를 잘 적용해 둔 프로그램은 각각의 부품들이 각자의 독립적인 역할을 가지..
2024.04.23 -
[면접준비] 아침 면접 준비 - 정규화, 무결성 (24/04/18)
정규화정규화는 데이터베이스 무결성 제약 조건에 따라 종속성이 적절하게 적용되는 방식으로 데이터를 테이블로 구성하여 중복성을 줄이고 데이터 무결성을 향상시키기 위해 데이터베이스 설계에 사용되는 체계적인 접근 방식이다.정규화의 주요 목적중복 데이터 제거: 여기에는 저장 공간을 낭비할 뿐만 아니라 데이터 처리 중에 불일치를 초래할 수 있는 중복 데이터를 방지하는 것이 포함됩니다. 데이터 종속성을 보장하려면: 이는 모든 데이터가 논리적으로 저장되도록 하여 데이터베이스의 논리적 일관성을 유지하는 데 도움이 됩니다. 데이터를 보호하려면: 정규화는 중복성을 최소화하고 데이터 종속성을 보장함으로써 삽입, 삭제 및 업데이트 작업 중에 데이터 무결성 손실과 이상 현상으로부터 데이터를 보호하는 데 도움이 됩니다. 정규화에는..
2024.04.22 -
[면접준비] 동기/비동기, deadlock (24/04/22)
동기/비동기동기(Synchronous)순차적/직렬적으로 태스크를 수행한다요청을 보냈다면, 응답을 받아야 다음 동작이 이루어진다순차적으로 실행되므로, 어떤 작업이 수행중이라면 뒤의 작업은 대기한다블로킹(작업 중단)이 발생한다동기적으로 데이터를 서버로부터 받아오는 앱을 만든다고 가정하면, 데이터를 받아오기 까지 기다린 후 앱이 실행될 것이고 서버에 가져오는 데이터 양이 늘어날수록 실행 속도가 느려질 것이다.이러한 불편함을 해결하기 위해 데이터 수신과 페이지 표시가 비동기적으로 처리되어야 한다.stTimeout과 AJAXfunction func1() { console.log('첫번째 펑션!'); func2();}function func2(){ console.log('두번째 펑션!'); f..
2024.04.22 -
[면접준비] 아침 면접 준비 (24/04/17)
1. Promise란 무엇입니까?Promise는 비동기 작업의 미래 완료 또는 실패와 그 결과 값을 나타내는 객체입니다. Promise가 생성될 때 반드시 알 수 없는 값에 대한 대리자로, 비동기 연산 종료 이후 결과 값과 실패 사유를 처리하기 위한 처리기를 연결할 수 있다. 프로미스를 사용하여 비동기 메서드를 마치 동기 메서드처럼 다룰 수 있다. 다만, 최종 결과를 반환하는게 아니라 어느 미래 시점에 결과를 제공하겠다는 약속(promise)를 반환한다.대기(pending): Promise의 초기 상태입니다. 결과는 아직 결정되지 않았습니다. 이행(fulfilled): 작업이 성공적으로 완료되었으며 이제 Promise는 결과 값을 보유합니다. 거부(rejected): 작업이 실패했으며 Promise에는 ..
2024.04.17