Post

자바 웹개발 기술면접 기출/예상문제 및 답안

자바 웹개발 기술면접 기출/예상문제 및 답안

API의 약자와 뜻?

API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다. 대표적인 API로는 윈도API, 자바API, DirectX, OpenGL 등이 있다.

소프트웨어 인터페이스

소프트웨어 인터페이스는 여러 종류의 여러 수준의 인터페이스를 가리킬 수 있다. 즉, 운영 체제는 하드웨어와 인터페이스(접속)할 수 있다. 이 운영 체제에서 실행되는 응용 소프트웨어나 프로그램은 스트림을 통해 상호작용할 수 있으며 객체 지향 프로그램들의 경우 응용 프로그램 내의 오브젝트들은 메소드를 통해 상호작용해야 할 수 있다.

인터페이스(일반)

인터페이스(interface)는 컴퓨팅에서 컴퓨터 시스템끼리 정보를 교환하는 공유 경계이다. 이러한 교환은 소프트웨어, 컴퓨터 하드웨어, 주변기기, 사람 간에 이루어질 수 있으며, 서로 복합적으로 이루어질 수도 있다. 터치스크린과 같은 일부 컴퓨터 하드웨어 장치들은 인터페이스를 통해 데이터를 송수신할 수 있으며 마우스나 마이크로폰과 같은 장치들은 오직 시스템에 데이터를 전송만 하는 인터페이스를 제공한다

인터페이스(자바)

인터페이스(interface)는 자바 프로그래밍 언어에서 클래스들이 구현해야 하는 동작을 지정하는데 사용되는 추상형이다. 이들은 프로토콜과 비슷하다. 인터페이스는 interface라는 키워드를 사용하여 선언하며, 메소드 시그너처와 상수 선언(static과 final이 둘 다 선언되는 변수 선언)만을 포함할 수 있다.

자바 인터페이스를 사용하는 이유?

다형성을 사용할 수 있고, 추상화 레벨이 높아진다. 이로 인해 약한 결합도를 유지하게 할 수 있다. 약한 결합도는 유지보수를 쉽게 해준다. 추가적으로 인터페이스를 사용함으로써 자바에 존재하지 않는 다중 상속과 유사한 형태의 프로그래밍이 가능하다.

IoT: Internet of Things

인터넷을 기반으로 모든 사물을 연결하여 사람과 사물, 사물과 사물 간의 정보를 상호 소통하는 지능형 기술 및 서비스

핀테크

핀테크(FinTech)는 금융(Financial)과 기술(Technology)의 합성어로, 금융과 IT의 융합을 통한 금융서비스 및 산업의 변화를 통칭한다. 금융서비스의 변화로는 모바일, SNS, 빅 데이터 등 새로운 IT기술 등을 활용하여 기존 금융기법과 차별화된 금융서비스를 제공하는 기술기반 금융서비스 혁신이 대표적이며 최근 사례는 모바일뱅킹과 앱카드 등이 있다. 애플페이, 삼성페이 등..

DDL 데이터 정의 언어(영어: Data Definition Language, DDL)

컴퓨터 사용자 또는 응용 프로그램 소프트웨어가 컴퓨터의 데이터를 정의하는 컴퓨터 언어 또는 컴퓨터 언어 요소이다. Document Type Definition (DTD)는 순수한 데이터 정의 언어의 예이다 (DTD는 XML의 맥락에서 사용된다).  CREATE, ALTER, DROP..

DML 데이터 조작 언어(영어: Data Manipulation Language, DML)

데이터베이스 사용자 또는 응용 프로그램 소프트웨어가 컴퓨터 데이터베이스에 대해 데이터 검색, 등록, 삭제, 갱신을 위한, 데이터베이스 언어 또는 데이터베이스 언어 요소이다. 2007년 현재 가장 대중적 데이터 조작 언어는 SQL 데이터 조작 언어이다. SQL은 관계형 데이터베이스에 대해 검색 및 업데이트 등의 데이터 조작을 위해 사용된다. CRUD(SELECT, INSERT, UPDATE, DELETE)

DCL 데이터 제어 언어(영어: Data Control Language, DCL)

데이터베이스에서 데이터에 대한 액세스를 제어하기 위한 데이터베이스 언어 또는 데이터베이스 언어 요소이다. 권한 부여(GRANT)와 박탈(REVOKE)이 있다.

SEO

