[F-Lab 모각코 챌린지] 2일차 - System(키워드 정리), 꼬리물기 질문 스터디
[F-Lab 모각코 챌린지] 2일차 - System(키워드 정리), 꼬리물기 질문 스터디 책을 토대로 java.lang 의 System 의 키워드를 정리 하였으며, 멘티(멘토x)와 함께 진행 한 꼬리물기 질문 내용을 정리하였습니다.
System
시스템에 대한 정보를 확인하는 클래스 이다.
- 시스템 속성(Property) 값 관리
- 시스템 환경(Environment) 값 조회
- GC 수행 (개발자가 임의로 동작 X)
- JVM 종료 (개발자가 임의로 동작 X)
- 현재 시간 조회
- 기타 관리용 메서드
기본 static 함수 리턴 타입
- out: PrintStream
- in: InputStream
- error: PrintStream
꼬리물기 질문 스터디
멘티와 함께 꼬리물기 질문을 하며 학습 및 새로 얻은 키워드를 정리합니다.
== , equals , hashcode 에 대한 설명?
respond:
== : 동일성 비교 연산자
equals : 동등성 비교 연산자
hashcode : 동등성 비교 연산자
HashTable 이 존재하는 이유와 HashMap 과의 차이점?
respond:
HashTable 은 존재 목적이 오직 하위 호환성
reply:
* 왜 컬렉션 프레임워크에 포함시키지 않고, Deprecated 하지 않고 사용하는지는 모르겠음. 새로운 학습 포인트.
* Hashtable은 모든 data 변경 메서드에 synchronized로 선언되어 있어서 멀티쓰레드 환경에서 data의 무결성을 보장해준다
* HashMap은 Thread-safe하지 않아서 멀티 스레드 환경에서 동시에 객체의 data를 조작하는 경우 data가 깨질 수 있다
인터페이스와 추상클래스의 차이는?
respond:
머릿속 지우개가 열일 하였다
reply:
* 스스로 인스턴스화 할 수 있는지 여부 차이
* 다중 상속을 허용하는가
* 사용 목적 - 추상 클래스: 상속에 초점
* 인터페이스: 다형성에 초점
final 키워드에 대해 설명
respond:
* class: 상속 불가
* method: 오버라이딩 불가
* variable - Primitive: 값 변경 불가
* JVM 에서 컴파일 타임에 최적화 로직인 inlining 동작
* variable - Reperence: 참조 주소 값 변경 불가
* Contract Folding(상수 폴딩) 동작
Enum 에 대해 설명
respond:
열거형을 나타내기 위한 클래스
Enum 을 사용하면 좋다고 하던데 왜 그런가요?
respond:
JVM 에서 Ordinal 값을 활용하여 여러 최적화 기법을 수행 할 수 있다.
상수 폴딩 switch-case 문 에서 Jump Table 최적화를 수행하는 수단으로 활용 가능
리해싱이란?
respond:
오답을 말함.
reply:
* Rehashing:
이미 저장되어 있는 요소들의 hashcode를 새롭게 계산해서 hashMap 사이즈를 늘리고, 새로운 해시 값에 기반해서 새로운 Bucket으로 요소들을 옮기는 과정
* Rehashing 을 진행하는 이유:
높은 threshold 인해 발생하는 해시 충돌을 막고, hash를 이용한 자료구조의 효율적인 탐색을 유지하려고 rehashing을 진행한다
Marker Interface 가 뭔가요?
respond:
머릿속 지우개 열일
reply:
컴파일러에게 특정한 정보를 제공하려는 목적으로, 메타 데이터를 나타내기 위함.