[ private 생성자 ]
상속 관점에서 생성자를 private로 선언하면 어떤 효과가 있나?
생성자가 private으로 선언된 class A는 A의 private 메서드에 접근이 가능해야만 생성자를 호출할 수 있다는 것을 의미합니다.
[ finally에서의 반환 ]
자바의 finally 블록은 try-catch-finally의 try 블록 안에 return 문을 넣어도 실행되는가?
finally 블록은 try 블록이 종료되는 순간 실행되기 때문에 실행이 됩니다.
⭐ continue, break와 exception을 사용해도 마찬가지로 실행됩니다.
👀 finally 블록이 실행되지 않는 경우
- try/catch 수행 중에 가상 머신이 종료됨
- try/catch를 수행하고 있던 스레드가 죽음
[ final과 그 외 ]
final, finally, finalize의 차이는?
final : 변수나 메서드 또는 클래스가 '변경 불가능'하도록 만듭니다.
finally : 키워드로 try/catch 블록이 종료될 때 항상 실행될 코드 블록을 정의하기 위해 사용됩니다.
finalize() : 메서드로 가비지 콜렉터(garbage collector)가 더 이상의 참조가 존재하지 않는 객체를 메모리에서 삭제하겠다고 결정하는 순간 호출됩니다.
[ Generic vs Template ]
자바 제네릭(generic)과 C++ 템플릿(template)의 차이를 설명하라.
제네릭은 타입제거라는 개념에 근거하여 컴파일 시 코드가 크게 달라지는 것은 없습니다. 하지만 템플릿은 컴파일 시 컴파일러는 인자로 주어진 각각의 타입에 대해 별도의 코드를 생성합니다.
⭐ 타입제거 : 소스 코드를 자바 가상 머신(JVM)이 인식하는 바이트 코드로 변환할 때 인자로 주어진 타입을 제거하는 기술
[ TreeMap, HashMap, LinkedHashMap ]
1. TreeMap, HashMap, LinkedHashMap의 차이를 설명하라.
2. 언제 무엇을 사용하는 것이 좋은지 설명하라.
1. 큰 차이점은 시간 복잡도와 키가 놓이는 순서에 있습니다.
TreeMap | HashMap | LinkedHashMap | |
검색과 삽입 시간 | O(logN) | O(1) | O(1) |
키의 순서 | 무작위 | 정렬 (키는 반드시 Comparable 인터페이스를 구현하고 있어야 함) |
삽입 순서로 정렬 |
구현 | 연결리스트로 이루어진 배열 | 레드-블랙 트리로 구현 | 양방향 연결 버킷으로 구현 |
2. 만약 순서대로 키 정보를 얻고 싶으면 LinkedHashMap, 자연스러운 순서대로 키 정보를 얻고 싶으면 TreeMap을 사용하면 됩니다. 이외의 별 다른 이유가 없으면 HashMap을 사용하는 것이 좋습니다.(HashMap이 일반적으로 빠르고 오버헤드가 적습니다.)
[ Object reflection ]
자바의 객체 릭플렉션(object reflection)을 설명하고 이것이 유용한 이유를 나열하라.
객체 리플렉션은 자바 클래스와 객체에 대한 정보를 프로그램 내에서 동적으로 알아낼 수 있도록 하는 기능입니다.
👀 기능
- 프로그램 실행 시간에 클래스 내부의 메서드와 필드에 대한 정보를 얻을 수 있습니다.
- 클래스의 객체를 생성할 수 있습니다.
- 객체 필드의 접근 제어자에 관계없이, 그 필드에 대한 참조를 얻어내어 값을 가져오거나 설정할 수 있습니다.
👀 유용한 이유
- 프로그램이 어떻게 동작하는지 실행 시간에 관측하고 조정할 수 있도록 해줍니다.
- 메서드나 생성자, 필드에 직접 접근할 수 있기 때문에 프로그램을 디버깅하거나 테스트할 때 유용합니다.
- 호출할 메서드를 미리 알고 있지 않더라도 그 이름을 사용해서 호출할 수 있습니다.
'프로그램 개발 > 미분류' 카테고리의 다른 글
[코딩 인터뷰]지식 기반 문제 - 데이터베이스 문제 (0) | 2023.01.12 |
---|---|
[코딩 인터뷰]지식 기반 문제 - 데이터베이스 (0) | 2023.01.12 |
[코딩 인터뷰]지식 기반 문제 - Java (0) | 2023.01.11 |
[코딩 인터뷰]지식 기반 문제 - C와 C++ 문제 (0) | 2023.01.06 |
[코딩 인터뷰]지식 기반 문제 - C와 C++ (0) | 2023.01.05 |