분류 전체보기 280

[1분 면접] ACID에 대해 설명해주세요.

📌 면접 답변 ACID는  Atomicity(원자성), Consistency(일관성), Isolation(격리성), Durability(지속성)의 약자로, 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 의미한다.   Atomicity (원자성)트랜잭션 내부 연산들이 부분적으로 실행되고 중단되지 않음을 보장트랜잭션은 전체 성공 또는 전체 실패 중 한가지만 가능   Consistency (일관성) 트랜잭션 성공 완료되면 일관성 있는 DB 상태 유지 보장DB 규칙 위반하는 트랜잭션의 경우 취소되어야 함   Isolation (격리성) 동시에 실행되는 여러 트랜잭션이 서로 독립적임을 보장 트랜잭션 밖에서 어떠한 연산도 중간 단계의 데이터 볼 수 없음  Durability (지속성) 성공..

[1분 면접] REST란 무엇인가 ?

📌 면접 답변REST는 자원을 URI로 표현하고, 자원에 대한 상태 전이를 HTTP 메서드를 통해서 처리하는 아키텍쳐 스타일   RESTful하기 위한 6가지 조건  1. Uniform Interface 일관된 인터페이스로 자원 표현 (가장 중요)2. Stateless서버는 클라이언트의 상태를 저장하지 않음매 요청에 필요한 모든 정보 포함3. Clinet-Server 구조 클라이언트는 UI, 서버는 자원처리4. Cacheable 응답에 캐시 여부 명시하여 성능 최적화5. Layered System중간 계층(프록시, 로드밸런서)  존재6. Code on Demand 서버가 클라이언트로 스크립트나 코드 전달 가능  REST는 결국 HTTP를 잘 활용하기 위한 원칙이다. URI와 HTTP 메서드를 사용해 자..

[1분 면접] 캐싱 전략에 대해서 설명해주세요.

📌면접 답변데이터를 무작정 캐싱하는 것이 아니라, 적절한 전략을 통해서 성능을 최적화 하는것이 캐싱 전략이다.   읽기 중심 캐싱 전략 - Cache Aside (Lazy Loading)캐시를 먼저 확인하고, 없으면 DB에서 가져와 저장하는 방식 (Lazy Loading)애플리케이션이 캐시를 직접 관리하는 방식캐시를 메인 저장소처럼 다루는 것이 아니라, 옆에( Aside) 둬서 활용캐시에 저장된 데이터가 오래되면 갱신 필요실제 요청된 데이터만 캐시에 저장되어 불필요한 데이터 캐싱 줄임초기에 대량의 캐시 미스르 인한 DB 부하 발생할 수 있음캐시 미스 발생 시 개발자가 직접 DB에서 데이터를 가져와 캐시에 저장  - Read Throgh애플리케이션이 캐시를 통해 (Through) 데이터를 가져옴애플리케이..

Java 기본 (객체 지향 프로그래밍)

