본 내용은 내일배움캠프 커리어톤에서 활동한 내용을 기록한 글입니다.
Class는 객체를 생성하기 위한 템플릿 또는 설계도로, 객체의 속성과 메서드를 정의합니다.
Object는 클래스의 인스턴스로 클래스라는 설계도를 보고 만들어진 것을 의미합니다.
다형성은 클래스가 다양한 형태로 동작하는 것을 의미합니다.
즉, 동일한 메서드 명을 사용해도 그 메서드가 다르게 동작하게 만드는 특성입니다.
대표적으로 오버로딩, 오버라이딩이 있습니다.
객체는 키와 값 쌍의 집합으로 키의 이름을 통해서 값에 접근합니다.
예를 들면, 사용자 객체에 사용자 정보를 저장해서 데이터 관리가 가능합니다.
그 외에도 객체 데이터를 순서있는 형태로 다루기 위한 배열, 객체보다 더 다양한 타입의 키를 사용할 수 있는 맵 등이 있습니다.
최근에 진행한 팀 프로젝트에서 MySQL을 RDB로 사용했습니다.
이 때, Nest.js 프레임워크에서 TypeORM을 활용해서 데이터베이스와의 상호작용을 구현했습니다.
MySQL를 사용하여 복잡한 관계를 관리할 수 있으며, ACID 트랜젝션을 통해서 오류 및 충돌 방지가 가능하기 때문에 선택했습니다.
그리고 TypeScript와 MySQL과 호환성이 좋은 TypeORM를 사용했고, 쿼리 빌더를 통해 복잡한 DB 쿼리를 로우 쿼리와 유사한 형태로 쉽게 작성할 수 있었습니다.
주로 Node.js를 사용했기 때문에 위의 질문보다는 JavaScript를 TypeScript로 컨버팅하는 것에 대해 이야기 해보겠습니다.
JS와 TS의 가장 큰 차이는 타입 정의의 유무입니다.
그 밖에 기본적인 문법이 동일하기 때문에 변환 작업이 충분히 가능합니다.
JS에서 TS로 변환하기 위해서는 기존의 JS코드에서 타입을 정의해줄 필요가 있고, .js 파일에서 .ts파일 확장자로 변경해야 합니다.
그리고 TypeScript를 사용하기 위해서는 tsconfig.json과 같은 TypeScript 설정 파일을 생성해서 필요한 설정을 작성해야 합니다.
이렇게 JS에서 TS로의 변환을 통해 코드 품질을 개선하고 유지보수성을 높일 수 있고, 코드 작성 단계에서 에러를 검출할 수 있기 때문에 안전하고 효율적인 코드를 작성할 수 있습니다.
이 질문도 Node.js와 맞지 않아서 Express.js와 Nest.js의 차이점에 대해서 설명하겠습니다.
Express는 가장 널리 사용되는 Node.js 웹 프레임워크입니다.
Express는 주로 간단한 웹 서버 구축을 통해 빠르게 웹을 개발하기 위해서 사용됩니다.
Express의 경우 별도의 라이프 사이클이 없고 미들웨어로 개발자가 구현해야 하는 문제가 있습니다.
그리고 Express는 자바스크립트 기반이기에 타입에 의한 런타임 에러가 많이 발생합니다.
그래서 이에 대한 대안으로 저는 대표적으로 Nest.js가 있다고 생각합니다.
Nest.js는 타입스크립트를 기반으로 해서 타입에 대한 런타임 에러를 줄일 수 있습니다.
그리고 Nest.js에는 가드, 인터셉터, 파이프 등과 같은 라이프 사이클이 존재하기 때문에 개발자는 그 라이프 사이클에 맞춰서 개발을 진행하면 됩니다.
RDB는 데이터를 테이블 형식으로 저장하며, 고정된 스키마를 가집니다.
각 테이블 간의 관계를 정의하기 위해 외래 키를 사용합니다.
그리고 ACID 트랜잭션을 지원하여 데이터의 무결성을 보장합니다.
RDB의 예로 금융 시스템, ERP 시스템 등 데이터 무결성이 중요한 곳에서 사용합니다.
NoSQL DB는 다양한 형식으로 데이터를 저장할 수 있으며, 스키마가 유연하기 때문에 데이터 구조를 사정에 정의할 필요가 없습니다.
높은 가용성과 성능을 제공하지만 완벽한 일관성을 보장하진 않습니다.
NoSQL DB의 예로 소셜 미디어, IoT, 빅데이터 분석 등 대규모 데이터를 빠르게 처리하는 곳에서 사용합니다.
REST API는 HTTP Method를 통해 자원에 대한 CRUD를 적용하고 주소를 정하는 방법을 의미합니다.
즉, RESTFul API는 REST API 주소 체계를 이용하는 시스템을 의미합니다.
RESTful API의 설계 원칙은 적절한 HTTP 메서드를 사용하고, 서버의 상태 유지가 없으며, 적할한 HTTP 상태 코드를 사용하는 등으로 구성되어 있습니다.
웹훅은 특정 이벤트가 발생했을 때 다른 시스템에 자동으로 HTTP POST 요청을 보내는 방법입니다.
이를 통해 실시간으로 데이터나 알림을 전달할 수 있습니다.
예를 들어, 결제가 완료될 때 결제 서비스 정보를 서버로 전송하는 등의 다양한 시스템 간의 효율적인 실시간 통신을 가능하게 합니다.
Redis는 고성능의 인메모리 데이터 구조 저장소입니다.
가장 대표적인 사용 사례는 캐싱 기능으로, 데이터베이스의 쿼리 결과나 API 응답을 캐싱하여 애플리케이션의 성능을 향상시킵니다.
데이터베이스의 대한 반복적인 요청을 줄이고, 빠른 읽기 속도를 제공합니다.
그리고 순위 및 점수 관리 용도로도 많이 사용됩니다.
Sorted Set 자료구조를 사용하여 콘텐츠 인기 순위 등을 관리할 수 있으며, 빠른 삽입 및 조회가 가능하여 효율적입니다.
내일은 나머지 기술 면접 예상 질문 답변을 작성할 예정
그리고 첫 면접 코칭을 신청할 예정
내일 저녁에 현직자 커피챗을 통해서 이것 저것 질문할 예정
사실 뭘 물어볼지 조금 막막한 상태라서 취업까지의 진행 과정을 물어볼 예정
일단 눈 앞에 있는 것부터 하나씩 해결하면서 진행해야 할 것 같음
오늘은 기술 면접 예상 질문에 대한 답변을 작성함
질문 내용이 어렵지 않았지만 조금 더 구체적으로 대답할 필요가 있어 보이기 때문에 해당 내용들을 찾아서 답변을 작성함
그리고 5번 질문은 Node.js와 다르기 때문에 조금 비슷할 것 같은 질문으로 JS와 TS에 대한 내용을 작성함