학습 목표
- 팀코칭 질문 정리
TIL
- 자바 개념
해시맵에 대해 설명해주세요
컬렉션의 한 자료구조이고 해시맵은 맵이라는 인터페이스를 구현한 자료구조로 키-값 쌍을 저장하는 데 사용됩니다. 해시 함수를 이용하여 해시를 생성하여 이를 활용하여 저장을 하고 찾을 때도 해시로 위치를 찾습니다.
concurrenthashmap이 테이블과 비교하면 어떻게 보완이 되었을까요?
ConcurrentHashMap은 기존 해시맵이 가지고 있는 동시성 문제를 해결하기 위해 나온 자료구조입니다. 해시테이블도 동기화 매커니즘을 제공하지만 이와는 다른 동시성을 위한 세그먼트라는 개념을 도입해 동시성 문제를 해결하였습니다. 추가적으로 ConcurrentHashMap은 해시맵이 제공하는 체이닝 방법 이외에 리사이징이라는 방법도 제공합니다.
concurrenthashmap이 쓰래드 안전을 위해 동시성을 보장하려고 구현한 방법은??
ConcurrentHashMap에서 쓰래드 안전을 위해 동시성을 지키면서 동작하기 위해 구현한 방법은 세그먼트화, 잠금 매커니즘, 동시 읽기 지원, 리사이징이 있습니다.
해시맵에 자료를 넣을 때 쓰는 메서드는??
put 메서드 입니다. 파라미터는 2개가 필요한데 첫번째는 키, 두번째는 값을 입력합니다.
해시맵에서 자료를 찾을 떄 쓰는 메서드는??
get메서드, put 메서드 입니다.
해시맵에 자료를 넣을 떄 쓰는 파라메터는??
hashcode 메서드로 hash를 생성하고 hash로 index를 찾고 equals 메서드로 키값을 찾고 값을 넣고나 찾습니다.
해시맵에 자료를 찾거나 넣을 때 쓰는 메서드의 내부 구조는??
hashcode 메서드로 hash를 생성하고 hash로 index를 찾고 equals 메서드로 키값을 찾고 값을 넣고나 찾습니다.
해시맵에 key와 value로 값을 저장한 후 찾을 때 값을 효율적으로 빨리 찾기 위해서 도입한 것은 equals()일까 hash function일까?
hashCode()가 좀 더 효율적으로 빨리 찾기 위해 도입한 메서드에 가깝습니다. equals()는 hashcode 메서드를 사용하면서 생기는 단점을 보완하고 보충하기 위해 사용하는 메서드에 가깝습니다. 하지만 두 메서드 모두 해시맵 구현에 필요한 메서드입니다.
해시 코드는 왜 사용 할까요?
해시코드는 효율적인 검색을 위해서 사용합니다. 해시 충돌이 일어나지만 해시코드를 사용하지 않았을 떄보다 검색 속도가 더 빠른 장점으로 인해 사용합니다.
해시맵의 해시로 만든 버킷의 index를 한글로 부르면?
색인
해시맵의 버킷에서 해시 충돌을 피하기 위해 만약 chaining으로 한 버킷 구역에 천 개의 오브젝트를 넣으면 효율적일까 비효율적일까??
해시충돌이 많이 일어나서 비효율적입니다.
해시맵에 버킷이 한개라면 equals()를 잘못(잘못 오버라이딩) 쓴 경우라서 equals()가 true만 리턴한다고 하자. 그러면 (어떤) 값 천 개를 해시맵에 넣었을 때 어떤 상황이 발생할까??
버킷 오버플로, 데이터 손실, 효율성 저하가 일어납니다. 만약 put() 메서드를 쓴다면 같은 값이 있다고 판단하고 이전 값이 새로운 값이 계속 덮어쓰게 됩니다.
해시를 쓴 컬랙션에서 equlas()의 의미는??
해시로 인덱스를 찾은 다음 같은 값이 있는지 확인하는 중복확인 여부를 체크합니다.
해시를 쓴 컬랙션에서 hash code의 의미는??
해시를 생성하여 해시를 사용하여 효율적인 검색을 하도록 합니다.
(고급 코테) 자바코드로 해시 맵을 구현해 보라(적어봐라)(equals(), hash code 포함)
자바 예외 처리에 관해 설명해 보시오
try, catch, finally에 관해 말해 보시오
try 부분은 에러가 발생하는 부분을 체크하는 블록, catch는 try부분에서 에러가 발생한다면 실행하는 코드블록 부분, finally는 try부분에서 에러가 발생하든 안발생하든 무조건 실행하는 코드부분입니다.
throw, throws에 관해 말해보시오
throw는 에러를 발생시키는 부분, throws 절은 해당 메소드를 호출한 클래스나 메소드 부분으로 예외 처리 책임을 넘깁니다.
custom exception에 관해 말해보시오
기본적인 예외 처리이외에 개발자가 임의로 설정하여 추가할 수 있는 예외 처리입니다.
custom exception의 만들고 사용하는 이유는??
에러를 상세히 분류해서 디버깅이나 에러를 확인하여 문제 해결을 쉽게 하도록 활용 할 수 있는 exception입니다.
throws를 메서드에 붙일까요? 그리고 exception을 적는 이유는??
throws는 메서드에 붙입니다.
throws를 메서드에 붙이면 해당 메서드에서 예외 처리를 할까요? 아니면 이 메서드를 호출한 메서드나 클래스에서 에러를 가져갈까요?
이 메서드를 호출한 메서드나 클래스에서 에러를 가져갑니다. 에러가 없어진 것이 아니므로 주의를 요합니다.
오버라이딩과 오버로딩은 무엇인가요??
오버라이딩은 메서드를 재정의 하여 기존 메서드명과 매개변수를 사용하지만 로직을 새롭게 짜는 것이고, 오버로딩은 매개변수의 수와 매개변수의 타입등을 변경하는 등 매개변수를 바꾸는 것입니다.
자식 클래스에서 제 오버라이딩을 하지 않게 하고 싶어요. 그러면 어떻게 해야 될까요??
Final 키워드를 클래스에 붙이면 됩니다.
오버라이딩을 하지 않게 하는 방법 중 default 외에 다른 방법은??
final 키워드를 사용합니다.
추상화 클래스이랑 인터페이스 두개가 있을 때 둘 다 구현가능하다고 할 때 무엇으로 구현하겠는가?? 그 이유는??
인터페이스를 좀 더 선호 합니다. 예전 직장에서 인터페이스로 구현하는 방식을 많이 봐서 이렇게 하는 것에 좀 더 익숙합니다.
자바는 call by value일까? call by reference일까?
call by value 입니다.
왜 자바는 call by value일까??
스택이랑 힙이랑 차이는??
어레이 리스트랑 링크드 리스트의 차이점은 무엇인가요??
어레이 리스트와 링크드리스트의 공통점은 둘다 리스트라는 인터페이스를 구현하여 리스트 특징을 가지고 있는 점은 비슷하지만 어레이리스트는 어레이 특성을 이용해서 검색에 속도가 링크드리스트보다 더 빠르고, 링크드리스트는 각각의 칸에 노드가 있어서 다음 리스트와 전 리스트 위치 정보가 있어서 값을 추가하고 삭제하는 데 좀 더 빠르고 유리한 자료구조입니다.
'[F-Lab 66해빗 페이백 챌린지 ]' 카테고리의 다른 글
| [F-Lab 모각코 페이백 21일차] 어댑터 패턴, SOLID 원칙, 스프링 프레임워크, 스프링 부트 (0) | 2023.06.06 |
|---|---|
| [F-Lab 모각코 페이백 20일차] 싱글톤 패턴, 팩토리 패턴 (0) | 2023.06.05 |
| [F-Lab 모각코 페이백 18일차] 팀코칭 질문 (인터뷰 준비 및 개념 학습), MVVM 패턴, MVP 패턴 (0) | 2023.06.01 |
| [F-Lab 모각코 페이백 17일차] 팀코칭 질문 정리 (인터뷰 준비, 개념 학습) (0) | 2023.05.31 |
| [F-Lab 모각코 페이백 16일차] 팀코칭 질문 정리 (인터뷰 준비, 개념 학습) (0) | 2023.05.30 |