📌 자바 런타임 메모리 구조
📌 자바란 무엇인가?
객체지향프로그래밍 언어
📌 Garbage Collector란?
메모리가 부족할 때 Garbage를 정리해주는 프로그램이다. ~ 메모리를 해제시킨다.
📌 객체가 무엇인가?
세상에 존재하는 모든 것이다.
📌 프로그래밍에서의 객체가 무엇인가?
데이터의 분산을 막기 위해 데이터와 기능을 하나로 묶은 그룹이다.
Ex) 컴퓨터 = 데이터(키보드, 마우스, 모니터) + 기능(화면제공, 입력, 출력)
📌 자바의 컴파일 과정을 설명해라
고급언어로 작성되어있는 .java 파일을 byte code 즉, .class 언어인 기계어로 바꾸는 과정이다.
📌 자바의 장점과 단점에 대해 설명해라
장점 : 객체지향언어이다, 자동으로 메모리를 관리해준다, JVM위에서 실행하므로 운영체제에 독립적이다, 멀티스레드를 지원한다.
단점 : 실행속도가 다른 언어(c,c++)에 비해 느리다, 언어가 어렵다, 불편한 예외처리(컴파일에서도 문제가 생길 수 있음)
📌 객체지향언어에 대해 설명하라
객체를 만들고 조작하며 객체끼리 관계를 맺음으로써 다수의 객체가 함께 사용될 수 있게 한다.
📌 객체지향언어와 절차지향언어의 차이점에 대해 설명해라
절차지향언어 : 개체가 순차적으로 만들어진다.
Ex) 자전거를 예시로 들자면 핸들, 바퀴, 의자 순서대로 만들어진다면 의자를 변경하면 핸들과 바퀴도 모두 변경해야한다. 즉, 모두 유기적으로 연결되어있는 구조이다.
객체지향언어 : 개체가 연결되어진 형태가 아니다.
Ex) 캡슐화, 추상화, 상속, 다형성
📌 Service인터페이스와 ServiceImpl클래스로 나누는 이유?
하나의 인터페이스를 구현하는 여러 구현체가 있고 기능에 따라 적절한 구현체가 들어가서 다형성을 주기 위함이다.
📌 클래스란?
객체라는 추상적인 개념을 코드화 한 것, 객체를 만들기 위한 설계도
📌 변수란?
데이터를 저장하기 위해 프로그램에 의해 이름을 할당 받은 공간
📌 싱글톤 패턴이란?
객체를 오직 하나만 생성하여 생성된 객체를 프로그램 언제 어디서나 접근하여 사용할 수 있도록 하는 패턴
📌 객체지향언어의 특징 4가지
📌 자바에서의 접근제한자
📌 오버로딩과 오버라이딩?
📌 스레드?
프로세스 내에서 실제로 작업을 실행하는 단위(프로세스 내에서 stack 영역만 따로 할당받고 code, data,heap 영역은 공유한다.)
📌 멀티스레드?
하나의 프로세스 내에서 2개 이상의 스레드가 동시에 실행하는 것을 말한다.
📌 멀티스레드의 동시성과 병렬성에 대해 설명해라
📌 멀티스레드의 데드락에 대해 설명하시오
둘 이상의 프로세스들이 자원을 보유한 상태에서 서로가 원하는 자원을 가지고 무한정 기다리는 상황
Ex) P1은 P2가 가진 자원을 필요로 하고 P2는 P1이 가진 자원을 필요로 하는 상황
📌 Context Switching이란?
어떤 하나의 프로세스가 실행하고 있는 과정에서 인터럽트에 의해 다른 프로세스가 실행해야 할 때 이전에 실행하던 프로세스의 상태를 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값을 교체하는 작업
📌 Thread Safe란?
멀티스레드 환경에서 어떤 공유 자원에 여러 스레드가 동시에 접근해도 프로그램 실행에 문제가 없는 상태
📌 스레드풀?
스레드 풀은 작업 처리에 사용되는 스레드를 제한된 개수만큼 정해 놓고 작업 큐에 들어오는 작업들을 하나씩 스레드가 맡아 처리한다. 따라서 작업 처리 요청이 폭증해도 작업 큐라는 곳에 작업이 대기하다가 여유가 있는 스레드가 그것을 처리하므로 스레드의 전체 개수는 일정하며 애플리케이션의 성능도 저하되지 않는다.
📌 서블릿이란?
동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 어플리케이션 기술이다.
웹 요청과 응답의 흐름을 간단한 메소드 호출만으로 체계적으로 다룰 수 있습니다.
📌 proxy란?
client와 server를 연결해주는 매개체
📌 스프링 시큐리티란?
인증과 인가에 초점을 맞춘 프레임워크
📌 쿠키와 세션을 사용하는 이유?
HTTP의 비연결성과 비상태성이라는 특징을 보완하기 위해서 사용
📌 비연결성과 비상태성이란?
비연결성은 클라이언트가 서버에 요청(request)을 했을 때, 그 요청에 맞는 응답(response)을 보낸 후 연결을 끊는 처리방식
비상태성은 클라이언트의 상태 정보를 가지지 않는 서버 처리 방식입니다. 첫번째 통신에서 클라이언트와 데이터를 주고 받았다 해도, 두번째 통신에서는 이전 데이터를 유지하지 않는다.
📌 쿠키와 세션 비교
📌 LocalStorage와 SessionStorage
//Set the value in a local storage object
localStorage.setItem('name', 'sanghoone');
//Set the value in a local storage object
localStorage.getItem('name');
//Delete the value from local storage object
localStorage.removeItem('name'); //Delete specifice obeject from local storege
localStorage.clear(); //Delete all from local storege
⇒ 사용자가 브라우저 창을 닫았을 때 데이터는 삭제되지 않으며 일, 주, 월 및 연도에 사용할 수 있는 만료 날짜 없이 사용자 정보 데이터를 저장한다.
//Set the value in a session storage object
sessionStorage.setItem('name', 'sanghoone');
//Set the value in a session storage object
sessionStorage.getItem('name');
//Delete the value from sessionstorage object
sessionStorage.removeItem('name'); //Delete specifice obeject from session storege
sessionStorage.clear(); //Delete all from session storege