[면접] Java, Spring 면접 예상 질문

zizi·2023년 7월 26일

면접 대비

목록 보기
1/1

> Java

: 자바는 객체 지향 프로그래밍 언어로, 캡슐화, 상속, 다형성이 잘 적용된 언어입니다.

특징

  • 가비지 컬랙터를 통한 자동적인 메모리 관리가 가능합니다.
  • 자바가상머신(JVM)만 설치하면 운영체제와 상관없이 작동합니다. (운영체제에 독립적입니다.)

> 객체지향 프로그래밍(OOP)

: 데이터를 객체로 취급하는 프로그래밍 방식으로 객체와 객체간 상호작용을 통해 프로그래밍이 동작하는 것을 말합니다.

특징

  • 코드 재사용성이 높다.
  • 직관적 코드 분석이 가능하다.
  • 상속을 통한 장점 극대화.

추상화 : 불필요한 세부 사항들은 제거하고 가장 본질적이고 공통적인 부분만을 추출하여 표현하는 것입니다.
캡슐화 : 연관있는 변수와 함수를 클래스로 묶어 중요한 데이터나 기능에 접근하는 것을 제한할 수 있습니다.
상속 : 자식 클래스가 부모클래스를 물려받아 코드 중복을 줄이고 개발 속도가 향상됩니다.
다형성 : 어떤 객체의 속성이나 기능이 그 맥락에 따라 다른 역할을 수행할 수 있는 객체 지향의 특성입니다.

> Overloading vs Overriding

1) Overloading(오버로딩)
: 같은 이름의 메소드를 여러개 정의하는 것으로 매개변수의 타입이 다르거나 개수가 달라야 합니다.

2) Overriding(오버라이딩)
: 상속에서 나온 개념으로 부모 클래스의 메소드를 자식 클래스에서 재정의하는 것입니다.

> Sevelet, JSP

동적인 웹 페이지를 생성하고 웹 브라우저와 상호작용하는 데에 사용합니다.
1) Sevelet
: 자바 코드 안에 HTML 태그가 삽입되며 자바 언어로 되어있습니다. 주로 컨트롤러층을 담당합니다.

2) JSP
: HTML 코드에 자바 코드를 포함하여 웹 페이지를 생성하는 기술입니다. 주로 뷰층을 담당합니다.

> JDBC

  • (Java Data Base Connection)
  • Java언어를 통해 데이터베이스에 접근할 수 있는 프로그래밍을 의미합니다.

> Mybatis

  • SQL 매핑 프레임워크로서, SQL 쿼리와 자바 객체를 매핑하기 위한 XML 파일을 사용합니다.
  • 복잡한 쿼리나 다이나믹한 쿼리에 강합니다.

> ORM

  • 객체와 관계형 데이터베이스의 데이터를 자동으로 연결해주는 개념입니다.
  • 객체 간의 관계를 바탕으로 SQL을 자동으로 생성해줍니다.

> JPA

  • (Java Persistence API)
  • 자바의 객체 지향 프로그래밍관계형 데이터베이스 간매핑을 쉽게 하기 위한 API입니다.
  • ORM 기술을 구현한 표준 인터페이스로, 개발자가 객체 지향적인 방식으로 데이터를 다룰 수 있게 해줍니다.

> Get vs Post 방식

1) Get 방식

  • 주로 데이터 요청할 때 사용합니다.
  • 주소창에 쿼리 스트링이 그대로 보여지기 때문에 보안성이 떨어진다.
  • Post방식보다 상대적으로 전송 속도가 빠릅니다.

2) Post 방식

  • 서버에 데이터를 전달하기 위해 사용합니다.
  • 주소창에 데이터 정보가 노출되지 않아 보안성이 높습니다.
  • 서버로 보내기 전에 인코딩하고, 전송 후 서버에서는 다시 디코딩 작업을 합니다.
  • 속도가 비교적 느립니다.

Session과 Cookie 사용 이유
현재 인터넷에서 사용하고 있는 HTTP프로토콜의 사용자 정보를 유지할 수 없다는 특징 때문에 새로운 페이지를 요청할 때마다 새로운 접속이 이루어지며 페이지 간의 관계가 지속되지 않습니다.
이에 따라 특정 방문자가 머무르고 있는 동안에 그 방문자의 상태를 지속시키기 위해 쿠키와 세션을 이용한다.

1) Session

  • 특정 웹사이트에서 사용자가 머무르는 기간 또는 한 명의 사용자의 한번의 방문을 의미합니다.
  • Session에 관련된 데이터는 Server에 저장됩니다.
  • 웹 브라우저의 캐시에 저장되어 브라우저가 닫히거나 서버에서 삭제시 사라집니다.
  • Cookie에 비해 보안성이 좋습니다.