각종 검색 엔진에 내 글을 효과적으로 싣고 널리 알릴 수 있도록 웹 페이지를 구성해서 검색 결과의 상위에 오르게 작업. 웹 페이지와 관련된 검색어로 검색한 검색 결과 상위에 오르게 하는 것은 웹 방문객 수를 늘리고 내 글을 알리기 위한 하나의 방법이므로 효과적인 인터넷 마케팅 방법 중의 하나이다. 적절한 도메인 이름을 설정하거나, 웹 표준을 준수하면서 포스트의 가독성과 웹페이지 로딩 속도를 최대로 끌어 올리고, 메타태그 작성이나 링크의 적극적 활용, 본문 태그, 부제목 태그 등 적절한 키워드를 선택해서 사용해야 한다.

Log4j

log4j는 프로그램을 작성하는 도중에 로그를 남기기 위해 사용되는 자바 기반 로깅 유틸리티이다. 디버그용 도구로 주로 사용되고 있다.

AWS (Amazon Web Service)

아마존 웹 서비스(영어: Amazon Web Services; AWS)는 아마존닷컴이 제공하는 각종 원격 컴퓨팅 서비스(웹 서비스)이다. 아마존 웹 서비스는 다른 웹 사이트나 클라이언트측 응용 프로그램에 대해 온라인 서비스를 제공하고 있다. 이러한 서비스의 상당수는 최종 사용자에 직접 공개되는 것이 아니고, 다른 개발자가 사용 가능한 기능을 제공하는 플랫폼을 제공하는 PaaS이다. 아마존 웹 서비스의 각종 서비스는 REST 프로토콜 및 SOAP 프로토콜을 통해 접근, 이용 및 관리가 가능하다. 비용은 실제 사용량에 따라 결정되며, 일부 서비스의 경우 미리 고정된 금액을 지불하는 형태도 있다.

REST (Representational State Transfer)

레스트, Representational State Transfer, REST 확장성 마크업 언어(XML) 파일로 된 웹 페이지를 읽어서 원하는 정보를 수집하는 기능. 웹 페이지를 만드는 사람은 주기적으로 내용을 개정하고 사용자는 그 페이지의 URL만 알면 웹 브라우저로 읽어서 정보를 얻을 수 있다. 하이퍼텍스트 전송 규약(HTTP)과 XML을 포함한 웹 기술 및 프로토콜을 사용하는 구조적 형태로서 단순 객체 접근 통신 규약(SOAP)보다 사용이 간편하고, 사이트 내용을 기술하는 RSS(RDF Site Summary)의 정보 편집 기능과 유사하다. RSS는 자원 기술 개념(RDF)을 사용한다.

SOAP (Simple Object Access Protocol)

단순 객체 접근 프로토콜, 單純客體接近-, Simple Object Access Protocol, SOAP 확장성 마크업 언어(XML)와 하이퍼텍스트 전송 규약(HTTP) 등을 기반으로 하여 다른 컴퓨터에 있는 데이터나 서비스를 호출하기 위한 통신 규약. 마이크로소프트사와 유저랜드 소프트웨어(UserLand Software)사, 디벨롭멘터(Developmentor)사가 중심이 되어 개발하였다. SOAP에 의한 통신에서는 XML 문서에 봉투(envelope)로 불리는 부대 정보가 붙은 메시지를 HTTP 등의 프로토콜로 교환한다. 서비스를 이용하는 클라이언트와 서비스를 제공하는 서버 쌍방이 SOAP의 생성/해석 엔진을 가지는 것으로 다른 환경 간에서의 객체 호출을 가능하게 하고 있다. SOAP 1.1에서는 실제로 데이터의 송수신에 사용하는 하위 프로토콜은 현재 널리 보급되어 있는 HTTP나 간이 전자 우편 전송 프로토콜(SMTP), 파일 전송 규약(FTP) 등에서 선택할 수 있게 되어 있어 기업 간에 이용하는 경우에도 방화벽 등을 안전하게 통과할 수 있다. 월드 와이드 웹 컨소시엄(W3C)에 의해 표준이 만들어진다. SOAP 메시지의 생성 엔진은 ‘SOAP 프락시’, 해석 엔진은 ‘SOAP 리스너, SOAP에 의해 외부로부터 이용 가능한 부품화된 웹 기반의 응용 프로그램은 ‘웹 서비스’라고 불린다. 인터넷상에서 각 회사가 제공하고 있는 웹 서비스를 모아 누구라도 검색, 조회할 수 있도록 하는 것이 UDDI이다.

전자정부프레임워크

