본문 바로가기

면접준비

(32)
오버라이딩과 오버로딩 오버라이딩(Overriding)과 오버로딩(Overloading)은 객체 지향 프로그래밍에서 메서드 다형성을 구현하는 두 가지 다른 개념입니다. 오버라이딩(Overriding): 오버라이딩은 상속 관계에서 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것을 의미합니다. 오버라이딩은 메서드 이름, 매개변수 리스트 및 반환 타입이 부모 클래스의 메서드와 동일해야 합니다. 오버라이딩된 메서드는 부모 클래스의 메서드보다 접근 제어자를 더 좁은 범위로 변경할 수 있습니다(예: 부모 클래스의 메서드가 public이면 자식 클래스에서는 protected 또는 private으로 변경 가능). 오버라이딩은 런타임 시에 호출되는 메서드가 결정되므로 동적 바인딩(dynamic binding)이라고도 합니다. 주로 다형성..
트랜젝션이란? 트랜잭션은 데이터베이스에서 하나 이상의 작업을 수행하는 논리적인 작업 단위를 의미합니다. 이러한 작업은 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)의 네 가지 특성을 보장합니다. 원자성(Atomicity): 트랜잭션 내의 모든 작업은 전부 성공하거나 전부 실패해야 합니다. 즉, 모든 작업이 완료되어야 트랜잭션이 성공적으로 완료됩니다. 어느 하나라도 실패할 경우 이전의 작업들은 롤백되어야 합니다. 일관성(Consistency): 트랜잭션이 수행된 후에도 데이터베이스는 일관된 상태를 유지해야 합니다. 즉, 트랜잭션 이전과 이후에도 데이터베이스는 무결성 제약 조건을 준수해야 합니다. 고립성(Isolation): 하나의 트랜잭션이 실행 중..
세션 기반 인증과 토큰 기반 인증의 차이에 대해 설명해주세요. 세션 기반 인증과 토큰 기반 인증은 웹 애플리케이션 및 API에서 사용되는 두 가지 주요한 인증 방식입니다. 각각의 특징을 살펴보겠습니다. 세션 기반 인증(Session-Based Authentication): 동작 방식: 사용자가 인증되면 서버 측에서 해당 사용자에 대한 세션을 생성하고, 이 세션 정보를 서버에 저장합니다. 클라이언트는 세션 식별자를 쿠키 또는 URL 매개변수와 같은 방법으로 전달하여 요청을 보냅니다. 장점: 보안: 세션 식별자는 클라이언트에 저장되지 않고, 서버 측에서만 관리되므로 보안이 높습니다. 로그인 유지: 사용자가 로그인 상태를 유지하는 동안 세션을 유지할 수 있으므로, 사용자 경험을 향상시킬 수 있습니다. 단점: 확장성 문제: 세션 정보를 서버에 저장하므로, 사용자 수가 많을..
AWS S3, EC2를 사용하는 이유와 사용 경험에 대해서 답변해주세요. AWS S3와 EC2를 사용하는 이유는 여러 가지가 있습니다. 먼저, 각각의 장점을 살펴보겠습니다. AWS S3 (Simple Storage Service): 무한한 확장성: 데이터 저장용으로 S3를 사용하면 데이터 용량을 쉽게 확장할 수 있습니다. 내구성과 가용성: AWS는 데이터를 여러 복제본으로 저장하여 내구성을 보장하며, S3는 99.999999999%의 데이터 내구성을 제공합니다. 다양한 용도: 정적 웹 호스팅, 백업 및 아카이빙, 미디어 및 파일 저장 등 다양한 용도로 활용할 수 있습니다. 비용 효율성: 데이터 전송, 저장 및 요금 청구 모델이 효율적이며, 필요한 만큼만 지불하면 됩니다. AWS EC2 (Elastic Compute Cloud): 확장성: 필요에 따라 가상 서버를 증가 또는 감..
Array, LinkedList에 대해 설명해주시고 각각 어떻게 사용하는지 말씀해주세요. Array (배열): 배열은 동일한 자료형의 요소들을 순서대로 저장하는 자료 구조입니다. 각 요소는 인덱스를 통해 접근 가능하며, 메모리 상에서 연속적으로 할당됩니다. 배열의 크기는 생성할 때 고정되며, 크기를 동적으로 변경하기 어렵습니다. 사용 방법: # Python에서의 배열 사용 예시 my_array = [1, 2, 3, 4, 5] print(my_array[2]) # 인덱스를 사용하여 배열 요소에 접근 배열의 장점: 빠른 임의 접근(Random Access): 인덱스를 통한 직접적인 접근으로 요소에 빠르게 접근할 수 있습니다. 고정된 크기: 배열은 고정된 크기를 가지므로 메모리 사용이 효율적입니다. 배열의 단점: 크기 변경 어려움: 배열의 크기를 동적으로 변경하기 어렵기 때문에 필요 이상의 메모리..
테스트코드에 대해서 아는대로 설명해주시고 활용 경험에 대해서 답변해주세요. 테스트 코드(Test Code)에 대한 설명: 테스트 코드는 소프트웨어 개발에서 작성된 코드의 동작을 확인하고 검증하기 위한 코드입니다. 주로 단위 테스트(Unit Test), 통합 테스트(Integration Test), 시스템 테스트(System Test) 등의 다양한 수준에서 작성됩니다. 테스트 코드는 소프트웨어의 안정성, 신뢰성, 유지보수성을 높이고, 코드 변경에 따른 부작용을 방지하는 데 도움이 됩니다. 테스트 코드의 주요 특징 및 장점: 신속한 버그 탐지: 테스트 코드를 사용하면 코드 변경 사항에 대한 영향을 빠르게 파악할 수 있으며, 버그를 더 신속하게 발견할 수 있습니다. 자동화된 테스트 실행: 테스트 코드를 자동으로 실행하여 수작업으로 테스트하는 시간과 비용을 절감할 수 있습니다. 문서화..
쿼리 최적화에 대해 설명해주시고 방법에 대해 설명해주세요. 쿼리 최적화는 데이터베이스에서 쿼리의 실행 속도를 최대한 빠르게 만들기 위한 프로세스입니다. 쿼리 최적화를 통해 데이터베이스 성능을 향상시키고 응답 시간을 최소화할 수 있습니다. 아래는 쿼리 최적화를 위한 주요 방법과 설명입니다: 인덱스 사용: 데이터베이스에서 적절한 인덱스를 생성하면 쿼리의 검색 성능을 향상시킬 수 있습니다. WHERE 절이나 JOIN 절에서 사용되는 열에 인덱스를 생성하여 검색 속도를 최적화하세요. 쿼리 튜닝: 쿼리의 성능을 향상시키기 위해 쿼리 튜닝을 수행하세요. 불필요한 조인, 서브쿼리, 비효율적인 조건 등을 최적화하여 쿼리 실행 계획을 개선하세요. 통계 정보 갱신: 데이터베이스 엔진이 쿼리 실행 계획을 수립하는 데 사용하는 통계 정보는 정확해야 합니다. 주기적으로 통계 정보를 갱..
멀티프로세스와 멀티쓰레드의 특징에 대해 설명해주세요. 멀티프로세스와 멀티쓰레드는 병렬 프로그래밍을 구현하는 데 사용되는 두 가지 기본적인 접근 방법입니다. 각각의 특징은 다음과 같습니다: 멀티프로세스: 독립성: 각 프로세스는 독립적인 메모리 공간을 가지고 실행되기 때문에 하나의 프로세스가 다른 프로세스에게 영향을 미치지 않습니다. 신뢰성: 하나의 프로세스가 비정상적으로 종료되더라도 다른 프로세스는 계속 실행될 수 있습니다. 자원 소모: 각 프로세스는 독립적인 메모리 공간을 사용하므로 메모리 소모가 크다. 프로세스 간 통신이 필요한 경우에는 별도의 IPC (Inter-Process Communication) 메커니즘이 필요하다. 생성 및 관리의 오버헤드: 프로세스 간 전환 및 생성에는 오버헤드가 발생하며, 자원을 할당하고 해제하는 것도 비용이 크다. 멀티쓰레..