-
concurrent hashmap이란?
java ·thread-safe하면서 성능도 뛰어난 자료구조다.
-
제네릭(generic)이란?
java ·컴파일 시점에 타입을 결정시켜주는 기술이다. 컴파일시 형변환 에러 문제를 줄여주고, 타입의 안정성이 증가된다.
-
익명클래스와 람다 this 차이
java ·익명 클래스는 바이트 코드 생성시 새로운 클래스를 생성하기 때문에 this는 익명 클래스를 가리킨다.
람다는 바이트 코드 생성시 새로운 메소드를 생성하기 때문에 lambda를 호출한 클래스를 가리킨다.
람다는 함수 객체로서 힙에 올라간다. 하지만 지역 변수는 스택에 올라가므로 scope에서 벗어나면 정리된다. -
쓰레드를 사용하는 이유
java ·cpu를 최대한 효율적으로 사용하기 위해서이다
-
리스트 가변적 구현 원리
java ·초기에 리스트는 capacity라는 변수에 10에 데이터를 넣고 capacity만큼 배열의 공간을 할당한다.
이후에 배열이 꽉차면 약 capatcity에 1.5배만큼의 배열을 생성하고 이전 배열의 데이터를 넣는다.
따라서 확장을 할때 오버헤드가 생기므로 미리 사이즈를 설정해주는것이 좋다. -
annotation이란?
java ·어노테이션은 메타데이터의 일종이다.
어노테이션에는 클래스 정보가 있기 때문에 리플렉션을 통해 특정 행위를 할 수 있다. -
GC(Garbage Collection)이란?
java ·힙 영역에서 더 이상 사용하지 않는 객체를 mark & swipe 과정을 통해 자동으로 정리해준다.
-
불변객체 장점
java ·값이 변경될 위험이 없기 때문에 깊은 복사를 하지 않아도 원본 데이터가 안전하게 보호된다.
멀티스레드 환경에서 값을 동기화할 필요가 사라진다는 이점이 있다. -
inner nested 클래스
java · -
StringBuilder, StringBuffer
java ·String의 내부 값은 변경할 수 없다. 아래 코드에서 immutable 객체를 수정한 것처럼 보이지만, “abcdef”라는 새 객체를 생성한 것이다.