1. 원시타입
- 왜 Integer.MIN_VALUES에 대응하는 양수가 없는가?
보수의 표현 특징
- 자바에서 객체란 무엇인가?
- final 키워드는 객체 참조에 어떤 영향을 미치는가?
A) 변수정의에서 지정된 값처럼 일단 할당이 되고 나면 메모리 위치가 변경되지 X
단, 객체 참조는 변경할 수 없어도 객체 내부의 값들은 개별 값들이 final이 아니라면 변경할 수 O
- 객체의 가시성 수정자(visibility modifier)는 어떻게 작동하는가?
A) private / none / protected / public
private - 오직 해당 클래스에서만 사용
> 같은 타입의 다른 모든 인스턴스가 private 멤버 변수에 접근 가능(p.163~)
- 메서드와 변수에 사용되는 static 키워드의 역할은 무엇인가?
- 다형성과 상속이란 무엇인가?
- 객체의 일부 메서드가 오버라이드 되었을때 어떻게 사용되는지 설명하라.
equals(Object other)
“메서드 오버라이딩의 동일성을 확인할 필요가 있을때만 사용”
: 두 객체의 참조가 논리적으로 같은지 확인하는데 사용
: 실행하면 메모리 상의 객체 위치를 비교
: 두 개의 객체가 같은 메모리 위치에 있으면 실제로 같은 객체
hashCode
: 두 개의 같은 객체가 반드시 같은 값을 반환해야 한다. : 두 개의 객체가 같은 hashCode메소드의 값을 반환하더라도 반드시 같은 객체는 X
- 자바에서는 배열을 어떻게 표현하는가?
A) 배열을 객체로 취급
- String은 메모리에 어떻게 저장하는가?
A) 객체로 표현되는 값이 char타입의 배열
- String객체의 값을 변경할 수 있는가?
A) String의 값은 절대 변하지 않으며 바꿀 수 없다. Integer / Double / Character / BigInteger 도
- 인터닝이란 무엇인가?
A) String 리터럴의 모든 반복은 풀 안의 같은 상수를 참조해서 이뤄짐 = String 인터닝
- 컬렉션 API에서 제네릭을 어떻게 사용하는지 설명하라.
- 주어진 Stack 클래스의 API가 제네릭을 사용하도록 수정하라.
- 타입의 변화는 제네릭에 어떻게 영향을 미치는가?
: B는 A의 하위타입이다. 하지만 List<B>는 List<A>의 하위타입이 아니다.
- 구상화(reified)한다는 건 어떤 의미인가?
A) 실행시에 이용할 수 있다.
- NullPointerException이 발생했을 때 원시 타입에 접근할 수 있는가?
A) 아니오
언박싱: Float / Integer / Boolean 같은 박스된 참조 타입을 자신들의 원시 타입인 float / int / boolean 타입으로 변경하는 것
오토박싱: 언박싱 반대
- 어노테이션을 사용하는 예를 들어라.
A) 명명규칙을 사용할 필요가 없어서 실수를 줄일 수 있다. @Before / @Test / @After
reflection
- @Override 어노테이션은 어떤 역할을 하는가?
A) 컴파일러에게 슈퍼클래스의 메서드가 오버라이드 되었다는 것을 알려준다. 메스드를 오버라이딩할 때 이 어노테이션을 표기함으로써 실수하지 않게 하는 용도로 사용
- 자바의 예외처리구조를 이루는 주요 클래스를 설명하라.
Throwable
| |
Exception Error
| | |
RuntimeException IOException OutOfMemory
|
NullPointerException
예외
> 런타임예외Runtime Exception
> 확인해야 하는 예외Checked Exception
- ‘런타임예외’ 와 ‘확인해야 하는 예외’중 어느 것이 더 좋은가?
A) 런타임예외 선호
try / catch / finally 문을 이용함변 간단한 메서드 호출에서도 많은 기본 코드를 추가 && 아니라 유지보수도 어려워 나중에 코드를 수정해야 하는 등 비효율적!
- 연쇄예외란 무엇인가?
- try-with-resources문은 무엇인가?
- 왜 private인 필드가 변하지 않도록 하기 위해 final 키워드를 선언해야 하는가?
- 다른 모든 컬렉션 API에서 상속되는 클래스는 어떤 것인가?
- LinkedHashMap 클래스란 무엇인가?
- Hashtable클래스가 이미 존재하는데 왜 HashMap클래스를 추가하는가?
A) Hashtable클래스와 Vector클래스는 초기버전부터 자바의 일부 / 컬렉션 프레임워크가 포함되었을 때, Hashtable클래스는 Collection 인터페이스에 맞게 재단장
Hashtable: 동기화O / 병렬처리에 효율적 / 오버헤드때문에 성능 저하
HashMap: 동기화 X
ConcurrentHashMap: 병렬환경에서의 Map인터페이스를 사용하는 곳에서 사용
- 자바8의 새기능: 람다
'Book > Programming' 카테고리의 다른 글
[Test-Driven Development: By Example] 테스트 주도 개발-Money편 (0) | 2020.02.25 |
---|---|
[Java프로그래밍면접 이렇게 준비한다] Chapter20. 안드로이드 (0) | 2020.01.21 |
[Algorithmic Problem Solving Strategies] 8. 동적계획법 (0) | 2019.11.26 |
[Algorithmic Problem Solving Strategies] 6. 무식하게 풀기 (0) | 2019.11.25 |
[Algorithmic Problem Solving Strategies] 4. 알고리즘의 시간복잡도 분석 (0) | 2019.11.18 |