분류 전체보기 168

[CS/기술면접] 테스트 (Testing)

테스트 (Testing)에 대해 어떤 것을 알고 있나요? 1. 한마디 정리 테스트는 코드의 품질을 향상시키고 결함을 최소화하기 위해 수행하는 것으로 Jest, Mocha 등의 테스트 프레임워크를 통해 필요한 코드 구조 및 테스트 실행 방법, 테스트 결과 분석 등을 제공 받아 통합, 유닛 테스트를 실행할 수 있습니다. 2. 내가 생각한 꼬리질문 1) Integration Testing와 Unit Testing의 차이? 모듈 하나의 성능을 테스트할 때는 Unit Testing이다. 그러나 모듈들이 다 개발되고 서로 통합되면 Integration Testing이 진행된다. 이 때 Integration Testing은 모듈들이 서로 통합 되고 상호작용할 때 시스템상 발생할 수 있는 문제점들을 말한다. 2) Un..

카테고리 없음 2023.04.21

[CS/기술면접] 모듈 (Module)

모듈 (Module)이란 무엇인가요? Node.js에서 모듈을 사용하는 방법은 무엇인가요? [2023.04.21.금] 멘토링 (박세명 기술 멘토님) nodejs에서 commonjs로 모듈 사용하는 경우가 많은 이유는? 선배들이 그렇게 써왔어서 사실 commonjs로 쓰냐 ES6 방식으로 쓰냐에 따른 성능 차이는 크지 않고, 오히려 전체 로직 구조 효율성에 따른 성능 차이가 더 중요함 1. 한마디 정리 모듈 (Module)은 프로그램의 일부를 나타내는 독립적인 코드 블록으로, 함수, 변수, 객체 등이 포함될 수 있습니다. 모듈화는 코드의 재사용성을 높이고 유지보수를 용이하게 합니다. Node.js에서 exports 객체를 사용하여 모듈에서 외부로 공개할 함수나 변수를 지정하고 다른 파일에서 모듈을 사용하도..

카테고리 없음 2023.04.21

[CS/기술면접] 클로저 (Closure)

클로저 (Closure)란 무엇인가요? 1. 한마디 정리 클로저는 일반함수와 달리 함수 내부에 선언되는 함수로 함수가 실행될때 외부변수에 접근하기 위한 객체입니다. 이 경우 원래대로라면 소멸되었어야 할 객체들이 메모리상에 남아있기 때문에 클로저를 남발하면 오버플로우가 발생할 수도 있습니다. 따라서 클로저에 대해 정확히 이해하고 필요한곳에 사용해야 합니다. https://proglish.tistory.com/204 클로저(Closure)란? 클로저(Closure)란? MDN에서는 클로저를 다음과 같이 정의하고 있다. 클로저는 독립적인 (자유) 변수를 가리키는 함수이다. 또는, 클로저 안에 정의된 함수는 만들어진 환경을 ‘기억한다’. 흔히말 proglish.tistory.com https://hanamon...

카테고리 없음 2023.04.20

[CS/기술면접] 프로미스 (Promise)와 async/await

프로미스 (Promise)와 async/await에 대해 설명해보세요. 1. 한마디 정리 프로미스(Promise)는 자바스크립트에서 비동기적인 작업을 처리하는 객체입니다. 프로미스를 사용하면 비동기적으로 처리해야 하는 작업이 완료될 때까지 코드의 실행을 일시 중지하고, 작업이 완료된 후에 결과값을 받아 처리할 수 있습니다. async/await은 프로미스를 더욱 간결하고 가독성 좋게 사용할 수 있는 ES2017(ES8)부터 추가된 문법입니다. async 함수를 사용하면 코드 블록을 자동으로 프로미스 객체로 감싸서 처리합니다. await 키워드를 사용하면 프로미스가 이행(fulfilled)될 때까지 코드의 실행을 일시 중지하고, 결과값을 반환합니다. async/await을 사용하면 프로미스를 좀 더 직관적..

카테고리 없음 2023.04.20

[CS/기술면접] 개발 방법론 (Development Methodology)

개발 방법론 (Development Methodology)에 대해 설명해보세요. 1. 한마디 정리 소프트웨어를 개발하고 유지보수하는데 사용되는 일련의 절차와 프로세스로 대표적으로 폭포수 모델, 프로토타입 모델, 애자일, 스크럼 등이 있습니다. 소프트웨어 개발 방법론은 개발 프로세스를 구조화하고 팀 간의 협력을 촉진하며, 소프트웨어의 품질을 향상시키는 데 중요한 역할을 합니다. 이 외에도 다양한 소프트웨어 개발 방법론이 존재합니다. 각각의 방법론은 특정한 상황에 적합하며, 팀의 역량과 프로젝트의 특성을 고려하여 선택하는 것이 중요합니다. 2. 내가 생각한 꼬리질문 1) 해당 방법들에 대해 설명해주세요 폭포수 모델(Waterfall Model) 일련의 단계를 순차적으로 진행하며, 이전 단계의 결과물이 다음 ..

