코딩공부/개발지식 61

[6회 - 데일리과제] Promise, async & await / 클로저

1. 프로미스(Promise)와 async/await에 대해 설명해보세요. 프로미스(Promise)는 비동기 처리를 위한 것이고 async/await는 프로미스를 좀 더 간결하게 사용되기 위한 문법입니다. async 키워드는 함수 앞에 붙는 키워드로, 해당 함수가 비동기 함수임을 의미합니다. async함수는 항상 Promise를 리턴하죠. await 키워드는 async 함수 내부에서만 사용 할 수 있으며, Promise가 resolved 또는 reject될 때까지 기다립니다. 에러핸들링의 차이점으로 프로미스를 활용할 때는 .catch ()문을 통해 에러를 핸들링 하지만 async await는 에러핸들링을 따로 하지 않고 try-catch문을 활용해야 합니다. 코드의 가독성 차이도 있습니다. 프로미스는 콜..

[5회 - 데일리과제] 보안 / 개발 방법론

1. 보안 (Security)과 관련된 문제들은 어떤 것이 있나요? 인증 및 권한 부여: 사용자 인증 및 권한 부여를 통해 민감한 데이터에 대한 접근을 제어해야 합니다. 이를 위해 일반적으로 사용자 이름과 비밀번호를 사용하여 사용자를 인증하고, 권한 부여 시스템을 통해 사용자의 권한을 관리합니다. 데이터 암호화: 전송 중이거나 저장된 데이터를 암호화하여 데이터 유출을 방지해야 합니다. 이를 위해 SSL/TLS와 같은 프로토콜을 사용하여 데이터를 전송하고, AES와 같은 암호화 알고리즘을 사용하여 데이터를 저장합니다. SQL 인젝션: 악의적인 SQL 쿼리가 실행되지 않도록 쿼리를 검증하고 필터링해야 합니다. 이를 위해 Prepared Statement와 같은 기술을 사용하여 쿼리를 안전하게 생성하고 실행합..

[4.5회 - 데일리과제] Call by Value vs Call by Reference

자바스크립트에서는 원시 타입(primitive type)의 값은 call by value(값에 의한 호출)로 전달되고, 객체 타입(object type)은 call by reference(참조에 의한 호출)로 전달됩니다. Call by value는 변수에 저장된 값을 복사해서 전달하는 방식입니다. 이 방식에서는 변수의 복사본이 전달되므로 함수 내부에서 전달 받은 값을 변경해도 원래 변수의 값은 변경되지 않습니다. let x = 1; function addOne(num) { num = num + 1; } addOne(x); console.log(x); // 1 반면에 call by reference는 변수 자체가 전달됩니다. 이 방식에서는 해당 변수의 주소를 전달하므로 함수 내부에서 전달 받은 값을 변경하..

[4회 - 데일리과제] 자료구조와 알고리즘 / 데이터베이스와 ORM

1. 자료구조와 알고리즘 중에서 자주 사용되는 것들은 어떤 것이 있나요? 자료구조는 메모리를 효율적으로 사용하며 빠르고 안정적으로 데이터를 처리하는 것이 궁극적인 목표로 상황에 따라 유용하게 사용될 수 있도록 특정 구조를 이루고 있다. 알고리즘은 특정 문제를 효율적이고 빠르게 해결하는 것이 궁극적인 목표로 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것을 말한다. 자료구조와 알고리즘은 프로그래밍에서 매우 중요한 개념입니다. 자주 사용되는 자료구조로는 리스트(List), 스택(Stack), 큐(Queue), 트리(Tree), 그래프(Graph) 등이 있습니다. 이러한 자료구조들은 데이터를 상황에 맞게 저장하기 위한 구조로 사용됩니다. 알고리즘은 자료구조에 있는 데이터를 활용해 어떠한 문제를 해결하기..

[3회 - 데일리과제] HTTP/HTTPS & RESTful API

1. HTTP와 HTTPS의 차이점은 무엇인가요? HTTP와 HTTPS의 가장 큰 차이점은 보안입니다. HTTP란 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜입니다. 이 HTTP에는 3가지 문제가 있습니다. 첫 번째 HTTP 는 평문 통신이기 때문에 도청이 가능하다. 두 번째 통신 상대를 확인하지 않기 때문에 위장이 가능하다. 세 번째 완전성을 증명할 수 없기 때문에 변조가 가능하다. 이 3가지 문제를 해결하기 위해 HTTPS는 SSL(Secure Socket Layer) or TLS(Transport Layer Security)와 같은 프로토콜을 사용하여 공개키/개인키 기반으로 데이터를 암호화하고 있습니다. 데이터는 암호화되어 전송되기 때문에 임의의 사용자가 데이터를 조회하여도 원본의..

[2회 - 데일리과제] 동기와 비동기 & 프로세스와 스레드

