[2024.09.11 TIL] 면접 준비, 커리어톤 기술 면접 예상 질문

My_Code·2024년 9월 11일
0

면접

목록 보기
1/6
post-thumbnail

본 내용은 내일배움캠프 커리어톤에서 활동한 내용을 기록한 글입니다.


💻 TIL(Today I Learned)

📌 Today I Done

✏️ Class와 Object에 대해 설명해주세요.

  • Class는 객체를 생성하기 위한 템플릿 또는 설계도로, 객체의 속성과 메서드를 정의합니다.

  • Object는 클래스의 인스턴스로 클래스라는 설계도를 보고 만들어진 것을 의미합니다.


✏️ Polymorphism 개념에 대해 설명하고, 개인/팀 프로젝트에 적용한 사례가 있다면 이야기해주세요.

  • 다형성은 클래스가 다양한 형태로 동작하는 것을 의미합니다.

  • 즉, 동일한 메서드 명을 사용해도 그 메서드가 다르게 동작하게 만드는 특성입니다.

  • 대표적으로 오버로딩, 오버라이딩이 있습니다.


✏️ Object 의 특성에 따라 사용할 수 있는 Data Structure 에는 어떤 것이 있는지 설명해주세요.

  • 객체는 키와 값 쌍의 집합으로 키의 이름을 통해서 값에 접근합니다.

  • 예를 들면, 사용자 객체에 사용자 정보를 저장해서 데이터 관리가 가능합니다.

  • 그 외에도 객체 데이터를 순서있는 형태로 다루기 위한 배열, 객체보다 더 다양한 타입의 키를 사용할 수 있는 맵 등이 있습니다.


✏️ 개인/팀 프로젝트에 적용해 보았거나 / 사용할 줄 아는 RDB 에 대해 이야기해주세요.

  • 최근에 진행한 팀 프로젝트에서 MySQL을 RDB로 사용했습니다.

  • 이 때, Nest.js 프레임워크에서 TypeORM을 활용해서 데이터베이스와의 상호작용을 구현했습니다.

  • MySQL를 사용하여 복잡한 관계를 관리할 수 있으며, ACID 트랜젝션을 통해서 오류 및 충돌 방지가 가능하기 때문에 선택했습니다.

  • 그리고 TypeScript와 MySQL과 호환성이 좋은 TypeORM를 사용했고, 쿼리 빌더를 통해 복잡한 DB 쿼리를 로우 쿼리와 유사한 형태로 쉽게 작성할 수 있었습니다.


✏️ Java(Kotlin) 으로 구성된 프로젝트의 Kotlin(Java) 컨버팅 작업이 가능한지, 무엇을 염두/고려 해야하는지 이야기해주세요.

  • 주로 Node.js를 사용했기 때문에 위의 질문보다는 JavaScript를 TypeScript로 컨버팅하는 것에 대해 이야기 해보겠습니다.

  • JS와 TS의 가장 큰 차이는 타입 정의의 유무입니다.

  • 그 밖에 기본적인 문법이 동일하기 때문에 변환 작업이 충분히 가능합니다.

  • JS에서 TS로 변환하기 위해서는 기존의 JS코드에서 타입을 정의해줄 필요가 있고, .js 파일에서 .ts파일 확장자로 변경해야 합니다.

  • 그리고 TypeScript를 사용하기 위해서는 tsconfig.json과 같은 TypeScript 설정 파일을 생성해서 필요한 설정을 작성해야 합니다.

  • 이렇게 JS에서 TS로의 변환을 통해 코드 품질을 개선하고 유지보수성을 높일 수 있고, 코드 작성 단계에서 에러를 검출할 수 있기 때문에 안전하고 효율적인 코드를 작성할 수 있습니다.


✏️ Legacy Spring 과 최근 Spring 혹은 Spring Boot 의 차이점에 대해 아는대로 설명해주세요.

  • 이 질문도 Node.js와 맞지 않아서 Express.js와 Nest.js의 차이점에 대해서 설명하겠습니다.

  • Express는 가장 널리 사용되는 Node.js 웹 프레임워크입니다.

  • Express는 주로 간단한 웹 서버 구축을 통해 빠르게 웹을 개발하기 위해서 사용됩니다.

  • Express의 경우 별도의 라이프 사이클이 없고 미들웨어로 개발자가 구현해야 하는 문제가 있습니다.

  • 그리고 Express는 자바스크립트 기반이기에 타입에 의한 런타임 에러가 많이 발생합니다.

  • 그래서 이에 대한 대안으로 저는 대표적으로 Nest.js가 있다고 생각합니다.

  • Nest.js는 타입스크립트를 기반으로 해서 타입에 대한 런타임 에러를 줄일 수 있습니다.

  • 그리고 Nest.js에는 가드, 인터셉터, 파이프 등과 같은 라이프 사이클이 존재하기 때문에 개발자는 그 라이프 사이클에 맞춰서 개발을 진행하면 됩니다.


