CS

[항해 취업코스] 개발자 취준 기록 10일차

Ynghan 2024. 3. 21. 14:10

Q. 테스트코드를 사용하지 않고 기능 테스트를 했던 경험을 상세하게 설명해주세요, 부족한 부분이 있었다면 어떠한 부분이 부족했는지 설명해주세요.

테스트 코드 없이 기능 테스트를 진행할 , 새로운 브랜치를 만드는 등의 번거로움이 있었고, 특정 클래스만을 테스트하는 것이 아니라 전체 애플리케이션 로직을 실행해야 하는 불편함이 있었습니다. 이런 방식은 테스트의 범위를 세밀하게 조절하기 어렵고, 시간도 많이 소모되는 단점이 있습니다.

Q. JPA의 더티체킹이 어떤 방식으로 동작하는지 설명해주시고, 만약 JPA를 사용하지 않는다면 어떤 식으로 개발을 하셨을 것 같으신가요?

JPA 더티 체킹은 트랜잭션이 커밋  엔티티의 현재 상태와 최초 로딩 시점의 스냅샷을 비교하여 변경사항을 자동으로 DB 반영합니다. 만약 JPA를 사용하지 않고 JDBC를 사용한다면, 개발자는 데이터의 변경 사항을 직접 감지해야 하며, 변경된 데이터에 대해 직접 SQL 쿼리를 작성하고 실행해야  것입니다.

+ N + 1 문제란?

연관관계의 join query가 추가로 발생하는 문제입니다.

지연 로딩이 뭐냐?

Q. 유닛 테스트와 e2e 테스트에 대해 설명해주세요.

유닛테스트는 애플리케이션 안에 있는 개별적인 코드 단위가 의도한대로 작동하는지 확인하는 행위입니다. 엔드  엔드 테스트(End-to-End Test, E2E 테스트) 사용자의 관점에서 애플리케이션의 흐름을 전체적으로 테스트하는 방법입니다. 이는 사용자의 요구 사항을 충족하는지 확인하기 위해 실제 사용자 환경과 유사한 조건에서 애플리케이션의 모든 컴포넌트와 서비스가 올바르게 작동하는지 테스트합니다. E2E 테스트는 소프트웨어의 통합 부분과 전체 시스템의 기능을 검증하는  중점을 둡니다.

Q. API에서 Role마다 접근 가능/불가 기능을 구현하려면 어떻게 할 수 있을까요?

Spring Security를 사용하여 권한별 접근 제어를 구현하려면, HttpSecurty의 authorizeHttpRequests() 메서드의 antMatchers() 메서드 또는 requestMatchers().hasRole() 메서드를 사용해 특정 경로에 대한 역할 기반 접근 제한을 설정할 수 있습니다. 이를 통해 API 엔드 포인트에 대한 접근을 역할에 따라 제어 가능합니다.  

 

스프링 의존성 주입 -> 자바와 마찬가지로 객체지향적 설계 가능 제어 역전 -> 스프링과 같은 프레임워크가 제어 흐름 권한을 가짐, 객체의 의존성을 역전시켜 객체 간 결합도를 낮춤 AOP -> 공통관심사 분리하여 핵심 로직을 건드리지 않으면서 다양한 기능 추가 가능 스프링 부트 스프링 프레임워크는 XML 설정파일, Java config등 구성을 정의해야 하지만 부트는 내장되어 있음 starter 패키지를 통해 의존성을 자동으로 추가 was 서버 등 따로 설정 해주지 않아도 apache tomcat이 내장되어 있음 yaml, properties 파일을 이용해 외부 환경 설정 간편하게 가능따로 돌려야합니다맞습니다그리고 부트에서 아파치톰캣 쓰기 싫으면 수동으로 변경해도 됩니다