Laravel 신입 개발자 CS 기초 면접
새 면접Q. 웹 브라우저에서 사용자가 'https://example.com'을 입력했을 때 서버와 통신하는 과정을 DNS 조회부터 HTTP 응답까지 순서대로 설명해주세요.
DNS 서버가 도메인을 IP로 변환하는 단계부터 시작해보세요.
먼저 DNS 서버에 도메인 이름을 질의하여 IP 주소를 받아옵니다. 이후 TCP 3-way handshake를 통해 서버와 연결을 수립합니다. HTTPS이므로 TLS/SSL 핸드셰이크를 거쳐 암호화 통신을 설정합니다. 클라이언트는 HTTP 요청 메시지를 서버에 전송하고, 서버는 요청을 처리한 후 HTTP 응답을 반환합니다. 마지막으로 브라우저는 받은 HTML, CSS, JavaScript 등을 파싱하여 화면에 렌더링합니다.
- • DNS를 통한 도메인-IP 변환
- • TCP 3-way handshake로 연결 수립
- • TLS/SSL 핸드셰이크로 암호화 통신 설정
- • HTTP 요청/응답 교환
웹 애플리케이션의 성능 병목 지점을 파악하고 최적화할 때 각 단계별 소요 시간을 분석하는 데 활용됩니다.
TCP 3-way handshake의 구체적인 과정(SYN, SYN-ACK, ACK)을 설명해주실 수 있나요?
Q. 해시 테이블(Hash Table)의 동작 원리와 해시 충돌(Hash Collision)이 발생하는 이유, 그리고 충돌을 해결하는 방법 2가지를 설명해주세요.
해시 함수로 키를 인덱스로 변환하는 과정에서 발생할 수 있는 문제를 생각해보세요.
해시 테이블은 해시 함수를 사용해 키를 배열의 인덱스로 변환하여 데이터를 저장하는 자료구조로, 평균 O(1) 시간에 삽입, 삭제, 조회가 가능합니다. 해시 충돌은 서로 다른 키가 동일한 해시 값으로 변환될 때 발생하며, 배열 크기가 제한적이기 때문에 불가피합니다. 충돌 해결 방법으로는 체이닝(Chaining)이 있는데, 같은 인덱스에 연결 리스트로 여러 값을 저장하는 방식입니다. 또 다른 방법은 개방 주소법(Open Addressing)으로, 충돌 시 다른 빈 공간을 찾아 저장하는 방식입니다. PHP의 배열이나 Laravel의 Collection 내부에서도 해시 테이블 구조가 활용됩니다.
- • 해시 함수로 키를 인덱스로 변환하여 O(1) 접근
- • 서로 다른 키가 같은 해시 값을 가질 때 충돌 발생
- • 체이닝은 연결 리스트로 충돌 해결
- • 개방 주소법은 다른 빈 공간을 탐색하여 해결
데이터베이스의 인덱스 구현이나 캐시 시스템(Redis 등)에서 빠른 데이터 접근을 위해 해시 테이블이 핵심적으로 사용됩니다.
Laravel에서 세션 데이터를 저장할 때 해시 테이블 구조가 어떻게 활용되는지 설명해주실 수 있나요?
Q. 데이터베이스 트랜잭션의 ACID 속성 4가지를 각각 설명하고, 왜 트랜잭션이 필요한지 실제 예시를 들어 설명해주세요.
은행 계좌 이체처럼 여러 작업이 모두 성공하거나 모두 실패해야 하는 상황을 생각해보세요.
ACID는 트랜잭션의 안전성을 보장하는 4가지 속성입니다. Atomicity(원자성)는 트랜잭션 내 모든 작업이 전부 성공하거나 전부 실패해야 함을 의미합니다. Consistency(일관성)는 트랜잭션 전후로 데이터베이스가 항상 일관된 상태를 유지해야 함을 뜻합니다. Isolation(격리성)은 동시에 실행되는 트랜잭션들이 서로 영향을 주지 않아야 함을 나타냅니다. Durability(지속성)는 커밋된 트랜잭션의 결과가 영구적으로 저장되어야 함을 보장합니다. 예를 들어 쇼핑몰에서 주문 시 재고 차감과 주문 기록 생성이 동시에 성공해야 하는데, 한쪽만 성공하면 데이터 불일치가 발생하므로 트랜잭션으로 묶어 처리해야 합니다.
- • Atomicity는 all or nothing 원칙
- • Consistency는 데이터 무결성 유지
- • Isolation은 동시성 제어
- • Durability는 영구 저장 보장
- • 여러 작업의 논리적 단위를 안전하게 처리하기 위해 필요
결제 시스템에서 포인트 차감, 결제 기록 생성, 재고 감소 등 여러 테이블 업데이트를 안전하게 처리할 때 트랜잭션을 필수적으로 사용합니다.
Laravel에서 DB 파사드의 transaction 메서드를 사용할 때 내부적으로 어떤 SQL 명령어들이 실행되는지 아시나요?
아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!