전체 글 528

TCP 3-way handshake에 대해서 설명해주세요.

TCP 3-way handshake는 TCP/IP 네트워크에서 안정적이고 연결 지향적인 통신을 설정하기 위해 사용되는 절차입니다. 이 절차는 클라이언트와 서버 간에 신뢰할 수 있는 연결을 설정하기 위해 세 개의 메시지(세그먼트)를 교환하는 과정을 포함합니다.우선 클라이언트는 서버에 연결을 요청하는 SYN 세그먼트를 보내는데요. 이 세그먼트에는 초기 순서 번호(Sequence Number)와 윈도우 크기(Window Size) 정보가 포함되어 있습니다.이후 서버는 클라이언트의 요청을 수락하고, SYN과 ACK 플래그가 설정된 세그먼트를 클라이언트에 보냅니다. 이 세그먼트는 서버의 초기 순서 번호와 클라이언트의 초기 순서 번호에 대한 응답(ACK=클라이언트의 초기 순서 번호 + 1)을 포함합니다.클라이언트는..

이벤트 전파(event propagation)에 대해서 설명해주세요.

이벤트 전파는 DOM에서 이벤트가 발생했을 때, 그 이벤트가 어떤 방식으로 전파되는지를 설명하는 개념입니다. 이벤트 전파는 크게 세 단계로 나뉘는데, 캡처링(Capturing), 타겟(Target), 그리고 버블링(Bubbling) 입니다.첫번째로 캡처링 단계에 대해서 설명 드리겠습니다. 이벤트가 DOM 트리의 최상위 요소(document)에서 시작하여, 이벤트가 발생한 요소(타깃 요소)로 향해 내려가는 단계입니다. 이 과정에서 상위 요소들에 이벤트 리스너가 있으면 그 순서대로 실행될 수 있습니다.두번째로는 타겟 단계입니다. 이벤트가 실제로 발생한 타겟 요소에 도달하는 단계입니다. 타겟 요소에 등록된 이벤트 리스너가 이 시점에 실행됩니다.마지막으로 버블링 단계입니다. 타겟 요소에서 이벤트가 발생한 후, ..

동기 방식으로 외부 서비스를 호출할 때 외부 서비스 장애가 나면 어떻게 조치할 수 있나요?

외부 서비스 장애로 인해 응답이 오래 걸린다고 했을 때 외부 API 응답으로 대기하는 자원들이 운영 서버 내부에 쌓이면서 성능에 악영향을 줄 수 있습니다. 이를 해결하기 위한 가장 기본적인 방법은 타임아웃을 설정하는 것입니다. 크게 타임아웃에는 커넥션 타임아웃과 리드 타임아웃, HTTP 커넥션 풀 타임아웃을 설정해 볼 수 있습니다.다음과 같이 특정 서비스의 장애가 전체 서비스에 영향을 주는 경우는 어떻게 해결할 수 있을까요? 🤔1. A 서비스, B 서비스, C 서비스 연동 코드가 HTTP 커넥션 풀을 공유한다.2. A 서비스의 장애로 응답 시간 지연이 발생하는 경우 2-1. 풀에 남은 커넥션이 점점 줄어든다. 2-2. 풀에서 커넥션을 구하는 대기 시간이 증가한다. 2-3. B, C 서비..

script 태그에서 async와 defer의 차이점에 대해서 설명해주세요.

먼저, 두 속성 모두 스크립트를 비동기적으로 로드한다는 공통점이 있습니다. 하지만 실행 시점에서 중요한 차이가 있습니다.async 속성async 속성에는 다음과 같은 특징들이 존재합니다.스크립트를 비동기적으로 다운로드합니다.다운로드가 완료되면 즉시 실행됩니다.HTML 파싱과 병렬로 진행되지만, 스크립트 실행 시 HTML 파싱이 잠시 중단됩니다.여러 async 스크립트가 있을 경우, 다운로드가 완료되는 순서대로 실행됩니다.defer 속성defer 속성에는 다음과 같은 특징들이 존재합니다.스크립트를 비동기적으로 다운로드합니다.HTML 문서 파싱이 완전히 끝난 후에 실행됩니다.DOMContentLoaded 이벤트 발생 직전에 실행됩니다.여러 defer 스크립트가 있을 경우, HTML에 작성된 순서대로 실행됩니..

자바스크립트 함수에 대해서 아는대로 설명해주세요.

자바스크립트 함수에는 여러가지 특징들이 있습니다.첫번째 특징은 자바스크립트 함수는 일급 객체라는 점입니다.자바스크립트에서 함수는 값처럼 취급될 수 있으며, 변수에 할당하거나, 다른 함수의 인자로 전달하거나, 함수의 반환값으로 사용할 수 있습니다.const sayHello = function() { return 'Hello'; };console.log(sayHello()); // 'Hello'const executeFunction = function(fn) { return fn();};console.log(executeFunction(sayHello)); // 'Hello'이를 통해 매우 유연하게 코드를 작성할 수 있으며, 고차 함수를 포함한 다양한 패턴을 구현할 수 있습니다.두번째 특징은 익명 함수와 ..

