면접은 항상 떨린다.. 인성 면접은 나 자신에 대해 솔직하게 표현을 하면 된다고 생각을 해서 정리를 따로 하지 않는다.
이렇게 정리를 하면 알게 모르게 내 자신의 지식이 쌓여져 있는 것을 볼 수가 있을 것이다!
1. VO와 DTO, BO, DAO란?
: DAO(Data Access Object) - DB에 접근하여 실제 데이터를 조회 또는 조작하는 클래스(Repository 또는 Mapper에 해당)
: BO(Business Object) - 여러 DAO를 활용해 비즈니스 로직을 처리하는 클래스, Service에 해당
: DTO( Data Transfer Object == VO(Value Object) ) - 데이터를 주고 받기 위해 사용되는 클래스
: VO(Value Object) : 실제 데이터만을 저장하는 클래스
2. MVC 패턴 ?
MVC(Model - View - Controller) 패턴은 아키텍쳐를 설게하기 위한 디자인 패턴
Model - 데이터 저장 컴포넌트
View - 사용자 인터페이스(UI) 컴포넌트
Controller - 사용자의 요청을 처리하고 Model과 View를 중개하는 컴포넌트
3. Overriding , Overloading
Overriding - 상위 클래스가 가지고 있는 메서드를 하위 클래스에서 재정의하여 사용하는 기술
Overloading - 매개변수의 타입과 개수를 변경하며 같은 이름의 메서드를 여러 개 사용하는 기술
4. 추상 클래스, 인터페이스
: 추상클래스 - 단일 상속, 모든 접근 제어자 사용 가능, 변수와 상수 선언
: 인터페이스 - 다중 구현 가능, public 접근 제어자만 사용 가능, 상수 선언, 추상 메서드만 선언
5. Stack, Queue
: Stack - 후입선출(LIFO - LAST IN FIRST OUT) 가장 늦게 들어온 데이터가 가장 빨리 나온다
- 삽입 연산은 PUSH, 삭제 연산은 POP
- 원소의 삽입, 삭제가 스택의 한 끝에서 이루어짐
: Queue - 선입선출(FIFO - FIRST IN FIRST OUT) 먼저 들어온 데이터가 가장 빨리 나온다
- 삽입은 Enqueue, 삭제는 Dequeue
- 원소의 삽입, 삭제가 다른 끝에서 이루어짐
6. List , ArrayList
: List - 각 요소가 객체이고 요소가 해당 위치에 의해 액세스 되는 순서의 요소 모음, 인터페이스
: ArrayList - 필요할 때 마다 크기가 증가하거나 감소하는 동적 객체 배열, 클래스
7. 자바 특징
1) 운영체제에 독립적이다
2) 객체지향 프로그래밍의 대표적 언어 (캡슐화, 상속, 다형성 등의 특징)
3) 보안성이 뛰어나다
4) Garbage Collector가 자동적으로 메모리를 관리함
5) 분산 환경에 적합하여 네트워크 수행 능력이 뛰어나다
- 캡슐화 : 변수와 메서드를 하나의 단위로 묶는 것.
- 상속 : 부모클래스의 속성과 메서드를 자식클래스가 이어 받는 것
extends는 모든 메서드를 오버라이딩 해야하는 단점
- 다형성 : 하나의 클래스나 메서드가 다양한 방식으로 동작이 가능한 것 (오버로딩, 오버라이딩)
8. OOP
객체지향형 프로그래밍 - 코드의 재사용이 가능, 오류 발생 가능성 저하, 안정성 높음
9. Session, Cookie
Session - 특정 웹 사이트에서 사용자가 머무르는 기간 or 한 명의 사용자의 한번의 방문을 의미
Cookie와는 다르게 개인 아이디, 비밀번호와 같은 웹 사이트의 데이터는 Server에 저장되거나
웹 브라우저의 캐시에 저장되여 브라우저가 닫히거나 서버에서 삭제 시 사라진다.
Cookie - 사용자 정보를 유지할 수 없다는 HTTP 고유의 한계를 극복하는 방법
웹 사이트의 방문 기록을 남겨 사용자와 웹사이트 사이를 매개해 주는 정보
사용자가 특정 웹 서버에 접속할 때, 생성되는 개인 아이디, 비밀번호, 방문 사이트의 정보를 담은 임시 파일
10. JOIN
: INNER JOIN(내부조인) - 키 값이 있는 테이블 컬럼 값을 비교 후 조건에 맞게 값을 가져옴(EQUI JOIN)
: CROSS JOIN(교차조인) - 조인되는 두 테이블을 곱집합을 반환
: OUTER JOIN - 조인하는 여러 테이블에서 한 쪽에는 데이터가 있고 한 쪽에는 데이터가 없는 경우
데이터가 있는 쪽 테이블의 내용을 전부 출력
11. static
클래스가 로딩 될 때, 메모리 공간을 할당하는 데, 처음 설정된 메모리 공간이 변하지 않음을 의미
객체를 많이 만들어도 해당 변수는 하나만 존재(객체와 무관한 키워드)
12. Generic
클래스에서 사용할 타입을 클래스 외부에서 설정하는 것. 만들어져 있는 클래스를 내가 원하는 형태로 사용 가능
<> 안에 들어갈 수 있는 것은 참조 자료형(클래스, 인터페이스, 배열) 뿐
기본 자료형을 사용하기 위해선 wrapper 클래스를 이용한다.
13. JAVA와 PHYTHON
- 자바는 변수 사용을 위해 데이터 타입을 선언하지만, 파이썬은 변수 유형을 선언할 필요가 없는 동적 유형(런타임 실행)
- 자바는 한 줄을 출력하기 위해 클래스, 함수를 선언하지만, 파이썬은 한 줄만 출력
14. 객체지향, 절차지향
- 절차지향
1) 데이터를을 중심으로 메서드를 구현
2) 컴퓨터의 작업 처리 방식과 유사하기 때문에, 객체지향 언어에 비해 시간적으로 유리
3) 유지보수가 힘들다.
4) 실행 순서가 정해져 있어, 코드의 순서가 바뀌면 동일한 결과를 보장하기 어렵다.
5) 디버깅이 힘들다.
- 객체지향
1) 기능을 중심으로 메서드를 구현
2) 캡슐화, 상속, 다형성
3) 코드의 재활용성이 높고, 절차지향보다 코딩이 간편
4) 디버깅이 쉽다.
5) 절차지향보다 처리속도가 느리고, 설계에 많은 시간 소요가 들어간다.