오잎클로버 19

8번째 면접을 준비하며

아마 8번째가 맞을 거다. (대면 2번, 비대면 5번) 면접을 눈 앞에 두고... 면접을 눈앞에 두고, 기술 면접과 더불어 임원 면접 준비를 하고 있습니다. 주변에 통화 면접을 봤던 친구들이 여럿 있어 공통적으로 자주 나오는 질문들을 간추려서 각 항목마다 답변을 달고 workshop-6349.tistory.com 이전(4월 26)에 작성했었지만, 이제는 기술적인 공부도 물론 중요하지만, 지금까지 총 7번 동안의 면접을 보면서 내가 왜 최종합격까지 못 가는 이유를 어느정도 찾은 듯 하다. 조만간 면접이 한 번 더 있는 데, 이번에는 기필코 1차 합격을 하고자 한다. (2차까지 가서 최종에서 떨어진 적도 있긴 하지만) 내가 대면 면접을 보고 나면 항상 피드백을 해주셨는 데, 대개 다음과 같은 내용이었다. 자..

공부 2023.06.30

면접을 눈 앞에 두고...

면접을 눈앞에 두고, 기술 면접과 더불어 임원 면접 준비를 하고 있습니다. 주변에 통화 면접을 봤던 친구들이 여럿 있어 공통적으로 자주 나오는 질문들을 간추려서 각 항목마다 답변을 달고 있습니다. 공통적으로 나왔던 질문들은 다음과 같습니다. 1. REST API의 정의 2. Transaction이란? 3. 토큰과 세션의 차이 4. 정규화와 반정규화의 차이 5. 우리 회사에 왜 지원했는가 6. 오픈소스에 관심이 많은 이유 (이력서에 오픈소스에 관심이 많다고 작성함) 순서대로 짧게 답변을 달아보자면 A1. 리소스에 이름을 부여한 후, HTTP를 통해 리소스에 접근하는 방식 - HTTP Method를 통해 접근하며, CRUD 마다 METHOD를 지정한다. - 이러한 HTTP 표준 규격을 잘 지키며 만든 RES..

공부 2023.04.26

[Spring Security] 스프링 시큐리티란?

🍃 Spring Security란? 스프링에서 제공하는 모듈 중 하나로, 스프링을 기반으로 하는 보안 프레임워크이다. Spring Security 를 통해 자체적으로 세션 체크, 리다이렉션 등을 추상화하여, 보다 편하게 구현하도록 돕는다. Spring Security는 스프링 의존성을 없애기 위해 Filter 인터페이스를 기반으로 동작한다. 즉, 기존의 Spring MVC, 비즈니스 로직과 완벽하게 분리하여 관리 및 동작할 수 있다. 또, 개발자가 직접 만들어야할 필터들을 기본으로 제공해준다. 이렇게 제공하는 필터들을 SecurityFilterChain 이라 한다. SecurityFilterChain 들의 종류와 특징들은 아래에서 다루겠다. 🔐 인증과 인가 인증(Authentication)은 누구인지 식..

Spring/공부 2023.01.16

[Spring Core] 스프링 빈 생명주기와 스코프

♻ 스프링 빈 생명주기(Life-Cycle) I/O 작업들처럼 연결을 해주고, 필요없거나 종료된 경우 해당 연결을 끊어주기 위해서는 반드시 해당 작업의 초기화와 종료 작업이 필요하다. 스프링 빈 역시 이러한 점을 가지고 있다. 객체를 생성하고, 의존관계를 주입해준다. 객체 생성 → 의존관계 주입 스프링 빈은 객체를 생성하고, 의존관계를 주입이 완료가 된 후에야 비로소 필요한 데이터를 사용할 수 있는 준비를 마치게 된다. 스프링 빈은 의존관계가 모두 주입된 이후, 호출해야한다. 그렇다면, 해당 빈의 초기화 작업이 모두 이루어졌는 지를 개발자가 알아야 한다. 당연하지만, 기화 작업이 끝난 후에 해당 데이터를 사용해야 예기치 못한 오류들을 피할 수 있기 때문이다. 이를 개발자가 알기 위해서는 우선, 스프링 빈..

Spring/공부 2023.01.14

[Spring Core] 컴포넌트 스캔과 의존성 주입

🔍 컴포넌트 스캔이 필요한 이유 스프링은 무수히 많은 컴포넌트와 빈들을 가지게 되며, 프로젝트의 규모가 커져갈수록 더 많은 컴포넌트들과 빈들을 정의해주어야 하는 번거로움과 함께 실수를 하게 될 수 있다. 그래서 스프링 빈은 설정 정보가 없더라도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공함으로써 이러한 문제를 해결하고자 마련되어 있다. 🎯 컴포넌트 스캔 작동 원리 @ComponentScan 은 @Component 어노테이션이 있는 클래스들을 스프링 빈으로 등록하는 과정을 거치게 된다. 이때, 스프링 빈은 기본적으로 맨 앞글자만 소문자를 사용한 이름으로 지정된다. @Component("nothing") public class Something { ... } 위처럼 하는 경우 스프링 빈 이..

