간단 기술개념 질문답변
얕은 복사 / 깊은 복사?
→ 얕은 복사는 주소값만을 복사하여 복사본이 원본에도 영향을 준다.
깊은 복사는 아예 다른 인스턴스가 된다.
오버로딩 / 오버라이딩?
→ 오버로딩은 같은 이름의 메서드를 매개변수와 리턴형을 달리 하여 여러 개 정의하는 것
오버라이딩은 상속받은 메서드를 변경해서(매개변수, 리턴형 동일) 정의하는 것
추상 클래스 / 인터페이스?
→ 추상 클래스는 상속을 받아 기능을 이용하고 확장하는 데에 목적.
인터페이스는 함수의 껍데기만 존재하며 구현을 강제한다.
해당 인터페이스를 구현한 객체들에 대해 동일한 동작을 약속한다.
제네릭?
→ 메서드와 컬렉션 클래스에서 컴파일시에 타입을 체크하는 기능을 한다.
객체 타입의 안정성을 높이고 형변환의 번거로움을 낮춘다.
예외 처리?
→ 비정상적인 종료를 방지하기 위해 사용한다. 에러를 해결하는게 아니라 건너뜀.
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 |