전체 글 398

Node와 Element의 차이에 대해 설명해주세요

Node는 DOM을 구성하는 가장 기본적인 구성 단위입니다. Node에는 여러 가지 타입이 존재합니다. "Document Node"는 HTML 문서 전체를 나타내는 루트 노드이며, "Element Node"는 HTML 태그를 나타내고, "Text Node"는 텍스트 내용을, "Comment Node"는 주석을 나타냅니다. 이처럼 Node는 DOM 트리의 모든 구성 요소를 포함하는 포괄적인 개념입니다.반면 Element는 Node의 특정 타입 중 하나로, HTML이나 XML 태그로 표현되는 객체를 의미합니다. 쉽게 말해, 모든 Element는 Node이지만, 모든 Node가 Element인 것은 아닙니다. Element는 id, class, style과 같은 HTML 속성을 가질 수 있으며, querySe..

대칭키 및 비대칭키 암호화 방식에 대해서 설명해주세요

평문을 암호화하고 복호화하는 경우 키를 사용할 수 있는데요. 이때, 암복호화에 사용하는 키가 동일한 경우 대칭키 암호화(Symmetric Key Cryptography) 라고 하며, 암복호화에 사용하는 키가 서로 다른 경우를 비대칭키 암호화 혹은 공개키 암호화(Asymmetric Key Cryptography) 라고 합니다.대칭키 암호화는 비대칭키 암호화에 비해서 속도가 빠르다고 알려져 있습니다. 하지만, 대칭키를 교환하는 과정에서 탈취 위험성이 존재할 수 있습니다. 또한, 대칭키 암호화 방식에서는 각 통신 참여자 쌍마다 다른 키가 필요할 수 있는데요. 이 경우 통신 대상이 많아질수록 대칭키의 수가 많아지므로 키 관리가 복잡해질 수 있습니다.비대칭키 암호화에는 공개키와 개인키가 존재합니다. 일반적으로 이..

테스트 주도 개발이 무엇인가요?

테스트 주도 개발(Test Driven Development) 은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스입니다. 개발자는 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성합니다. 그 이후에는 테스트 케이스를 통과하기 위한 최소한의 코드를 생성하고, 작성한 코드를 리팩토링하는 과정을 반복합니다.테스트 주도 개발 사이클에는 다음과 같이 몇 가지 의식할 부분들이 존재하는데요.일단 간단하고, 해보기 쉬운 것을 먼저 시도합니다.실패하는 테스트를 통과하기 위해서는 최소한의 코드를 작성해야 합니다.테스트를 점점 구체화할수록 프로덕션 코드는 점점 범용적으로 됩니다. (커버 가능한 케이스가 점점 많아집니다.)실패하는 테스트가 있을 때만 프로덕션 코드를 작성합니다.실패를 나타내는 데 충분한 정도의..

전역 상태 관리 라이브러리는 왜 사용하나요?

전역 상태 관리 라이브러리를 사용하는 이유에 대해 크게 세 가지를 설명드리겠습니다.첫째, 컴포넌트 간 상태 공유가 용이해집니다. 여러 컴포넌트에서 공통적으로 사용되는 상태를 중앙화하여 관리하고, 여러 곳에서 쉽게 접근할 수 있습니다. 부모 컴포넌트에서 자식 컴포넌트에게 상태를 전달하기 위해 여러 컴포넌트를 거치는 "props drilling"을 겪지 않고 상태를 공유할 수 있습니다.둘째, 관심사 분리가 용이해집니다. 상태 관리 로직을 컴포넌트에서 분리하여 별도로 관리함으로써, 컴포넌트는 UI 로직에만 집중할 수 있게 됩니다. 예를 들어 Redux에서는 상태 변경 로직을 Reducer에 정의해두고, 컴포넌트 단에서는 Dispatch를 통해 Reducer를 호출하는 방식으로 동작합니다. 이러한 분리는 "관심..

HTML Doctype이 무엇인지 설명해주세요

HTML의 은 웹 브라우저에 해당 문서가 어떤 HTML 버전을 기반으로 작성되었는지 알려주는 역할을 하는 선언문입니다. 문서의 최상단에 위치하며, 브라우저가 HTML 문서를 해석하고 렌더링하는 방식을 결정합니다. 대소문자를 구분하지 않지만, 강조하기 위해 대문자를 사용하는 경우가 많습니다.과거에는 HTML의 다양한 버전(ex. XHTML 1.1, HTML 4.01 등)이 존재했기 때문에 브라우저가 문서를 올바른 방식으로 해석하기 위해, 적절한 방식으로 Doctype을 직접 지정해야 했습니다. HTML5에 접어들어서는 선언 방식이 단순화되어 으로 간단하게 선언할 수 있습니다. 이 선언문은 HTML5를 사용하고 있음을 명시합니다.Doctype을 선언하지 않아도 되나요? 🤔아니요, Doctype을 꼭 선언해..

CDN이 무엇인지 설명해주세요.

