sagecode 88

[Interview Question] Overloading과 Overriding의 차이점은 무엇인가요?

Java에서 객체 지향의 특징 중 다형성을 구현하는 방식으로 Overloading, Overriding 2가지 방식이 존재합니다. Overloading의 경우 같은 메소드 이름을 갖지만 매개 변수의 개수, 종류들을 다르게 하여 컴파일 시점에서 메소드가 결정되도록 하는 방식입니다. 이럴 때, 같은 메소드지만 여러가지 매개변수를 활용해서 구현할 수 있습니다.Overloading을 사용했을 때 장점은 메소드 이름은 같지만 다양한 타입의 매개변수를 넣어서 메소드를 활용할 수 있다는 점에서 코드 중복을 줄일 수 있고 코드 가독성을 늘릴 수 있습니다. Overriding의 경우 상속에서 부모클래스에 있는 메소드를 자식 클래스에서 재정의하여, 실행방식과 실행시점등을 객체의 타입에 따라 다르게 실행시킬 수 있는 방식입..

Interview Question 2025.08.31

[Interview Question] REST API란 무엇인가요?

RESTAPI는 REST 아키텍처 스타일을 따르는 api 설계 방식으로 자원은 uri로 정의하고 행위는 HTTP method로 정의하여 설계하는 방식입니다. restful한 api 개발의 특징으로는 일관된 HTTP 규칙만 잘 따른다면 언어와 플랫폼을 가리지 않고 범용적이게 사용할 수 있습니다. 또한 무상태성 즉, 사용자의 상태를 저장하지 않기 때문에 어떤 서버든 같은 요청을 받으면 같은 응답을 반환합니다. 그렇기 때문에 서버 수평확장에 용이하고 장애 대응을 하기 쉽습니다.

Interview Question 2025.08.31

[Interview Question] 쿠키방식과 세션방식에 대해서 설명해보세요

쿠키 방식과 세션 방식은 사용자 인증/상태 관리를 하는 방식입니다.쿠키 방식은 클라이언트에 저장되는 작은 데이터 조각을 활용하는 방식이며, 서버가 요청을 받으면 인증정보를 쿠키에 담아서 클라이언트에게 보낸다. 클라이언트는 서버가 인증정보를 요청할때마다 쿠키를 보내는 방식입니다. 쿠키방식은 사용하기 단순하다는 장점이 있지만 클라이언트가 가지고 있기 때문에, 보안에 취약하다는 단점이 있습니다.세션 방식은 서버가 고유 세션 ID만 쿠키에 담아 클라이언트에게 전송하고 사용자 인증정보는 서버에 저장하는 방식입니다. 서버가 그 id를 활용해 인증 정보를 색인하는 방식을 사용해 사용자가 많아졌을 때, 부하가 심하다는 단점이 있지만 서버가 db에서 관리를 하기 때문에 보안성을 강화할 수 있다는 장점이 있습니다. - 장..

Interview Question 2025.08.31

[Interview Question] HTTP와 HTTPS의 차이를 설명해주세요

HTTP는 웹에서 클라이언트와 서버 사이의 데이터 전송을 위한 프로토콜입니다. HTTP같은 경우에는 보통 포트를 80번을 사용하며 평문으로 데이터를 전송하기 때문에 보안에 취약합이다. 하지만 HTTPS의 경우 SSL/TLS를 이용하여 데이터를 암호화하고 CA 인증서를 통해 서버를 검증할 수 있으므로 도청이나 변조, 피싱공격을 막을 수 있습니다. 보통 포트는 443번을 이용합니다.

Interview Question 2025.08.30

[Interview Question] 프로세스와 스레드의 차이를 설명해주세요

프로세스와 스레드 둘다 실행의 단위입니다. 프로세스는 실행중인 프로그램의 인스턴스를 얘기하고 보통 독립된 메모리 공간을 가지며, 다른 프로세스의 메모리 공간에 직접적으로 접근할 수 없습니다.프로레스 내에서 실행되는 작은 단위의 실행이 스레드입니다. 같은 프로세스의 메모리공간을 공유하며, 스레드들은 각각의 stack영역을 갖습니다. 보통 한 스레드가 하나의 요청을 실행하는것이 일반적입니다.

