인턴 프로젝트
DB 정규화
- Db 정규화란 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하기위해 릴레이션을 여러 개로 분리하는 과정입니다.
DB 반정규화
- 데이터베이스 성능 향상을 위해 중복을 허용하고 조인을 줄이는 것
DB 이상현상
- 데이터베이스 이상 현상에는 삽입이상, 갱신이상, 삭제이상이 존재합니다.
Mybatis를 사용한 이유가 있나요?
- 빠른 시간내에 프로젝트를 완성 시켜야 했기 때문에 다수의 팀원들이 사용 경험이 있었던 mybatis를 선택하게 되었습니다. 또한 작성해야 할 쿼리들이 복잡했기 때문에 복잡한 쿼리문의 작성이 가능한 mybatis를 선택했습니다.
Jpa와 My batis의 차이점을 설명해 주세요
- Jap는 orm의 기술 표준이며 CRUD 메소드를 기본적으로 제공하기에 쿼리를 만들지 않아도 된다는 특징이 있습니다. Mybatis는 java에서 sql mapper를 지원해주는 프레임워크로 sql을직접 작성해 수행 결과를 객체와 매핑한다는 특징이 있으며 xml로 쿼리문을 작성합니다.
ORM 이란 무엇인가요 ?
- ORM이란 객체와 DB테이블이 매핑을 이루는 것을 말한다. 즉 객체가 테이블이 되도록 매핑 시켜주는 것을 말함
Ajax
- 전체 페이지를 고치지 않고도 페이지의 일부분만을 위한 데이터 로드 기법
- 자바스크립트를 사용한 비동기 통신 방식
인턴십을 하면서 배운 문서화 작업에는 어떠한 것들이 있었나요?
- 계획서 및 설계서와 같은 문서화 작업을 진행했습니다. 설계서는 화면 설계서나 api 명세서와 같은 것을 주로 작성했으며 양식은 따로 없었고 자유롭게 작성하요 보고하라고 하셨습니다.
웹 렌더링에 대해서 설명해 주세요.
- 브라우저 렌더링은 HTML, CSS, JavaScript 등의 웹 페이지 자원을 브라우저가 화면에 그리는 과정을 말합니다.
- Dom 트리를 생성합니다.
- CSS 파싱을 통해 CSSOM 트리를 생성하고
- DOM트리와 CSSSOM 트리를 결합하여 렌더 트리를 사용하여 최종 사용자 웹 페이지를 생성 합니다.
http에 대해서 설명해 주세요
- 웹상에서 서버와 클라이언트 사이의 통신을 위한 프로토콜
Https
- 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 ssl/ TLS 계층을 넣은 신뢰할 수 있는 http 요청을 말합니다.
- Ssl / Tls 는 전송 계층에서 보안을 제공하는 프로토콜
스프링 부트란
- 개발의 간편화를 최우선으로하는 자바 프레임워크입니다.
- spirng mvc 기반의 자바 웹 개발을 더 쉽게 만들어주는 특징이 있습니다.
스프링 부트를 쓰면 좋은 점
- 편리함과 생산성이 가장 큰 장점입니다.
Spring boot와 Spring mvc 차이점
- spring mvc는 모델-뷰-컨트롤러 디자인 패턴을 사용하는 일관된 구조를 제공하면서 자바 웹 개발을 쉽게 하게 해줍니다.
- 스프링부트는 spring mvc를 포함하는 spring 프레임워크를 가지고 웹 개발을 하면서 가지는 환경설정, 의존성관리를 더 간편하고 쉽게 개발하게 해줍니다.
Spring Boot와 Spring Framework의 차이점을 설명해주세요.
- 가장 큰 차이점은 Auto Configuration의 차이인 것 같습니다. Spring은 프로젝트 초기에 다양한 환경설정을 해야 하지만,
- Spring Boot는 설정의 많은 부분을 자동화하여 사용자가 편하게 스프링을 활용할 수 있도록 돕습니다.
- spring boot starter dependency만 추가해주면 설정은 끝나고, 내장된 톰캣을 제공해 서버를 바로 실행할 수 있습니다.
Spring MVC에 대해 설명해주세요.
-
MVC는 Model, View, Controller의 약자이며, 각 레이어간 기능을 구분하는데 중점을 둔 디자인 패턴입니다.
-
Model은 데이터 관리 및 비즈니스 로직을 처리하는 부분이며, (DAO, DTO, Service 등)
-
View는 비즈니스 로직의 처리 결과를 통해 유저 인터페이스가 표현되는 구간입니다
-
Controller는 사용자의 요청을 처리하고 Model과 View를 중개하는 역할을 합니다.
VO와 BO, DAO, DTO에 대해 설명해주세요.
- DAO(Data Access Object) DB의 데이터에 접근을 위한 객체를 말합니다. (Repository 또는 Mapper에 해당)
- BO(Business Object) 여러 DAO를 활용해 비즈니스 로직을 처리하는 객체를 말합니다. (Service에 해당)
- DTO(Data Transfer Object) 각 계층간의 데이터 교환을 위한 객체를 말합니다. (여기서 말하는 계층은 Controller, View, Business Layer, Persistent Layer)
VO (Value Object) 실제 데이터만을 저장하는 객체를 말합니다.
스프링부트 오토 컨피규레이션
- 빌드하고자 하는 애플리케이션이 어떤 종류의 애플리케이션인지 탐지해서 필요로하는 컴포넌트들을 자동으로 설정해 준다.
스프링부트 스타더 디펜던시
- 스프링부트에서 의존성 관리 문제를 해결해주는 역할을 합니다.
캡스톤 프로젝트
Retrofit 라이브러리에 대해서 설명해 주세요
- 안드로이드에서 rest api 통신연결을 위해 개발된 라이브러리입니다. 간단한 구현과 빠른 성능 특징입니다. 실제로 이전 통신 방식인 httpurlconnection 방식에 비해서 어노테이션 작성을 통한 가독성 증가와 connection 및 stream과 인코딩 설정을 라이브러리로 넘겨서 설정하기 때문에 구현 방식이 간단합니다.
주제를 선정은 누구의 아이디어 인가요?
- 팀장의 아이디어 였습니다. 모든 팀원들이 각자 아이디어를 제시 했고 그 중에서 결식 아동을 위한 가맹점 정보와 선한 영향력 캠페인에 참여하는 가맹점에 대한 정보를 동시에 제공하는 모바일 앱 서비스가 없다는 점에서 차별점을 두었기 때문에 선택하게 되었습니다.
개발을 하면서 어려웠던 점이 있었나요?
- Rest api 연동을 위한 retrofit 통신 개발 부분이 가장 어려웠습니다.
JWT가 뭔지 설명해주세요
- JWT는 서버와 클라이언트 간 정보를 주고 받을 때 Http 리퀘스트 헤더에 JSON 토큰을 넣은 후 서버는 별도의 인증 과정없이 헤더에 포함되어 있는 토큰 정보를 통해 인증합니다.
RESTFUL API
- http 프로토콜을 기반으로 하는 웹 서비스 아키텍처
- 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 것을 의미
- URL을 통해 자원을 명시하고 HTTP 메소드를 통해 해다 자원에 대한 CRUD를 적용
- 표준 HTTP 메소드(GET, POST, PUT, DELETE)를 사용하여 서버와 통신
AWS란?
aws는 Amazon Web Services의 약자로, 아마존닷컴에서 운영하는 Cloud Computing Platform이다.
다른 웹 사이트나 클라이언트측 응용 프로그램에 대해 온라인 서비스를 제공하고 있다.
교육원 홈페이지 개발 프로젝트
Jsp와 my sql을 사용한 이유가 무엇인가요?
- 학과 홈페이지를 개발했던 기술 스택이 jsp와 my sql이었습니다. 이러한 이유로 담당 지도 교수님께서 웹 개발에 대한 경험을 처음 쌓기에는 해당 기술을 사용해서 하는 것도 괜찮을 것이라고 하여서 jsp와 mysql을 사용하여 백엔드 부분을 개발했습니다.
구글 로그인을 없애고 다시 원래의 방식으로 바꾸게 된 이유가 있을까요?
- 구글auth 에서 ssl 프로코콜 정책이 바뀌어서 서버 컴에 인증서를 받아야 했습니다 하지만 학과 서버 앞단에는 학교 전산원이 있다보니 인증서 관리주체에 대한 문제가 있어서 원래의 방식으로 다시 복구하게 되었습니다.
Ssl 프로토콜이 무엇인가요?
- Ssl / Tls 는 전송 계층에서 보안을 제공하는 프로토콜
JSP
- JavaServer Pages 의 약자이며
- HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구이다.
개발하면서 어려웠던 점
- 개발 중간에 요청사항이 바뀌는 점이 가장 어려웠 던 것 같습니다. 하지만 요청사항들을 완료하기 위해 책임감을 가지고 프로젝트를 완료 했으며 이로 인해 개발자로서의 책임 의식을 배우게 되었습니다.
Ajax
- 전체 페이지를 고치지 않고도 페이지의 일부분만을 위한 데이터 로드 기법
- 자바스크립트를 사용한 비동기 통신 방식
- 연속적인 데이터 요청 시 서버 부하가 증가하여 페이지가 느려짐
동기
- 결과가 동시에 이루어지는 것
- 결과가 주어질 때 까지 아무것도 하지 못하고 대기해야 함
비동기
- 결과가 주어지는 시간이 걸리더라도 그 시간동안 다른 작업을 해서 자원을 효율적으로 이용