간단 기술개념 질문답변

부트캠프(END)/보충|2022. 10. 12. 10:31

얕은 복사 / 깊은 복사?

→ 얕은 복사는 주소값만을 복사하여 복사본이 원본에도 영향을 준다.

깊은 복사는 아예 다른 인스턴스가 된다.

 

오버로딩 / 오버라이딩?

→ 오버로딩은 같은 이름의 메서드를 매개변수와 리턴형을 달리 하여 여러 개 정의하는 것

오버라이딩은 상속받은 메서드를 변경해서(매개변수, 리턴형 동일) 정의하는 것

 

추상 클래스 / 인터페이스?

→ 추상 클래스는 상속을 받아 기능을 이용하고 확장하는 데에 목적.

인터페이스는 함수의 껍데기만 존재하며 구현을 강제한다.

해당 인터페이스를 구현한 객체들에 대해 동일한 동작을 약속한다.

 

제네릭?

→ 메서드와 컬렉션 클래스에서 컴파일시에 타입을 체크하는 기능을 한다.

객체 타입의 안정성을 높이고 형변환의 번거로움을 낮춘다.

 

예외 처리?

→ 비정상적인 종료를 방지하기 위해 사용한다. 에러를 해결하는게 아니라 건너뜀.

try-catch, throw(예외 고의로 발생, 테스트용), throws(발생할 수 있는 예외 명시)가 있다.

 

JSON / JSONP / XML?

→ XML은 태그 형태의 표현법,

JSON은 자바스크립트 객체 표현법으로,,

키와 값으로 이루어진 데이터 오브젝트를 전달하는 포맷, XML을 대체한다.

JSONP는 다른 도메인에 있는 서버로부터 데이터를 요청할 때 사용된다. 콜백함수로 감싸짐.

 

스키마?

→ DB의 구조와 제약조건 등에 대한 전반적인 명세 데이터의 집합.

 

Wrapper 클래스?

→ 기본형 값들을 객체로 다루기 위해 사용된다. 형 변환을 편리하게 해 주고..

null값을 넣을 수 있다는 데에도 의미가 있음.

 

DAO / Service?

→ DAO는 CURD등 데이터 처리 작업을 정의하는 메서드의 집합이다.

Service는 Controller에게 호출되어 요청 처리를 총괄한다. 다시말해, Service가 DAO를 호출하고 Controller에 전송함.

 

GET / POST?

→ GET은 클라이언트에서 서버로 정보를 요청하는 방법. 파라미터를 주소에 담아 전송한다.

POST는 데이터를 전송할 때 사용하고, 파라미터에 데이터가 보이지 않고 HTTP Body에 담아 보낸다.

 

인덱스 생성시 고려할 점?

→ 인덱스는 select 성능 향상을 위해 사용한다.

고유한 값을 갖는 컬럼, 겹치는 값이 별로 없는 것, 자주 갱신되지 않는 값을 위주로 생성한다.

 

쿠키 / 세션?

→ 쿠키는 브라우저에 저장되는 클라이언트의 정보로, 로컬에 저장되어 브라우저가 종료되도 사라지지 않는다.

세션은 서버에 저장되는 클라이언트의 정보. 브라우저가 종료되면 사라진다.

 

REST API?

→ HTTP 통신규약을 이용한 리소스 중심의 데이터 통신 방식.

가장 HTTP에 이롭게 통신하라는 권고사항이다. 메서드는 GET/POST/PUT/PATCH/DELETE 가 있음

 

RESTFUL?

→ 이해하기 쉽고 사용하기 쉬운 REST API.

개발자마다 정의가 다르다고는 하는데.....

 

Ajax?

→ 동적 웹페이지를 만들기 위한 개발 기법 중 하나. 웹페이지의 일부만 갱신할 수 있고,

웹페이지 로드 이후에도 서버로 데이터를 주고받을 수 있다.

 

MVC 사용시 장단점?

→ 단순하며 직관적이고 자바와 HTML을 분리할 수 있어 협업에 용이하지만,

View와 Model을 100% 분리할 수 없기 때문에 어플리케이션이 커질수록 유지보수가 어려워진다.

 

Spring DI?

→ 외부 환경설정에서 객체에 속성값을 주입하여 결합성을 낮추고 유연한 코딩이 가능하게 한다.

 

Spring AOP?

→ 공통 모듈을 모아서 별도로 관리하는 방식이다.

데이터베이스 연결/해제나 footer 데이터 출력 등에 활용할 수 있다.

 

Spring MVC 동작 과정?

→ 클라이언트의 요청을 DispatcherServlet이 받고,

HandlerMapping이 클라이언트가 요청한 URL을 어떤 컨트롤러가 처리할 지 찾는다.

