본문 바로가기

면접준비

(32)
프로세스와 쓰레드에 대해서 설명하고 그 차이에 대해서 설명해주세요. 프로세스(Process)와 쓰레드(Thread)는 운영체제와 소프트웨어 개발에서 중요한 개념으로, 여러 작업을 동시에 수행하도록 하는 데 사용됩니다. 프로세스(Process): 정의: 프로세스는 실행 중인 프로그램을 의미하며, 메모리 공간, 코드, 데이터, 파일 등을 포함한 실행 환경을 갖추고 있는 독립적인 단위입니다. 특징: 각 프로세스는 독립된 메모리 공간을 가지고 있어 다른 프로세스의 영향을 받지 않습니다. 프로세스 간 통신이나 데이터 공유를 위해서는 별도의 메커니즘이 필요합니다. 프로세스 간 전환 시간이 존재하며, 이는 컨텍스트 스위칭(Context Switching)이라 불립니다. 프로세스는 각각 자신의 리소스를 관리하며, 프로세스 간 충돌이 발생해도 다른 프로세스에 영향을 미치지 않습니다. 쓰..
TDD에 대해서 설명해주세요. TDD, 또는 Test-Driven Development(테스트 주도 개발)는 소프트웨어 개발 방법론 중 하나로, 테스트가 코드 작성 전에 작성되는 개발 방식입니다. TDD는 간단한 반복 주기를 가지고 있으며, 주로 다음의 세 가지 단계로 구성됩니다: "Red(빨강)", "Green(초록)", "Refactor(리팩터)". Red(빨강): 개발자는 새로운 기능을 추가하거나 기존 코드를 수정할 때, 해당 기능을 테스트하는 테스트 케이스를 작성합니다. 이 테스트는 아직 통과하지 못할 것이므로 '빨강'이라는 표현을 사용합니다. Green(초록): 개발자는 테스트가 실패하는 코드를 작성하여 테스트를 통과시킵니다. 이 때 필요한 최소한의 코드만을 작성하여 테스트를 통과시키도록 노력합니다. 목표는 최소한의 코드로 ..
클래스형 vs 함수형 클래스형 : state, lifeCycle 관련 기능사용 가능하다. 메모리 자원을 함수형 컴포넌트보다 조금 더 사용한다. 임의 메서드를 정의할 수 있다. 함수형 : state, lifeCycle 관련 기능사용 불가능 [Hook을 통해 해결 됨] 메모리 자원을 함수형 컴포넌트보다 덜 사용한다. 컴포넌트 선언이 편하다. 자바에서는 함수형 컴포넌트를 사용하는 상황으로, 간단한 UI를 표현하거나 Hooks를 통해 상태와 생명주기를 다룰 수 있는 경우에는, 또는 코드의 간결성이 중요한 상황에서 주로 함수형 컴포넌트를 선택합니다. 함수형 컴포넌트는 간결하고 읽기 쉬운 코드를 제공하여 유지보수성을 향상시키는 데 도움이 됩니다.
OAuth에 대해서 설명해주세요. OAuth(Open Authorization)은 사용자가 웹 또는 모바일 애플리케이션에서 다른 웹 사이트 또는 애플리케이션에 대한 접근 권한을 부여할 때 사용되는 개방형 표준 프로토콜로.소셜로그인에서 사용됩니다. OAuth는 사용자의 리소스에 대한 제한된 액세스를 제3자 애플리케이션에 부여하며, 사용자 이름과 암호를 직접 제공하지 않고도 안전한 방식으로 리소스에 접근할 수 있도록 합니다. OAuth의 핵심 구성 요소는 다음과 같습니다: Resource Owner(리소스 소유자): 자원(데이터 또는 서비스)에 대한 접근 권한을 가진 사용자. Client(클라이언트): 리소스에 접근하려는 애플리케이션 또는 서비스. Authorization Server(인가 서버): 클라이언트의 요청에 대해 사용자의 동의를 ..
JWT, Refresh, Access Token에 대해서 설명해주세요 JWT( JSON Web Token)은 웹 표준으로 정의된 토큰 형식 중 하나이며, 주로 사용자 인증을 위해 사용됩니다. Refresh Token과 Access Token은 인증 및 보안 관련 작업에 사용되는 특별한 종류의 토큰입니다. 1. JWT (JSON Web Token): 정의: JWT는 클레임(claim) 정보를 JSON 형식으로 인코딩하여 안전하게 전달하기 위한 토큰입니다. 구조: Header.Payload.Signature로 이루어져 있으며, Header에는 토큰 유형과 해시 알고리즘, Payload에는 클레임 정보, Signature에는 서명이 들어 있습니다. 용도: 인증: 사용자의 식별 정보를 담고 있어, 클라이언트가 서버에 대한 인증을 할 수 있습니다. 정보 교환: 서로 다른 시스템 간..
OSI 7계층에 대해 아는대로 설명해주세요. OSI(Open Systems Interconnection) 모델은 네트워크 프로토콜 설계와 통신 기술을 계층별로 나눈 개념적인 모델입니다. 이 모델은 총 7개의 계층으로 구성되어 있습니다. 각 계층은 하위 계층으로부터 서비스를 받고 상위 계층에게 서비스를 제공합니다. 물리 계층 (Physical Layer): 목적: 전송 매체(케이블, 광섬유 등)를 통한 비트 스트림을 전송하는 역할. 활동: 전기적 신호를 이진 데이터로 변환하거나, 반대로 이진 데이터를 전기적 신호로 변환. 데이터 링크 계층 (Data Link Layer): 목적: 물리 계층에서 발생하는 오류를 감지하고 수정하며, 노드 간 신뢰성 있는 통신을 제공. 활동: 프레임(Frame) 단위로 데이터를 관리하고, 오류 검출 및 재전송을 수행. 네..
객체지향 프로그래밍이란 무엇이고 어떻게 활용할 수 있나요? 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 소프트웨어 개발에서 사용되는 프로그래밍 패러다임 중 하나로, 현실 세계의 사물을 모델링하여 소프트웨어를 개발하는 방법입니다. 객체지향 프로그래밍은 다음과 같은 핵심 개념을 포함합니다. 클래스와 객체: 클래스는 객체를 생성하기 위한 템플릿이며, 객체는 클래스의 인스턴스입니다. 객체는 데이터와 해당 데이터를 처리하기 위한 메서드를 포함합니다. 상속: 상속은 하위 클래스가 상위 클래스의 특성과 메서드를 상속받는 개념입니다. 이를 통해 코드의 재사용성을 높일 수 있습니다. 다형성: 다형성은 같은 이름의 메서드가 다양한 형태로 작동할 수 있는 능력을 가리킵니다. 이는 상위 클래스에 정의된 메서드가 하위 클래스에서 다르게 구현될 수 ..
DI, IoC에 대해 설명해주세요. 의존성 주입 (Dependency Injection - DI): 개념: 의존성 주입은 클래스나 모듈 사이의 의존성을 외부에서 주입하는 디자인 패턴입니다. 일반적으로 클래스 내부에서 직접 의존 객체를 생성하는 것이 아니라, 외부에서 의존 객체를 주입받아 사용하는 방식을 의미합니다. 목적: 의존성 주입은 코드의 유연성과 테스트 용이성을 향상시킵니다. 의존성을 외부에서 주입받기 때문에, 코드 변경 없이 다양한 의존 객체를 쉽게 교체할 수 있습니다. 제어의 역전 (Inversion of Control - IoC): 개념: IoC는 프로그램의 흐름 제어가 개발자가 아닌 외부 컨테이너에게 넘어가는 디자인 원칙입니다. 일반적으로는 의존성 주입을 통해 객체 간의 의존성을 해결하며, 이를 통해 IoC를 구현합니다. 목적..