728x90

IT 34

Offset Pagination과 Cursor Pagination

Offset Pagination: 동작 방식: 페이지 번호와 페이지당 아이템 수를 기반으로 쿼리에서 OFFSET 및 LIMIT 절을 사용하여 데이터를 검색합니다. 예를 들어, 페이지 크기가 10이고 두 번째 페이지를 가져온다고 가정하면, 쿼리는 OFFSET 10을 사용하여 첫 번째 10개의 아이템을 건너뛰고 다음 10개의 아이템을 반환합니다. 장점: 간단한 구현: 대부분의 데이터베이스에서 OFFSET 및 LIMIT과 함께 제공되므로 구현이 비교적 쉽습니다. 페이지 번호를 통한 직관적인 페이지 네비게이션: 사용자가 페이지 번호를 통해 특정 페이지로 이동할 수 있습니다. 단점: 성능 문제: OFFSET은 매번 쿼리할 때마다 전체 결과 집합을 스캔하고 건너뛰어야 하므로 큰 데이터셋에 대해 비효율적일 수 있습니..

IT/프로그래밍 2024.03.27

Spring MVC Model

1. org.springframework.ui.Model: 사용 시점: Controller에서 View로 데이터를 전달할 때 사용. 메서드의 매개변수로 선언하여 데이터를 추가하거나 수정할 수 있음. 설명: Controller에서 View로 데이터를 전달하기 위한 인터페이스. addAttribute(String attributeName, Object attributeValue) 메서드를 사용하여 데이터를 추가. 장단점: 장점: 간단하게 데이터를 전달할 때 사용하기 편리. 단점: 유연성이 상대적으로 부족함. @Controller public class MyController { @GetMapping("/example") public String example(Model model) { model.addAtt..

IT/개발자 면접 2023.12.17

Spring Security 암호화 방식

Spring Security는 다양한 암호화 방식을 지원하며, 주요한 몇 가지 방식과 각각의 특징을 살펴보겠습니다. 1. BCrypt (Recommended): 장점: 안전한 해시 함수를 사용하여 보안성이 높음. Salt(솔트) 값을 사용하여 레인보우 테이블 공격에 대비함. 단점: 연산이 높아 시간이 오래 걸릴 수 있음. // Spring Security에서 BCrypt 사용 예제 String password = "user_password"; BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); String hashedPassword = passwordEncoder.encode(password); 2. SHA-256: 장점: 빠른 연산..

IT/개발자 면접 2023.12.16

Redis 란?

Redis는 오픈 소스인 인메모리 키-값 데이터 구조 저장소로, 다양한 사용 사례에 적합한 빠르고 가벼운 솔루션입니다. 주로 캐싱, 세션 관리, 메시지 브로커, 리더보드 등 다양한 용도로 사용됩니다. Redis의 특징: 인메모리 데이터 저장: 데이터를 메모리에 저장하여 빠른 읽기/쓰기 속도를 제공합니다. 다양한 데이터 구조 지원: 문자열, 해시, 리스트, 셋, 정렬된 셋 등 다양한 데이터 구조를 지원합니다. 지속성 옵션: 스냅샷 또는 AOF(append-only file) 파일을 사용하여 지속성을 확보할 수 있습니다. 고성능: 주로 메모리에 데이터를 저장하고 있기 때문에 빠른 응답 속도를 제공합니다. 분산 확장성: 클러스터링을 통해 데이터를 분산하고 확장할 수 있습니다. 사용 사례: 캐싱: 데이터베이스나..

IT/개발자 면접 2023.12.15

마이크로서비스(Microservices)

마이크로서비스(Microservices)는 소프트웨어 개발 및 배포를 위한 아키텍처적인 접근 방식 중 하나입니다. 전통적인 몰리식(Monolithic) 아키텍처와 대비되며, 여러 작은 독립적인 서비스들이 협업하여 전체 시스템을 구성합니다. 이러한 아키텍처는 다음과 같은 특징을 가지고 있습니다: 특징: 독립적인 서비스: 각 마이크로서비스는 독립적으로 배포, 업데이트, 확장이 가능한 작은 서비스 단위로 구성됩니다. 다양한 기술 스택: 각 마이크로서비스는 필요에 따라 다른 언어나 기술 스택을 사용할 수 있습니다. 분산 데이터 관리: 데이터가 각 서비스에 속하며, 데이터 소유 및 관리가 서비스 내부에서 이루어집니다. 분산 개발 및 배포: 각 마이크로서비스는 독립적으로 개발되어 배포되기 때문에 팀 간의 협업이 용..

IT/개발자 면접 2023.12.14

Git Flow 와 GitHub Flow , Branch 전략

Git Flow와 GitHub Flow는 소프트웨어 개발에서 사용되는 브랜칭 전략 중 두 가지 주요한 방식입니다. Git Flow: Master Branch: master 브랜치는 항상 배포 가능한 상태의 코드를 유지합니다. 실제로 배포되는 코드가 저장되는 곳입니다. Develop Branch: develop 브랜치는 다음 버전을 위한 개발이 이루어지는 곳입니다. 새로운 기능 개발이나 버그 수정 등이 이루어집니다. Feature Branches: 새로운 기능을 개발할 때마다 새로운 브랜치를 생성합니다. 각 기능 브랜치는 develop 브랜치에서 분기됩니다. Release Branches: 배포를 위한 버전을 준비할 때 생성하는 브랜치입니다. QA 및 마무리 작업을 수행하고 최종적으로 master와 dev..

IT/개발자 면접 2023.12.13

Java Checked Exception과 Unchecked Exception

Java Checked Exception과 Unchecked Exception의 정의와 차이점: Checked Exception (Compile-time Exception): 정의: 컴파일러에 의해 검사되고 처리가 강제되는 예외. 예시: IOException, SQLException과 같이 입출력이나 데이터베이스와 관련된 예외들. 처리 방법: 반드시 try-catch 블록이나 throws 키워드를 사용하여 예외 처리가 필요. Unchecked Exception (Runtime Exception): 정의: 컴파일러가 검사하지 않고 런타임 시에 발생하는 예외. 예시: NullPointerException, ArrayIndexOutOfBoundsException과 같이 프로그래머의 실수로 발생하는 예외들. 처..

IT/개발자 면접 2023.12.12

서비스 개발 요청을 받았을 때 업무 진행

1. 기획서 이해: 기획서를 자세히 읽고 이해합니다. 필요 시 추가 질문을 기획자나 다른 팀과 협의하여 명확한 이해를 얻습니다. 2. 시스템 아키텍처 및 데이터베이스 설계: 필요한 시스템 구조와 데이터베이스를 설계합니다. 엔터티, 관계, 클래스 다이어그램 등을 작성하여 시스템을 시각화합니다. 3. 기술 스택 및 도구 선택: 프로젝트에 적합한 기술 스택과 도구를 선택합니다. Spring Framework의 어떤 모듈을 사용할지, 데이터베이스는 어떤 것을 사용할지 등을 결정합니다. 4. 개발 환경 구축: 프로젝트를 위한 개발 환경을 구축합니다. 개발 도구, 데이터베이스, 버전 관리 시스템 등을 설정합니다. 5. 코드 작성: 기능에 따라 필요한 클래스와 메서드를 작성합니다. 각 클래스와 메서드에 주석을 달아 ..

IT/개발자 면접 2023.12.12

Spring Filter와 Interceptor

Spring Filter와 Interceptor 1. Spring Filter: 특징: Servlet 기반: Spring Filter는 Servlet 기술에서 파생된 기능으로, Servlet Container 레벨에서 동작합니다. Request/Response 처리: 클라이언트의 요청(Request)이 서버에 도착하기 전에 처리되는 필터로, 주로 Request와 Response를 수정하거나 검사하는 용도로 사용됩니다. Web.xml 또는 Java Config에서 설정: web.xml 파일이나 Java Config에서 설정하며, URL 패턴을 기반으로 동작합니다. 장점: 최하위 레벨에서 동작: Filter는 Servlet Container 내부에서 동작하므로 모든 요청에 대해 동일한 방식으로 처리할 수 있..

IT/개발자 면접 2023.12.11

Token과 Session

1. Token: 특징: 상태 정보를 저장하지 않음: Token은 클라이언트 측에서 상태 정보를 저장하지 않습니다. 각 요청은 자체적으로 모든 필요한 정보를 가지고 있어야 합니다. 자체 포함성: Token은 클라이언트에 대한 모든 정보를 자체적으로 포함하며, 서버에서 상태 정보를 저장할 필요가 없습니다. JWT 등 활용: 주로 JWT(JSON Web Token)와 같은 토큰 기반 인증 시스템에서 사용됩니다. 장점: 확장성: 서버의 상태를 유지하지 않기 때문에 서버 확장이 용이합니다. 클라이언트와 서버의 독립성: 서버와 클라이언트 간의 독립성이 유지되어 서로에게 영향을 덜 주고 확장이 가능합니다. 단점: 상태 관리 어려움: 클라이언트에서 상태 정보를 모두 관리하므로, 클라이언트의 상태를 관리하는 부담이 있..

IT/개발자 면접 2023.12.10
728x90