1. 동기와 비동기 코드 실행방식에 대해 설명해보세요. 동기는 요청을 보낸 후 응답을 받아야지만 다음 동작이 이루어지는 방식이다. 어떠한 태스크를 처리할 동안 나머지 태스크는 대기한다. 실제로 cpu가 느려지는 것은 아니지만 시스템의 전체적인 효율이 저하된다고 할 수 있다. (작업을 동시에 수행, 동시에 끝남, 끝나는 동시에 시작함을 의미) 반면에 비동기는 요청을 보낸 후 응답의 수락 여부와는 상관없이 다음 태스크가 동작하는 방식이다. 자원을 효율적으로 사용할 수 있다. 이때, 비동기 요청시 응답 후 처리할 콜백 함수를 함께 알려준다. (시작, 종료가 일치하지 않으며, 끝나는 동시에 시작을 하지 않음을 의미) 하지만 비동기 처리를 위해 여러개의 콜백함수를 중첩시키면 콜백지옥이 발생한다. 이를 해결하기 위..

[1회 - 데일리과제] 이벤트 루프와 콜백함수

1. 이벤트 루프 (Event Loop)에 대해 설명해보세요. 더보기 이벤트루프는 자바스크립트의 비동기 작업을 가능하게 해줍니다 자바스크립트의 비동기 작업이 일어날경우 (I/O, setTimeOut) 콜스택에서 실행되면, 라이브러리를 통하여 테크스큐에 쌓이게된다. 이벤트루프는 지속적으로 자바스크립트의 콜스택을 바라보며 비어질때까지 기다린다. 이후 자바스크립트의 콜스택이 비게되면, 테스크큐의 작업을 하나씩 콜스택에 밀어넣어주게된다. 이로서 자바스크립트가 싱글스레드임에도 비동기처리가 가능한 이유입니다. 이벤트 루프는 작업이 들어오길 기다렸다가 작업이 들어오면 이를 처리하고, 처리할 작업이 없는 경우엔 잠드는, 끊임없이 돌아가는 자바스크립트 내 루프입니다. 총 6개의 페이즈로 구성되어 있으며 한 페이즈에서 다..

인성면접 예상질문 20개

인성면접 예상질문 (20개) 지원 동기 우리 회사에 지원한 동기를 말씀해주실 수 있을까요? 개발자가 되기로 한 이유에 대해 말씀해주실 수 있을까요? 개발자가 되지 않았다면 어떤 일을 하고 싶으신가요? 개발 관심 정도 즐겨 보는 테크 유튜버나 뉴스레터가 있다면 알려주실 수 있을까요? 최근에 본 기술 아티클에 대해 설명해주실 수 있을까요? 좋아하는 개발자가 있다면 누구고 그 이유는 무엇인가요? 좋아하는 프로그램이 있다면 무엇이고 그 이유는 무엇인가요? 개발자로 은퇴하기 전까지 만들어보고 싶은 프로그램이 있다면 그건 어떤 프로그램인가요? 메타인지 개발자로서 본인의 강점과 근거가 되는 경험을 말씀해주실 수 있을까요? (협업 능력 제외) 개발자로서 본인의 약점은 무엇인가요? 앞으로 3개월, 6개월, 1년 동안 어..

목터뷰 Node.js 기술면접문제

1. 시간복잡도와 공간복잡도가 무엇인지 설명해주실 수 있을까요? 더보기 특정 크기의 데이터가 입력 되었을 때 어떤 문제를 해결하는데 걸리는 알고리즘의 수행 시간이 시간 복잡도, 해당 알고리즘이 수행하는 동안의 메모리 사용량이 공간 복잡도를 의미합니다. 이러한 복잡도라는 척도를 통해 특정 알고리즘의 성능을 평가할 수 있는데 과거 메모리 공간이 부족하던 때와 달리 컴퓨터 성능의 발달로 공간 복잡도 보다는 시간 복잡도를 중심으로 프로그래밍을 작성한다고 알고 있습니다. 2. 스택, 큐에 대해 설명해주실 수 있을까요? 더보기 스택(stack)은 책을 쌓는 것처럼 차곡차곡 쌓아 올린 형태의 자료구조입니다. 스택에서 가장 위에 있는 자료는 가장 최근에 들어온 자료를 가리키고 있으며, 삽입되는 새 자료는 top이 가리..

[Node.js] 백엔드 기술면접 질문 정리 (+추가질문 및 답변)

더보기공부방법 => 한번 쭉 읽고 생각나는대로 적기 (모르면 컨닝하기) + 추가 정보 기입하기1. HTTP METHOD에서 GET과 POST에 대해 설명해주세요.더보기Get은 가져온다는 개념이고, Post는 수행한다는 개념으로 받아들이면 쉽습니다. GET - 클라이언트에서 서버로부터 어떠한 리소스를 요청할때 사용되는 method 요청된 값은 프론트에서 변경되지 않고 사용된다. + get메소드는 주로 데이터를 읽거나 검색할 때 사용되며, 모든 필요한 데이터를 URL에 포함하여 요청합니다. POST - 리소스를 생성/업데이트 하기 위해 서버에 데이터를 보내기 위해 사용되는 메서드 서버 상의 데이터 값을 바꾸기 위해 사용되는 ..