전체 글 287

[1분 면접] 함수형 프로그래밍에 대해 설명해주세요.

📌 면접 답변 함수형 프로그래밍은 함수가 독립적이고 상태가 없음을 의미하고, 객체지향 프로그래밍은 객체가 독립적이고 상태와 행동을 가짐을 의미한다. 함수형 프로그래밍 특성1. 함수를 1급 객체(First-Class Object)로 취급여기서 일급 객체란 변수나 데이터 구조 안에 담을 수 있고, 파라미터로 넘기는 등의 작업이 가능 2. Side Effect이 없음int count = 0;public int next() { return count++; // 외부 상태 변경 → side effect 발생}객체의 필드값 설정, 예외나 오류 발생, 파일 I/O 발생, 변수 값 변경 등 3. Lazy Evaluation값을 지금 바로 계산하지 않고, 나중에 진짜 필요할 때 계산 4. Statelessn..

[1분 면접] URI, URL, URN의 차이점은 무엇인가요?

📌 면접 답변URI (Uniform Resource Identifier) 인터넷에서 자원을 식별하기 위한 문자열URI는 URL과 URN을 포함하는 상위 개념특정 자원을 식별하기 위한 포괄적인 방법 제공 (큰 틀 역)URL과 URN을 하나로 표현하기 위해 등장 URL(Uniform Resource Locator)인터넷상에서 자원의 위치를 나타냄자원이 어디에 있는지를 설명하는데 사용자원에 접근하기 위한 프로토콜을 포함 URN(Uniform Resource Name)자원의 위치와 상관없이 자원의 이름을 식별자원의 위치가 변하더라도 동일한 식별자 유지자원에 대한 영구적인 식별자 제공 대부분 웹에서는 자원을 위치 중심(URL)로 접근한다. 하지만 디지털 도서관, 표준 문서, 정부 기록 시스템 등 영구 식별이..

Java 중급 2-1 (제네릭)

이번에는 김영한님의Java 중급2에 내용들을 정리하고 보충하였다. 이번 내용들의 핵심은 제네릭과 컬렉션 프레임워크이다. 컬렉션 프레임워크 같은 경우, 자료 구조를 일부 구현하기 때문에, 깃허브에 정리 해두었다. 따라서 이번 포스팅은 비교적 짧게 제네릭만 흩어볼 수 있다.제네릭 제네릭이 필요한 예시 1)public class IntegerBox { private Integer value; public void set(Integer value){ this.value = value; } public Integer get(){ return value; }}get과 set이 가능한 IntegerBox 클래스public class StringBox { pr..

🔖Java 2025.04.17

[1분 면접] 테스트 주도 개발이 무엇인가요 ?

📌 면접 답변TDD(Test Driven Development) 매우 짧은 개발 사이클을 반복하는 개발 프로세스이다. 개발자는 요구사항을 검증하는 자동화된 테스트 케이스를 작성 테스트 케이스를 통과하기 위한 최소한의 코드를 생성이후 작성한 코드를 리팩토링하는 과정을 반복한다. TDD 사이클을 반복하다 보면, 작성한 코드가 가지는 불안정성을 개선하고, 결합이 느슨한 시스템으로 점진적으로 나아갈 수 있다.하지만 TDD가 오히려 비효율적인 경우도 존재하기 때문에 상황에 맞춰서 써야한다. 📌 내 답변TDD는 서비스를 만들 때, 테스트 케이스 기반으로 만드는 개발 방법이다. 각각의 객체들의 역할과 책임을 테스트 케이스로 작성하여 테스트를 함으로써 개발 속도를 향상시킬 수 있다. 간단한 서비스에서는 TDD가 ..

[1분 면접] 해시 충돌에 대해서 설명해주세요.

📌 해시 충돌해시 key-value 쌍으로 이뤄진 자료 구조로, Key 값을 사용하여 조회 O(1) 시작 복잡도로 찾을 수 있다.해시 자료 구조는 키를 해시 함수에 넣어서 나오는 결과를 기반으로 값을 관리는데,서로 다른 키가 동일한 결과가 나오는 경우를 해시 충돌이라고 한다. 해시 충돌 완화1. 개방 주소법 (Open Addressing)특정 값이 들어가야 하는 버킷이 이미 사용되고 있는 경우, 다른 해시 버킷에 데이터 삽입 2. 분리 연결법 (Separate Chaining)버킷을 연결 리스트나 트리 형태로 관리하여 버킷에 들어갈 값의 수에 제한을 두지 않음 해시 테이블 만들어지는 로직 Key 값을 Hash Function에 넣으면 Hash code가 생성된다. 적적한 로직으로 Hash code를..

[1분 면접] JVM에서 GC 대상 객체를 판단하는 기준 (+ JVM 구조)

📌 면접 답변GC(Garbage Collection)은 자바의 메모리 관리 방법의 하나JVM의 힙 영역에서 동적으로 할당했던 메모리 중 필요없어진 객체를 주기적으로 제거GC는 특정 객체가 사용 중인지 아닌지를 판단하기 위해 (Reachability) 개념 사용특정 객체에 대한 참조가 존재하면 도달 할 수 있으며, 참조가 존재하지 않는 경우 도달 할 수 없는 상태로 간주이때 도달할 수 없다는 결론을 내린다면 해당 객체는 GC의 대상이 된다. Reachability 판단 기준힙 영역에 있는 객체에 대한 참조는 4가지 케이스가 존재한다. 1. 힙 내의 다른 객체에 의한 참조class Engine { String type = "V6";}class Car { Engine engine; // 힙 내의 ..

[1분 면접] CAP 정리에 대해서 설명해주세요.

📌 면접 답변CAP 정리는 분산 데이터베이스 시스템이 CAP 중 2개의 속성만 제공할 수 있다는 이론이다.C(일관성, Consistency), A(가용성, Availability), P(분할 내성, Partition Tolerance)3가지 속성을 모두 만족하는 분산 데이터 베이스 시스템은 존재하지 않는다.분산 시스템에서 Partition은 언젠가 반드시 발생한다. 따라서 P의 관점으로 바라보면 좋다.네트워크 분할 상태에 Consistency와 Availablity 모두 보장할 수 없음  각 속성에 대한 설명C (일관성) : 모든 클라이언트 요청은 어느 노드에 연결되어도 같은 데이터를 볼 수 있다.A (가용성) : 노드 일부에 문제가 발생하더라도, 시스템은 클라이언트의 모든 요청에 유효한 응답을 전해줘..

[1분 면접] 교착 상태에 대해서 설명해주세요.

📌 면접 답변교착상태는 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있어 결과적으로 아무것도 완료되지 못하는 상태를 의미한다. 예를들어 프로세스 A는 자원 A를 갖고 자원 B를 원하고, 프로세스 B는 자원 B를 갖고 자원 A를 원할때 , 두개의 프로세스는 교착 상태에 빠져 어느 작업도 진행 할 수 없는 상황이 된다.     교착 상태 발생하는 조건상호 배제 : 자원에 대해 독자적 제어권 을 주장점유 대기 : 자원을 할당 받은 상태에서, 다른 자원을 할당 받기를 기다리는 상태비선점 : 자원을 강제로 뺏을 수 없음순환(원형) 대기 : 사이클 형태로 자원 대기  교착 상태  해결 방법1. 락 획득 순서 고정synchronized (lock1) { synchronized (lock2) ..

[1분 면접] 시스템 간 비동기 연동 방식에는 무엇이 있나요 ?

📌 면접 답변분리된 시스템 간의 비동기 연동은 시스템의 결합도를 낮출 수 있다.호출된 시스템의 응답을 기다리지 않으므로 더욱 빨리 사용자의 요청에 응답할 수 있다.비동기 연동 방식으로 메시징 시스템 활용, 데이베이스 활용, CDC, Webhook 방식 등이 있다.  메시징 시스템(메세지 큐) 활용두 시스템 사이에 메시징 시스템을 두어 비동기로 연동한 시스템에서 메시지를 생성해서 메시징 시스템에 송신다른 시스템에서 메시징 시스템으로부터 메시지를 읽어와 메시지 처리주로 Kafka, RabbitMQ가 주로 메시징 시스템으로 활용처리량이 높은 것이 장점이지만, 메시지 유실, 메시지 소비 순서, 트랙잭션에 대한 고민이 필요  데이터베이스 활용데이터베이스를 메시징 시스템처럼 사용하는 방법시스템 A가 DB에 메시지..

[1분 면접] 관계형 데이터베이스와 비 관계형 데이터베이스의 차이점은 무엇인가요?

📌 면접 답변관계형 데이터 베이스고정된 row와 column으로 구성된 테이블에 데이터 저장여러 테이블에 존재하는 데이터와 관계에 따라서 테이블 조인 가능테이터 중복 없이 한번만 저장 (무결성 보장)일반적으로 관계형 데이터베이스는 스케일 업 사용하여 확장관계형 데이터 베이스는 스키마를 유연하게 바꾸기 어렵다는 한계 존재 비관계형 데이터 베이스NoSQL이라고 불림정해진 스키마가 존재하지 않으며, 자유롭게 데이터 저장 및 조회 가능문서, Key-Value, 와이드 컬럼, 그래프 유형 존재대량의 데이터와 높은 사용자 부하에도 손쉽게 확장 가능 (일반적으로 스케일 아웃 중심)중복을 혀용하기 때문에 일관성이 저하되고 용량이 증가  📌 내 답변관계형 DB는 테이블 구조로 정형화되어있고, 튜플들로 테이블이 구성된..