고마구의 개발 블로그
241021 월요일 -깃꾸미기, 면접대비 본문
https://rahuldkjain.github.io/gh-profile-readme-generator/
1. JVM, JRE, JDK의 차이점
- JVM(Java Virtual Machine): 자바 바이트코드를 실행하는 가상 머신입니다. 플랫폼 독립적인 특성을 제공하며, 프로그램이 운영체제와 하드웨어와 상관없이 실행될 수 있도록 해줍니다.
- JRE(Java Runtime Environment): JVM과 함께 자바 프로그램을 실행하는 데 필요한 라이브러리와 기타 구성 요소들을 포함한 실행 환경입니다.
- JDK(Java Development Kit): JRE와 함께 자바 애플리케이션을 개발하는 데 필요한 개발 도구(컴파일러, 디버거 등)를 포함합니다.
면접에서 답변 예시:
"JVM은 자바 바이트코드를 실행하는 역할을 하고, JRE는 JVM과 필요한 라이브러리들을 포함해 자바 프로그램을 실행할 수 있는 환경을 제공합니다. JDK는 개발자가 자바 애플리케이션을 개발할 수 있도록 JRE와 함께 컴파일러, 디버거 등의 개발 도구를 포함하고 있습니다."
2. Java의 메모리 관리
- 힙 영역(Heap): 객체와 인스턴스 변수가 저장됩니다. 가비지 컬렉터가 관리합니다.
- 스택 영역(Stack): 메서드 호출 시 생성되는 프레임과 지역 변수가 저장됩니다. 메서드 호출이 끝나면 해당 메모리가 자동으로 반환됩니다.
- 가비지 컬렉션(Garbage Collection): 더 이상 참조되지 않는 객체를 자동으로 메모리에서 해제하는 자바의 메모리 관리 메커니즘입니다.
면접에서 답변 예시:
"자바에서는 메모리를 크게 힙과 스택으로 나누어 관리합니다. 힙에는 객체가 저장되며, 가비지 컬렉터에 의해 관리됩니다. 스택에는 메서드 호출 시 생성된 프레임과 지역 변수가 저장되며, 메서드 실행이 끝나면 자동으로 메모리가 해제됩니다."
3. OOP의 4대 특성
- 캡슐화: 객체의 데이터를 보호하고, 외부에서 직접 접근하지 못하도록 제어하는 개념입니다. 주로 private 키워드와 함께 사용됩니다.
- 상속: 기존 클래스의 기능을 물려받아 새로운 클래스에서 재사용하거나 확장할 수 있는 기능입니다.
- 다형성: 같은 인터페이스나 부모 클래스를 통해 여러 가지 형태의 객체를 사용할 수 있게 하는 개념입니다. 메서드 오버로딩과 오버라이딩이 그 예입니다.
- 추상화: 복잡한 시스템을 간단하게 표현하기 위한 방법으로, 중요한 부분만을 표현하고 나머지는 숨기는 것을 의미합니다. 추상 클래스나 인터페이스로 구현됩니다.
면접에서 답변 예시:
"객체지향 프로그래밍의 4대 특성은 캡슐화, 상속, 다형성, 추상화입니다. 캡슐화를 통해 객체의 데이터를 보호하고, 상속을 통해 기존 클래스를 재사용할 수 있습니다. 다형성을 통해 부모 클래스를 통해 다양한 자식 객체를 사용할 수 있으며, 추상화를 통해 복잡한 개념을 단순하게 표현할 수 있습니다."
4. Java에서의 예외 처리
- Checked Exception: 컴파일 시점에서 발생할 수 있는 예외로, 반드시 예외 처리(try-catch)를 해야 합니다. 예: IOException, SQLException
- Unchecked Exception: 런타임에 발생하는 예외로, 컴파일러가 체크하지 않으며 선택적으로 처리할 수 있습니다. 예: NullPointerException, ArrayIndexOutOfBoundsException
- 예외 처리 방법: try-catch 블록으로 예외를 처리하고, 필요시 finally 블록을 사용해 리소스 정리를 할 수 있습니다.
면접에서 답변 예시:
"Java에서는 Checked Exception과 Unchecked Exception으로 예외를 구분합니다. Checked Exception은 컴파일 시점에서 반드시 예외 처리를 해야 하며, 주로 IO 작업에서 발생합니다. Unchecked Exception은 런타임에 발생하며, 선택적으로 예외 처리를 할 수 있습니다. 일반적으로 try-catch 블록을 사용해 예외를 처리하고, 필요시 finally 블록을 통해 리소스를 정리합니다."
5. Spring Framework의 핵심 개념
- IoC (Inversion of Control): 객체의 생성 및 관리를 개발자가 아닌 Spring 컨테이너가 담당하는 개념입니다. 주입을 통해 객체 간 결합도를 낮출 수 있습니다.
- DI (Dependency Injection): 필요한 객체를 Spring이 주입해주는 방식으로, 생성자 주입, 세터 주입 등의 방법이 있습니다.
- AOP (Aspect-Oriented Programming): 공통된 로직(예: 로깅, 트랜잭션)을 분리해 코드의 중복을 줄이고, 핵심 비즈니스 로직에 집중할 수 있게 합니다.
면접에서 답변 예시:
"Spring의 핵심 개념은 IoC, DI, AOP입니다. IoC는 객체 생성을 Spring 컨테이너에 맡기고, DI는 의존성을 주입하여 결합도를 낮춥니다. AOP는 공통된 로직을 핵심 로직과 분리하여 코드의 중복을 줄이는 데 도움이 됩니다."
6. RESTful API와 SOAP의 차이점
- REST: Representational State Transfer의 약자로, HTTP 프로토콜을 활용한 아키텍처 스타일입니다. 주로 JSON 형식을 사용하고, URL을 통해 자원을 식별합니다.
- SOAP: Simple Object Access Protocol의 약자로, XML 기반의 프로토콜입니다. 주로 보안이나 트랜잭션이 중요한 시스템에서 사용됩니다.
면접에서 답변 예시:
"REST는 경량 프로토콜로 HTTP를 사용하며, 주로 JSON 형식으로 데이터를 주고받습니다. 반면 SOAP는 XML을 기반으로 한 프로토콜로, 보안과 트랜잭션 처리에 강점이 있어 금융 시스템 같은 곳에서 주로 사용됩니다."
7. JPA(Hibernate)란 무엇이며, 왜 사용하는가?
- JPA: Java Persistence API로, 자바 객체를 관계형 데이터베이스에 매핑하기 위한 표준입니다. SQL을 직접 작성하지 않고도 객체와 데이터베이스 간의 상호작용을 쉽게 관리할 수 있습니다.
- Hibernate: JPA의 대표적인 구현체로, 복잡한 데이터베이스 쿼리를 간소화하고 개발자가 객체 중심으로 데이터베이스 작업을 할 수 있게 해줍니다.
면접에서 답변 예시:
"JPA는 객체를 데이터베이스에 쉽게 매핑할 수 있게 해주는 자바 표준입니다. Hibernate는 JPA의 구현체로, 복잡한 SQL 쿼리를 추상화하여 객체 지향적인 방식으로 데이터베이스를 다룰 수 있게 해줍니다."
8. 멀티스레딩과 동기화 (Synchronization)
- 멀티스레딩: 여러 스레드가 동시에 실행되어 프로그램의 성능을 향상시킬 수 있습니다. 하지만 여러 스레드가 동시에 자원을 공유할 경우, 동기화가 필요합니다.
- 동기화: 여러 스레드가 동시에 접근할 때 발생할 수 있는 데이터 불일치를 방지하기 위해 synchronized 키워드를 사용하여 임계 구역을 보호합니다.
면접에서 답변 예시:
"멀티스레딩은 여러 스레드가 동시에 실행되어 성능을 높일 수 있지만, 동기화되지 않은 상태에서 자원에 접근할 경우 문제가 발생할 수 있습니다. 이를 방지하기 위해 synchronized 키워드를 사용해 임계 구역을 보호합니다."
'KDT풀스택과정 공부' 카테고리의 다른 글
241023 27주차 수요일 (0) | 2024.10.23 |
---|---|
241022 화요일 면접대비 (0) | 2024.10.22 |
241019 토요일 (0) | 2024.10.19 |
241017 26주차 목요일 - 배포 (0) | 2024.10.17 |
241016 26주차 수요일 - 플러터 배포 오류시 (0) | 2024.10.16 |