CDN(Content Delivery Network)은 전 세계에 분산되어 있는 서버들을 통해 사용자에게 웹 컨텐츠를 빠르고 효율적으로 제공하는 기술입니다. 웹사이트의 이미지, CSS, JavaScript 파일, 동영상 등 정적 컨텐츠를 사용자와 물리적으로 가까운 서버에서 전달하는 방식입니다.CDN의 작동 방식은 간단합니다. 먼저, 자주 요청되는 컨텐츠를 전 세계 여러 지역에 위치한 "엣지 서버(Edge Server)"라고 불리는 서버들에 캐싱합니다. 그리고 사용자가 웹사이트에 요청을 보낼 때, DNS를 통해 가장 가까운 엣지 서버로 트래픽이 라우팅되어 처리되도록 합니다.CDN을 적용하면 컨텐츠 요청이 매번 원본 서버에 직접 전달되지 않으므로, 트래픽을 분산시키는 효과가 있습니다. 따라서 대규모 트래픽이..

시스템 콜이란 무엇인가요?

운영체제는 사용자가 실행하는 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지해 자원을 보호합니다. 왜냐하면, 프로그램이 CPU, 메모리, 하드 디스크에 마음대로 접근하고 조작할 수 있다면, 자원이 무질서하게 관리 될 수 있으며 한 프로그램의 실수가 전체 컴퓨터에 영향을 주기 때문입니다. 운영체제는 프로그램들이 자원에 접근하려 할 때 오직 자신을 통해서만 접근하도록 하여 자원을 보호합니다.따라서, 프로그램은 자원에 접근하기 위해서 운영체제에게 도움을 요청해야 합니다. 그리고, 프로그램의 요청을 받은 운영체제는 응용 프로그램 대신 자원에 접근해 요청한 작업을 수행합니다. 이러한 과정은 이중 모드로 구현되는데요. 이중 모드(Dual Mode) 는 CPU가 명령을 실행하는 모드를 사용자 모드와 커널 모드로 ..

카카오 면접질문

주력 언어가 뭔지스프링 버전이랑 자바 버전 어떤거 사용하고 있는지인증 시스템 쪽 프로젝트 하셨다고 하셨는데 해당 프로젝트에 대한 전체적인 소개OAuth라는 조금 다른 부분이 있는데, 이 엑세스 토큰을 굳이 JWT토큰으로 제공한 이유가 뭔지JWT 토큰이 탈취된다면 어떻게 하실건지? 이거를 방지하려면 어떻게?JWT토큰은 서버가 아닌 클라이언트 쪽에선 어떻게 저장하고 있는지 ?서버 구조에 인증 단계는 있는데 인가 단계가 생략되어있는 구조인데 인가 단계가 왜 생략되어 있는지?스프링에 factoryBean과 beanFactory의 차이스프링의 인터셉터와 필터 설명실무에서 써봤는 지?컨트롤러 단에서 혹시 "redirect:", "forward: " 써봤는지 앞에 필터와 인터셉터가 앞에 두가지를 썼을때 어떻게 다르게..

event.target과 event.currentTarget의 차이점은 무엇인가요?

event.target과 event.currentTarget은 모두 이벤트 객체의 속성이며, 각각 "이벤트가 실제로 발생한 요소" 와 "이벤트 리스너가 연결된 요소" 를 가리킵니다. 이 둘의 차이점을 이해하려면 이벤트 버블링을 알아야 합니다. 이벤트는 특정 요소에서 발생한 후 부모 요소들로 전파되는 과정(버블링)을 거치는데, 이 과정에서 target과 currentTarget이 다르게 동작합니다.예를 들어, 부모 요소에 이벤트 리스너를 등록했지만 자식 요소에서 이벤트가 발생하여 버블링된 상황에서, target은 "이벤트가 발생한 요소"인 자식 요소를 가리킵니다. 반면, currentTarget은 "이벤트 리스너가 연결된 요소"인 부모 요소를 가리킵니다.쉽게 말해, target은 “사용자가 직접 상호작용한..

CPU 스케줄링에 대해서 설명해주세요.

CPU 스케줄링은 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것을 의미합니다. 만약 CPU 스케줄링이 없다면, 반드시 실행되어야 할 프로세스들이 실행되지 못할 수 있으며, 당장 급하지 않은 프로세스가 실행되는 등 무질서한 상태가 발생할 수 있습니다. CPU 스케줄링은 선점형과 비선점형 방식으로 구현할 수 있으며, 다양한 스케줄링 알고리즘이 존재합니다.선점형 스케줄링과 비선점형은 각각 어떤 특징이 존재하나요? 🤓선점형 스케줄링(Preemptive Scheduling) 은 프로세스가 CPU를 사용하고 있더라도 운영체제가 프로세스로부터 자원을 강제로 빼앗아 다른 프로세스에 할당할 수 있는 방식입니다. 해당 방식은 응답 시간이 낮으며, 효율적이지만 컨텍스트 스위칭 오버헤드가 발생할 수..