전체 글 98

2024.04.08 TIL

1. 스프링)기술면접질문 1)디버깅을 어떤 방식으로 진행하는지 설명해주세요. 디버깅은 코드 내의 버그나 문제를 식별하고 수정하는 과정입니다. 이 과정은 정확한 문제 정의를 필요로 하며, 단순히 오류를 수정하는 것뿐만 아니라 원하는 UX/UI, 로직, 성능, 비용 달성을 위해 수행됩니다. 도구의 사용도 중요하지만, 문제 정의가 디버깅에서 가장 중요한 부분입니다. 디버깅의 기본 원칙 문제 정의: 디버깅의 첫 단계는 문제를 정확하게 정의하는 것입니다. 이는 적절한 해결책을 찾는 데 필수적입니다. 2단계별 실행: 코드를 한 단계씩 실행하여 문제가 발생하는 지점을 정확히 파악합니다. 이를 통해 프로그래밍 오류를 식별하고 임시 변경을 적용할 수 있습니다. 디버깅 도구와 기법 Visual Studio IDE: C#,..

개발일지 2024.04.08

2024.04.05 TIL

1.스프링)기술면접질문 1)인터페이스와 추상클래스의 차이를 설명해주세요 인터페이스와 추상클래스는 자바에서 객체 지향 프로그래밍의 핵심 요소입니다. 두 개념 모두 추상화를 제공하지만, 사용 목적과 방법에 있어서 차이가 있습니다. 기본 차이점 추상클래스: 추상클래스는 하나 이상의 추상 메소드를 포함할 수 있으며, 일부 구현된 메소드를 가질 수 있습니다. 추상클래스는 상속을 통해 확장되며, 추상 메소드는 하위 클래스에서 구현되어야 합니다. 인터페이스: 인터페이스는 모든 메소드가 추상 메소드인 클래스입니다. 인터페이스는 구현을 강제하기 위해 사용되며, 클래스는 인터페이스를 구현(implement)하여 모든 추상 메소드를 정의해야 합니다. 주요 차이점 상속과 구현: 클래스는 하나의 추상클래스만 상속할 수 있지만,..

개발일지 2024.04.05

2024.04.04 TIL

1. 스프링)기술면접질문 1)제네릭이란 무엇인가요? 제네릭은 프로그래밍에서 타입(type)을 파라미터로 받아서 사용하는 기법을 말해요. 이를 통해 클래스, 인터페이스, 메소드를 정의할 때 구체적인 타입을 명시하지 않고, 실제 사용되는 시점에 타입을 지정할 수 있어요. 제네릭을 사용함으로써 코드의 재사용성을 높이고, 타입 안정성을 확보할 수 있습니다. 제네릭의 기본 개념 정의: 타입을 일반화하여, 클래스 내부에서 개별적으로 타입을 지정하는 것이 아니라 외부에서 타입을 지정할 수 있게 하는 기법입니다. 사용 이유: 타입 안정성을 확보하고, 코드의 재사용성을 높이기 위해서입니다. 또한, 컴파일 시점에 타입 체크를 할 수 있어 런타임 에러의 가능성을 줄일 수 있어요. 제네릭의 장점 타입 안정성: 제네릭을 사용하..

개발일지 2024.04.04

2024.04.03TIL

1.스프링)기술면접질문 1) 객체지향이란 무엇인지 설명해주세요. -객체지향 프로그래밍(Object-Oriented Programming, OOP)은 데이터를 추상화하여 객체를 만들고, 이러한 객체들이 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다. 객체는 데이터와 그 데이터와 관련된 메소드를 포함하며, 프로그램은 이러한 객체들의 집합으로 구성됩니다. OOP는 코드의 재사용성과 유지보수성을 높이는 것을 목표로 합니다 (꼬리질문) 객체지향의 특징은 무엇이 있나요? 추상화(Abstraction): 복잡한 실세계 문제를 단순화하여 객체의 핵심적인 특성만을 모델링합니다. 캡슐화(Encapsulation): 객체의 데이터(상태)와 그 데이터를 조작하는 메소드를 하나로 묶어, 객체의 세부 구현 내용을 외부에 ..

개발일지 2024.04.03

2024.04.02 TIL

