본문 바로가기

오블완18

[백엔드 기술 면접] #9 DB심화 #9 DB심화 Q. 데이터베이스 파티셔닝의 필요성과 파티셔닝 방식에는 어떤 것들이 있나요?A. 데이터베이스 파티셔닝은 대용량 데이터베이스의 관리를 용이하게 하고 성능을 향상시키기 위해 사용됩니다. 주요 파티셔닝 방식으로는 수평 파티셔닝(Horizontal Partitioning)과 수직 파티셔닝(Vertical Partitioning)이 있습니다. 수평 파티셔닝은 데이터 행을 여러 테이블로 나누고, 수직 파티셔닝은 열을 기준으로 데이터를 분할합니다. 각 방식은 특정 쿼리 유형에 최적화되어 성능을 개선할 수 있습니다. Q. MySQL에서 파티션 테이블에 외래키 제약조건을 설정할 수 있나요? 없다 실제 사용 시 어떻게 대응하는 것이 좋을까요?A. MySQL에서 파티션 테이블은 외래키 제약조건을 지원하지 않습.. 2024. 11. 24.
[백엔드 기술 면접] #8 JAVA #8 JAVA Q. JVM의 작동 원리에 대해 설명해보아라A. JVM은 자바 애플리케이션을 실행하기 위한 가상 머신이다. JVM은 클래스 로더를 통해 클래스 파일을 메모리에 로드하고, 바이트코드를 실행 엔진이 해석하며, JIT 컴파일러가 성능을 최적화한다. Q. Garbage Collection이 무엇이며, Java에서 주요 알고리즘에 대해 설명하라.A. 프로그래밍에서 객체나 변수를 생성하면, 이들은 메모리를 점유하게 됩니다. 하지만 더 이상 사용되지 않거나 참조되지 않는 객체가 남아 있다면, 그들이 차지하는 메모리는 비효율적으로 낭비됩니다. 이러한 메모리 누수를 방지하기 위해 Garbage Collection이 필요합니다. 주요 알고리즘으로는 Mark and Sweep, Minor/Major GC, G.. 2024. 11. 23.
[백엔드 기술 면접] #7 Server (3) #7 Server (3) Q. Java 17 버전을 사용한 이유는 무엇인가?A. Java 17은 LTS(Long-Term Support) 버전으로, 안정성과 장기적인 지원을 제공합니다. 또한, 성능 향상과 새로운 기능들, 특히 텍스트 블록을 통한 코드 가독성을 향상시킬 수 있었으며, record 객체를 이용하여 보일러플레이트 코드를 크게 줄일 수 있습니다. Q. GraphQL과 REST의 차이는 무엇인가?A. GraphQL은 클라이언트가 필요한 데이터만 요청할 수 있게 해주어 오버페칭과 언더페칭을 줄일 수 있으며, REST는 정형화된 HTTP 메서드를 사용해 리소스를 처리합니다. GraphQL은 하나의 엔드포인트로 다양한 쿼리를 처리할 수 있지만, REST는 리소스마다 별도의 엔드포인트를 가집니다. Q... 2024. 11. 22.
[DB] ElasticSearch의 Suggest API Suggest API SuggestAPI에서 사용되는 Suggester는 색인이 된 대상을 FST(유한상태 변화기)라는 데이터 구조를 만들어 In-Memory에 올려 일반 검색 API보다 훨씬 응답이 빠르다. 이때, 인메모리에 올라가니 변경이 적은 것이 좋다. FST Type을 사용하고 싶으면 mapping에서 completion type으로 지정하면 된다. Completion field type | Elasticsearch Guide [8.16] | ElasticCompletion field type edit To use the completion suggester, map the field from which you want to generate suggestions as type completion.. 2024. 11. 21.
[백엔드 기술 면접] #6 시스템 설계 Q. SNS에서 친구 관계에 대해 기록을 하고 싶다. 어떤 종류의 DB를 사용하는 것이 적절할까? 그 이유는?A. 그래프 데이터베이스(예: Neo4j)가 적절합니다. 이유는 친구 관계를 노드(사용자)와 엣지(친구 관계)로 모델링할 수 있으며, 관계를 빠르게 탐색하고 쿼리하는 데 최적화되어 있기 때문입니다. Q. 사용자의 위치 정보를 기반으로 근처의 상점을 추천하는 기능을 구현하려고 한다. 어떤 데이터베이스를 사용할 것이며, 어떻게 구현할 것인가?A. 사용자의 위치 정보를 기반으로 근처의 상점을 추천하는 기능을 구현하기 위해 PostgreSQL 데이터베이스를 사용하는 것이 적합합니다. 그 이유는 PostgreSQL의 PostGIS 확장이 지리적 데이터를 효율적으로 처리하고 쿼리하는 데 최적화되어 있기 때문.. 2024. 11. 20.
[DB] ElasticSearch의 Search API SearchAPI란?SearchAPI는 ElasticSearch에서 데이터 검색과 필터링을 위한 API입니다. 특정 조건으로 데이터를 검색하고, 정렬, 페이징, 집계 등에 적용할 수 있습니다. 크게 두가지 방법으로 전달할 수 있습니다. 첫번째가 URI Search인데 이건 우리가 ?query=”hello” 이런식으로 REST에서 보내는 방법입니다. 간단한 검색이면 몰라도, 사실 크게 자주 쓰지 않습니다. 두번째가 Query DSL인데 아래처럼 Body에 넣어서 보내는 것입니다. 대부분 후자 방법을 이용합니다. (더 상세한 표현이 가능하고 재사용성이 좋기 때문입니다.)QueryDSL에는 위 사진과 같은 옵션을 넣을 수 있습니다. 특히, query부분이 중요한데, 이 곳에 우리가 SQL로 작성해서 DB에서 .. 2024. 11. 19.
[네트워크] HTTP와 HTTPS HTTP란?Hypertext Transfer Protocol의 의 줄임말로 웹 상에서 브라우저와 서버가 데이터를 주고 받을때 사용하는 프로토콜입니다. 애플리케이션 계층에서 작동됩니다.HTTP 1.X 버전Persistent connection과 Parallel connection Persistent Connection이란 TCP Connection을 요청마다 Close하지 않고 재사용하여 통신하는 방법을 말한다. 보통 클라이언트는 웹페이지 내의 여러 데이터를 가져오기 위해 같은 서버에 여러 번 요청을 하게 되는 경우가 많다. (Site Locality) parallel connection이란 병렬적으로 동시에 여러 connection을 맺는 것을 의미한다. 물론 parallel connection은 thr.. 2024. 11. 18.