전체 글 89

(DFS와 BFS),(그래프(Graph)와 트리(Tree) 본캠프 TIL 02/20

DFS와 BFS의 차이를 말해주세요  DFS (Depth-First Search, 깊이 우선 탐색) 동작 방식: 한 경로를 끝까지 탐색한 후 돌아와 다른 경로를 탐색합니다. 자료구조: 스택 또는 재귀 함수를 사용합니다. 특징 최단 경로를 보장하지 않지만, 메모리 사용량이 비교적 적습니다. 백트래킹이 가능해 미로 탐색, 완전 탐색(예: 모든 경우의 수 찾기)에 적합합니다.  BFS (Breadth-First Search, 너비 우선 탐색) 동작 방식: 같은 레벨의 노드를 모두 탐색한 후 다음 레벨로 넘어갑니다. 자료구조: 큐를 사용합니다. 특징 최단 경로를 보장합니다 (예: 가중치 없는 그래프).메모리 사용량이 많지만, 노드 간 거리가 균일할 때 효율적입니다. 꼬리 질문 대비 Q: DFS와 BFS 중 어떤..

(BigO),(정렬의 종류) 본캠프 TIL 02/19

11 번째 질문 BigO에 대해 설명해주세요**Big-O(빅오 표기법)**는 알고리즘의 시간 복잡도 또는 공간 복잡도를 표현하는 표기법으로, 입력 크기(n)에 따른 알고리즘의 성능을 **최악의 경우(Worst Case)**를 기준으로 나타냅니다.   핵심 개념: 알고리즘이 얼마나 효율적으로 실행되는지 **점근적 상한(Asymptotic Upper Bound)**으로 표현합니다. O(1): 상수 시간 (배열 인덱스 접근) O(n): 선형 시간 (단일 반복문) O(n²): 2차 시간 (중첩 반복문) O(log n): 로그 시간 (이진 탐색) O(n log n): 선형 로그 시간 (병합 정렬) 예상 꼬리 질문  Q: 왜 최선의 경우(Best Case)가 아닌 최악의 경우를 사용하나요? A: 최악의 경우를 통해..

(Array와 LinkedList),(Stack과 ,Queue) 본캠프 02/18 TIL

14번 질문: Array과 LinkedList를 비교설명해주세요.  답변Array와 LinkedList는 모두 선형 자료구조이지만, 메모리 할당 방식, 데이터 접근/수정 속도, 삽입/삭제 효율성에서 차이가 있습니다. 메모리 할당 Array: 연속된 메모리 공간에 데이터 저장 (크기 고정). LinkedList: 불연속적 메모리 공간에 노드가 포인터로 연결 (동적 크기 조절 가능). 접근 속도 Array: 인덱스를 통한 랜덤 접근이 가능해 O(1) 시간 복잡도. LinkedList: 헤드부터 순차 탐색해야 하므로 O(n) 시간 복잡도. 삽입/삭제 Array: 중간에 삽입/삭제 시 요소 이동이 필요해 O(n) 시간 복잡도. LinkedList: 포인터만 변경하면 되므로 O(1) (단, 위치 탐색 시간은 별도..

카테고리 없음 2025.02.18

(Node.js는 single-threaded 기반 JS 런타임),(Node.js의 이벤트 루프) 본캠프 02/17

9. Node.js는 single-threaded 기반 JS 런타임입니다. 이에 대해 아는 만큼 설명해주세요. Node.js는 싱글 스레드 이벤트 루프 모델을 사용합니다. 이는 메인 스레드(이벤트 루프) 하나만으로 모든 작업을 처리한다는 의미입니다. 하지만 논블로킹 I/O와 비동기 작업을 통해 동시성을 달성합니다. 예를 들어, 파일 읽기나 네트워크 요청 같은 I/O 작업은 백그라운드 스레드 풀(libuv 라이브러리)로 위임되고,메인 스레드는 다른 작업을 계속 처리하다가 완료 시 콜백을 실행합니다.// 동기 vs 비동기 예시const fs = require("fs");// 동기 방식 (블로킹)const data = fs.readFileSync("file.txt"); // 이 줄에서 멈춤console.log..

카테고리 없음 2025.02.17

nest 같은 매서드 순서의 문제 본캠프 TIL 02/14

@Get('ranking') async getRanking() { return await this.userService.getRanking(); }  간단한 랭킹조회 로직을 만들어 실행하였는데 오류도 아니고, 제대로 된 응답도 아닌 이도저도 아닌 상황이 나타났습니다. 인섬니아가 This action returns a #NaN user (200ok) 라는 방식으로 응답을 해버린 상황입니다. @Get() findAll() { return this.userService.findAll(); } @Get(':id') findOne(@Param('id') id: string) { return this.userService.findOne(+id); } //***************..

(깊은 복사와 얕은 복사), (JWT) 본캠프 TIL

7 번째 질문 (깊은 복사와 얕은 복사)에 대하여 설명하시오.  얕은 복사 (Shallow Copy)객체의 겉부분(최상위 속성)만 복사합니다.만약 속성 중에 또 다른 객체가 있다면, 그 내부 객체는 원본과 같은 것을 가리킵니다.즉, 복사본에서 내부 객체의 값을 바꾸면 원본에도 변화가 생깁니다.깊은 복사 (Deep Copy)객체 내부의 모든 값을 새롭게 복사합니다.내부 객체도 독립적인 새로운 객체로 만들어지므로, 복사본을 수정해도 원본은 변화하지 않습니다. 얕은 복사 예시  const originalObj = { a: 1, b: { c: 2 } };// 얕은 복사: 최상위 속성만 복사 (내부 객체 b는 같은 주소를 참조)const shallowCopy = { ...originalObj };// 복사본의 내..

카테고리 없음 2025.02.13

(Arrow Function), (Hoisting) 본캠프 TIL

5 번째 질문 (async/await)에 대하여 설명하시오.  ES6에 도입된 화살표 함수는 기존 함수 표현식을 간결하게 작성할 수 있게 해 주는 문법입니다. 주요 특징:간결한 문법: 함수 선언을 축약하여 코드의 가독성을 높입니다.Lexical this: 자신만의 this를 가지지 않고 상위 스코프의 this를 그대로 참조합니다.생성자 함수로 사용 불가: new 연산자로 호출하여 인스턴스를 생성할 수 없습니다.arguments 객체 없음: 일반 함수와 달리 arguments 객체를 제공하지 않습니다.// 간단한 화살표 함수 예시const add = (a, b) => a + b;console.log(add(3, 4)); // 출력: 7// this 바인딩 예시const obj = { value: 10, ..

(async/await), (Hoisting) 본캠프 TIL

3 번째 질문 (async/await)에 대하여 설명하시오.  async/await는 JavaScript에서 비동기 코드를 동기적으로 작성할 수 있게 하는 문법입니다.async 키워드로 선언된 함수는 항상 Promise를 반환합니다.await 키워드는 Promise가 처리될 때까지 실행을 일시 중지하고, 결과를 반환합니다.기존 Promise 체이닝의 가독성 문제와 "콜백 지옥"을 해결하기 위해 도입되었습니다.예시 코드 입니다!async function fetchData() { try { const response = await fetch('https://api.example.com/data'); const data = await response.json(); return data; }..

(var, let, const), (Promise) 본캠프 TIL 02/10

3차 모의면접의 면접카타 50문제를 하루에 2문제씩 정리하도록 하겠습니다! 1 번째 질문 (var, let, const)에 대하여 설명하시오.  요소별 상세 설명 스코프 (Scope) var: 함수 레벨 스코프 (함수 내에서 선언되면 함수 내에서만 유효) let, const: 블록 레벨 스코프 ({} 내에서 선언되면 블록 내에서만 유효) 호이스팅 (Hoisting) var: 선언 단계와 초기화 단계가 동시에 발생 (값 할당 전 undefined로 초기화). let, const: 선언 단계와 초기화 단계가 분리되어, 스코프 시작 지점에서 선언은 되지만 초기화는 실제 코드 위치에서 발생. → TDZ (Temporal Dead Zone) 구간에서 참조 시 오류 발생. 재할당 및 재선언 var: 재선언 가능, ..

docker에 다해여 본캠프 TIL 02/07

컨테이너라고 불리는 하나의 작은 소프트웨어 유닛안에어플리케이션과 그 작동을 위한 시스템 툴, 의존성등을 하나로 묶어서다른 서버, 다른 pc 그 어떤 곳에도 쉽게 배포하고, 안정적으로 구동하도록도와줍니다!  테크놀로지가 발전함에 따라서 어플리케이션을 구동하는데 꽤나많은 것들이 필요해졌습니다.node.js를 예로 들어보면 우리의 source 파일만 서버에 배포하는 것으로는어플리케이션을 구동할 수 없습니다ㅜㅜ 실행하는 서버에도 어플리케이션에서 활용한 npm 과 node 같은 프로그램Dependencies, configs 설정 등 다양한 세팅을 해주어야 하기 때문이지요  docker 컨테이너 안에는 어플리케이션 코드 뿐만 아니라활용한 백엔드 프로그램, npm , 환경설정, 다양한 리소스들이 포함되어 있습니다!!..