분류 전체보기 53

위클리 페이퍼 - 11주차

1. 컨테이너 기술과 Docker를 명확히 구분하여 설명하세요. 컨테이너 기술이 Docker 이전에도 존재했던 개념임을 언급하고, Docker가 컨테이너 기술을 구현한 하나의 도구라는 관점에서 설명해주세요. 또한, Docker 외에 컨테이너 기술을 구현한 다른 도구의 예시를 들어보세요.컨테이너 기술컨테이너(Container)는 개념적 프레임워크로, 애플리케이션과 그 실행 환경(라이브러리, 설정 파일 등)을 함께 패키징하여, 격리된 공간에서 실행할 수 있도록 해주는 가상화 기술이다. 이는 호스트 운영체제의 커널을 공유하며, 독립된 프로세스로 실행된다.이 기술은 Docker가 등장하기 이전부터 존재했으며, 핵심 기반 기술로는 Linux의 chroot, cgroups, namespaces 등이 있다. 컨테이너..

위클리 페이퍼 - 10주차

1. 애플리케이션의 각 계층에서 수행되는 입력값 검증의 범위와 책임을 어떻게 나눌 것인지에 대해 설명해주세요. 특히 중복 검증을 피하면서도 안정성을 확보하는 방안과, 이와 관련된 트레이드오프에 대해 설명해주세요.- Controller주로 컨트롤러에서는 도메인의 형식 및 필수값 검증을 담당데이터 타입, 필수 필드 존재 여부 검증DTO에서 Bean Validation (ex: @NotNull, @NotBlank, @Size 등)- Service주로 비즈니스 로직과 연관된 도메인 규칙 검증을 담당비즈니스 규칙 위반 여부 검증(ex: 중복 가입 여부, 주문 가능 여부 등)- Repository주로 데이터 무결성 검증 및 제약조건 관리를 담당데이터베이스 제약조건(Unique 제약, FK제약 등)실제 DB 제약조건..

위클리 페이퍼 - 9주차

JPA에서 발생하는 N+1 문제의 발생 원인과 해결 방안에 대해 설명하세요.1. N+1 문제란?1번의 쿼리로 1차 데이터를 가져온 후, 연관된 N개의 데이터를 각각 조회하면서 총 N+1번의 쿼리가 발생하는 현상을 말한다.일상적인 예를 들어보면,학교에서 5개의 반 학생 명단을 알고 싶다고 가정했을 떄,먼저, 전체 5개의 반 리스트를 가져온다.(1번 쿼리)각 반마다 일일이 가서 "이 반의 학생은 누구누구인가요?" 하고 다시 물어본다. (▶ 반마다 1번씩, 그래서 총 5번 쿼리)그럼 결국, 반 목록 1번 + 반별 학생 명단 5번 = 총 6번을 물어본 셈이 되며 이게 바로 N + 1 문제이다. (N=5 일 때 → 1 + 5 = 6번)2. 이게 왜 문제가 될까?JPA에서는 일대다, 다대다 매핑에서 “필요할 때까지..

위클리 페이퍼 - 8주차

SQL에서 DDL과 DML의 차이점을 설명하고, 각각의 대표적인 명령어들의 용도를 설명하세요.1. DDL데이터베이스의 구조(스키마)를 정의하거나 변경할 때 사용하는 언어. 테이블을 생성하거나 수정할 때 사용된다.기본적으로 DDL 명령어는 실행되자마자 DB에 반영되며, 트랜잭션처럼 ROLLBACK으로 되돌릴 수 없는 경우가 많지만, PostgreSQL에서는 DDL도 트랜잭션 처리 대상이기 때문에 ROLLBACK으로 전부 되돌릴 수 있다.대표적인 DDL 명령어CREATE : 테이블, 데이터베이스, 인덱스 등을 새로 생성ALTER : 기존 테이블의 구조를 수정 (열 추가/삭제/이름 변경 등)DROP : 테이블이나 데이터베이스 삭제TRUNCATE : 테이블의 모든 데이터를 빠르게 삭제 (구조는 유지)2. DML..

위클리 페이퍼 - 7주차

1.웹 API의 발전 과정에서 SOAP에서 REST로의 전환이 일어난 이유와 그 장단점에 대해 설명하세요.SOAP에서 REST로 전환된 주요 이유1. 복잡성과 오버헤드 문제SOAP의 문제:xml Seoul REST의 해결:httpGET /weather/seoul/temperature2. 웹 브라우저와의 호환성SOAP의 한계:브라우저에서 직접 테스트하기 어려움JavaScript로 SOAP 메시지 생성/파싱 복잡추가 라이브러리나 프록시 필요REST의 장점:브라우저 주소창에서 직접 테스트 가능AJAX로 쉽게 호출 가능JSON 사용으로 JavaScript와 자연스러운 통합3. 모바일과 경량 클라이언트의 등장모바일 환경의 요구사항:제한된 대역폭과 배터리단순한 데이터 형식 선호빠른 파..

