전체 글 277

[1분 면접] MySQL InnoDB에서 갭락과 넥스트 키 락이 무엇이고, 어떻게 팬텀 리드를 방지하나요?

📌 면접 답변1. Phantom Read-- 트랜잭션 A 시작START TRANSACTION;-- 트랜잭션 A 첫 번째 조회SELECT * FROM orders WHERE amount > 150;-- 트랜잭션 B 시작START TRANSACTION;-- 트랜잭션 B 새로운 행 삽입INSERT INTO orders (customer_id, amount) VALUES (4, 250);-- 트랜잭션 B 커밋COMMIT;-- 동일한 조건으로 트랜잭션 A 두 번째 조회시, 트랜잭션 A의 첫 번째 조회에는 존재하지 않던, 트랜잭션 B에서 삽입된 새로운 행이 함께 조회된다.-- 단, MVCC를 지원하는 경우 해당 케이스에서 팬텀 리드가 발생하지 않는다.SELECT * FROM orders WHERE amount >..

[1분 면접] 동기와 비동기의 차이점

📌 면접 답변 동기와 비동기는 호출하는 함수의 작업 완료를 기다리는지 여부의 차이가 있다. 예를들어, 함수 A가 동기로 함수 B를 호출하면 A는 B의 작업이 완료될 때 까지 기다린다.반면 함수 A가 비동기 함수로 B를 호출하면 A는 B의 작업 완료를 신경 쓰지 않고 따로 동작한다. (작업이 순차적으로 진행되지 않음)  📌 나의 답변동기는 작업들이 하나로 동기화 되어 하나의 일이 끝날때까지 기다리고, 끝나고 난 후 순차적으로 일이 처리되는 것을 의미한다. 반면에 비동기는 작업들이 동기화 되어있는거와 달리, 작업이 실행 중이고 현재 CPU가 해당 작업이 끝날 때 까지 기다리는 중이라면, 해당 작업은 Call Stack에서 Task Queue로 넘어가 작업을 처리된다. 그리고 Call Stack의 작업이 ..

[1분 면접] 공유락과 배타락에 대해 설명 해주세요.

📌 면접 답변DBMS에서 특별한 제어없이 병행 수행을 허용하면 데이터의 일관성과 무결성을 보장하지 못한다. 이때 사용할 수 있는 방법이 MVCC와 Lock 이다. Lock 은 공유락(Shared Lock)과 배타락(Exclusive Lock)으로 나눈다.   공유락Read Lock이라고도 불림공유락이 걸린 데이터에 대해서 다른 트랜잭션에서도 공유락 획득 가능 하지만 베타락 획득은 불가능 트랜잭션 내에서 조회한 데이터가 변경되지 않음을 보장 (쓰기 불가능)SELECT * FROM table_name WHERE id = 1 FOR SHARE ;   배타락Write Lock이라고도 불림배타락이 걸린 데이터는 다른 트랜잭션에서 공유락과 배타락 획득 불가능배타락을 가진 트랜잭션은 데이터 독점 SELE..

[MySQL][프로그래머스] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 / (Lv4)

https://school.programmers.co.kr/learn/courses/30/lessons/157339🗒️SQL 코드 풀이 # 자동차 종류 : 세단 or SUV / 2022년 11월 1일 ~ 11월 30일 / 대여 금액 50만원 ~ 200만원 # 자동차 ID / 자동차 종류 / 대여 금액 # 대여 금액(FEE) 기준 내림차순 정렬 / 자동차 종류 오름차순 / 자동차 ID 내림차순SELECT C.CAR_ID, C.CAR_TYPE, ROUND(DAILY_FEE*30*((100-D_P.DISCOUNT_RATE)/100),0) FEE FROM CAR_RENTAL_COMPANY_CAR C LEFT JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY R..

[Python][프로그래머스] 가장 큰 수 / 정렬 (Lv2)

