Skip to content

Latest commit

 

History

History
112 lines (66 loc) · 6.96 KB

interview.md

File metadata and controls

112 lines (66 loc) · 6.96 KB

1. 자바의 접근 제한자와 역할을 설명하시오.

자바에서 접근 제한자는 클래스, 메서드, 변수 등의 접근 범위를 제한하는 키워드입니다. 네 가지 종류가 있습니다:

  • public: 모든 클래스에서 접근 가능.
  • protected: 같은 패키지 또는 상속받은 클래스에서 접근 가능.
  • default(아무것도 명시하지 않음): 같은 패키지 내에서만 접근 가능.
  • private: 해당 클래스 내에서만 접근 가능.

2. 오버라이딩(Overriding)과 오버로딩(Overloading)이 무엇인가요?

  • 오버라이딩(Overriding): 상위 클래스의 메서드를 하위 클래스에서 재정의하는 것. 메서드 이름, 파라미터, 반환 타입이 모두 동일해야 합니다.
  • 오버로딩(Overloading): 같은 이름의 메서드를 여러 개 정의하되, 파라미터의 타입이나 개수를 다르게 하는 것.

3. Java에서 this()와 super()의 차이점은 무엇입니까?

  • this(): 같은 클래스 내의 다른 생성자를 호출할 때 사용.
  • super(): 상위 클래스의 생성자를 호출할 때 사용.

4. final의 뜻과 사용하는 이유는?

  • final 키워드: 변수를 상수로 만들거나, 메서드를 오버라이딩하지 못하게 하거나, 클래스를 상속받지 못하게 할 때 사용.
    • 변수: 값 변경 불가.
    • 메서드: 오버라이딩 불가.
    • 클래스: 상속 불가.

5. 쓰레드는 무엇이고 언제 쓰이나요?

  • 쓰레드(Thread): 프로그램의 실행 단위로, 여러 작업을 동시에 수행할 수 있게 해줍니다. 멀티쓰레딩은 응용 프로그램의 성능을 향상시키고, 동시 작업 처리가 필요한 경우에 사용됩니다.

6. 제네릭에 대해 설명해주세요.

  • 제네릭(Generic): 클래스나 메서드에서 사용할 데이터 타입을 나중에 지정할 수 있도록 하는 기법입니다. 코드 재사용성을 높이고, 타입 안전성을 보장합니다.

7. Java와 Python의 차이점을 설명하세요.

  • 타입 선언: 자바는 강타입 언어로 변수 타입을 명시해야 하지만, 파이썬은 동적 타이핑을 사용합니다.
  • 실행 속도: 자바는 컴파일된 후 바이트코드로 실행되어 빠르지만, 파이썬은 인터프리터 방식으로 상대적으로 느립니다.
  • 문법: 자바는 문법이 엄격하고 코드가 길지만, 파이썬은 간결하고 읽기 쉬운 문법을 가지고 있습니다.
  • 플랫폼: 자바는 JVM 위에서 실행되며, 파이썬은 파이썬 인터프리터 위에서 실행됩니다.

8. 인터페이스와 추상 클래스의 차이점은 뭔가요?

  • 인터페이스: 구현 없이 메서드 선언만 포함할 수 있으며, 다중 상속이 가능합니다.
  • 추상 클래스: 구현이 포함될 수 있으며, 단일 상속만 가능합니다. 인터페이스보다 구체적인 구조를 가질 수 있습니다.

9. static 키워드에 대해 설명해주세요.

  • static 키워드: 클래스 수준의 변수나 메서드를 정의할 때 사용합니다. 인스턴스 없이 클래스 이름으로 접근할 수 있습니다.

10. 캡슐화와 상속 설명

  • 캡슐화: 데이터와 메서드를 하나의 단위로 묶고, 데이터 접근을 제한하는 것. 정보 은닉을 통해 데이터 무결성을 유지합니다.
  • 상속: 상위 클래스의 속성과 메서드를 하위 클래스가 물려받아 재사용할 수 있게 하는 것. 코드 재사용성과 구조적 관계를 나타냅니다.

