😉 오픈카톡을 직접 개설해서 사람들을 이끌며 매주 과제를 내고 있다..
그러던 중 스터디원분께서 제안해주셔서 동참해서 하게 됐다!
자바에 대한 마음이 같은 사람들끼리 모여서 으쌰으쌰 하고 있는 중..
1. JDK, JRE, JVM이란 무엇인가?

JDK는 JRE를 포함하고 있고, Development Tools 를 가지고 있다.
JRE는 JVM과 library classes 를 가지고 있다.
- JDK(Java Development Kit)
- 개발자들이 자바로 개발하는 데 사용된다.
- SDK(Software Development Kit)란?
- 하드웨어 플랫폼, 운영체제 또는 프로그래밍 언어 제작사가 제공하는 툴이다.
- JRE(Java Runtime Environment)
- 자바 프로그램을 실행(동작)시킬 때 필요한 라이브러리 API를 함께 묶어서 배포되는 패키지
- JRE는 기존에는 개별 설치가 가능했지만, JDK 11버전부터는 따로 제공되지 않는다고 한다.
- JVM(Java Virtual Machine)
- 자바를 돌리는 프로그램,
운영체제에 종속적이기 때문에, 운영체제에 맞는 자바 가상 머신을 설치해주어야 한다.
1) 어느 운영체제에서도 실행될 수 있도록 한다.
- 컴파일된 코드와 하드웨어/OS 사이 중간에서, JVM이 Byte Code로 변환해주기 때문이다.
2) 자바 프로그램의 메모리 관리&최적화를 효율적으로 해준다.
자바 실행 과정
- 자바 컴파일러(JDK에서)가 JAVA로 작성된 코드 .java 파일을 .class 파일인 Byte Code로 컴파일 한다.
- Byte Code를 기계어로 변환시키기 위해서는 가상 CPU가 필요한데, JVM이 하게 된다.
- JVM이 Byte Code를 기계어(Binary Code)로 변환한다.
- JVM에 의해 컴파일된 기계어는 바로 CPU에서 실행되어 사용자에게 서비스를 제공해준다.
소스 코드 작성 -> 컴파일 -> 클래스 로딩 -> 바이트 코드 해석 및 실행
- 직접 개발 필요: JDK
- JAVA 프로그램 실행: JRE
2. 자바 가비지 컬렉터란?
- 자바 프로그램에서 메모리 관리를 담당하는 프로세스이다.
- 이것은 사용되지 않는 메모리를 식별하여 해제함으로써 프로그램에서 메모리 누수를 방지합니다.
- 자동 메모리 관리: 가비지 컬렉터가 더 이상 필요하지 않은 객체를 찾아내 자동으로 메모리를 해제합니다.
- 메모리 해제: 객체가 더 이상 필요하지 않은 객체를 찾아내어 해당 객체를 식별하고 메모리에서 제거합니다.
- 이를 통해 사용되지 않는 메모리를 회수하여 다시 사용 가능하게 합니다.
- 성능 영향
- 메모리 누수 방지: 메모리 누수란 더 이상 필요하지 않은데도 메모리가 해제되지 않아 계쏙 쌓이는 현상을 말합니다.
자바 면접100
📌 JDK와 JRE의 차이점은 무엇입니까?
- 운영체제에 상관없이 자바를 개발할 수 있도록 도와주는 프로그램입니다. JDK는 JRE와 개발 도구(컴파일러;javac 등)가 포함되어 있습니다.
- JRE는 JVM을 포함하고 있으며 라이브러리 및 기타 파일들로 구성되어있으며, 자바 애플리케이션을 실행하기 위한 환경을 제공합니다.
📌 ==와 equals의 차이점은 무엇입니까?
==연산자는 같은 메모리(동일한 객체)를 참조하는지를 비교합니다. 반면 equals 메소드는 비교하고자 하는 두개의 대상의 값 자체(데이터값)를 비교합니다.
📌 두 객체가 동일한 hashCode를 가지면 Equals()가 참이어야 합니다, 그렇죠?
📌 자바에서 final의 기능은 무엇입니까?
- 자바에서의 final은 변경 불가의 의미로, 사용하게 되면 상수처럼 사용할 수 있습니다. final은 변수, 메소드, 클래스에서 사용 가능합니다.
- 변수에서 적용하면 값 변경이 불가능한 상수로서 사용되어집니다.
- 메소드에서 적용하면 오버라이딩, 즉 재정의가 불가능합니다.
- 클래스에 final 키워드를 적용하면 상속 불가한 클래스가 됩니다.
📌 자바에서 Math.round(-1.5)는 무엇을 의미합니까?
- 주어진 숫자를 반올림하여 가장 가까운 정수를 반환하여 -1이 결과로 반환됩니다.
📌 String은 기본 데이터 타입입니까?
- 참조형 타입입니다. 참조형 타입에는 배열타입, 열거타입, 클래스, 인터페이스가 있습니다. 참조형은 기본 데이터 타입과 달리 실제 값이 저장되지 않고, 값이 저장된 공간의 주소를 할당합니다.
📌 자바에서 문자열을 조작하는 클래스는 무엇이 있습니까? 각 클래스의 차이점은 뭘까요?
- String 클래스가 있고, 다양한 기능들을 가진 메서드들이 존재합니다.
charAt()메서드는 해당 문자열의 특정 인덱스에 해당하는 문자를 반환합니다.
concat()메서드는 해당 문자열 뒤에 인수로 전달된 문자열을 추가한 새로운 문자열을 반환합니다.
indexOf() 메서드는 해당 문자열에서 특정 문자나 문자열이 처음으로 등장하는 위치의 인덱스를 반환합니다.