✏️ RDB와 NoSQL DB의 차이점에 대해 이야기해주세요.

  • RDB는 데이터를 테이블 형식으로 저장하며, 고정된 스키마를 가집니다.

  • 각 테이블 간의 관계를 정의하기 위해 외래 키를 사용합니다.

  • 그리고 ACID 트랜잭션을 지원하여 데이터의 무결성을 보장합니다.

  • RDB의 예로 금융 시스템, ERP 시스템 등 데이터 무결성이 중요한 곳에서 사용합니다.

  • NoSQL DB는 다양한 형식으로 데이터를 저장할 수 있으며, 스키마가 유연하기 때문에 데이터 구조를 사정에 정의할 필요가 없습니다.

  • 높은 가용성과 성능을 제공하지만 완벽한 일관성을 보장하진 않습니다.

  • NoSQL DB의 예로 소셜 미디어, IoT, 빅데이터 분석 등 대규모 데이터를 빠르게 처리하는 곳에서 사용합니다.


✏️ RESTful API의 설계 원칙을 설명해주세요.

  • REST API는 HTTP Method를 통해 자원에 대한 CRUD를 적용하고 주소를 정하는 방법을 의미합니다.

  • 즉, RESTFul API는 REST API 주소 체계를 이용하는 시스템을 의미합니다.

  • RESTful API의 설계 원칙은 적절한 HTTP 메서드를 사용하고, 서버의 상태 유지가 없으며, 적할한 HTTP 상태 코드를 사용하는 등으로 구성되어 있습니다.


✏️ 서버 사이드 렌더링과 클라이언트 사이드 렌더링의 차이점을 설명해주세요.

  • 서버 사이드 렌더링은 서버에서 웹페이지의 콘텐츠를 생성하여 클라이언트에 전달하는 방식입니다.
  • 클라이언트 사이드 렌더링은 클라이언트에서 자바스크립트를 통해 콘텐츠를 동적으로 생성하는 방식입니다.
  • 그리고 서버 사이드 렌더링은 서버에서 상태를 관리하는 반면, 클라이언트 사이드 렌더링은 클라이언트에서 상태를 관리하여 사용자 상호작용에 따라 동적으로 콘텐츠를 변경할 수 있습니다.

✏️ 웹훅(Webhook)이란 무엇인지 설명해주세요.

  • 웹훅은 특정 이벤트가 발생했을 때 다른 시스템에 자동으로 HTTP POST 요청을 보내는 방법입니다.

  • 이를 통해 실시간으로 데이터나 알림을 전달할 수 있습니다.

  • 예를 들어, 결제가 완료될 때 결제 서비스 정보를 서버로 전송하는 등의 다양한 시스템 간의 효율적인 실시간 통신을 가능하게 합니다.


✏️ Redis의 주요 사용 사례를 설명해 주세요.

  • Redis는 고성능의 인메모리 데이터 구조 저장소입니다.

  • 가장 대표적인 사용 사례는 캐싱 기능으로, 데이터베이스의 쿼리 결과나 API 응답을 캐싱하여 애플리케이션의 성능을 향상시킵니다.

  • 데이터베이스의 대한 반복적인 요청을 줄이고, 빠른 읽기 속도를 제공합니다.

  • 그리고 순위 및 점수 관리 용도로도 많이 사용됩니다.

  • Sorted Set 자료구조를 사용하여 콘텐츠 인기 순위 등을 관리할 수 있으며, 빠른 삽입 및 조회가 가능하여 효율적입니다.



📌 Tomorrow's Goal

✏️ 기술 면접 예상 질문 답변 작성하기 + 면접 코칭 신청

  • 내일은 나머지 기술 면접 예상 질문 답변을 작성할 예정

  • 그리고 첫 면접 코칭을 신청할 예정


✏️ 현직자 커피챗 진행하기

  • 내일 저녁에 현직자 커피챗을 통해서 이것 저것 질문할 예정

  • 사실 뭘 물어볼지 조금 막막한 상태라서 취업까지의 진행 과정을 물어볼 예정

  • 일단 눈 앞에 있는 것부터 하나씩 해결하면서 진행해야 할 것 같음



📌 Today's Goal I Done

✔️ 기술 면접 예상 질문 작성하기

  • 오늘은 기술 면접 예상 질문에 대한 답변을 작성함

  • 질문 내용이 어렵지 않았지만 조금 더 구체적으로 대답할 필요가 있어 보이기 때문에 해당 내용들을 찾아서 답변을 작성함

  • 그리고 5번 질문은 Node.js와 다르기 때문에 조금 비슷할 것 같은 질문으로 JS와 TS에 대한 내용을 작성함


profile
조금씩 정리하자!!!

0개의 댓글