11. Main 메서드가 static인 이유를 설명해주세요.

  • main 메서드가 static인 이유는 프로그램 실행 시 JVM이 인스턴스 없이 호출할 수 있어야 하기 때문입니다.

12. new String()와 “”의 차이를 설명해주세요.

  • new String(): 항상 새로운 String 객체를 생성.
  • "": String 리터럴을 사용하며, 동일한 값을 갖는 리터럴은 JVM의 String Pool에서 공유됩니다.

13. 동기화(Synchronized)에 대해 아는 대로 말해주세요.

  • 동기화(Synchronized): 여러 쓰레드가 동시에 접근할 때, 공유 자원의 일관성을 유지하기 위해 사용합니다. synchronized 키워드를 메서드나 블록에 사용하여 쓰레드 간의 충돌을 방지합니다.

14. 자바에서 Reflection이란 정확히 무엇인가요?

  • 리플렉션(Reflection): 런타임에 클래스, 메서드, 필드 등에 접근하고 조작할 수 있는 기능입니다. 동적 객체 생성, 메서드 호출 등에 사용됩니다.

15. 클래스, 객체, 인스턴스의 차이

  • 클래스: 객체를 생성하기 위한 설계도.
  • 객체: 클래스의 인스턴스, 실제 메모리에 할당된 실체.
  • 인스턴스: 클래스가 메모리에 할당된 구체적인 객체를 의미합니다.

16. Java의 컴파일 과정을 서술하시오.

  1. 소스 코드 작성: .java 파일에 작성.
  2. 컴파일: javac 컴파일러가 소스 코드를 바이트코드 .class 파일로 변환.
  3. 실행: JVM이 바이트코드를 로드하고, 해석하여 실행.

17. Lambda Expression이란?

  • 람다 표현식: 익명 함수를 간결하게 표현하는 문법입니다. 자바 8에서 도입되어 함수형 프로그래밍 스타일을 지원합니다.

18. 컬렉션 프레임워크에 대해 설명하시오.

  • 컬렉션 프레임워크: 데이터 저장, 검색, 조작을 위한 표준화된 클래스 및 인터페이스의 모음입니다. 주요 인터페이스로 List, Set, Map 등이 있습니다.

19. 자바 jvm의 역할에 대해 설명하시오.

  • JVM(Java Virtual Machine): 자바 바이트코드를 실행하는 가상 머신입니다. 플랫폼 독립성을 제공하고, 메모리 관리, 가비지 컬렉션, 보안 등을 담당합니다.

20. 자바에서 백엔드 프론트엔드를 구분하는 이유에 대해 말해주세요.

  • 백엔드: 서버 측 로직, 데이터베이스 연동, 비즈니스 로직 등을 처리.
  • 프론트엔드: 사용자 인터페이스, 사용자 경험, 클라이언트 측 로직을 처리.

21. OOP에 대해 설명해 보세요.

  • 객체 지향 프로그래밍(OOP): 객체를 중심으로 프로그램을 설계 및 구현하는 패러다임입니다. 주요 특징으로 캡슐화, 상속, 다형성, 추상화가 있습니다.

22. 자바에서 JDBC의 역할에 대해 설명하시오.

  • JDBC(Java Database Connectivity): 자바에서 데이터베이스와 연결하여 SQL 쿼리를 실행하고, 결과를 처리하는 API입니다.

23. 자바에서 메모리 관리기법 중 가비지콜렉션에 설명해보세요.

  • 가비지 컬렉션(Garbage Collection): 더 이상 참조되지 않는 객체를 자동으로 메모리에서 해제하여 메모리 누수를 방지합니다. JVM이 관리하며, 개발자가 직접 메모리 관리를 하지 않아도 됩니다.