[CS : JAVA] BE 면접 대비 질문 리스트(2)

2022. 5. 1. 23:13CS 스터디

참고 링크 : https://github.com/ksundong/backend-interview-question

jvm

  • 자바 가상 머신

  • 자바 어플리케이션을 클래스 로더를 통해 읽어 자바 API와 함께 실행하는 것

  • 메모리 관리를 수행하며 스택기반의 가상머신이다.

gc

  • HEAP 영역에 존재하는 사용하지 않는 객체들을 제거하는 작업을 수행한다.

  • 개발자가 직접 메모리를 해제할 수 없기 때문에 필요하다.

  • mark를 통해 사용하지 않는 객체를 표시하고, sweep을 통해 지운다. 그 후 단편화된 메모리를 compact한다.

  • gc동안은 gc를 하는 스레드 이외의 모든 스레드는 정지한다.

컬렉션 프레임워크

  • 객체, 데이터 등을 효율적으로 관리할 수 있는 자료구조들이 있는 라이브러리

제너릭

  • 자바의 타입안정성을 보장하는 역할

  • 컴파일 단계에서 타입체킹을 통해 타입 안정성을 높히고 형변환의 번거로움을 줄여준다.

어노테이션

  • 인터페이스 기반의 문법으로 특별한 의미를 부여하거나 기능을 주입하는 역할을 한다.

오버라이딩 & 오버로딩

  • 오버라이딩 : 상위 클래스의 메소드를 재정의하는 것을 의미한다.

  • 오버로딩 : 하나의 메소드명이 매개변수의 개수나 타입에 따라서 여러 개의 메소드로 구현될 수 있는 것을 의미한다.

인터페이스 & 추상클래스

  • 추상클래스 : 객체의 추상적인 상위 개념으로 공통된 개념을 표현할 때 사용된다. 하위 클래스간 연관관계가 존재한다.

  • 인터페이스 : 구현 객체가 동일한 기능을 한다는 것을 보장하기 위해 사용한다. 다중상속이 가능하며 하위 클래스간 연관관계가 존재하지 않을 수도 있다.

클래스 & 객체

  • 객체 : 식별 가능한 개체 또는 사물로, 클래스에서 정의된 것을 바탕으로 실제 메모리에 할당되는 것을 의미한다.

  • 클래스 : 데이터를 추상화하여 객체의 상태나 행위를 변수와 메소드로 정의한 것, 즉 객체를 표현하기 위한 메타변수에 해당한다.

정적(static)

  • 클래스 멤버라고도 하며, 클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할 때 클래스별로 관리된다.

  • permGen또는 metaspace에 저장되며 모든 객체가 공유하고 하나의 멤버를 어디서든지 참조할 수 있다.

  • GC의 관리 영역밖에 존재하기 때문에 프로그램 종료시까지 메모리를 할당한 채로 존재한다.

접근 제어자

  • public : 전체 영역에서 접근 가능

  • protected : 상속한 클래스에서 접근 가능

  • default : 해당 패키지에서 접근 가능

  • private : 해당 클래스에서 접근 가능

객체지향

https://jeong-pro.tistory.com/95

  • 프로그래밍에 필요한 데이터를 추상화하여 상태와 행위를 가지는 객체를 만들고 객체들의 유기적인 상호작용을 통해 로직을 구현하는 프로그래밍 방법

  • 추상화 : 클래스를 설계하는 것 자체, 공통의 속성과 기능을 묶어 이름을 붙이는 것

  • 캡슐화 : 속성과 메소드를 클래스라는 캡슐에 논리적으로 분류하여 넣는 것.

  • 상속 : 부모클래스의 속성과 기능을 이어받아 사용할 수 있게하고 기능의 일부분을 재정의하여 사용할 수 있게하는 것.

  • 다형성 : 하나의 변수명, 함수명이 상황에 따라 다른 의미로 해석될 수 있다. 오버로딩과 오버라이딩이 이에 해당됨.

원시타입 & 참조타입

  • 원시타입 : 자바에 8개만 존재하는 타입(boolean, char, byte, short, int, float, long, double)

  • 참조타입 : 원시타입 이외의 모든 타입으로 object 클래스거나 이를 상속하는 클래스들

  • 원시타입은 초기화시 default값을 가지지만, 참조 타입은 null로 초기화된다.

  • 원시타입은 반드시 값이 존재해야하지만 참조 타입은 null 포인터를 가질 수 있다.

java8 추가 기능

  • optional : null-safety를 제공

  • lambda : 함수형 프로그래밍 지원

  • stream : 병렬 처리 지원, 가독성 향상, 다양한 데이터의 처리에 대한 동일한 표현 방식 제공

jpa N + 1

https://incheol-jung.gitbook.io/docs/q-and-a/spring/n+1