본문 바로가기
개발/개발자 취업준비

면접준비-2번째 모의 면접, 실제 면접 준비

by 코딩하는짱구 2023. 9. 7.
반응형

면접준비-2번째 모의 면접, 실제 면접 준비

아...왜 준비해도 해도 모자라고 모자를까..준비해야할게 많으니 오히려 기본적인 개념을 제대로 설명하지 못하는 것 같기도하고..전문 용어를 써서 간략하게 설명할 일이 없으니 머리론 아는데 말로 표현이 안된다.

 

자기소개

안녕하세요. 백엔드 개발자 XXX 입니다. 

저는 맨땅에 헤딩해도 오뚜기처럼 일어나는 회복탄력성이 좋은 사람입니다.
저는 항상 새로운 도전을 두려워하지 않으며 성장해왔습니다. 비전공자로 개발을 시작했을때, 개념부터 프로젝트까지 수많은 에러와 난관이 있었습니다. 하지만 그 어려움이 저를 더 강하게 만들었습니다. 저는 어려움에 닥치면 피하지 않고 정면승부하여 끝까지 문제를 해결해내었고, 그 과정에서 기쁨을 느꼈습니다. 앞으로도 업무에 적극적으로 뛰어들어 성장하고, 회사의 성장에도 이바지할 수 있는 개발자가 되고싶습니다.

 

Q. Typescript Isomorphic 환경이 어떤 뜻인가요?

백-프론트 엔드에서 모두 사용가능한 Universal JavaScript를 뜻합니다. 
이것을 쓰는 이유는 서버와 클라이언트 측에서 동일한 코드로 앱을 구축하기 위해서 입니다. 서버측에서 초기 HTML을 생성하여 웹페이지의 로딩시간을 최소화하고, 로직을 중복시키지 않는다는 장점이 있습니다.



Q. Fasify란?

Node.js를 기반으로 하는 프레임워크 입니다. 
빠른 속도와 낮은 메모리 사용량을 목표로 개발된 프레임워크 이며 높은 트래픽과 대규모 데이터를 다루기에 적합합니다.
저는 프로젝트 때 Nest.js를 사용했는데요, Nest.js는 자체의 추상화 및 기능때문에 성능이 저하되는 경우가 있고, 고성능작업이나 실시간 처리에는 다소 취약하다는 단점이 있습니다.  이런 단점은 코어기능만 포함하는 Fastify가 보완할 수 있다는 생각을 했습니다.

 

Q. Zod란?

JS, TS를 위한 데이터, 스키마 유효성 검사 라이브러리. 데이터 타입을 지정하고 검증하는 면에서 TS에 친화적입니다.

 

Q. Docker 사용 경험에 대한 질문을 받을시

Docker를 사용하면 팀원들이 동일한 개발환경에서 일할 수 있다는 장점이 있고, 실제로 서버에 배포한 후에 테스트를 하는 것이 아닌 도커환경에서 안전하게 테스트가 가능하다는 장점이 있습니다. 저희 프로젝트에서도 Docker 환경을 구축하긴 했지만 프로젝트 마무리 단계에서 적용한 것이기에 개발자체를 Docker 환경에서 하진 않았습니다.

 

Q. Typescript 기반으로 서비스 하나를 바닥부터 만들어본 경험

위치기반 식당 웨이팅 프로젝트를 만들었습니다.
TS기반으로 프로젝트를 구축하기로 한 이유는 우선 TS가 정적 타입이라 타입을 명시함으로써 디버깅 시간을 단축시켜주고 코드 유지보수성을 높여준다는 장점이 있었기 때문입니다. 또한 코드를 이해하기 쉽게 만들어준다는 장점이 크게 작용했습니다. 실제로 TS를 기반으로 프로젝트를 진행하면서 코드 구조화에 더 익숙해졌던 것 같습니다.

 

Q. 다양한 종류의 비즈니스 로직을 RDB(MySQL) 기반에서 설계/구현하고 최적화 해 본 경험

MySQL은 아니지만 최적화를 위해 데이터베이스 분산 시스템을 도입한 프로젝트를 진행했습니다.
식당웨이팅 시스템 구축을 하며 Postgresql, Redis를 사용했습니다.

 

**대답하지 못했던 질문 

Q. 프레임워크와 라이브러리의 차이

정의: '제어흐름'이 어디에 있는가의 차이

프레임워크 : 애플리케이션의 뼈대라고 할 수 있는 틀, 애플리케이션 흐름을 직접 제어한다. ex) Spring, express 등
라이브러리 : 특정 기능을 모아둔 코드, 함수들의 집합. 활용가능한 도구 ex) npm 모듈들

 

Q. RESTful API가 갖춰야할 조건

정의: 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하는 아키텍쳐 스타일.

1. 클라이언트-서버 요청간에 클라이언트 정보가 저장되지 않으며 분리되어 있어야함
2. 클라이언트, 서버, 리소스로 구성되어있으며 요청이 HTTP를 통해 관리되어야 한다
3. 요청된 정보를 검색하는데 관련된 서버(보안, 로드밸런싱 등을 담당)의 각 유형을 클라이언트가 볼 수 없는 계층구조, 계층화된 시스템을 갖춰야한다.

 

Q. 쿼리빌더란 무엇인가

사용자가 원시 SQL 코드를 작성하는 대신, 시각적 인터페이스를 사용하여 DB를 관리할 수 있는 도구

 

Q. ORM이 무엇인가

정의: 객체와 관계의 매핑 입니다. 클래스 객체와 관계형 데이터 베이스의 테이블을 매핑해주는 것을 말합니다.
1. 객체지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 집중할 수 있게 함
2. 재사용 및 유지보수의 편리성이 증가한다.
3. DBMS에 대한 종속성이 줄어든다. 

 

 

반응형