본문 바로가기
👩‍💻 Tech Interview/└ 예상 기술질문

[JAVA] 예상 질문 정리

by 쫄리_ 2023. 3. 15.
728x90
반응형

ㆍ지원 요건 : Spring, JAVA, MyBatis, JPA, RDBMS(MySql, MariaDB, Oracle, MSSql) , Git

ㆍ우대 사항 : Node 개발 능력


1. Spring Framework에 대해 설명해주세요.

Spring Framework는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로, 엔터프라이즈 애플리케이션 개발을 쉽고 빠르게 할 수 있도록 지원합니다. 주요 특징으로는 제어 역행(IoC), 관점 지향 프로그래밍(AOP), 데이터 접근, 트랜잭션 관리 등이 있습니다.


2. MyBatis와 JPA의 차이점은 무엇인가요?

MyBatis는 SQL 매퍼 프레임워크로, 개발자가 작성한 SQL 문을 자바 객체와 매핑해주는 역할을 합니다. 반면, JPA는 자바 ORM(Object-Relational Mapping) 표준으로, 객체와 관계형 데이터베이스 간의 매핑을 추상화하여 개발자가 SQL을 작성하지 않아도 데이터베이스 작업을 수행할 수 있게 합니다.

 


3. RDBMS의 ACID 속성에 대해 설명해주세요.

· ACID는 관계형 데이터베이스의 트랜잭션을 구성하는 4가지 속성입니다.

  1. 원자성(Atomicity) : 트랜잭션의 모든 작업이 완전히 수행되거나 전혀 수행되지 않아야 함을 보장합니다.
  2. 일관성(Consistency) : 트랜잭션이 성공적으로 완료된 후, 데이터베이스가 일관된 상태를 유지해야 함을 보장합니다.
  3. 고립성(Isolation) : 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격리해야 함을 보장합니다.
  4. 지속성(Durability) : 트랜잭션이 성공적으로 완료되면, 결과는 영구적으로 데이터베이스에 저장되어야 함을 보장합니다.

 

4. Git의 주요 기능과 사용 이유에 대해 설명해주세요.

Git은 분산형 버전 관리 시스템으로, 소스 코드의 버전을 관리하고 협업을 쉽게 할 수 있게 해줍니다. 주요 기능으로는 브랜치, 커밋, 병합, 되돌리기 등이 있으며, 이를 통해 개발자들이 소스 코드 변경 내역을 추적하고, 서로 다른 버전 간의 차이를 비교하며, 여러 개발자들이 동시에 작업한 내용을 병합하는 등의 작업을 수행할 수 있습니다. Git을 사용하면 소스 코드의 안정성이 높아지고, 효율적인 협업이 가능해집니다.

 


5. Node.js가 무엇인지 설명해주세요. (우대 사항)

Node.js는 Chrome V8 JavaScript 엔진을 기반으로 하는 서버 사이드 플랫폼입니다. 이벤트 드리븐, 비동기 I/O를 지원하여 효율적인 확장성을 제공하며, 서버 개발에 주로 사용되지만 웹 애플리케이션, REST API, 실시간 서비스 등에도 사용됩니다. Node.js는 JavaScript를 사용하기 때문에 웹 개발자들이 클라이언트와 서버 사이드 모두를 개발하는데 익숙한 언어를 사용할 수 있다는 장점이 있습니다.

 


6. Spring Boot와 Spring Framework의 차이점은 무엇인가요?

Spring Boot는 Spring Framework를 기반으로한 새로운 프레임워크로, 개발자가 빠르게 Spring 기반 애플리케이션을 개발하고 배포할 수 있도록 도와줍니다. Spring Boot는 시작할 때 필요한 설정을 최소화하고, 내장 웹 서버를 제공하여 별도의 웹 서버 설치 없이 애플리케이션을 실행할 수 있습니다. 또한, 의존성 관리를 쉽게 해주며, 다양한 플러그인과 자동 구성을 제공하여 개발자의 생산성을 높여줍니다.

 

 

7. RDBMS에서 인덱스(index)의 역할과 작동 원리를 설명해주세요.

인덱스는 RDBMS에서 검색 성능을 향상시키기 위해 사용되는 데이터 구조입니다. 인덱스는 테이블의 특정 열(column)에 대해 생성되며, 해당 열의 데이터 값과 해당 레코드의 주소를 가리키는 포인터를 저장하는 역할을 합니다. 인덱스를 사용하면 전체 테이블을 스캔하지 않고도 빠르게 원하는 데이터를 찾을 수 있습니다. 그러나 인덱스가 많아지면 삽입, 삭제, 수정 작업의 성능이 저하될 수 있으므로 적절한 인덱스 관리가 필요합니다.

 

 

8. 트랜잭션 격리 수준(Transaction Isolation Level)에 대해 설명해주세요.

·  트랜잭션 격리 수준은 동시에 실행되는 여러 트랜잭션들이 서로 얼마나 고립되어야 하는지를 정의하는 속성입니다. 격리 수준이 낮을수록 동시성이 높아지지만, 데이터 일관성에 문제가 발생할 수 있습니다. 반대로 격리 수준이 높을수록 데이터 일관성이 유지되지만, 동시성이 낮아질 수 있습니다. 일반적으로 4가지 트랜잭션 격리 수준이 있습니다.

  1. READ UNCOMMITTED : 가장 낮은 수준의 격리로, 다른 트랜잭션에서 커밋되지 않은 데이터를 읽을 수 있습니다. 이로 인해 Dirty Read, Non-repeatable Read, Phantom Read 등의 문제가 발생할 수 있습니다.
  2. READ COMMITTED : 커밋된 데이터만 읽을 수 있는 격리 수준으로, Dirty Read는 방지할 수 있지만, Non-repeatable Read와 Phantom Read는 발생할 수 있습니다.
  3. REPEATABLE READ : 한 트랜잭션 내에서 같은 데이터를 여러 번 읽어도 일관성 있는 결과를 보장하는 격리 수준입니다. Dirty Read와 Non-repeatable Read는 방지할 수 있지만, Phantom Read는 발생할 수 있습니다.
  4. SERIALIZABLE : 가장 높은 수준의 격리로, 트랜잭션을 순차적으로 실행함으로써 동시성 문제를 모두 해결합니다. 이 수준에서는 Dirty Read, Non-repeatable Read, Phantom Read 모두 발생하지 않습니다. 그러나 동시성이 낮아져 성능 저하가 발생할 수 있습니다.



728x90
반응형