🖇️ 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42746#🗒️ 파이썬 코드 풀이def solution(numbers): lst = list(map(str,numbers)) lst = sorted(lst, key=lambda x:x*3, reverse=True) answer = str(int(''.join(lst))) return answer 시간 복잡도 O( N·Log N)  1. 해당 문제에서 일반 정렬을 하면 안된다. [3, 30, 34, 5, 9]일반 정렬을 할 경우, [9, 5, 34, 30, 3] 이 되는데, 이거를 합쳐도 최대 값이 나오지 않는다.   2. 이 문제의 목표는 저런 배열이 ..

[Python][프로그래머스] 전화번호 목록 / 해시,정렬 (Lv2)

🖇️ 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42577🗒️ 파이썬 코드 풀이 1def solution(phone_book): answer = True phone_book.sort() for i in range(len(phone_book)-1): if phone_book[i+1].startswith(phone_book[i]): return False return answer 1. phone_book이 문자열임에 주목하여 sort를 해준다.  2. startswith 함수로 현재 번호와 다음 번호를 비교해준다.문자열 크기대로 정렬했으므로 접두사 중복 무조건 체크 가능중복되는 부분은 ..

[1분 면접] DB 시스템에서 동시성 제어하는 방법

📌 면접 답변대표적인 동시성 제어 방식으로 2가지가 있다.간단하게만 살펴보고, 이후 추가 학습을 진행해보자.   1. MVCC (Multi-Version Concurrency Control)DB의 동시성을 보장하면서 락을 최소화 하여 성능 향상읽기 작업시 잠금을 사용하지 않아 높은 동시성 제공읽기 트랙잭션트랜잭션이 시작된 시점의 데이터 읽음다른 트랜잭션이 데이터를 수정하더라도 내 트랜잭션이 볼 수 있는 데이터는 변하지 않음쓰기 트랜잭션데이터를 수정하면, 새로운 버전 생성변경 내용이 Commit 되면 새로운 버전 확정이후 시작하는 트랜잭션들은 이 새로운 버전을 읽음기존에 진행 중인 트랜잭션들은 본인이 시작한 시점의 스냅샷때문에 최신 데이터 볼 수 없음 다른 트랜잭션이 데이터를 변경해도, 이미 시작된 트랜..

[1분 면접] HTTP 매서드에서 멱등성이란 무엇인가 ?

멱등성이란 ? 영어로 Idempotent (살면서 처음 보는 단어이다...)사전적의미로는 동일한 연산을 여러 번 수행해도 똑같은 결과를 나타냄  HTTP 매서드의 멱등성동일한 요청을 한번 보내는것과 여러번 보내는 것이 동일한 효과를 지님멱등하다면 요청을 재시도할 때 같은 서버의 상태를 보장하기 때문에 문제 없음멱등하지 않는다면 재시도 요청시 중복 요청을 보내 문제 발생  멱등한 HTTP 매서드 GET (리소스 조회 요청으로 서버 상태 변하지 않음)HEAD (응답 없이 헤더만 반환, 상태 변경 없음)PUT (특정 리소스를 완전히 교체하는 요청, 동일한 데이터 여러번 보내도 똑같은 결과)DELETE (리소스 삭제하는 요청으로, 다시 요청해도 결과 동일) 멱등하지 않는  HTTP 매서드 POST (새로운 리소..

[1분 면접] 사용자가 웹사이트에 처음 접근했을 때 발생하는 일련의 과정

[면접 대답]1. Clinet가 URL 입력  ( HTTP 프로토콜을 사용해 구글 웹 서버와 통신 시도) 2. 브라우저는 도메인 네임에 대한 IP 주소를 알아야 하기 때문에 DNS 서버에 질의 응답으로 해당 도메인에 대한 IP 주소 응답 받음3. IP 주소를 얻은 후, 브라우서는 구글 서버와 통신TCP/IP를 기반으로 TCP 3-Way Handshake 과정 필요 4. TCP 연결이 성립된 후, 브라우저는 HTTP Request 메시지 생성데이터 패킷 형태로 네트워크에 전달5. 서버는 클라이언트의 요청을 수신하고, HTTP Response 메시지를 생성하여 응답서버는 상태 코드와 함께 웹 페이지 데이터 전송브라우저는 데이터(HTML/CSS, JS)를 해석하여 화면에 페이지 렌더링6. 모든 데이터 전송이 ..