영보의 SystemOut.log

[JAVA] 자바 Back-end 백앤드 면접 질문 정리 본문

Language/JAVA

[JAVA] 자바 Back-end 백앤드 면접 질문 정리

영보로그 2020. 12. 30. 22:22
반응형

1. Garbage Collection 가비지 컬렉션

 - 메모리 누수 방지

 - 힙에 저장된 데이터 중 더 이상 콜 스택에 의해 접근할 수 없는 대상의 메모리 회수

 

 

2. Vector와 ArrayList의 차이는?

 - 벡터는 한 번에 하나씩 쓰레드에서만 접근 가능

 - 어레이리스트는 동시에 여러 쓰레드에서 접근 가능

 # 사용해 본 결과 List.remove할 때 어레이리스트는 주의를 요함

 

 

3. StringStringBuffer의 차이

 - 스트링은 불변, 스트링 버퍼는 가변

 - 스트링 연산 시 새로운 인스턴스 생성, 스트링 버퍼는 기존 인스턴스 변경

 # 연산이 많은 경우 스트링 버퍼가 속도나 메모리 절약 면에서 유리함을 경험.

 

 

4. JAVA Serialization

 - 서로 다른 자바 프로그램 간의 데이터 교환을 위해 데이터를 바이트 형태로 변환하는 것

 - java.io.ObjectOutputStream 객체를 사용

 

 

5. JAVA의 메모리 영역

 - 메소드 : 클래스

 - : 클래스 인스턴스 저장

 - 스택 : 프로그램 실행 시에 필요한 임시 공간. 후입선출

 # 질문 드리기 : 힙 선입선출?

 

 

6. 오버로딩과 오버라이딩의 차이

 - 오버로딩은 같은 메소드 이름에 매개변수를 달리하여 동일한 기능 수행

 - 오버라이딩은 부모 클래스의 메소드를 재정의(변경)하는 것

 

 

7. 추상 클래스와 인터페이스의 차이

 - 추상 클래스는 클래스 내에 추상 메소드가 하나 이상 포함된 것

 - 인터페이스는 모든 메소드가 추상 메소드인 것(jdk 1.8부터는 default 키워드로 구현 가능)

 

 

8. 제네릭이란?

 - 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법

 - 타입 체크를 강력하게 하는 것. 반복문을 돌 때 에러 방지

 

 

9. 자바 바인딩의 종류

 - 정적 바인딩 : 프로그램 실행 전, 컴파일 단계에서 메모리에 할당되는 것

    → static 클래스, static 메소드

 - 동적 바인딩 : 프로그램 실행 중 메모리에 할당되는 것.

    인스턴스 메소드

 

 

10. Stack과 Queue의 차이

 - 둘 다 자료구조의 종류

 - 스택은 후입선출

 - 큐는 선입선출

 

 

11. 자바 컴파일 과정

 - Javac .java컴파일 해서 .class파일 생성. JVM은 이 class파일을 읽어서 실행. Interpreter가 한 줄씩 인터프리팅하는 동안 JIT Compiler가 코드 전체 컴파일 진행. 전체 컴파일이 끝나면 이후로는 컴파일된 코드 직접 실행

 

 

12. Wrapper Class

 - 기본형 변수를 객체처럼 다뤄야 할 경우 사용. 자주 사용되는 메소드 지원.

 

 

13. 소프트웨어 패턴

 1. 싱글톤 : 생성자가 여러 차례 호출되어도 최초의 생성자가 생성한 객체를 리턴. 메모리 절약

 2. 팩토리 : 생성자를 별도의 인터페이스로 분리하여 객체를 만들어내는 공장으로 이용하는 것.

 3. 프로토타입 : 데이터를 이미 가지고 있는 기존 객체를 복사하여 데이터를 수정하는 것

 4. 어댑터 : 서로 다른 클래스를 연결하여 사용하는 것. Via 인터페이스

 5. 옵저버 : 객체의 상태 변화를 관찰하는 관찰자들의 목록을 객체에 등록하여 이벤트 핸들링

 

 

14. DAO와 Service 차이

 - DAO : 단일 데이터 접근 / 갱신

 - Service : 여러 DAO를 호출하여 여러 곳의 데이터 접근 / 갱신

 

 

15. OOP (Object Oriented Programming)

- 객체 지향 프로그램

- 반복되는 코드의 양을 줄여줌

- 어플리케이션 전체에서 사용되는 부가 기능들을 모듈화 하기 어려움

반응형