학원 수료를 마치고 본격적인 취준을 시작하며... 빠질 수 없는 기술 면접 준비.....
"국비출신 비전공자 신입 백엔드 개발자" << 의 시점으로 작성했습니다!!!
아직 면접을 한 번도 보지 않았기 때문에 검색해보며 나올듯한 질문과 개인적으로 알아야 할 것 같은거 위주로 작성했고 면접을 한두번 겪고 받았던 질문도 추가할 예정입니다!
기술 관련 질문
- 객체지향프로그래밍(Object Oriented Programming)에 대해서 설명해주세요.
객체 지향 프로그래밍(ObjectOrientedProgramming)이란?
: 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법
장점
1. 코드 재사용 및 유지보수 용이하다.
2. 클래스 단위로 모듈화 시켜서 개발할 수 있으므로, 업무분담에 용이하다.
단점
1. 처리속도가 상대적으로 느리다.
2. 객체가 많으면 용량이 커질 수 있다.
3. 설계시 많은 시간과 노력이 필요하다.
객체지향프로그래밍의 특징(핵심 키워드)
1. 추상화 : 공통의 속성이나 기능을 묶어 이름을 붙이는 것. 객체 지향적 관점에서 클래스를 정의하는 것
2. 캡슐화
: 정보 은닉 - 외부에 노출하지 않아야 할 정보 또는 기능은 접근제어자를 통해 적절히 제어 권한이 있는 객체에서만 접근하도록 한다. [키워드: private]
: 기능과 특성의 모음을 "클래스"라는 "캡슐"에 분류해서 넣는것
3. 상속
: 부모클래스의 속성과 기능을 자식클래스에서 그대로 이어받아 사용할 수 있게하고, 기능의 일부분을 변경해야 할 경우 상속받은 자식 클래스에서 해당 기능만 수정(재정의)하여 사용할 수 있다.
4. 다형성
: 하나의 객체가 여러 형태를 띈다는 의미, 상속받은 자식 클래스들의 기능이 각기 다르다.
- MVC 패턴에 대해 설명해주세요.
MVC란?
: Model, View, Controller의 약자로, 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 디자인 패턴