위클리 페이퍼 - 6주차

Spring에서 AOP(Aspect Oriented Programming)가 필요한 이유와 이를 활용한 실제 애플리케이션 개발 사례에 대해 설명하세요.모든 비즈니스 메소드의 실행 시간을 측정해야 한다고 가정해보자. 비즈니스 로직을 개발할 때 예시 코드와 같이 핵심 기능과 부가 기능이 섞여 있으면 다음과 같은 문제가 발생한다.시간 측정 코드가 모든 비즈니스 메소드에 중복해서 들어간다.핵심 비즈니스 로직과 부가 기능이 섞여 있어 코드의 가독성이 떨어진다.시간 측정 로직을 변경해야 할 경우, 모든 메소드를 수정해야 한다.예시)public class UserService { public void createUser(User user) { // 시간 측정 시작 long start =..

위클리 페이퍼 - 5주차

웹 서버(Web Server)와 WAS(Web Application Server)의 차이를 설명하고, Spring Boot의 내장 톰캣이 이 둘 중 어디에 해당하는지 설명해주세요. - 웹 서버(Web Server)와 WAS(Web Application Server, 웹 애플리케이션 서버)는 웹 서비스를 제공하는 서버라는 점에서는 유사하지만, 역할과 처리 범위, 기능 측면에서 분명한 차이점이 있다. ▶ 웹 서버 (Web Server) - 정의 클라이언트(브라우저)의 HTTP 요청을 처리하고 정적 자원(HTML, CSS, JS, 이미지 등)을 제공하는 서버 - 주요 역할HTTP 프로토콜 처리정적 리소스(HTML, CSS, JS, 이미지 등) 제공간단한 요청 라우팅 - 특징정적 콘텐츠 제공에 최적화애플리케..

위클리 페이퍼 - 4주차

Spring Framework가 탄생하게 된 배경과 이를 통해 해결하고자 했던 문제점에 대해 설명하세요. - Spring Framework가 탄생하게 된 배경은 2000년대 초반 자바 엔터프라이즈 개발의 복잡성과 무거움에 대한 반작용에서 비롯되었다. - 탄생 배경1. J2EE(Java 2 Enterprise Edition)의 복잡성 1990년대 후반 ~ 2000년대 초반, 기업용 애플리케이션 개발에 사용되던 표준은 J2EE (지금의 Jakarta EE) 였다.J2EE는 다음과 같은 구성 요소를 포함함:EJB (Enterprise JavaBeans)JSP, ServletJNDI, JMS, JTA 등 J2EE의 문제점EJB는 너무 무겁고 복잡했으며, 단순한 작업에도 많은 설정과 자원 요구가 있었음.비즈니스 ..

위클리 페이퍼 - 3주차

HashSet의 내부 동작 방식과 중복 제거 메커니즘을 설명하고, HashSet이 효율적인 중복 체크를 할 수 있는 이유를 설명해주세요. HashSet이란?Java의 java.util 패키지에 있는 Set 인터페이스의 구현체 중 하나로, 중복을 허용하지 않고, 순서를 보장하지 않는 컬렉션이다. HashSet의 핵심 특징중복허용 X같은 값이 두 번 저장되지 않음 (equals() & hashCode()로 판단)순서 보장 X저장한 순서를 유지하지 않음null 허용 Onull 값을 1개 저장 가능검색 속도 빠름내부적으로 HashMap 기반으로 구현되어 탐색/삽입 속도가 빠름정렬 안됨정렬된 상태가 필요하면 TreeSet이나 LinkedHashSet 사용 1. HashSet의 내부 구조public class Ha..

위클리 페이퍼 - 2주차

1. 객체지향 프로그래밍에서 '단일 책임 원칙(SRP)'과 '개방-폐쇄 원칙(OCP)'에 대해 설명하고, 각각의 원칙을 적용한 코드 예시를 들어주세요.'단일 책임 원칙(SRP)'핵심 개념하나의 클래스(또는 모듈)는 단 하나의 변경 이유만 가져야 함.클래스는 하나의 역할(기능) 에만 집중해야 한다.'개방-폐쇄 원칙(OCP)'핵심 개념새로운 기능은 기존 코드를 변경하지 않고 확장으로 구현해야 한다.코드를 수정하지 않고도 기능을 추가할 수 있어야 안정적인 시스템 구축이 가능하다.요약 정리원칙의미목적핵심 전략SRP(단일 책임)하나의 클래스는 하나의 책임만 가져야 한다.변경 이유 분리, 응집도 상승기능을 모듈별로 분리OCP(개방-폐쇄)확장에는 열려 있고 변경에는 닫혀 있어야 한다.안정적 확장 가능인터페이스, 다형..