분류 전체보기

    웹과 네트워크 면접 질문

    HTTP 프로토콜 HyperText Transfer Protocol: 텍스트 기반의 통신 규약 인터넷에서 데이터를 주고받을 수 있는 프로토콜을 의미한다. 클라이언트 요청에 응답을 한 후 연결을 끊는 Connectionless 특징을 갖고 있습니다. 또한 연결이 끊기면 상태 정보를 유지하지 않는 Stateless한 특성이 있습니다. → HTTP 프로토콜이 상태를 유지하는 방법으로 쿠키와 세션이 있습니다. HTTP 메서드 GET 요청은 서버에 데이터를 요 - CRUD로 따지면 R(읽기) POST 요청은 서버에 데이터를 생성하는 것을 요청 - CRUD로 따지면 C(생성) PUT 요청은 서버에 존재하는 데이터를 수정하거나 존재하지 않으면 생성, 주로 전체 자원을 업데이트 하는데 쓰입니다. - CRUD로 따지면 ..

    운영체제 면접 질문

    프로세스 프로세스는 실행 중인 프로그램이다. 디스크에서 메모리로 적재되어, CPU 자원의 할당을 받을 수 있는 것을 말한다. 메모리 영역(스택, 힙, 데이터, 코드 영역)을 다른 프로세스와 공유하지 않는다. 최소 1개의 스레드를 갖고 있다. 스레드 프로세스의 작업 실행 단위이다. 프로세스 내에서 스택만 따로 할당 받고 그 외 메모리 영역(힙, 데이터, 코드)을 공유하기 때문에 다른 스레드의 실행 결과를 즉시 확인할 수 있다. 스레드 구성: 스레드 ID / PC / 레지스터 집합 / 스택 멀티 스레드 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 멀티 스레드라고 합니다. 하나의 프로세스 내에서 메모리 공간을 공유하기 때문에 메모리 공간과 시스템 자원 소모가 줄어들게 됩니다. 스레드..

    Database 면접 질문

    데이터베이스란? 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합 RDBMS와 NoSQL RDBMS (관계형) 관계형 데이터 모델을 기초로 두고, 데이터는 스키마로 정의된 2차원 테이블에 저장됩니다. 장점 스키마에 맞춰 데이터를 관리하기 때문에 명확한 데이터 구조 보장한다. 데이터 중복을 피하기 때문에 공간이 절약 된다. 단점 시스템이 커질 수록 쿼리가 복잡해지고 성능이 저하되며 Scale-Out이 어렵습니다. NoSQL (비 관계형) 비 관계형 데이터베이스로, 데이터간의 관계를 정의하지 않고, 스키마가 없어 좀 더 자유롭게 데이터를 관리할 수 있습니다. 장점 데이터 분산이 용이하고 Scale-Out이 가능합니다. 단점 데이터 중복이 발생할 수 있고, 데이터가 변경 시 연산이 ..

    Spring & Spring Boot 면접 질문

    Spring과 SpringBoot의 차이 SpringBoot는 Spring Framework 프로젝트를 간편하게 셋업할 수 있는 서브 프로젝트이다. 독립 컨테이너에서 동작할 수 있기 때문에 추가 WAS 설치 없이 내장된 톰캣으로 실행한다. Spring Framework 특징 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 어플리케이셔 프레임워크이다. 어플리케이션을 개발하는데 필요한 기능들을 제공해주기 때문에 개발자들은 개발에 집중할 수 있다. 경량 컨테이너로 자바 객체를 생성하고 조립하는 등 관리한다. POJO(순수한 자바 객체) 기반의 구성 의존성 주입(DI)을 통한 객체 간의 관계 구성 AOP: 관점 지향 프로그래밍 편리한 MVC 구조 WAS에 종속적이지 않은 개발 환경, 내장 서버(톰캣)이 ..

    객체지향 프로그래밍 & Java 면접 질문

    객체지향이란? 객체지향 프로그래밍이란 현실 세계의 사물들을 객체로 바라보는 인간 관점 프로그래밍 패러다임이라 할 수 있다. 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법 객체지향 프로그래밍 장점 코드 재사용이 용이하고 상속을 통한 확장이 가능하다. 클래스 단위로 모듈화가 되어있어 대형 프로젝트에 적합하고, 유지보수가 용이하다. 클래스와 객체의 차이점 클래스는 객체를 정의하는 틀, 설계도이다. 객체는 식별 가능한 개체 또는 사물을 뜻한다. 클래스를 통해 만들어지는 인스턴스를 대신해 말하기도 한다. C와 Java의 차이점 C는 절차 지향 언어이고, Java는 클래스를 이용한 설계적인 측면이 강조된 객체지향 언어라는 ..

    [이펙티브 자바] 자바 프로그래밍 원칙

    지역변수의 범위를 최소화하자 지역변수의 유효범위를 최소로 줄일 경우 장점 코드 가독성이 좋아진다. 유지보수성이 높아진다. 오류 가능성이 낮아진다. 지역변수의 범위를 줄이는 방법 가장 처음 쓰일 때 선언한다. 선언과 동시에 초기화 한다. 초기화를 하지 않는 상태라면 선언을 최대한 미뤄야 한다. 메서드를 작게 유지하고 한 가지 기능에 집중하게 한다. 전통적인 for문 대신 for-each 문 사용 전통적인 for문 단점 반복자와 인덱스 변수는 코드를 지저분하게 한다. 요소 종류가 늘어날 수록 오류가 생길 가능성이 높아진다. 컬렉션이냐 배열이냐에 따라 코드 형태가 달라진다. 향상된 for문인 for-each 문을 사용하면 코드도 깔끔해지고, 오류가 날 일도 없어진다. for-each문을 사용 못하는 경우 파괴..

    [이펙티브 자바] 메서드 설계 주의점

    [이펙티브 자바] 메서드 설계 주의점

    매개변수가 유효한지 검사하자 오류는 가능한 빨리 잡아내는 것이 좋다. 초반에 오류를 잡아내지 못한 상태로 코드가 수행되면 오류의 발생 지점을 점점 찾기 어려워지기 때문이다. 매개변수를 검사하는 예시 public BigInteger mod(BigInteger m) { if (m.signum()

    [이펙티브 자바] Enum과 EnumMap

    Enum: 열거 타입 Enum은 일정 개수의 상수 값을 정의한 다음 그 외의 값을 허용하지 않는 타입이다. 연관된 상수를 묶어 표현한다. Enum이 나오기 전까지는 아래 처럼 정수 상수를 한 묶음 선언해서 사용했다. 정수 열거 패턴: Enum나오기 전 쓰던 방법 public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2; public static final int ORANGE_NAVEL = 0; public static final int ORANGE_TEMPLE = 1; public static final int ORANGE_BLOOD..