Book/Programming

[Java프로그래밍면접 이렇게 준비한다] chapter8. 자바 기본

개랭갱깽스타 2020. 1. 21. 10:10

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의 새기능: 람다






반응형