그리고 컨트롤러가 그 요청을 처리한 후 결과와 View의 정보를 DispatcherServlet에 전달하고,

그 정보를 기반으로 ViewResolver가 어떤 View를 생성할 지 결정한다.

최종적으로 View가 사용자에게 화면을 보여 줌.

 

가비지 컬렉션?

→ 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요 없게 된 영역을 해제해 준다.

 

UTF-8 / EUC-KR?

→ 한글 인코딩 방식들임. UTF-8은 유니코드 범위에 따라 1~4byte로 한글을 변환한다. (가변 크기)

EUC-KR은 한글을 2byte로 변환한다. UTF-8이 다른 외국어 제약이 적다. 일본어 등도 가능

 

String / StringBuffer?

→ 둘 다 문자열을 나타내는 클래스. 비슷하지만 StringBuffer는 문자열의 변경이 가능한 char형 배열이다.

String에 += 로 변경하는 것보다 처리 속도가 빠르다.

 

Serialization?

→ 객체를 데이터 스트림으로 만드는 것으로, 객체를 파일로 저장하고 싶을 때 이용한다.

 

Stack / Queue?

→ 자바의 컬렉션 클래스. 스택은 선입후출, 큐는 선입선출. 

 

NoSQL?

→ 뭐의 줄임말인지는 의견이 분분하지만 Not Only SQL 이라는 의견이 많다.

기본적인 데이터베이스 기능 외에 다른 특성들을 부가적으로 지원한다. 

비관계형 / 분산형 데이터베이스! 초고용량 데이터처리 등 성능 특화된 목적을 갖는다.

 

트랜잭션?

→ 데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위.

한꺼번에 수행되어야 할 일련의 연산들.. 단위를 의미함.

 

jQuery?

→ HTML의 DOM과 이벤트 제어, 애니메이션, Ajax등 화면을 다룰 수 있게 돕는 자바스크립트 라이브러리.

 

동기 / 비동기?

→ 동기는 하나의 일을 마칠 때까지 기다렸다가 그 일이 끝나면 순서대로 다음 일을 처리하는 방식.

비동기는 기다리지 않고 다른 일을 동시에 진행하면서 순서대로 처리한다. 효율적이지만 복잡함...

 

AWS 리전?

→ 제일 가까운 서버의 위치를 찾고 지정할 때 사용한다.

 

호이스팅?

→ 자바스크립트 엔진은 소스 코드를 한 줄씩 순차적으로 실행하기 전에

변수, 함수 등의 선언문을 찾아내서 우선적으로 실행하는데, 이러한 특성을 호이스팅이라고 함.

 

VueJS?

→ 라이브러리와 프레임워크가 함께 있음.

DOM을 최소한으로 조작하여 작업을 처리하기 때문에 속도가 빠르다!

 

DML / DCL / DDL

→ DML : 데이터 조작(데이터 추가, 수정, 삭제)

DCL : 데이터 컨트롤(권한 부여, 해제 등)

DDL : 데이터 정의(테이블, 뷰, 시퀀스 등 생성)

 

MyBatis?

→ 자바와 RDBMS 프로그래밍을 돕는 프레임워크.

JDBC로 처리하는 코드 매핑을 대신해 준다.

 

반응형 웹?

→ 다양한 디바이스와 다양한 크기의 화면에서 일관되게 잘 작동하는 웹페이지

 

HTML5?

→ 시멘틱 태그를 사용해서 태그명이 알기 쉽고, 생산성이 향상된다.

기존의 모든 문서타입과 호환됨.

 

로드밸런싱?

→ 하나의 서버가 처리해야 할 업무와 요청을 여러 대의 서버로 나누어 처리하는 것. 부하 분산!

 

클라우드 컴퓨팅?

→ 스토리지, 서버, 애플리케이션 등을 인터넷을 통해 제공하는 구축 모델. 물리적 장소가 아니다.

 

PaaS?

→ 서비스형 플랫폼. 애플리케이션 서비스를 구축할 수 있는 플랫폼을 서비스로서 제공한다.

미리 개발 환경을 구축해 놓고 개발에만 집중할 수 있게!

 

프레임워크?

→ 자주 쓰이는 기능들을 모아놓은 클래스의 모음. 라이브러리와 다른 점은 설계도 틀도 제공한다는 점.

스프링은 자바를 위한 오픈소스 프레임워크

'부트캠프(END) > 보충' 카테고리의 다른 글

KEEP  (0) 2022.09.06
session vs cookie? - 수정 예정  (0) 2022.07.12
[보충] getInstance() & 추상 클래스, 싱글톤 패턴  (0) 2022.07.03

댓글()