본문 바로가기

면접 대비5

CS 관련 면접 질문 정리 (Spring) 1. Spring이란?- Java 플랫폼을 위한 오픈소스 애플리케이션 프레임워크 중 하나 (자바 기반의 가볍고 유지 보수가 간편한 장점) 2. Spring의 특징- IOC(Inversion Of Control, 제어의 역전) - 개발자가 직접 제어하는 것이 아닌 다른 주체(Spring)에게 제어권을 위임  - DI(Dependency Injection, 의존성 주입) - 객체를 개발자가 직접 생성하는 것이 아니라 외부(Spring IOC container)에서 생성해서 사용하려는 주체에 객체를 주입시켜주는 방식 (생성자, 필드, setter 주입이 있음)=> 객체 간의 종속성 감소, 코드 단순화, 코드의 재사용성과 유지보수성을 높여줌=> 한 클래스를 수정하였을 때, 다른 클래스도 수정할 필요가 없어짐- .. 2023. 2. 5.
CS 관련 면접 질문 정리 (DB) 1. 인덱스(Index)- 테이블에서 데이터의 검색 속도를 향상시키기 위한 DB의 자료구조 - SELECT를 통한 검색 속도가 크게 향상됨- 데이터가 정렬된 상태로 값이 삽입됨- B+Tree 구조 => MySQL에서 노드 = 페이지 개념- 데이터 변경 쿼리(INSERT, UPDATE, DELETE)가 잦을 경우 성능이 악화될 수 있음 => 데이터 수정 시 오버플로우로 인한 페이지 분할로 여러 개의 페이지가 추가적으로 생성될 수 있기 때문 - DB 크기의 약 10% 정도의 추가 공간을 필요로 함B-Tree- 루트로부터 리프까지의 거리가 일정한 형태의 트리이며 이진 트리의 확장 개념- 루트 노드(최상위), 브랜치 노드(중간), 리프 노드(맨 밑)- 하나의 노드에 여러 개의 Key:Data를 배치할 수 있음 .. 2023. 1. 30.
CS 관련 면접 질문 정리 (OS) 1. OS의 정의 = 응용 프로그램과 하드웨어 사이에서 하드웨어를 조작하여 응용 프로그램에 필요한 자원을 할당하고 응용 프로그램이 올바르게 실행되도록 관리하는 소프트웨어  2. 커널(kenel) = OS의 핵심부 3. 동기, 비동기 차이 = 데이터의 요청과 결과가 한 자리에서 동시에 일어나는것, 동시에 일어나지 않는 것 4. 문맥 교환(Context Switching) - 기존에 실행 중인 프로세스의 문맥을 PCB에 백업한 뒤 중단하고 새로운 프로세스의 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 과정 => 여러 프로세스가 끊임없이 빠르게 번갈아 가며 실행되는 원리- 문맥(Context) = 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보- PCB(Process Control block.. 2023. 1. 16.
CS 관련 면접 질문 정리 (Java) 1. Java 컴파일 과정★ 자바 파일을 자바 Compiler가 바이트 코드로 변환하면 Class Loader가 자바 바이트 코드를 JVM 런타임 데이터 영역에 로드하고 실행 엔진이 최종적으로 자바 바이트 코드를 실행- 개발자가 .java 파일 생성 후 build- build한 java 파일을 java 컴파일러(javac)가 해석하여 바이트 코드(.class)로 변환- 변환한 바이트 코드 파일을 Class Loader가 JVM 내부에 로딩(적재)- 로딩된 class 파일들을 실행 엔진을 통해 컴퓨터가 읽을 수 있는 기계어로 해석하여 Runtime Data Area에 배치한 후 수행 ※ 런타임 데이터 영역(Runtime Data Area) = JVM이 프로그램을 실행하기 위해 OS로부터 할당받은 메모리 영.. 2023. 1. 16.
CS 관련 면접 질문 정리 (네트워크) 1. REST(Representational State Transfer)Client와 Server 사이의 통신 방식 중 하나로 HTTP URI로 리소스를 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 리소스에 대한 CRUD 기능을 적용하는 것을 의미하며 REST API는 REST를 기반으로 어떤 서비스에 대한 API를 구현한 것- URI(Uniform Resource Identifier) = 특정 리소스를 식별하는 통합 자원 식별자- API(Application Programming Interface) = 응용 프로그램에서 OS나 프로그래밍 언어의 기능을 조작하여 데이터를 주고받기 위한 방법을 정의한 인터페이스  (Client와 Server 간의 통신 방법을 정의.. 2023. 1. 4.