동일성과 동등성에 대해서 설명해주세요

동일성과 동등성은 객체를 비교할 때 중요한 개념입니다. 자바에서는 이 두 개념을 equals() 메서드와 == 연산자를 통해 구분할 수 있습니다.equals()와 ==의 차이는 무엇인가요?equals()는 객체의 내용을 비교하는 반면, ==는 객체의 참조(레퍼런스)를 비교합니다. 따라서 두 객체의 내용이 같더라도 서로 다른 객체라면 equals()는 true를 반환할 수 있지만, ==는 false를 반환합니다.동등성(Equality)은 뭔가요?동등성은 논리적으로 객체의 내용이 같은지를 비교하는 개념입니다. 자바에서는 equals() 메서드를 사용하여 객체의 동등성을 비교합니다. Apple 클래스를 예시로 보면, Object.equals 메서드를 오버라이딩하여 객체의 실제 데이터를 비교하도록 했습니다. 그..

JPA에서 ID 생성 전략에 대해 설명해주세요.

JPA에서 ID를 생성하기 위해서는 직접 할당과 자동 할당을 사용할 수 있습니다. 직접 할당은 @Id어노테이션만을 사용하여 Id값을 직접 할당하는 방식입니다. 반면, 자동 할당은 @Id와 @GeneratedValue를 함께 사용해서 원하는 키 생성 전략을 선택하는 방식입니다. @GeneratedValue의 stretagy 옵션을 통해 생성 전략을 설정할 수 있는데, 여기에 올 수 있는 값인 GenerationType는 다음과 같습니다.@Target({ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface GeneratedValue { GenerationType strategy() ..

인터넷 창에 www.google.com를 입력하면 무슨 일이 일어나는지 설명해주세요.

첫번째로 DNS 조회가 일어납니다. 사용자가 www.google.com을 입력하면, 브라우저는 먼저 이 도메인 이름을 IP 주소로 변환해야 합니다. 이 과정을 DNS 조회(DNS Lookup)라고 합니다. 브라우저는 캐시된 DNS 기록을 먼저 확인하고, 없으면 로컬 DNS 서버에 요청하여 www.google.com에 해당하는 IP 주소를 얻습니다.두번째로 TCP 연결 수립입니다. IP 주소가 확인되면, 브라우저는 서버와 TCP 연결을 수립합니다. TCP(Transmission Control Protocol)는 데이터를 신뢰성 있게 전달하기 위한 프로토콜입니다. 이 과정에서 브라우저는 서버와 3-way handshake를 수행합니다. 즉, 브라우저가 SYN 패킷을 보내고, 서버가 SYN-ACK 패킷을 보내..

단어의 일부로 검색할 수 있는 자동완성 기능을 구현할 때, a로 시작하는 단어 5개, ap로 시작하는 단어 5개

1) 로컬 인메모리: Top-K 유지 Trie아이디어Trie의 각 노드가 해당 **접두사(prefix)**에 대한 상위 K개(예: 5개) 제안을 미리 저장.단어를 삽입할 때, 경로상의 모든 노드에 “(단어, 점수/빈도)”를 갱신.검색 시에는 접두사 노드까지 내려간 뒤, 그 노드의 Top-K 리스트만 읽으면 O(|prefix|)에 바로 응답.장점매우 빠름(O(|prefix|)+K).어플리케이션 서버 메모리만으로 동작.단점데이터가 커지면 메모리 부담.빈도 업데이트가 잦으면 재정렬/갱신 비용 발생.Java 예시 (빈도 높은 순, 동일 빈도는 사전순)import java.util.*;class Suggest implements Comparable { final String word; final int..

한글날 묵상(feat gpt5)

매년 10월 9일은 한글날입니다.세종대왕과 집현전 학자들이 1443년 훈민정음을 창제하고 1446년 반포한 날을 기념하며,우리말과 글의 소중함을 되새기는 날이지요.한글은 세계에서 유일하게 창제자와 원리가 명확한 문자이며,소리의 과학과 철학이 담긴 가장 체계적이고 아름다운 문자로 평가받습니다.훈민정음 서문에는 이런 말이 있죠.> “나라의 말이 중국과 달라 백성이 말하고자 하는 바를 글로 펴지 못할까 걱정되어 새로 스물여덟 글자를 만들었다.”이 짧은 문장 안에는백성을 향한 사랑, 언어의 평등, 소통의 정의가 담겨 있습니다.글을 모른다는 이유로 억눌리던 시대에,누구나 읽고 쓸 수 있게 한 ‘지식의 해방 선언’이 바로 한글의 정신입니다.---💭 한글날에 생각해볼 거리1. 나는 한글을 얼마나 바르게 쓰고 있을까..