카테고리 없음 2023.04.19

[CS/기술면접] 보안 관련 문제

보안 (Security)과 관련된 문제들은 어떤 것이 있나요? [2023.04.21.금] 멘토링 (박세명 기술 멘토님) 보안 (Security)과 관련된 문제들은 어떤 것이 있나요? 백엔드 관련으로는 HTTPS, SQL INJECTION, 악성 스크립트 인증, 인가 CSRF (Cross-Site Request Forgery) XSS (Cross-Site Scripting): 중복 로그인 못하게 세션 방법도 있지만 로그인 기록을 이용해서 할 수도 있고 AWS의 코드니터라는 솔류션을 쓸 수도 있음 - 중복 로그인 ⇒ 보안, 사용자 편의성 중에 뭘 중요시 하는지에 따라 결정할 수 있겠음 로그아웃 했으면 쿠키 삭제하게 해야 함 최근 보안 문제의 해결점은 무엇이라고 생각하나요?에 대한 적절한 답변 뭘지? 최신 버..

카테고리 없음 2023.04.19

Call by Value vs Call by Reference

원시/객체 타입이 함수의 인자로 할당 받고 매개변수로 전달될 때 어떤 방식으로 전달될지를 결정하는 방식 값에 의한 호출 참조에 의한 호출 특징 - 인수의 복사본이 함수에 전달 (원시 값을 갖는 변수를 다른 변수에 할당하면 원시 값이 복사되어 전달 됨) - 함수 내에서 매개변수(parameter)의 값이 변경되더라도 인수의 원래 값에는 영향을 미치지 않음 - 인수의 참조(reference)가 함수에 전달 - 함수 내에서 매개변수의 값이 변경되면 인수의 값도 변경 장점 인수를 보호하고 예측 가능한 결과를 제공 인수의 값을 직접 변경할 수 있으므로 메모리 사용이 효율적 단점 큰 객체를 전달할 때 비용이 더 많이 듦 예상치 못한 부작용이 발생할 수 있음 JS는 무조건 Call by Value 방식 한 번 메모리..

카테고리 없음 2023.04.19

[CS/기술면접] 데이터베이스 (Database)와 ORM(Object Relational Mapping)

데이터베이스 (Database)와 ORM(Object Relational Mapping)에 대해 설명해보세요. [2023.04.21.금] 멘토링 (박세명 기술 멘토님) typeorm N+1 문제 객체로 만들면 가독성은 좋지만 로우쿼리를 잘알면 굳이 orm을 쓸 필요가 있냐는 의견도 RDBMS의 단점이 유연하지 못하다는 것 (테이블 간 관계 설정 되어 있으면 한 테이블 삭제하려면 어떤 테이블은 삭제 안되고..) => 그래서 로우쿼리로 필요한 것만 JOIN해서 하면 문제가 없는 https://velog.io/@ypd03008/TypeORM-N1-%EB%AC%B8%EC%A0%9C [TypeORM] N+1 문제 User는 N개의 Post를 가지고 있다. ( 1:N 관계 )사용자를 조회 했더니 (SELECT 1개..

카테고리 없음 2023.04.18

[CS/기술면접] 자료구조/알고리즘

자료구조와 알고리즘 중에서 자주 사용되는 것들은 어떤 것이 있나요? 1. 한마디 정리 스택/큐, 해시 테이블, 트리, 그래프, 정렬, 탐색 등이 있겠습니다. 2. 내가 생각한 꼬리질문 1) 스택(Stack) 후입선출(LIFO) 구조로 데이터를 저장하는 자료구조입니다. 새로운 데이터는 항상 스택의 맨 위에 쌓이며, 가장 최근에 추가된 데이터가 가장 먼저 제거됩니다. 2) 큐(Queue) 선입선출(FIFO) 구조로 데이터를 저장하는 자료구조입니다. 새로운 데이터는 항상 큐의 뒤쪽에 추가되고, 가장 오래된 데이터는 가장 앞쪽에서 제거됩니다. 3) 해시 테이블(Hash Table) 키-값(key-value) 쌍을 저장하는 자료구조입니다. 해시 함수를 사용하여 각 키를 고유한 인덱스로 매핑하고, 해당 인덱스에 값..

카테고리 없음 2023.04.18