Spring에서 AOP(Aspect Oriented Programming)가 필요한 이유와 이를 활용한 실제 애플리케이션 개발 사례에 대해 설명하세요. AOP(Aspect Oriented Programming)란 무엇인가?AOP는 이름 그대로 '관점(Aspect)'을 기준으로 프로그래밍하는 기법여기서 '관점'이란 애플리케이션의 핵심 비즈니스 로직은 아니지만, 여러 곳에서 공통적으로 사용되는 기능을 의미함객체지향 프로그래밍(OOP)이 "객체"를 기준으로 코드를 짠다면,AOP는 "공통된 작업"을 한곳에 모아서 관리하는 것에 집중함 AOP가 필요한 이유핵심 로직과 공통 로직을 분리하기 위해AOP가 없다면 모든 메서드 안에 기능들을 일일이 복사해서 붙여넣어야 한다. 100개의 메서드가 있다면 100번 복붙해야 ..
웹 서버(Web Server)와 WAS(Web Application Server)의 차이를 설명하고, Spring Boot의 내장 톰캣이 이 둘 중 어디에 해당하는지 설명해주세요. 웹 서버(Web Server)사용자가 브라우저에서 주소를 입력하면 미리 만들어진 파일을 그대로 꺼내서 보내주는 서버주로 정적인 파일을 전달하는 역할- HTML 파일- CSS 파일- 이미지, 동영상 같은 정적 리소스 대표적인 웹 서버- Apache- Nginx WAS(Web Application Server)사용자 요청에 따라 로직을 실행하고 계산하고 데이터베이스와 통신한 뒤 결과를 만들어서 응답주로 동적인 처리를 담당하는 역할- 로그인 처리- 회원가입- 게시글 목록 조회 대표적인 WAS- Tomcat- JBoss Spring ..
Spring Framework가 탄생하게 된 배경과 이를 통해 해결하고자 했던 문제점에 대해 설명하세요. 2000년대 초 Java 웹 개발은 EJB(Enterprise JavaBeans) 라는 기술을 사용했습니다.이 기술은 강력하지만 단점도 많았는데요높은 진입 장벽과 과도한 설정, 간단한 기능 추가에도 엄청난 준비 필요 또 테스트 어려움 등의 이유로 시간의 지남에 따라 점점 외면 받고 있었습니다 이러한 문제점을 느낀 '로드 존슨' 이라는 개발자가 2002년 자신의 저서 ' Expert One-on-One J2EE Design and Development' 에서 EJB 없이도 충분히 엔터프라이즈급 애플리케이션을 개발할 수 있다는 아이디어와 함께 훗날 Spring Framework로 발전될 핵심 코드 3만..
HashSet의 내부 동작 방식과 중복 제거 메커니즘을 설명하고, HashSet이 효율적인 중복 체크를 할 수 있는 이유를 설명해주세요. HashSet 이란?java.util 패키지에 속한 jcf(자바 컬렉션 프레임워크) 클래스 중 하나이다 HashSet의 특징- Set interface의 구현체- 저장 순서가 없다- null값 허용- 검색 속도가 빠르다 HashSet의 내부 동작 방식1. hashCode()로 저장할 칸을 계산한다. - 값을 넣기 전에 위치를 먼저 계산 2. 그 칸에 값이 없으면 저장한다. - HashSet 자체적 저장이 아닌 내부에 있는 HashMap이 데이터를 key값으로 저장 3. 값이 있으면 equals()로 같은 값인지 확인한다. - equals()가 true면 같은 값(중복)..
객체지향 프로그래밍에서 '단일 책임 원칙(SRP)'과 '개방-폐쇄 원칙(OCP)'에 대해 설명하고, 각각의 원칙을 적용한 코드 예시를 들어주세요.단일 책임 원칙(SRP : Single Responsibility Principle)이란?하나의 클래스는 하나의 책임만 가져야 한다.어떤 물건이 너무 많은 일(책임)을 하면 복잡해지고 관리하기가 어려워진다'책임' 이란 클래스가 가지고 있는 역할 또는 변경이 일어나는 이유을 말함역할 : ex) 카메라의 역할은 사진찍기 , 연필의 역할은 글쓰기, 시계의 역할은 시간알려주기 등변경이 일어나는 이유 : ex) 사진찍기 기능이 바뀌면 카메라 클래스를 수정 왜 중요할까?1. 유지 보수가 쉬워짐- 단일 책임이기 때문에 로직이 섞여있지 않으므로2. 확장(기능추가)이 쉬움- ..
🇶. git rebase와 git merge의 차이점을 설명하고, 각각 어떤 상황에서 사용하는 것이 적절한지 설명해주세요. 기본 이해main branch는 안전하고, 사용 가능한 완성본feature branch는 나만의 작은 공간 main이 망가지지 않음 공통점rebase 와 merge는 모두 branch를 합치는 명령 merge : 내가 작업한 feature branch를 main branch에 합친다 이때, merge commit이 생긴다안전하게 합치고 싶을 때, 팀 프로젝트에서 다른 사람의 수정 사항을 건드리면 안될 때 사용한다 rebase : 나의 branch commit을 main branch 뒤로 재배치 한다 main은 그대로고 두 브랜치는 분리된 상태history(commit의 기록)가 깔..
