[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:
컴파일러에게 특정한 정보를 제공하려는 목적으로, 메타 데이터를 나타내기 위함.