스프링 Java 기반의 웹 프레임워크. 로드 존슨(Rod Johnson)이 2002년에 선보인 소스 코드를 시작으로 점점 발전하게 되었다. 2003년 6월에 최초로 공개되었다. 2018년 4월 기준 최신 버전은 5.0.5. Java Virtual Machine 위에서 돌아가며, 아파치 라이선스 2.0을 따르는 오픈 소스 프레임워크이다. 한국에서는 전자정부표준프레임워크의 기반 기술이며 한국정보화진흥원에서 공공기관의 웹 서비스 제공 시 권장하고 있다. 스프링의 특징: POJO(Plain Old Java Object), AOP(Aspect Oriented Programming), 의존성 주입(Depenency Injection), 제어 반전(Inversion of Control), 생명주기, 다양한 서비스 사용 이유(특징과 연관): 변경에 대한 적응력, 엔터프라이즈급 서비스를 위한 모듈 제공, 많은 예제, Bean 관리

오버로딩

같은 이름의 함수를 여러 개 정의하고, 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출에 응답하게 한다. 오버라이딩: 상속 관계에 있는 클래스 간에 같은 이름의 메소드를 정의하는 기술

웹 애플리케이션 서버(Web Application Server)

웹 애플리케이션 서버(Web Application Server, 약자 WAS)는 웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크이다. 인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어(소프트웨어 엔진)으로 볼 수 있다. 웹 애플리케이션 서버는 동적 서버 콘텐츠를 수행하는 것으로 일반적인 웹 서버와 구별이 되며, 주로 데이터베이스 서버와 같이 수행이 된다. 한국에서는 일반적으로 “WAS” 또는 “WAS S/W”로 통칭하고 있으며 공공기관에서는 “웹 응용 서버”로 사용되고, 영어권에서는 “Application Server” (약자 AS)로 불린다.

디자인 패턴

소프트웨어 개발 방법에서 사용되는 디자인 패턴은, 프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것이다. 알고리즘과 같이 프로그램 코드로 바로 변환될 수 있는 형태는 아니지만, 특정한 상황에서 구조적인 문제를 해결하는 방식을 설명해 준다.

포트

인터넷 프로토콜 스위트에서 포트(port)는 운영 체제 통신의 종단점이다. 이 용어는 하드웨어 장치에도 사용되지만, 소프트웨어에서는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다. 주로 포트를 사용하는 프로토콜은 전송 계층 프로토콜이라 하며, 예를 들어 전송 제어 프로토콜(TCP)와 사용자 데이터그램 프로토콜(UDP)가 있다. 각 포트는 번호로 구별되며 이 번호를 포트 번호라고 한다. 포트 번호는 IP 주소와 함께 쓰여 해당하는 프로토콜에 의해 사용된다.

포트 번호는 크게 세 종류로 구분된다. 0번 ~ 1023번: 잘 알려진 포트 (well-known port), 1024번 ~ 49151번: 등록된 포트 (registered port), 49152번 ~ 65535번: 동적 포트 (dynamic port)

잘 알려진 포트 번호의 대표적 예는 다음과 같다. 20 : FTP(data) 21 : FTP(제어) 22 : SSH 23 : 텔넷 53 : DNS 80 : 월드 와이드 웹 HTTP 119 : NNTP 443 : TLS/SSL 방식의 HTTP

클라우드 컴퓨팅

클라우드 컴퓨팅(cloud computing)은 인터넷 기반 컴퓨팅의 일종으로 정보를 자신의 컴퓨터가 아닌 인터넷에 연결된 다른 컴퓨터로 처리하는 기술을 의미한다. 공유 컴퓨터 처리 자원과 데이터를 컴퓨터와 다른 장치들에 요청 시 제공해준다. 구성 가능한 컴퓨팅 자원(예: 컴퓨터 네트워크, 서버, 스토리지, 애플리케이션, 서비스)에 대해 어디서나 접근이 가능한, 주문형 접근을 가능케하는 모델이며 최소한의 관리 노력으로 빠르게 예비 및 릴리스를 가능케 한다. 클라우드 컴퓨팅과 스토리지 솔루션들은 사용자와 기업들에게 개인 소유나 타사 데이터 센터의 데이터를 저장, 가공하는 다양한 기능을 제공하며 도시를 거쳐 전 세계로까지 위치해 있을 수 있다. 클라우드 컴퓨팅은 전기망을 통한 전력망과 비슷한 일관성 및 규모의 경제를 달성하기 위해 자원의 공유에 의존한다.

AOP 용어

  • join point: 포인트 컷 후보자라고도 불리며, AOP를 통해 advice를 할당할 메소드 후보 전체를 통칭
  • point cut: 조인 포인트 중 advice를 할당할 메소드를 추려내기 위한 표현식
  • target: 포인트 컷 표현식에 의해 조인 포인트 중에서 선정된 메소드들을 통칭
  • advice: target에 할당할 메소드(특정 작업)

모델-뷰-컨트롤러(Model–View–Controller, MVC)

