2025/02 23

[1분 면접] DB에서 커넥션 풀을 사용하지 않을 때 발생하는 문제는 ?

DB 커넥션 Life Cyle DB 드라이버를 사용하여 DB 연결read/write를 위한 TCP 소켓 열기소켓을 통해 read/write연결 종료 소켓 닫기  커넥션 풀이 없다면  애플리케이션에서 DB 접근에 위와 같은 과정을 반복이 과정은 비용이 상당히 많이 들고, 요청의 응답시간이 길음 커넥션 풀 사용 장점커넥션 풀을 사용함으써 연결을 미리 생성이를 재사용하여 성능을 향상시키고 자원 사용을 최적화 DB 부하 감소 (최대 연결 수 제한)  NestJS 같은 경우 TypeORM이 자동으로 커넥션 풀을 적용시켜준다.

[MySQL][Leet Code] 197. Rising Temperature (Easy)

https://leetcode.com/problems/rising-temperature/description/?envType=study-plan-v2&envId=top-sql-50 🗒️SQL 코드 풀이 SELECT idFROM Weather W1 INNER JOIN ( SELECT DATE_ADD(recordDate, INTERVAL 1 DAY) recordDate2, temperature FROM Weather ) W2 ON W1.recordDate = W2.recordDate2WHERE W1.temperature - W2.temperature > 0 1. 문제에서 요구하는 것은 간단하다. 전날과 비교해서 기온이 떨어지는 id를 출력하는 것이다. 2. ..

[MySQL][Leet Code] 1581. Customer Who Visited but Did Not Make Any Transactions (Easy)

https://leetcode.com/problems/customer-who-visited-but-did-not-make-any-transactions/description/?envType=study-plan-v2&envId=top-sql-50🗒️SQL 코드 풀이 SELECT customer_id, COUNT(*) count_no_trans FROM Visits v LEFT JOIN Transactions t ON v.visit_id = t.visit_idWHERE t.visit_id IS NULLGROUP BY customer_id 1. LEFT JOIN을 하고 , visit_id 컬럼이 2개가 나오는데, 그 중 Transactions의 컬럼의 visit_id 의 NULL 값을 조회한다. 2. 이후 ..

[MySQL][Leet Code] 1378. Replace Employee ID With The Unique Identifier (Easy)

https://leetcode.com/problems/replace-employee-id-with-the-unique-identifier/description/?envType=study-plan-v2&envId=top-sql-50https://leetcode.com/problems/article-views-i/?envType=study-plan-v2&envId=top-sql-50🗒️SQL 코드 풀이 1SELECT unique_id , nameFROM Employees e LEFT JOIN EmployeeUNI eu ON e.id = eu.id 1. 간단한 JOIN 문제로 먼저 가져올 테이블 Employee를 선택한다. 2. 이후 EmployeeUNI와 JOIN을 하는데, id를 기준으로 해준다.  📌..

[MySQL][Leet Code] 1148. Article Views I (Easy)

https://leetcode.com/problems/find-customer-referee/description/?envType=study-plan-v2&envId=top-sql-50https://leetcode.com/problems/article-views-i/?envType=study-plan-v2&envId=top-sql-50🗒️SQL 코드 풀이 1SELECT DISTINCT author_id AS id FROM ViewsWHERE author_id = viewer_idORDER BY id 1. 간단한 SQL 문제이다.  먼저 가져올 테이블 Views를 선택한다. 2. 이후 author_id와 viewer_id가 같은 조건을 걸어준다 . 3. 선택 할 컬럼은 author_id이로 Alias는 ..

[1분 면접] 스레드, 프로세스, 코어의 수는 많을 수록 좋을까 ?

코어가 많은 경우많은 코어는 CPU의 병렬 처리 성능을 향상이를 최대한 활용하기 위해서는 소프트웨어가 멀티코어 환경에 최적화되어야 함단일 스레드 작업이 주를 이룰 경우, 추가 코어의 이점을 잘 활용 못함또한 코어 수가 많아질수록 CPU의 비용과 전력 소비가 증가해 발열 관리 복잡 프로세스가 많은 경우각 프로세스는 독립된 메모리 공간을 가지는데, 프로세스가 동시에 실행되면 메모리 사용량 급격히 증가프로세스 생성 및 관리에도 많은 시스템 자원이 소모 IPC (프로세스 간 통신)이 필요한 경우 성능 저하 발생많은 프로세스는 프로세스 간 Context Switching에 발생하는 오버헤드 수반 스레드가 많은 경우스레드가 많아지면, 스레드 간 Context Switching이 자주 일어나 CPU 자원이 스레드 관..

[1분 면접] 단위 테스트와 통합 테스트의 차이점

단위 테스트소프트웨어의 가장 작은 단위 (개별 매서드, 함수)의 기능을 검증하는 테스트 통합 테스트개별 모듈들이 결합되어 전체 시스템이 올바르게 동작하는지 검증하는 테스트 모듈 간의 상호작용이 올바르게 동작하는지를 판단 외부 시스템(DB, 네트워크)의 통합을 테스트 슬라이스 테스트특정 레이어 (Controller, Service, Repository)에 대한 테스트애플리케이션의 특정 슬라이스가 올바르게 동작하는지 확인 테스트 코드를 작성하는 이유초기에 버그 발견 리팩토링에 유용개발 속도 향상 코드에 대한 문서 역할

[Python][백준] 1365. 꼬인 전깃줄 / LIS,이분탐색(G2)

목차🖇️ 링크 https://www.acmicpc.net/problem/1365🗒️ 파이썬 코드 풀이from bisect import bisect_leftN = int(input())lst = list(map(int,input().split()))lis = [0]for i in range(len(lst)): if lis[-1]  1. 문제를 보고  LIS (Longest Increasing Sequence) 문제임을 알아야한다.처음 풀면, 생각할 수 없을 것 같다... 그냥 문제를 몇번 풀고 익숙해져야 될듯 2. 문제의 조건은 전봇대의 개수 N(1 ≤ N ≤ 100,000) 이다.때문에 시간복잡도가 O(N^2) 이하여야 함이중 for 문이 안되기 떄문에, 이분탐색으로 접근3. 이제 조건에 맞게 l..