1. 스프링)기술면접질문 1)가비지 컬렉터에 대해 설명해주세요 가비지 컬렉터는 프로그램이 동적으로 할당한 메모리 영역 중에서 더 이상 사용하지 않는 영역을 자동으로 찾아서 해제하는 시스템의 일부입니다. 이 과정을 통해 사용 가능한 메모리 공간을 늘리고, 메모리 누수를 방지하여 프로그램의 효율성을 높입니다. 가비지 컬렉션(Garbage Collection)의 기본 원리 메모리 할당: 프로그램 실행 중 필요에 따라 메모리를 동적으로 할당받습니다. 사용 중인 메모리 인식: 가비지 컬렉터는 현재 사용 중인 메모리를 추적합니다. 사용하지 않는 메모리 인식: 더 이상 참조되지 않는 메모리 영역을 식별합니다. 메모리 해제: 식별된 불필요한 메모리 영역을 해제하여 재사용 가능하게 만듭니다. 가비지 컬렉션의 필요성 메모..

개발일지 2024.04.02

2024.04.01 TIL

1. 스프링)기술면접질문 1)Spring bean container 생성부터 스프링 종료까지의 사이클에 대해 알려주실 수 있을까요? @PostConstruct, @PreDestroy 어노테이션의 역할도 함께 알려주시면 좋습니다. -스프링 프레임워크에서 빈 컨테이너는 자바 객체(Bean)의 생성부터 소멸까지의 생명주기를 관리합니다. 이 과정에서 @PostConstruct와 @PreDestroy 어노테이션은 빈의 초기화와 소멸 시점에 특정 작업을 수행하도록 도와줍니다. 스프링 빈 컨테이너 생명주기 빈 컨테이너 생성: 스프링 IoC 컨테이너가 생성되며, 빈 객체들이 관리됩니다. 빈 객체 생성 및 의존성 주입: 컨테이너에 등록된 빈 객체가 생성되고, 필요한 의존성이 주입됩니다. 초기화 콜백: 빈 객체가 완전히 ..

개발일지 2024.04.01

2024.03.29 TIL

1. 스프링) 기술면접질문 1)N+1 문제의 발생 이유와 해결 방법에 대해 설명해주실 수 있을까요? 해결 방법은 3가지 이상 말씀해주시면 좋습니다 N+1 문제는 데이터베이스 쿼리 최적화와 관련된 문제 중 하나로, 특히 ORM(Object-Relational Mapping)을 사용할 때 자주 발생합니다. 이 문제를 이해하고 효과적으로 해결하는 것은 애플리케이션의 성능을 크게 향상시킬 수 있습니다. N+1 문제 발생 이유 원인: N+1 문제는 1번의 쿼리로 N개의 연관된 객체를 가져오려 할 때, 각 객체를 가져오기 위해 추가적으로 N번의 쿼리가 발생하는 현상을 말합니다. 이는 주로 ORM에서 연관된 객체를 지연 로딩(LAZY Loading) 전략으로 가져올 때 발생합니다. 발생 상황: 예를 들어, 게시글(P..

개발일지 2024.03.29

2024.03.28TIL

1. 스프링)기술면접질문 1)Annotation이란 무엇이고 구체적으로 어떤 것이 있는지 예시를 들어 설명해주실 수 있을까요? Annotation은 주석이라는 의미를 가지며, 다양한 분야에서 사용되는 용어입니다. 특히 프로그래밍 언어에서의 Annotation은 코드 내에서 특별한 의미나 기능을 수행하도록 하는 메타데이터를 제공합니다. 일반적인 Annotation의 개념 정의: Annotation은 텍스트, 문서, 비디오 등에 추가 정보를 제공하는 주석이나 설명을 의미합니다. 이는 독자가 내용을 더 잘 이해할 수 있도록 돕습니다. -예시: 학생이 교과서에 중요한 내용을 하이라이트하거나, 연구자가 논문에 주석을 달아 추가 설명을 하는 경우 등이 있습니다. 프로그래밍 언어에서의 Annotation 정의: 프로..

개발일지 2024.03.28

2024.03.27 TIL

1. 스프링) 기술면접질문 1)DI와 IoC에 대해 아는 만큼 설명해주실 수 있을까요? DI와 IoC는 소프트웨어 설계에서 중요한 개념으로, 코드의 결합도를 낮추고 유연성 및 확장성을 높이는 데 도움을 줍니다. 이 두 개념은 특히 스프링 프레임워크 같은 현대적인 애플리케이션 개발에서 중요한 역할을 합니다. DI(의존성 주입) 정의: 객체 간의 의존 관계를 외부에서 결정하고 주입하는 방식입니다. 즉, 객체가 필요로 하는 의존 객체를 직접 생성하지 않고, 외부(예: 프레임워크)에서 생성된 객체를 주입(전달)받아 사용하는 것을 말합니다. 1장점: 객체 간의 결합도를 낮추어 코드의 재사용성을 높이고, 유닛 테스트를 용이하게 합니다. 또한, 코드의 변경에 따른 영향을 최소화할 수 있습니다. IoC(제어의 역전) ..

개발일지 2024.03.27