스타트업 개발 면접질문 정리
이직
먼저 저는 현재 신용평가회사에서 근무하고 있는 IT를 전공한 직장인입니다.
지금 회사의 IT적인 커리어를 쌓는것에 대해 한계를 느껴 이직 준비를 하면서 개발면접 질문에 대해 정리해보았습니다.
먼저 지원한 회사는 스타트업 회사였습니다.
인원 : 50명
시리즈 A 투자유치 100억이상 시리즈 B 진행중
블록체인 관련 회사로 업계 성장성 유망
스타트업의 면접을 준비하면서 진행한 부분을 정리한 내용입니다.
(면접보고 준비할때마다 계속해서 업데이트 해나가겠습니다.)
절차
리멤버를 통해서 연락을 받아 절차가 진행되어 일반 채용절차와는 조금 다르게 진행되었습니다.
간단한 화상면접(자기소개 회사소개등) -> 이력서 제출 -> 코딩테스트 -> 코딩테스트리뷰(화상리뷰) -> 개발면접
화상면접
그냥 간단하게 30분 동안 자기소개 및 무엇을 했는지와에 대해서 프로젝트 등 회사소개로 편하게 진행되었습니다.
코딩테스트
코딩테스트는 의외로 간단하게 진행됬습니다. 스타트업의 경우는 신입공채가 없고 경력으로 뽑다보니 단순한 검증 형식으로 문제를 풀 수 있었습니다.
난이도는 프로그래머스의 코딩 테스트 연습문제만 풀 수 있으면 정말 쉽게 풀수 있을 것 같습니다.
면접전 예상 질문에 대한 정리
프론트엔드
호이스팅과 클로저 스코프 관련 질문
-
호이스팅 함수 안에 있는 선언들을 모두 끌어올려서 해당 함수 유효 범위의 최상단에 선언하는 것을 말한다.
-
클로저 클로저는 독립적인 (자유) 변수를 가리키는 함수이다. 또는, 클로저 안에 정의된 함수는 만들어진 환경을 기억한다.
-
스코프 (렉시컬 스코프) 즉, 함수를 어디서 선언하였는지에 따라 상위 스코프를 결정한다는 뜻이며, 가장 중요한 점은 함수의 호출이 아니라 함수의 선언에 따라 결정된다는 점이다.
웹 스토리지에 대한 설명하기
- 로컬스토리지 - 클라이언트에 대한 정보를 영구적으로 저장
- 세션스토리지 - 세션종료시 클라이언트에 대한 정보 삭제
- 쿠키 - 만료기한이 있는 key, value 형태의 저장소
cors란
cross origin resource sharing의 약자입니다. 교차 출처 자원 공유에 대한 정책입니다.
주로 웹 개발을 하게되면 만나게되는 오류입니다.
cors
서버사이드 렌더링과 클라이언트 사이드 애플리케이션의 차이점? (SSR, SPA 장단점?)
REST API?
- Create : 생성(POST)
- Read : 조회(GET)
- Update : 수정(PUT)
- Delete : 삭제(DELETE) REST API
var let const의 차이
var 변수 선언과 함수선언문에서만 호이스팅이 일어난다.
var 변수/함수의 선언만 위로 끌어 올려지며, 할당은 끌어 올려지지 않는다.
let/const 변수 선언과 함수표현식에서는 호이스팅이 발생하지 않는다.
백엔드
DI IOC 컨테이너란?
- DI (Dependency Injection) => IoC(제어권의 역전) 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 말한다. 객체에 대한 생성 및 생명주기를 관리
- IOC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리한다. POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다.
IOC 분류 (제어의 역전)
-
DL : 저장소에 저장되어 있는 Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Bean을 Lookup 하는 것
-
DI : 각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것
DI장점 : 코드가 단순해진다. 컴포넌트간의 결합도가 제거된다.
객체지향의 5원칙
- SRP - 단일책임원칙 : 하나의 클래스는 하나의 책임만 가져야 한다.
- OCP - 개방 폐쇄의 원칙 : 높은 응집도(하나의 모듈 클래스가 하나의 책임 또는 관심사에 집중되어 있다는 뜻), 낮은 결합도(책임과 관심사가
-
LSP - 리스코프의 치환 원칙 : 객체는 프로그램의 정확성을 깨지 않으면서 하위 타입의 인스턴스로 바꿀수 있어야 한다. 하위 클래스는 인터페이스의 규약을 지켜서 작성해야한다.(부모클래스의 행위를 벗어나지 말아야 한다)
-
JSP - 인터페이스 분리 원칙: 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙이다. 인터페이스 분리 원칙은 큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게 한다.
- DIP - 의존관계 역전 원칙 : 구현클래스가 아니라 인터페이스에 의존하라는 이야기이다. 인터페이스나 추상클래스에 의존해야함.
스케일업, 스케일 아웃이란?
connection pool
이정도로 준비했고, 그 외에 자료구조, OS 등 기본적인 CS지식도 같이 겸비해서 준비했습니다.
실제 면접질문
- 내가 했던 프로젝트 단위질문
- javascript의 클로저란
- javascript set, list의 차이
- javascript의 내부동작 질문(싱글스레드 - 이벤트 드라이브)
- RDBMS관련 질문(Nosql, Mysql)
- DB 장애 경험
- nodejs에서 서버와 클라이언트 간의 권한
- 비동기 구문에서 for문 넣을경우 출력되는 결과물
면접질문에 대한 내용은 이론에 대해서 블로그로 다시 정리할 예정입니다.