-
IT 신입 개발자 면접 대비 질문들(실무, 개념)study 2020. 11. 12. 22:21반응형
Icons made by Freepik from www.flaticon.com 객체지향 프로그래밍(OOP)이란?
데이터를 객체로 취급
객체간의 상호작용을 통해 프로그램이 동작
장점 : 캡슐화, 다형성, 상속 -> 코드 재사용성 증가, 유지보수 용이
+ 캡슐화 : 데이터(변수) 및 함수(처리방법, 메소드)를 논리적으로 하나로 묶어놓는 것
+ 다형성 : 하나의 메소드나 클래스가 다양한 방법으로 동작
인터페이스(Interface)는 무엇인가?
일종의 추상클래스(클래스는 아님)로 오직 추상메소드와 상수로 이루어짐
Implements로 상속, 다중상속 가능
구현 객체의 같은 동작을 보장하기 위한 목적
추상클래스(abstract class)란?
하나 이상의 추상 메소드(abstract method)를 포함하는 클래스
추상 메소드는 선언만 있고 본체는 없는 함수
선언부에 'abstract' 키워드 추가
하위클래스를 제어하기 위해 사용
상속을 받아서 기능을 확장시키는 데 목적
JDBC(Java Database Connectivity)란?
Java에서 데이터베이스에 접속할 수 있도록 하는 Java API
JDBC는 데이터베이스에서 자료를 검색하거나 업데이트하는 방법을 제공
서블릿(Servlet)이란?
Java언어로 웹 개발을 하기 위해 만들어진 기술
Server Side(Controller)에 적합
순수 Java코드로 구성
JSP(Java Server Pages)란?
HTML페이지 안에 Java 코드를 삽입
Client(View) 담당
Java코드를 <% %> 태그 안에 처리
MVC패턴에 대해
모델-뷰-컨트롤러(Model–View–Controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴
사용자 인터페이스를 성공적이며 효과적으로 데이터 모형에 관련 시키기 위한 방법론 또는 설계 방식
구성 :
M(Model) - 프로그램이 목표하는 작업을 원활하게 수행하기 위해 필요한 물리적 개체, 규칙, 작업등의 요소들을 구분되는 역할로써 정의(DTO, DAO로 분류)
V(View) - 사용자가 보는 화면에 입출력 과정 및 결과를 보여줌, 객체를 전달받아 상태를 바로 출력하는 역할만을 담당
C(Controller) - model과 view를 연결하고 있는 클래스를 대표, 정보 교환 및 프로그램의 작동 순서나 방식을 제어
장점 :
M, V, C로 분리되어 각각의 역할에 집중(분업) -> 애플리케이션의 확장성, 유연성, 중복코딩 X
단점 :
프로젝트가 비대질수록 Controller와 Model, View간의 관계가 복잡해짐(유지보수 어려움)
Model 1, Model 2 차이점
Model 1 : JSP 페이지 내에 로직 처리하는 Java 코드가 직접 삽입 -> 구조는 단순하나 유지보수 힘듬
Model 2 : JSP에서 요청을 받으면 서블릿(컨트롤러)이나 다른 클래스에서 처리
Framework란?
소프트웨어 환경에서 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조
자주 쓰일 만한 기능들을 (따로 구현하여) 모아 놓은 유틸(혹은 클래스)의 모음
개발자가 늘어남에 따라 전체 시스템의 통합성, 일관성을 유지하기 위해 도입
Spring Framework란?
Java/JSP 기반의 오픈소스 웹 애플리케이션 프레임워크
제어 역행(Inversion of Control, IoC) : -> 기존의 '개발자가 작성한 프로그램이 라이브러리의 코드를 호출하는 방식이 아니고, 외부 라이브러리 코드가 개발자의 코드를 호출한다. (프레임워크에 제어권이 있어서 스프링 프레임워크가 사용자의 코드를 호출)
POJO(Plain Old Java Object) : 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.
의존성 주입(Dependency Injection, DI) : 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다. -> 코드 관리 용이
관점 지향 프로그래밍(Aspect-Oriented Programming, AOP) : 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
생명주기 관리 : 스프링 프레임워크는 Java 객체의 생성, 소멸을 직접 관리하며 필요한 객체만 사용할 수 있다.
Spring Boot란?
스프링 프레임워크르 사용하는 프로젝트를 간편하게 셋업할 수 있는 서브 프로젝트
독립 컨테이너에서 동작할 수 있기 때문에 embeded tomcat이 자동으로 실행
DAO(Data Access Object), DTO(Data Transfer Object)는 무엇인가
DAO : 데이터베이스에 접근하는 객체, 데이터를 조회하거나 조작하는 기능을 함
DTO : 계층간 데이터 교환을 위한 JavaBeans - ex)Controller, View 간의 데이터 교환Overloading과 Overriding
오버로딩(Overloading) : 같은 이름의 메소드를 여러개 정의하는것(매개변수의 타입이 다르거나 개수가 달라야 함)
오버라이딩(Overriding) : 상위클래스의 메소드를 하위클래스에서 특정한 형태로 재정의하여 사용GET과 POST
GET : 클라이언트에서 서버로 데이터를 보낼 때, 쿼리스트링을 통해 전송, URL에 데이터를 포함시키기 때문에 보안에 취약, 전송하는 길이에 제한이 있음(255개의 문자를 초과하면 문제 발생할수 있음). 주로 데이터를 요청할때 사용.
POST : 클라이언트에서 서버로 데이터를 보낼 때, HTTP의 body에 담아서 전송, 길이 제한 없음(대용량 전송 가능). 주로 데이터를 변경하거나 상태를 바꿀때 사용. 문자열 데이터 뿐만 아니라 Radio버튼, 텍스트 박스같은 객체의 값도 전송 가능.Session과 Cookie
HTTP프로토콜은 이전 페이지와 현재 페이지간의 관계가 지속되지 않기 때문에 페이제에 방문자가 머무르는 동안 상태를 지속시키기 위해 사용
세션(Session) : 데이터가 서버에 저장되며 웹브라우저의 캐시에 저장되어 브라우저가 닫히면 사라짐, 쿠키에 비해 보안에 유리
쿠키(Cookie) : 사용자가 특정 웹서버에 접속할 때 생성되는 아이디, 비밀번호, 방문한 곳 등의 정보를 담은 임시파일로 서버가 아닌 클라이언트에 텍스트 파일로 저장되어 다음에 같은 웹서버에 접속했을때 누구인지 알 수 있음. PC에 저장되기 때문에 보안에 불리
접근제한자
public : 같은 프로젝트 내에서 사용 가능
protected : 같은 패키지, 다른 패키지에서 상속받아 자식클래스에서 접근 가능
default : 같은 패키지 내에서만 접근 가능
private : 같은 클래스 내에서 접근 가능
TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)
TCP : 컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 프로토콜의 일종, TCP/IP로 많이 표현함. 상대와 연결을 설정하고 통신을 시작함(양방향 통신). 높은 신뢰성을 보장하며 데이터 흐름제어, 혼잡 제어 등의 특징이 있음.
UDP : 신뢰성이 없음, 손실되는 데이터가 있어도 문제되지 않는 실시간성이 중요한 전송에서 활용. TCP보다 전송 속도가 빠르며 단방향 통신.
DB에서 인덱스
데이터베이스에서 저장된 자료를 더욱 빠르게 조회하게 해주는 자료구조
1개이상의 컬럼으로 생성할 수 있음
검색 속도 향상 뿐 아니라 레코드 접근과 순서 매김 동작 제공
DDL, DML, DCL, TCL
DDL : 데이터 정의어 - CREATE, ALTER, DROP, TRUNCATE
DML : 데이터 조작어 - SELECT, INSERT, UPDATE, DELETE가 있음
DCL : 사용자 제어 - GRANT, REVOKE
TCL : 트랜잭션 처리어 - COMMIT, ROLLBACK, BEGIN, TRAN
INNER JOIN, OUTER JOIN, CROSS JOIN
INNER JOIN : JOIN 조건에서 값이 일치하는 행만 반환, 두 테이블의 컬럼 값이 일치하는 경우에 사용함.
OUTER JOIN : JOIN 조건에서 한쪽 값이 없더라도 행을 반환, 값이 없는쪽에 (+)를 붙여서 사용함.
CROSS JOIN : 카테시안 값을 얻을때 사용함.
반응형'study' 카테고리의 다른 글
간단하게 React Hooks 사용해보기 (0) 2020.11.30 REST API에 대해서 (0) 2020.11.24 2020 리액트 개발자 로드맵(React Roadmap) (0) 2020.11.12 2020 프론트엔드 개발자 로드맵(Front-end Roadmap) (0) 2020.11.12 2020 백엔드 개발자 로드맵(Back-end Roadmap) (0) 2020.11.12