학습 내용 정리/기술 면접 준비 (30) 썸네일형 리스트형 ORM을 사용하면서 쿼리가 복잡해지는 경우 Q. ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는게 좋을까요? A. 네이티브 SQL 쿼리나 ORM의 Raw Query를 활용하거나, 사용자 정의 메서드를 활용하여 해결할 수 있습니다. 또한 데이터베이스의 저장 프로시저나 뷰를 활용하여 로직을 분리하여 복잡성을 줄일 수도 있습니다. ORM 확장 라이브러리를 사용하거나, 필요하다면 ORM을 변경하여 복잡한 쿼리에 대응할 수 있습니다. 대용량 트래픽 대응 Q. 대용량 트래픽 발생 시 어떻게 대응해야 하나요? A. 더 많은 사용자를 수용하기 위해서는 서버 리소스(CPU, RAM)를 늘려야 합니다. 기존 서버의 성능을 높이는 수직확장과 동일한 목적을 갖는 서버를 여러대 추가하는 수평확장이 있습니다. 수평확장의 경우 로드밸런서를 사용할 수 있습니다. 로드 밸런서는 부하 분산을 위해 가상 IP를 통해 여러 서버에 접속하도록 부하를 분배하는 기능입니다. 객체지향 프로그래밍 Q. 객체지향 프로그래밍이란 무엇이고 어떻게 활용할 수 있나요? A. 객체 지향 프로그래밍이란 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다. 추상화를 통해 불필요한 정보는 숨기고 중요한 정보만을 표현할 수 있습니다. 중요한 정보를 캡슐화를 통해 은닉할 수 있습니다. 상속을 통해 재사용으로 인한 코드를 줄일 수 있습니다. 다형성을 통해 하나의 변수명, 함수명을 상황에 따라 다른 의미로 해석할 수 있습니다. DI 와 IoC Q. DI, IoC에 대해 설명해주세요. A. DI(의존성 주입)은 객체 간의 결합도를 낮추기 위해 한 객체가 다른 객체를 외부에서 받아오는 패턴입니다. IoC(제어의 역전)은 객체의 생성 및 관리를 프레임워크나 컨테이너에 위임하여 유연한 애플리케이션을 구축하는 개념입니다. DI는 IoC의 구현 방식 중 하나로, 객체가 필요한 의존성을 주입받아 동작합니다. http https 차이점 Q. http, https 차이점에 대해 설명해주세요 A. HTTP 메시지는 일반 텍스트이므로, 권한이 없는 당사자가 인터넷을 통해 쉽게 액세스하고 읽을 수 있습니다. 반면, HTTPS는 모든 데이터를 암호화된 형태로 전송합니다. 사용자가 민감한 데이터를 제출할 때 제3자가 네트워크를 통해 해당 데이터를 가로챌 수 없음을 확신할 수 있습니다. TCP UDP Q. TCP/UDP에 대해서 설명해주세요. A. TCP는 Transmission Control Protocol의 약자로 신뢰성 있는 데이터 전송을 보장하는 연결 기반 프로토콜이다. UDP 는 User Datagram Protocol의 약자로 사용자 데이터그램 프로토콜이다. 인터넷 상에서 정보를 주고 받을 때 신호절차를 거치지 않고 보내는 쪽에서 일방적으로 데이터를 전달한다. 쿠키 세션의 개념과 차이 Q. 쿠키, 세션의 개념과 차이를 설명해보세요 A. 쿠키는 클라이언트에 저장되는 작은 데이터 파일입니다. 세션은 서버 측에서 유지되는 사용자의 상태 정보입니다. 쿠키는 브라우저에서 직접 확인하고 수정할 수 있어서 보안에 취약하지만, 세션은 서버측에서 관리되므로 클라이언트에서 직접 수정하는 것이 불가능하기 때문에 보안성이 높습니다. 브라우저 작동방식 Q. 브라우저의 작동방식에 대해서 설명해 주세요. A. 1. HTML, CSS, JS 등 렌더링에 필요한 리소스 요청과 서버로부터의 응답합니다. 2. 서버로부터 응답된 HTML과 CSS 파싱 > DOM, CSSOM 생성 > 결합하여 렌더 트리 생성합니다. 3. 서버로부터 응답된 JS를 파싱 > AST 생성 > 바이트 코드로 변환하여 실행합니다. (이 때, JS는 DOM API를 통해 DOM이나 CSSOM을 변경 가능, 변경된 DOM CSSOM 다시 렌더 트리로 결합) 4. 렌더트리를 기반으로 HTML 요소의 위치와 크기 (레이아웃)을 계산하고 브라우저 화면에 HTML요소를 페인팅한다. 이전 1 2 3 4 다음