2) Cookie

  • Cookie는 인터넷 사용자가 특정 웹서버에 접속할 때, 생성되는 개인 아이디와 비밀번호, 방문한 사이트의 정보를 담은 임시 파일입니다.
  • Server가 아닌 Client에 텍스트 파일로 저장됩니다.
  • Client PC에 저장되는 정보로 다른 사용자에 의해서 임의로 변경이 가능하기 때문에 정보 유출 가능성이 있고 Session보다 보안성이 낮습니다.

보안성이 낮은 Cookie 대신 Session을 사용하면 되는데 안하는 이유?
모든 정보를 Session에 저장하면 Server의 메모리를 과도하게 사용하게 되어 Server에 무리가 갑니다.

> MVC 패턴

  • 프로젝트를 구성할 때 구성요소를 Model, View, Controller 세 가지의 역할로 구분하는 설계 방식 및 방법론입니다.
  • 비즈니스 처리 로직을 분리시켜 독립적으로 개발하기 수월하고 재사용성에 유용합니다.

Model : 비즈니스 영역의 로직을 처리합니다.
View : 사용자에게 보여지는 화면을 담당합니다.
Controller : Model과 View를 연결하여 정보 교환하는데 사용됩니다. 사용자 입력 처리와 흐름제어를 담당합니다.

> Garbage Collection(가비지 컬렉션)

시스템에서 더이상 사용하지 않는 동적 할당된 메로리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것으로 시스템에서 가비지컬렉션을 수행하는 부분을 가비지 컬렉터라 부른다.

> 메모리 영역

자바의 메모리 공간은 크게 Method 영역, Stack 영역, Heap 영역으로 구분되고, 데이터 타입에 따라 할당됩니다.

1) 메소드(Method) 영역
: 전역변수와 static변수를 저장하며, Method영역은 프로그램의 시작부터 종료까지 메모리에 남아있습니다.

2) 스택(Stack) 영역
: 지역변수와 매개변수 데이터 값이 저장되는 공간이며, 메소드가 호출될 때 메모리에 할당되고 종료되면 메모리가 해제됩니다.
LIFO(후입선출) 구조를 갖고 변수에 새로운 데이터가 할당되면 이전 데이터는 지워집니다.

3) 힙(Heap) 영역
: new 키워드로 생성되는 객체(인스턴스), 배열 등이 저장되며, 가비지 컬렉션에 의해 메모리가 관리됩니다.

> Thread

Thread(쓰레드) - 프로세스내에서 동시에 실행되는 독립적인 실행 단위를 말합니다. 장점으로는 자원을 많이 사용하지 않고 구현이 쉬우며 범용성이 높습니다.
Process(프로세스) - 운영체제에서 실행중인 하나의 프로그램을 말합니다.(하나 이상의 쓰레드를 포함)

1) Thread 장점

  • 빠른 프로세스 생성
  • 적은 메모리 사용
  • 쉬운 정보 공유

2) Thread 단점

  • 교착상태에 빠질 수 있습니다.
  • 참고 ) 교착상태 - 다중프로그래밍 체제에서 하나 또는 그 이상의 프로세스가 수행 할 수 없는 어떤 특정시간을 기다리고 있는 상태.

> 접근제한자

public > protected > default > private

public : 접근 제한이 없어서 같은 프로젝트 내에 어디서든 사용 가능
protected : 같은 패키지 내, 다른 패키지에서 상속받아 자손클래스에서 접근 가능
default : 같은 패키지 내에서만 접근 가능
private : 같은 클래스 내에서만 접근 가능

> Collection(컬렉션) - List, Map, Set

  • Java에서 Collection(컬렉션)이란 데이터의 집합, 그룹을 의미하며 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공합니다.

Collection 주요 인터페이스
List : 순서가 있으며, 데이터 중복을 허용합니다.
Set : 순서가 없으며, 데이터 중복을 허용하지 않습니다.
Map : Key&Value 구조, Key는 중복을 허용하지 않으며, Value는 중복을 허용합니다.

> 직렬화

JVM의 메모리에 상주되어 있는 객체 데이터를 외부 시스템에서도 사용할 수 있도록 바이트 형태로 변환하는 기술입니다.

> Spring Boot와 Spring Framework의 차이

가장 큰 차이점은 Auto Configuration의 차이인 것 같습니다.
Spring은 프로젝트 초기에 다양한 환경설정을 해야 하지만, Spring Boot는 설정의 많은 부분을 자동화하여 사용자가 편하게 스프링을 활용할 수 있도록 돕습니다.
spring boot는 dependency만 추가해주면 설정은 끝나고, 내장된 톰캣을 제공해 서버를 바로 실행할 수 있습니다.

profile
좋았다면 추억이고 나빴다면 경험이다.🍀

0개의 댓글