2025 토스 NEXT 지원 후기
·
취준
들어가며이번에 열렸던 2025 토스 NEXT에 Server 직무로 지원했습니다. 결과적으로 마지막 문화적합성 면접에서 탈락했지만 얻은 게 많은 면접이어서 이를 계속 기억하기 위해 후기를 적습니다.배경저는 컴퓨터 공학 전공이지만 군대를 마치고 2학년때 전과를 한 케이스입니다. 그리고 전공 수업을 듣다가 정말 자바 문법만 알고 있는 상태로 작년에 우아한 테크 코스를 수료하고 현재 3학년을 다니며 SW 마에스트로를 병행하고 있습니다. 그렇기에 웹 개발을 작년에 시작하여 이제 막 2년 정도 했고 프로젝트는 우아한 테크 코스 프로젝트, 우아한 테크 코스 크루들과 하고 있는 프로젝트, SW 마에스트로 프로젝트 3개만 했던 상태입니다. 작년에는 토스 NEXT가 9월 말에서 10월 초에 있어서 이때까지 준비할려 했는데..
동기/비동기, 블로킹/논블로킹은 무엇이고 각각의 차이점은 무엇인가요?
·
CS
📝 면접 답변 보기 동기와 비동기는 '작업 결과를 누가 처리하냐'의 문제입니다.동기는 호출한 쪽에서 결과를 직접 받아서 처리하고, 비동기는 콜백이나 이벤트를 통해 나중에 별도로 처리됩니다. 블로킹과 논블로킹은 '제어권을 언제 돌려주냐'의 문제입니다.블로킹은 작업이 끝날 때까지 제어권을 반환하지 않아 대기하게 되고, 논블로킹은 작업 완료와 관계없이 즉시 제어권을 돌려줘서 다른 작업을 할 수 있습니다. 면접 질문 정리용 레포지토리https://github.com/unifolio0/backend-interview-study.git GitHub - unifolio0/backend-interview-studyContribute to unifolio0/backend-interview-study developmen..
@Async는 어떻게 동작하나요?
·
CS
📝 면접 답변 보기@Async는 스프링 AOP를 통해 동작합니다.스프링이 @Async가 붙은 메소드를 발견하면, 해당 클래스의 프록시 객체를 생성해서 빈으로 등록합니다.다른 빈에서 이 서비스를 주입받으면 실제로는 프록시 객체가 주입되고, 메소드를 호출하면 프록시 안에 있는 MethodInterceptor가 AsyncExecutionInterceptor를 실행합니다.AsyncExecutionInterceptor는 TaskExecutor를 사용해서 새로운 스레드에서 실제 메소드를 실행하고, 호출한 쪽에는 즉시 리턴해서 비동기 처리가 가능해집니다.중요한 점은, 같은 클래스 내부에서 @Async 메소드를 직접 호출하면 프록시를 거치지 않기 때문에 비동기로 동작하지 않습니다. 면접 질문 정리용 레포지토리http..
동시성 문제 해결하기
·
SW마에스트로
[개요]해당 글은 예약 생성 및 수정 과정에서 발생한 동시성 문제를 다룹니다. 이를 해결하기 위해 애플리케이션, 데이터베이스, 인프라 각 수준에서 적용할 동시성 제어 기법을 검토하고 선택한 기술적 접근 방식에 대해 설명합니다.[요약]동시성 문제 해결을 위해 애플리케이션, 데이터베이스, 인프라 각 수준에서 동시성 제어 기법을 직접 경험하고 검토한 결과, Redis 분산락을 도입하여 동시성을 해결하는 전략을 선택하였습니다.[문제 상황]아래는 예약을 생성하는 로직입니다.[문제 상황 시뮬레이션]직접 작성한 테스트 코드로 동시에 여러 개의 요청이 들어오는 상황을 시뮬레이션한 결과, DeadLock이 발생했습니다.[문제 상황 분석]reserve메소드에는 @Transactional이 걸려있습니다. 이때 INSERT나..
컴퓨터의 병렬 처리 기술
·
CS
들어가며이 글을 읽고 있는 지금 기기에서 어떤 작업을 하고 있나요? 이 글을 읽으며 음악을 듣거나 파일을 다운로드 하고 있을 수도 있고 또는 글을 적기 위한 참고자료로 활용하며 문서 작업을 하고 있을 수도 있습니다.일반적으로 컴퓨터의 cpu는 1개입니다. 그럼에도 컴퓨터는 위 같은 병렬 작업을 당연하다는 듯 수행하고 있습니다. 6코어, 10코어와 같이 코어가 여러 개라 가능하다 생각할 수도 있지만 생각해보면 코어 수보다 더 많은 작업들을 수행 할 때가 있습니다.운영체제를 공부하다보면 멀티 프로그래밍, 멀티 태스킹, 멀티 프로세싱, 멀티 코어, 멀티 스레딩이란 단어들을 마주할 수 있습니다. 이런 기술들로 인해 하나의 기기에서 여러 작업들을 동시에 할 수 있습니다. 하지만 대략적인 것만 알고 정확한 개념이나..
분산 트랜잭션과 합의
·
Side Tech Notes
들어가며요즘 여러 대규모 서비스들은 MSA를 사용하고 있습니다. 이는 각 서버별로 확장을 용이하게 하며 한 서비스의 장애가 다른 서비스로 옮겨가지 않도록 해줍니다.하지만 MSA가 장점만 가지고 있지는 않습니다. 대표적으로 트랜잭션의 문제가 있습니다.예를 들어 주문 서비스와 재고 서비스가 분리된 온라인 쇼핑몰을 생각해봅시다. 여기서 주문을 처리하던 도중 서버가 다운됐다고 가정하겠습니다. MSA에선 일반적으로 각 서비스가 서로 다른 DB를 가지고 있어 트랜잭션이 보장되지 않습니다. 즉, 주문은 생성됐지만 재고가 차감되지 않거나 재고는 차감됐지만 주문이 생성되지 않는 문제가 발생할 수 있습니다. 이처럼 분산 시스템에서는 여러 노드가 하나의 작업에 대해 일관된 결정을 내리기가 쉽지 않습니다.그렇기에 과거부터 계..
리액터 패턴 / 프로액터 패턴
·
Side Tech Notes
들어가며리액터 패턴과 프로액터 패턴을 알아보기 위해 간단한 요구사항을 정의하겠습니다. 지금 미디어 처리 서비스를 개발하고 있습니다. 이 서비스에서는 사용자가 업로드한 미디어에 대해 여러가지 편집 기능을 제공해야 합니다. 썸네일 생성 기능, 워터마크 추가 기능, 포멧 변경 기능과 같은 기능들이 말이죠. 또한 설명의 용이함을 위해 싱글 스레드로 동작한다고 가정하겠습니다.1차 해결책: switch위의 요구사항을 반영하는 방법으로 깊은 고민 없이 switch문을 사용하기로 했습니다. 아래의 코드와 같이 말이죠.while (true) { MediaRequest request = getNextRequest(); switch (request.getType()) { case "THUMBNAIL_GENERA..