on
면접 예상 질문
면접 예상 질문
- 프론트엔드 / 백엔드
웹페이지의 디자인이나 버튼 기능처럼 사용자가 볼 수 있는 부분이다. 예)HTML, CSS
사용자가 볼 수 없는 부분으로 DB나 서버를 다루는 부분이다.
- Node.js
자바스크립트 언어로 프론트엔드와 백엔드를 제어할수 있게 해주는 프레임워크, 비동기 프로그래밍
- 동기 프로그래밍 / 비동기 프로그래밍
무엇인가 요청하면 결과를 받아야 다음 동작을 처리한다. => 여러가지 요청을 동시에 처리할 수 없어서 효율이 떨어진다.
이벤트를 요청하고 바로 결과를 받지 않아도 된다 => 결과값을 기다리지 않고 다양한 요청을 처리할 수 있다.
=> 웹 분야에서는 비동기 프로그래밍을 쓰는 경우가 드물었는데 Node.js가 비동기 프로그래밍을 비교적 쉽게 할 수 있게 해주었다.
- 절자치향 프로그래밍 / 객체지향 프로그래밍
순차적인 처리를 중요시하는 프로그래밍 기법으로 대표적인 언어는 C언어이다. 실행속도가 빠르다
사물을 객체로 모델링하여 개발을 진행하는 프로그래밍 기법으로 대표적인 언어는 Java이다. 실행속도가 느리다.
- API
응용프로그램이 운영체제나 데이터베이스 관리 시스템과 같은 시스템 프로그램과 통신할 때 사용되는 언어나 메시지 형식이다. => 좋은 API는 프로그램 개발을 쉽게 헤준다.
- CRUD
Create(생성), Read(읽기), Update(갱신), Delete(삭제)
- REST
CRUD 의 HTTP메소드 (POST, GET, PUT, DELETE)
- RESTful API
HTTP 통신에서 어떤 자원에 대한 CRUD 요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식 (GET, POST)
- UX / UI
User eXperience, 제품을 이용하면서 느끼는 부분
User Interface, 사용자가 제품을 사용할때 시각적으로 보이는 부분
- MSA
Microservice Architecture, 1개의 시스템을 독립적으로 배포가능한 각각의 서비스로 분할한다. 각각의 서비스는 RESTful API를 통해 데이터를 주고받으며 1개의 큰 서비스를 구성한다.
일부 서비스에 장애가 발생하여도 전체 서비스에 장애가 발생하지 않는다.
각각의 서비스들은 서로 다른 언어와 프레임워크로 구성될 수 있다. => 서비스의 확장이 용이하다.
- Java의 장점과 단점
운영체제에 독립적이다. 가비지컬렉터가 메모리를 관리해주기 때문에 편리하다.
JVM위에서 동작하기 때문에 실행속도가 상대적으로 느리다.
- 가비지 컬렉터
Garbage Collector, 더 이상 참조되지 않는 메모리를 청소해주는 JVM의 실행 엔진의 한 요소이다.
- Java의 동작과정
Java 소스파일을 javac로 컴파일하여 class파일(Java 바이트 코드)을 생성한다. 클래스로더가 컴파일된 Java 바이트코드를 런타임 데이터 영역으로 로드하고 실행 엔진이 자바 바이트코드를 실행한다.
- 오버라이딩(Overriding) / 오버로딩(Overloading)
상위 클래스가 가지고 있는 메소드를 하위 클래스에서 재정의항 사용하는 기술
매개변수의 타입과 개수를 변경하면서 같은 이름의 메소드를 여러개 사용하는 기술
- 클래스 / 객체 / 인스턴스
객체를 만들어내기 위한 설계도혹은 틀
설계도(클래스)를 기반으로 선언된 대상, 클래스의 인스턴스라고 부름
객체에 메모리가 할당되어 실제로 활용되는 실체
- 싱클톤 패턴 구현 및 사용 이유
싱클톤 패턴은 단 하나의 인스턴스를 생성하여 사용하는 디자인패턴이다. 동일한 인스턴스를 자주 생성해주어야하는 경우에 메모리 낭비를 방지하기 위해 사용한다.
하지만 싱글톤 패턴은 객체 지향 설계의 원칙에 적합하지 않으며, 제어가 힘들고 멀티스레드 환경에서 여러개의 객체가 생성되는 문제가 발생할 수 있다. 그러한 이유로 멀티스레드 환경이라면 static앞에 synchronized 키워드를 붙여 동기화 작업을 추가해주어야 한다. 하지만 그러면 성능은 저하된다.
- 추상클래스 / 인터페이스
단일 상속만이 가능하다. 모든 접근 제어자를 사용할 수 있다.
다중구현이 가능하다. public 접근 제어자만 사용할 수 있다.
- List / Set / Map
데이터를 순차적으로 저장한다. 모든 제어자를 사용할수 있다.
순서없이 Key로만 데이터를 저장한다. Key의 중복과 null을 허용하지 않는다.
순서없이 Key, Value로 데이터를 저장한다 Value는 중복을 허용하지만 Key는 중복을 허용하지 않는다.
- Vector / ArrayList
동기화를 지원한다. 속도가 느리지만 병렬 상황에서 안전하다. 크기가 증가하는 경우 2배 증가한다.
동기화를 지원하지 않는다. 속도는 빠르지만 병렬 상황에서 안전하지 않다. 크기가 증가하는 경우 1.5배 증가한다.
- StringBuffer / StringBuilder
- synchronize
여러 쓰레드가 하나의 자원을 이용하고자 할 때, 한 스레드가 해당 자원을 사용중인 경우, 데이터에 접근할 수 없도록 막는 키워드
- Lambda
불필요한 코드를 줄이고, 가독성을 높이기 위한 익명 함수이다. 괄호와 화살표로 표현할 수 있다.
- Servlet
서블릿이란 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍기술이다.
Spring MVC Controller로 이용되며, 사용자의 요청을 받아 처리한 후에 결과를 반환한다.
- Spring 기초지식
DI (Dependency Injection) : 한 객체에서 다른 객체를 필요로 하여 의존성을 갖게 하는 기술
DL (Dependency Look-up) : 한 객체에서 필요로 하는 다른 객체를 찾아서 사용하는 기술
IoC (Inversion of Control) : 직접 제어해야하는 부분에 대한 권한을 프레임워크 등에 넘기는 기술
AOP (Aspect Oriented Programming) : 공통의 관심 사항을 추출하여 원하는 곳에 적용하는 기술
DAO (Data Acess Object) : DB에 접근하여 실제 데이터를 조회 또는 조작하는 클래스, Repository또는 Mapper에 해당
BO (Business Object) : 여러 DAO를 활용해 비지니스 로직을 처리하는 클래스, Service에 해당
DTO (Data Transfer Object) : 데이터를 주고 받기 위해 사용하는 클래스
VO (Value Object) : 실제 데이터만을 저장하는 클래스
- Spring에서의 싱글톤 패턴
싱글톤 패턴은 1개의 클래스당 1개의 객체만을 생성하여 사용하는 디자인 패턴이다.
- Spring MVC
웹 애플리케이션 개발을 위한 MVC 패턴 기반의 웹 프레임워크이다.
애플리케이션 구성요소를 Model, View, Controller로 분리한다.
장점 : 의존성 주입을 통해 컴포넌트 강의 결합도를 낮출 수 없어 단위테스트가 용이함
단점 : XML을 기반으로 프로젝트 설정에 너무 많은 시간을 필요로 하고 톰캣과 같은 WAS를 별도로 설치해주어야 함
- Spring Boot
자동설정을 도입하여 설정 시간을 줄여주고 내장 톰캣을 제공하여 별도의 WAS를 필요로 하지 않음
공유하기 글 요소 저작자표시
from http://soda-dev.tistory.com/31 by ccl(A) rewrite - 2021-10-13 02:27:28