Spring/공부 2023.01.14

[Spring Core] 스프링 컨테이너와 스프링 빈

🛒 스프링 컨테이너란? 스프링에서 사용할 객체들을 담아두고 있는 것 등록된 스프링 빈을 생성하고 의존 관계를 주입하고 생명주기를 관리해 주는 장치이다. @Configuration 어노테이션을 설정 클래스에 붙여 설정 파일을 구성할 수 있으며, 해당 설정 파일에 있는 메소드들에 @Bean 어노테이션을 붙여 스프링 컨테이너에 빈을 등록시킬 수 있다. @Configuration public class AppConfig { @Bean public void DiscountPolicy discountPolicy() { return new MemberShipDiscountPolicy(); } } 위와 같은 예시처럼 사용할 수 있다. 스프링은 애플리케이션 컨텍스트로 시작하며, 이를 편하게 "스프링 컨테이너"라고 칭한다..

Spring/공부 2023.01.11

[일상] 10월 초 스프링 배치 공부

📝 [일상]을 쓰기 앞서.. 10월 초에 갑작스럽게 휴일이 생겨서 배치 애플리케이션에 대해 공부해보고자 스프링 배치로 간단하게 공부를 하였다. 간단하게 직원 월급 정산 일괄 처리를 예제로 만들어보면 괜찮다고 생각이 들어 간단하게 설계하고 구현을 하였다. 사실 스프링 배치를 언제 사용해야하는 기술인지를 알았을 지 몰라도, 직접 사용해본 적은 거의 없었다. (있다 하더라도 야매로 대충 만든 게 전부이다.) 데이터베이스 테이블은 대충 다음과 같은 칼럼으로 이루어져있다. 직원 테이블 (아이디, 이름, 직급) 월급 지급 이력 테이블 (직원, 월급, 날짜) 통장 테이블 (아이디, 이름, 잔고) 일단 공부하는 것이 취지인만큼 너무 복잡한 내용보다는 기초적인 내용들을 위주로 공부를 하였다. 그렇기에 Scheduler를..

일상 2022.10.11

[공부/서버] MSA (MicroService Architecture)

MSA란? 작고, 독립적으로 배포가 가능한 각각의 기능을 수행하는 서비스로 구성된 아키텍처라고 할 수 있다. 마이크로 서비스는 온전히 독립적으로 배포가 가능하며, 다른 기술 스택(개발 언어, 데이터베이스 등)이 사용 가능한 단일 비즈니스 영역에 초점이 있다. MSA의 등장 배경 Monolithic Architecture는 소프트웨어의 모든 구성 요소가 한 프로젝트에 통합되어 있는 형태이다. 아키텍처가 단순하며, 유지보수가 용이하다. 하지만 일정 규모 이상의 서비스, 혹은 수백명의 개발자가 투입되는 프로젝트에서는 한계가 보인다. Monolithic Architecture의 한계는 다음과 같습니다. 서비스/프로젝트가 커질 수록 영향도 파악 및 전체 시스템 구조의 파악을 하는 데 어려움이 생긴다. 빌드 시간 ..

공부/서버 2022.05.09

super(CS.교착상태);

교착 상태란? 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상이다. 위 예시보다 더 알기 쉬운 예시로는 다음과 같은 예시가 있다. (A)는 지붕에, (B)는 1층에 있다고 가정을 하자. 1층에서 지붕으로 가는 유일한 방법은 하나의 사다리 뿐이다. 이때, (A)가 지붕에서 1층으로 내려가려고 하고, (B) 역시 1층에서 지붕으로 올라가려고 한다면 서로 통과하지 못하고 상대방이 비켜주길 무한정 기다리게 될 것이다. 교착 상태를 발생하기 위해서는 다음 4가지가 모두 충족되어야 교착상태가 발생할 가능성이 생긴다. 어느 한 가지라도 충족하지 않는 다면 교착상태는 반드시 발생하지 않는다. 상호배제 한 번에..

공부/CS 2022.05.03

스프링 4 경험하기

기존 스프링을 스프링5, 스프링 부트로 편하게 개발하였는 데 일상 글에서 말했다시피 스프링의 히스토리를 조금이나마 알고, 얕게 경험해보고자 스프링 4를 스프링 부트없이 직접 의존성을 주입해주는 등 스프링 부트에서는 자동으로 되어있는 것들을 직접 해보았다. 스프링 버전은 4.2.4 릴리즈를 사용하였으며, jdk는 1.8, aspectJ는 1.6, slf4j는 1.6.6, apache.titles는 3.0.7 버전으로 사용하였다. pom.xml는 다음과 같이 구성하였다. (너무 길기때문에 파일 참고) 그리고 default welcome 페이지는 기본 제공 JSP(index.jsp)를 사용하였다. 애플리케이션 config과 dispatcher를 설정하기 위해 web.xml에 다음과 같이 작성하여 설정하였다. ..

Spring 2022.04.30