분류 전체보기 178

개발자 면접 질문 - 동기화 (synchronized) 정의

1. 동기화 (synchronized) - 한 객체에 여러 쓰레드가 동시에 접근해 사용하는 것을 막기 위해 사용한다. - synchronized 식별자가 붙은 메서드는 한번에 하나의 쓰레드만 접근이 가능하다. - 메서드가 사용 중일 때 다른 쓰레드가 메서드를 호출하면 앞의 쓰레드가 종료될 때까지 기다려야 한다. * synchronized 를 메서드에 선언하면 해당 메서드가 Lock 걸려서 다른 쓰레드가 못들어온다. * synchronized(this) {} 를 사용하면 메서드 내에서 특정 블럭만 동기화 처리를 한다. * static 메서드에서 동기화 블럭을 사용할 때 synchronized(클래스명.class) 를 사용한다. * 동기화 순서를 유지하기 위해서는 아래와 같이 코드를 작성하면 된다. thre..

면접 - 자바 2020.12.02

개발자 면접 질문 - HashMap과 HashTable의 차이

1. HashTable - HashTable 은 key 라는 특별한 인덱스로 자료에 접근하는 배열로 구성되는 자료 구조 - HashTable의 Hash 함수는 Key 값을 받아 그 Key의 Hash Value(해쉬값) 을 리턴한다. - 상수 시간에 탐색이 가능 - Key 값으로 Null 제한 - 멀티쓰레드 환경 지원(Data 무결성을 보장) 2. HashMap - Key 값으로 Null 허용 - 멀티쓰레드 환경 미지원 3. 공통점 - Map 인터페이스를 상속받아 구현되며 데이터를 키와 값으로 관리한다. 4. 차이점 - HashTable 은 Key 값에 NULL을 허용하지 않지만, HashMap은 NULL을 허용한다. - HashTable 은 동기화를 처리하는 비용 때문에 HashMap에 비해 속도가 느리다.

면접 - 자바 2020.12.02

개발자 면접 질문 - 해시(Hash) 기본 개념과 구조

1. 해시(Hash) 정의 - 배열은 검색 속도가 빠르나 데이터 삽입/삭제시 속도가 느리다. - 링크드 리스트는 삽입 삭제시 인근 노드의 참조 값만 수정해서 속도가 빠르나 순회 검색만 가능하여 데이터가 많아질 수록 속도가 느려진다. - 이러한 한계를 극복하기 위해 제시된 방법이 해시(Hash) 2. 특징 - 내부적으로 배열을 사용하여 데이터를 저장하여 검색 속도가 빠르다. - 데이터의 삽입/삭제 시 해시 알고리즘을 이용하여 데이터와 연관된 고유한 숫자를 만들어 인덱스로 사용한다. - 해시가 내부적으로 사용하는 배열을 Hash Table 이라고 하며 크기에 따라서 성능 차이가 난다. 3. 해시 메서드(Hash Method) - 해시는 Hash Table을 사용하여 데이터를 저장한다. - 이때 인덱스를 구하..

면접 - 자바 2020.12.02

개발자 면접 질문 - 접근 제어자 및 접근 권한

1. 접근 제어자 - 멤버 또는 클래스에 사용되어 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할 2. 접근 권한 1) private - 하위 클래스 X - 클래스 O - 모든 클래스 X - 동일 패키지 X 2) default - 하위 클래스 X - 클래스 O - 모든 클래스 X - 동일 패키지 O 3) protected - 하위 클래스 O - 클래스 O - 모든 클래스 X - 동일 패키지 O 4) public - 하위 클래스 O - 클래스 O - 모든 클래스 O - 동일 패키지 O

면접 - 자바 2020.12.02

개발자 면접 질문 - 자바 상속과 구현의 차이

1. 추상클래스와 인터페이스의 차이 - 추상클래스는 구체화 시킬 구현체를 추상화시키는 기법이고, 인터페이스는 구현할 컴포넌트의 표준을 정하는것 상속 : 부모로부터 상속 구현 : 조언자로부터 상속 - 부모로부터 모든 권한과 재산과 능력을 가져와서 쓸수있는게 상속 - 무언가로부터 상속을 받되, 그 상속 내용이 비어있고 내가 꼭 채워서 써야하는 것은 구현

면접 - 자바 2020.12.02

개발자 면접 질문 - String, StringBuffer, StringBuilder 차이

1. String - 새로운 값을 할당할 때 마다 새로 클래스에 대한 객체가 생성된다. - String 에서 저장되는 문자열은 private final char[] 의 형태이기 때문에 String 값은 변경할 수 없다. - String + String + String은 각각의 String 주소값이 Stack에 쌓이고 GC가 호출되기 전까지 생성된 String 객체들은 Heap에 쌓이기 때문에 메모리 관리에 치명적이다. 2. StringBuffer - 동기화 지원 - 각 메서드 별로 synchronized keyword가 존재한다. 3. StringBuilder - 동기화 미지원 - 동기화를 지원하지 않아 속도가 빠르다.

면접 - 자바 2020.12.02