해당 포스트는 김영한님의 Java 기본을 듣고, 나 스스로 복습을 하기 위해 정리해 놓았다. 시작하기에 앞서 인프런의 김영한님께서 항상 강조 하시는 말을 기억하며..."자바에서 대입은 항상 변수에 들어 있는 값을 복사해서 전달한다."  또한 객체지향의 4가지 특징을 기억하자."캡슐화, 상속, 다형성, 추상화" 여기에서 가장 중요한 것은 다형성이다 !  클래스와 데이터 / 기본형과 참조형 / 객체 지향 프로그래밍 / 생성자 / 패키지 / 접근 제어자 / 자바 메모리 구조와 static / final / 상속 / 다형성 클래스 구성 요소 클래스사용자 정의 타입을 만들수 있도록 하고, 이것에 대한 설계도설계도인 클래스를 사용해서 실제 메모리에 만들어진 객체 또는 인스턴스객체와 인스턴스 용어는 자주 혼용 됨 (..

🔖Java 2025.03.16

[1분 면접] 자료구조 스택에 대해서 설명해주세요.

📌 면접 답변Stack은 후입선출(LIFO, Last In First Out)의 개념을 가진 선형 자료구조스택에사 삭제는 가장 최상단에서만 이뤄짐활용 사례스택 메모리 브라우저 뒤로가기함수 호출 및 콜 스택 (Call Stack)인터럽트 처리 자바에서 스택 사용├── java.util.Vector ├── java.util.Stack 자바에서 Stack이라는 클래스를 사용 할 수 있음  java.util.Collection ├── java.util.Queue ├── java.util.Deque (인터페이스) ├── LinkedList (클래스, Deque 구현체) ├── ArrayDeque (클래스, Deque 구현체) 하지만 자바에서는 Deque 인터페..

[1분 면접] 동시성과 병렬성의 차이

📌 면접 답변 동시성(Concurrency)동시성이란 논리적으로 동시에 실행되는 것처럼 보이게 만드는 개념단일 코어를 기준으로 시간 분할을 통해 여러 스레드를 번갈아 가며 작업 수행마치 동시에 여러 작업이 처리되는 것 처럼 보인다.다만, 동시성 환경을 고려하지 않고 여러 스레드를 사용하면 Deadlock, Race Condition, Starvation 문제 발생  병렬성 (Parallelism)병렬성이란 물리적으로 동일한 시간에 여러 작업을 독립적으로 수행하는 것을 의미여러 개의 코어가 각각 독립된 스레드의 작업을 동시에 처리함으로써, 실제로 여러 작업이 동시에 실행고성능 컴퓨팅에 이상적 하지만 데이터나 리소스 공유 작업 간 동기화가 필요할 경우가 많아, 동기화로 상당한 오버헤드가 발생 할 수 있다...

[1분 면접] 로드 밸런싱이란 ?

📌 면접 대답로드 밸렁싱이란 리소스 풀에 들어오는 네트워크 트래픽(요청)을 균등하게 분산하는 것을 의미한다. 이를 수행하는 로드 밸런서는 애플리케이션 서버 앞단에 위치하며 클라이언트 요청을 지시하고 제어한다.이를 통해 가용성, 확장성, 보안 및 성능을 확보 할 수 있다.  로드 밸런싱 알고리즘라운드 로빈모든 요청이 순서대로 처리 서버 3대(A,B,C)가 있다면 요청은 ABCABC 순서대로 전달모든 서버의 처리 능력 동등가중치 라운드 로빈라운드 로빈 방식에 가중치라는 개념 추가서버는 처리 능력과 가용 자원에 따라서 가중치 할당최소 연결연결 수를 모니터링해야 사용 가능 가장 적은 활성 연결 서버에 요청 전달가중치 최소 연결가중치 개념을 더한 최소 연결최소 응답 시간응답 시간을 모니터링하고 있는 경우에사용 ..

[1분 면접] 다중 서버 환경에서 세션 기반 인증 방식 사용의 문제점

📌 면접 답변 다중 서버 환경에서 세션 기반의 인증 방식을 사용하는 경우 세션 불일치 문제가 발생할 수 있다.예를 들어, 로드 밸런서를 통해 트래픽이 서버 A와 서버 B로 분산되는 환경을 가정해 보자. 1. 사용자가 로그인하면, 세션 정보는 최초로 요청을 받은 서버 A에 저장된다.2. 이후, 사용자가 추가 요청을 보낼 때 로드 밸런서가 서버 B로 요청을 전달할 경우, B 서버에는 해당 사용자의 세션 정보가 존재하지 않기 때문에 인증이 실패한다.  이는 서버 간 세션 공유가 이뤄지지 않았기 때문에 발생한다.    그렇다면 세션 불일치 문제는 어떻게 해결 할 수 있을까 ?1. 스티키 세션 방식사용자의 요청이 항상 사용자 세션 정보가 저장된 서버로 가도록 고정쿠키나 IP를 통해서 어느 서버로 고정 시킬지 결..

[1분 면접] SOLID 원칙이란 ?

📌 면접 답변 SOLID 원칙은 객체지향 설계의 핵심인 의존성 관리를 위한 원칙이다.객체지향 프로그래밍을 하면서 지켜야 할 5대 원칙으로, 변경에 용이하고, 유지보수와 확장에 도움이 된다.   SRP (SIngle Responsibility Priciple, 단일 책임 원칙)하나의 클래스가 여러 가지 기능을 담당하면 안 되고, 하나의 역할(책임)만 수행해야 한다.SRP를 잘 지키면 변경이 필요할 때 수정할 대상이 명확해진다. SRP 위반 예시class Report { public String generate() { return "Report Content"; } public void print() { System.out.println("Printing Repor..

[1분 면접] DB Replication이란 ?

📌 면접 답변 DB ReplicationDB의 고가용성과 데이터 안정성을 보장하기 위해 활용되는 기술데이터의 지속적인 가용성과 신뢰성을 위해 원본(Source)서버와 복제(Replica)서버 간의 데이터 동기화 Source와 Replica 서버의 데이터 일관성 유지 과정은 주로 Binary log를 기반으로 이뤄진다.   Binary log 서버에서 실행된 모든 데이터 변경 쿼리 기록하는 역할MySQL에서 변경된 데이터를 기록하는 로그 파일 Binary log 저장 방식으로는 Row, Statemet, Mixed의 방식이 있다. Row각 행별로 변경된 내용 정확히 기록 (데이터 일관성 높게 유지)모든 행의 변경 사항을 저장하여 Binary log 파일의 크기 급격히 증가  Statement데이터 변경을..