m1ndy5's coding blog

회사 백엔드 직무 필기시험 준비 본문

CS Study

회사 백엔드 직무 필기시험 준비

정민됴 2025. 10. 27. 21:01

Spring/Java

IoC/DI란?

IoC(Inversiont of Control)는 객체의 생성 및 의존 관계를 개발자가 아닌 스프링 컨테이너가 제어하는 개념
DI(Dependency Injection)는 의존 객체를 외부에서 주입받는 방식으로 IoC를 구현

@RestController
public class MemberController {

    private final MemberService memberService;

    // 💡 스프링이 자동으로 MemberService를 주입
    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }

    @GetMapping("/join")
    public String join(@RequestParam String name) {
        memberService.join(name);
        return name + " 회원가입 완료!";
    }
}

@RestController는 스프링이 빈(애플리케이션 실행 시 필요한 객체)으로 등록
IoC 컨테이너가 필요한 의존성을 자동으로 DI 해준다.

AOP

공통 관심사를 핵심 로직과 분리하여 재사용 가능하게 함 @Aspect, @Around

Bean Scope

singleton, prototype, request, session, application 등이 있음
Bean이 언제 생성되고 공유되는지 정의

Bean Life Cycle

객체 생성 -> 의존성 주입 -> 초기화(@PostConstruct) -> 사용 -> 소멸(@PreDestroy)

Controller -> Service -> Repository

MVC 패턴 기반.
Controller : 요청/응답 처리
Service : 비즈니스 로직 처리
Repository : DB 접근 담당

@Controller VS @RestController

@Controller는 View 반환용, @RestController는 JSON 데이터 반환용

@GetMapping, @PostMapping

HTTP Method와 URI를 매핑하는 어노테이션

@RequestParam vs @PathVariable

@RequestParam은 쿼리파라미터, @Pathvariable은 URI 경로 변수
좀 더 들어가자면 @RequestParam은 검색, 필터링과같은 선택적 데이터 전달에, @PathVariable은 리소스의 식별자(ID)처럼 고유한 값 전달에

throws vs throw

throw는 예외를 발생시키는 키워드, throws는 메서드 선언부에서 예외를 던질 수 있음을 명시

객체지향 4대 특징

추상화, 캡슐화, 상속, 다형성

Collection Framework

List, Set, Map 등
ex) ArrayList(순서O, 중복O), HashSet(순서X, 중복X), HaspMap(key-value 구조)

Stream API

데이터의 연속적 처리를 위한 API
ex) list.stream().filter(x -> x > 10).collect(Collectors.toList());

RDBMS

Join

여러 테이블을 연결해 데이터를 조회
inner join, left join, right join, full outer join
ex) left join은 왼쪽 행을 기준으로 오른쪽 값이 널이여도 출력

Group by / having

그룹별 집계 후 조건 적용. having은 group by 이후 조건

IN vs EXISTS

IN은 리스트 값과 비교, EXISTS는 서브쿼리의 존재 여부 확인

Index

검색 속도 향상을 위한 자료구조
Insert/update 시 성능 저하

트랜잭션 ACID

원자성 : 트랜잭션의 모든 작업이 전부 수행되거나, 전혀 수행되지 않아야함
일관성 : 트랜잭션 수행 전후에 데이터의 제약조건과 규칙이 항상 유지되어야 함
고립성 : 동시에 여러 트랜잭션이 수행되도 서로의 작업에 영향을 주지 않아야 함
지속성 : 트랜잭션이 성공적으로 완료되면 결과가 영구적으로 저장되어야 함

프로시저 / 함수

프로시저는 반환값 X, 함수는 반환값 O

운영체제

프로세스 확인

ps -ef, top, ps aux

프로세스 종료

kill -9 [PID]

특정 포트 사용하는 프로세스

netstat -tulnp | grep [포트번호]

네트워크 확인

ping, telnet, netstat

파일 권한

chmod 755 -> owner: rwx(7), group: r-x(5), others: r-x(5)

소유자 변경

chown user:group filename

로그 확인

tail -f /var/log/messages

Middleware / WAS

Web Server VS WAS

Web Server는 정적 리소스 처리 (HTML, CSS 등)
WAS는 비즈니스 로직 실행

'CS Study' 카테고리의 다른 글

JPA의 동작원리  (1) 2024.03.13
Garbage Collector  (1) 2024.03.07
Java의 메모리 영역  (0) 2024.03.07
JVM, JRE, JDK & 자바 프로그램의 실행 과정  (0) 2024.03.07
영속성 컨텍스트  (0) 2024.03.06