모델-뷰-컨트롤러(Model–View–Controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다. - 컨트롤러는 모델에 명령을 보냄으로써 모델의 상태를 변경할 수 있다. (예: 워드 프로세서에서 문서를 편집하는 것) 또, 컨트롤러가 관련된 뷰에 명령을 보냄으로써 모델의 표시 방법을 바꿀 수 있다. (문서를 스크롤하는 것) - 모델은 모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보한다. 이와 같은 통보를 통해서 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가·제거·수정할 수 있다. 어떤 MVC 구현에서는 통보 대신 뷰나 컨트롤러가 직접 모델의 상태를 읽어 오기도 한다. - 뷰는 사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어 온다.

maven

Maven은 프로젝트의 전체적인 라이프 사이클을 관리하는 도구이며, 많은 편리함과 이점이 있어 널리 사용되고 있다.  Maven은 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데에 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 다운로드한다.

직렬화

자바 직렬화란 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 기술과 바이트로 변환된 데이터를 다시 객체로 변환하는 기술(역직렬화)을 아울러서 이야기합니다. 시스템적으로 이야기하자면 JVM(Java Virtual Machine 이하 JVM)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술과 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM으로 상주시키는 형태를 같이 이야기합니다.

Rest API

Rest란 어떤 자원에 대해 CRUD(Create, Read, Update, Delete) 연산을 수행하기 위해 URI(Resource)로 요청을 보내는 것으로, Get, Post 등의 방식(Method)을 사용하여 요청을 보내며, 요청을 위한 자원은 특정한 형태(Representation of Resource)으로 표현됩니다. 예를 들어, 우리는 게시글을 작성하기 위해 http://localhost:8080/bbs/insertBoardInfo라는 URI에 POST방식을 사용하여 JSON형태의 데이터를 전달할 수 있습니다. 위와 같이 CRUD 연산에 대한 요청을 할 때, 요청을 위한 Resource(자원, URI)와 이에 대한 Method(행위, POST) 그리고 Representation of Resource(자원의 형태, JSON)을 사용하면 표현이 명확해지므로 이를 REST라 하며, 이러한 규칙을 지켜서 설계된 API를 Rest API 또는 Restful한 API라고 합니다.

스프링 부트의 장점

스프링 부트가 일반 스프링 프레임워크에 비해 가지는 장점: 자주 사용하는 설정이 미리 구현되어 있어 간편하게 초기 설정을 할 수 있다. WAS가 미리 내장되어 있어 별도의 WAS를 설치하여 연동할 필요가 없으며 배포시에도 내장 WAS를 포함해 바로 실행 가능하도록 배포할 수 있다.

AJAX

Ajax: Ajax(Asynchronous JavaScript and XML, 에이잭스)는 비동기적인 웹 애플리케이션의 제작을 위해 아래와 같은 조합을 이용하는 웹 개발 기법이다.표현 정보를 위한 HTML (또는 XHTML) 과 CSS 동적인 화면 출력 및 표시 정보와의 상호작용을 위한 DOM, 자바스크립트 웹 서버와 비동기적으로 데이터를 교환하고 조작하기 위한 XML, XSLT, XMLHttpRequest (Ajax 애플리케이션은 XML/XSLT 대신 미리 정의된 HTML이나 일반 텍스트, JSON, JSON-RPC를 이용할 수 있다). DHTML이나 LAMP와 같이 Ajax는 자체가 하나의 특정한 기술을 말하는 것이 아니며, 함께 사용하는 기술의 묶음을 지칭하는 용어이다. 실제로 AFLAX와 같이 사실상 Ajax에 바탕을 두고 있는 유사/복합 기술들이 속속 나타나고 있다.

테스트베드

테스트베드(testbed)는 과학 이론, 계산 도구, 신기술에 대해 엄격하고 투명하고 재현 가능한 테스트를 수행하기 위한 플랫폼이다. 이 용어는 실험적인 연구 및 신제품 개발 플랫폼과 환경을 기술하기 위한 수많은 원리들을 따른다. 예) 아레나 웹 브라우저는 HTML, 종속형 시트(CSS), PNG, libwww 테스트를 위해 W3C와 유럽 입자 물리 연구소가 개발하였다. 아레나는 새로운 웹 표준들을 테스트하기 위해 아마야로 대체되었다. 라인 모드 브라우저는 샘플 및 테스트 애플리케이션으로서 libwww 라이브러리와 통신하기 위한 새로운 기능을 갖추었다. libwww는 또한 개발 중인 네트워크 프로토콜을 테스트하거나 새로운 프로토콜을 시험하기 위해 개발되었다.

This post is licensed under CC BY 4.0 by the author.