이러한 패턴을 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다.
모델(Model)
: 애플리케이션의 정보, 데이터를 가진 객체.
모델의 규칙
1. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다.
2. 뷰나 컨트롤러에 대해서 어떠한 정보도 알지 말아야 한다.
3. 변경이 일어나면, 변경 통지에 대한 처리 방법을 구현해야 한다.
뷰(View)
: 사용자 인터페이스 요소, 데이터 및 객체의 입력 및 보여주는 출력을 담당한다. 데이터를 기반으로 사용자들이 볼 수 있는 화면
뷰의 규칙
1. 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
2. 모델이나 컨트롤러와 같이 다른 구성 요소를 몰라야 한다.
3. 변경이 일어나면, 변경 통지에 대한 처리 방법을 구현해야 한다.
컨트롤러(Controller)
: 사용자가 접근한 URL에 따라 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터를 Model에 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려준다.
컨트롤러의 규칙
1. 모델이나 뷰에 대해서 알고 있어야 한다.
2. 모델이나 뷰의 변경을 모니터링 해야 한다.
MVC패턴을 사용해야 하는 이유
: 비즈니스 로직과 UI로직을 분리하여 유지보수를 독립적으로 수행할 수 있다.
: Model과 View가 다른 컴포넌트들에 종속되지 않아 애플리케이션의 확장성, 유연성에 유리하다.
: 중복 코딩의 문제점 제거
- 리팩토링에 대해 설명해주세요.
리팩토링(refactoring)이란?
: 프로그램 개발 후 기능의 변화 없이 코드의 내부 구조만 변경하는 작업. 주로 가독성을 높이고 유지보수를 편하게 한다.
1) 기능을 변경, 추가하거나 2) 버그를 수정하거나 3) 성능을 개선하거나 4) 의존성을 업데이트 하는 것이 아니다.
리팩토링을 왜 해야할까?
1. 개발 초기 단계부터 완벽한 코드/시스템 설계가 어렵다.
2. 프로그램의 요구사항은 꾸준히 변경된다.
3. 더럽고 복잡한 코드는 이해하기도 어렵고 예상하지 못한 에러가 발생하기 쉽다. => 유지보수가 어렵다.
리팩토링은 언제 할까?
The Rule Of Three(3의 법칙) : 유사한 내용이 세번 이상 반복할 때
새로운 기능을 추가할 때, 버그를 수정할 때, 코드리뷰를 할때
- 세션과 쿠키에 대해 설명해주세요.
HTTP의 특징과 쿠키와 세션을 사용하는 이유
: HTTP 프로토콜의 특성이자 약점을 보완하기 위해서 쿠키 또는 세션을 사용한다.
1. Connectionless 프로토콜 (비연결지향)
클라이언트가 서버에 요청(Request)을 했을 때,
그 요청에 맞는 응답(Response)을 보낸 후 연결을 끊는 처리방식이다.
- HTTP 1.1 버전에서 연결을 유지하고, 재활용 하는 기능이 Default 로 추가되었다.
(keep-alive 값으로 변경 가능)
2. Stateless 프로토콜 (상태정보 유지 안함)
클라이언트의 상태 정보를 가지지 않는 서버 처리 방식이다.
클라이언트와 첫번째 통신에서 데이터를 주고 받았다 해도,
두번째 통신에서 이전 데이터를 유지하지 않는다.
But, 실제로는 데이터 유지가 필요한 경우가 많다.
: 정보가 유지되지 않으면, 매번 페이지를 이동할 때마다 로그인을 다시 하거나, 상품을 선택했는데 구매 페이지에서 선택한 상품의 정보가 없거나 하는 등의 일이 발생할 수 있다.
쿠키와 세션의 차이점은 크게 상태 정보의 저장 위치이다.
쿠키는 '클라이언트(=로컬PC)'에 저장하고, 세션은 '서버'에 저장한다.
Q. 세션을 쓰면 되는데 굳이 쿠키를 사용하는 이유?
A. 세션이 쿠키에 비해 보안도 높은 편이나 쿠키를 사용하는 이유는 세션은 서버에 저장되고, 서버 자원을 사용하기 때문에 사용자가 많은 경우 소모되는 자원이 상당하다.이러한 자원관리 차원에서 쿠키와 세션을 적절한 요소 및 기능에 병행 사용하여, 서버 자원의 낭비를 방지하며 웹사이트의 속도를 높일 수 있다.
쿠키(Cookie) | 세션(Session) | |
저장 위치 | 클라이언트(=접속자 PC) | 웹 서버 |
저장 형식 | text | Object |
만료 시점 | 쿠키 저장시 설정 (브라우저가 종료되어도, 만료 시점이 지나지 않으면 자동삭제되지 않음) |
브라우저 종료시 삭제 (기간 지정 가능) |
사용하는 자원(리소스) | 클라이언트 리소스 | 웹 서버 리소스 |
용량 제한 | 총 300개 하나의 도메인 당 20개 하나의 쿠키 당 4KB(=4096byte) |
서버가 허용하는 한 용량제한 없음 |
속도 | 세션보다 빠름 | 쿠키보다 느림 |
보안 | 세션보다 안좋음 | 쿠키보다 좋음 |
- 자바 언어의 장점과 단점을 설명해주세요.
장점
1. 객체 지향 프로그램 언어이다.
2. 많은 오픈소스 프레임워크로 생산성을 증가하고 유지보수 비용을 절감할 수 있다.
3. 보안에 강하다.
4. 플랫폼에 독립적이므로, 여러 운영체제나 하드웨어에서도 동일하게 실행한다.
단점
1. 실행속도가 다른 언어에 비해느리다.
2. JVM을 사용하기 때문에 직접 하드웨어를 정밀하게 조정해야 하는 프로그램 개발에는 적합하지 않다.
3. JVM에서 실행되기 때문에 더 많은 메모리를 소비한다.
- DBMS와 RDBMS란 무엇일까요?
데이터베이스란?
: 체계화된 데이터의 모임
: 여러 응용 시스템들의 통합된 정보를 저장하여 운영할 수 있는 공용 데이터의 묶음
: 논리적으로 연관된 하나 이상의 자료 모음으로 데이터를 고도로 구조화함으로써 검색/갱신 등의 데이터 관리를 효율화 함
DBMS란?
: DataBase Management System의 약자로 데이터 베이스를 관리하는 시스템
: 사용자와 DB사이에서 사용자의 요구에 따라 데이터를 생성해주고, DB를 관리해주는 소프트웨어이다.
: 데이터를 계층 또는 탐색 형식으로 저장한다. 파일 시스템을 사용해 저장하며 테이블 간에는 아무런 관계가 없다.
: 데이터에 대한 많은 보안을 제공하지 않고, 정규화를 수행할 수 없어 데이터는 높은 중복성을 가질 수 있다.
RDB란?
: 관계형 데이터 모델에 기초를 둔 데이터 베이스이다.
: 모든 데이터를 2차원의 테이블 형태로 표현한다.
RDBMS(관계형 데이터 베이스)란?
: Relational DataBase Management System의 약자로 관계형 모델을 기반으로 하는 DBMS 유형
: 테이블이 서로 연관되어 있어 일반 DBMS보다 효율적으로 데이터를 저장, 구성 및 관리할 수 있다.
: 정규화를 통해 데이터의 중복성을 최소화하여 트랜잭션을 수행하는 것이 더 쉽다.
: 데이터의 원자성, 일관성, 격리 및 내구성을 유지하며 데이터 무결성을 높인다.
RDBMS의 종류
: Oracle, MySQL, SQL Server(MS-SQL), PostgreSQL, SQLite포트폴리오 관련 질문
포트폴리오에서 활용한 기술 스택에 대하여 다양한 옵션 중 어떤 기술을 왜 선택했는지, 해당 기술의 장단점
: 사실 신입의 입장에서 다양한 기술을 경험해 보지 못하고, 배운게 그거 하나 뿐인 경우가 많아서 대답하기 쉽지 않다.. 그렇기 때문에 내가 사용하고 있는 기술에 대한 장단점과 특성을 잘 이해하고 있다는 것을 어필하는게 좋을 것 같다. (최소한의 논리적 근거는 설명할 수 있어야 함)
'[자기계발]' 카테고리의 다른 글
생각이 너무 많은 사람들에게 (0) | 2024.06.26 |
---|---|
백엔드 신입 개발자 면접 준비 - 기본적인 면접 질문(지원동기, 취미, 인적성 관련) (0) | 2022.08.28 |