Interview Question 2025.08.30

[Interview Question] 교착상태에 대해서 설명하고, 각 교착상태를 해결하는 방법에 대해서 설명해보세요.

교착상태, 즉 DeadLock은 두 개 이상의 프로세스가 서로 가진 자원을 기다리며 무한 대기에 빠지는 현상을 말합니다. 교착상태가 발생하려면 4가지 조건이 모두 충족되어야 하는데1. 상호배제, 2. 점유대기, 3. 비선점, 4. 원형대기 입니다.1. 상호배제는 자원을 동시에 하나의 프로세스만 사용할 수 있다.2. 점유대기는 프로세스가 이미 자원을 점유한 상태이기 때문에, 다른 자원을 기다리고 있다.3. 비선점은 상대방이 점유중인 자원을 강제로 회수 할 수 없다.4. 원형대기는 프로세스들이 원 형태로 서로 자원을 기다리는 상태이다. 이 4가지 조건을 동시에 만족했을 때만 deadlock상태가 발생합니다. 교착상태 해결방법으로는1. 자원을 공유가능하도록 설정합니다. 하지만 현실적으로 동기화 문제에 의해 어..

Interview Question 2025.08.29

[Interview Question] 채팅 메시지 저장 요청 부하를 왜 kafka를 사용해서 해결하였는가?

채팅 메시지를 저장할 때, db에 저장, nlp 분석, 알림 발송까지 한 트랜잭션 내에서 동기로 처리하고 있었는데, VU, TPS가 늘어나니 병목현상이 발생했습니다. 이를 해결하기 위해 kafka를 도입해 메시지 처리를 비동기 처리했습니다.이제 api 서버는 메시지를 받으면 kafka에 publish만 하고 응답을 반환합니다. 그 이후 db저장, nlp분석, 알림 발송 같은 구체적인 task는 kafka consumer에게 위임하여 병렬로 처리하도록 구조를 바꿨습니다.구조를 변경한 이후 동기에 들어오는 요청이 폭증해도 안정적으로 병목을 해결할 수 있게 되었습니다. 실제 부하테스트에서도 TPS가 200수준이었지만 2000이상으로 확장 가능해졌습니다. RabbitMQ같은 다른 메시지 큐도 고려할 수 있었지만..

Interview Question 2025.08.29

[Project - Howru] (4) 채팅 NLP 기반 사용자 추천 시스템 구현

NLP Tagging Service를 별도의 모듈로 구현했습니다.이 서비스는 MSA 아키텍처에서 “사용자 관심사 분석기” 역할을 담당합니다.fastapi-api/ ├── analysisTag.py # NLP 태깅 서비스 메인 코드 ├── Dockerfile # 컨테이너 실행 환경 ├── requirements.txt # 의존성 패키지 └── fastapi-api.iml # IDE 설정 파일왜 MSA로 분리했는가?확장성: NLP 연산은 자원 소모가 크기 때문에 별도의 서비스로 분리하여 독립적으로 확장 가능독립 배포: Dockerfile 기반으로 채팅 서비스, 알림 서비스와 분리해 배포 가능데이터 분리: MongoDB에 독립 컬렉션을 사용유연성: 새로운 태그/키워..

멋사 부트캠프 2025.08.20

[Project - Howru] (3) 채팅 NLP 기반 사용자 추천 시스템 설계

채팅 기반 단어장을 바탕으로 사용자 태그 생성 – NLP 기반 사용자 추천 시스템 설계채팅 기록에서 자동으로 단어장을 생성하고, 이를 주제별 태그로 변환해 사용자 추천까지 이어지는 과정을 설계해본다. 아직 실행은 최종 확정이 아니고, 다양한 접근을 시도한 뒤 최적안을 선택할 계획이다. 1. 채팅 메시지 수집MongoDB에 채팅 메시지를 저장 - kafka를 이용해 redis 캐싱과 비동기로 처리할 예정메시지 필드 예시:{ "_id": { "$oid": "689587cc8e228a315fec3ed6" }, "chatRoomId": "chat_user1_user2", "senderId": "user1", "receiverId": "user2", "message": "Dessert is a m..

멋사 부트캠프 2025.08.17