기술면접 정리
- 자바의 특징을 말하시오...
- 객체지향언어
- 함수적 스타일 코딩을 지원
- JVM(Java Virtual Machine)위에서 돌아가기 때문에 이식성이 좋다(OS 상관 X)
- Garbage Collector로 인해 메모리를 자동으로 관리
- 동적로딩
- 오픈소스 언어
- JAVA를 만든 사람?
- 제임스 고슬링
- 변수란?
- 하나의 값을 저장할 수 있는 메모리 공간
- 객체와 클래스의 차이점?
- Class : 객체를 만들어 내기 위한 설계도(or 틀), 연관된 변수와 메소드의 집합
- Object : SW세계에 구현할 대상, 클래스의 인스턴스라고도 함
- Instane : 객체를 실체화 한것, 실체화된 인스턴스는 메모리가 할당됨.
- JAVA의 메모리 영역
- Method 영역 : 스태틱 변수, 전역 변수, 코드에 사용되는 클래스 정보
- Stack 영역 : 지역변수, 함수 등이 할당됨, Last In First Out(리포 방식)
- Heap 영역 : new 연산자를 통해 동작할당된 객체들이 저장, 가비지 콜렉션이 메모리를 관리
- Abstarct Method, Abstract Class
- 추상 메소드 : 정의부만 있고 구현부는 비어있는 메소드
- 추상 클래스. : 추상 메소드를 적어도 1개 이상 보유하고 있는 클래스, 자식 클래스에서 오버라이딩이 필요.
- JDBC : 자바에서 데이터베이스에 접속할 수 있도록 해주는 자바 API, 자료를 쿼리하거나 업데이트 하는 방법
- 직렬화 : 객체를 스트림을 통해 인풋,아웃풋하기위해 배열로 변환하는 것
- 리플렉션 : 다이나믹 랭귀지의 특징, 프레임워크에서 유연성이 있는 동작을 위해 주로 사용, 컴파일러를 무시하고 런타임시 메모리에 올라간 클래스나 메소드 정의를 동적으로 찾아서 조작 가능할 수 있는 일련의 행위
- 서블릿, JSP 차이
- 서블릿은 자바소스에 html코드가 삽입
- JSP는 html코드에 자바코드가 삽입
- 서블릿 클래스는 컴파일 과정, 등록과정이 필요, JSP는 필요X
- request 객체 : 클라이언트에서 서버로 넘어오는 데이터를 전달받기위한 객체
response 객체 : 서버에서 클라이언트로 데이터를 전달하기위한 객체 - 쿠기 : 클라이언트에서 데이터를 저장, 보안은 취약하나 속도가 빠름
세션 : SID를 식별자로 서버에 데이터를 저장, 보안 강력, 로그인 인증에 사용 - XML
- W3C(월드와이드웹 컨소시엄)에서 권장되는 다목적 마크업 언어
- REQUEST 전송 방식
- GET : URL의 쿼리 문자열에 데이터를 같이 전달하는 방식, 보안에 취약
- POST : 헤더에 데이터를 넣어 보내는 방법, 길이 제한이 없고, GET보다는 느림
- DELETE : restful에서 삭제 기능할 때 사용
- PUSH(PUT) : restful에서 수정 작업할 때 사용.
- RESTFUL : URL을 보고 어떤 작업을 하는지 알 수 있게끔 데이터하나당 URL을 갖도록 작업하는 방식
- MVC : 영역간의 결합도를 최소화한 디자인 패턴, 분업화가 쉬워지고 유지보수가 용이함.
- Model : 데이터 처리 및 접근을 담당
- View : 클라이언트에 보여지는 화면을 담당
- Controller : 모델과 뷰를 제어
- okky, stackoverflow : 개발자 커뮤니티 사이트
- react
- UI를 위한 JS라이브러리
- Facebook이 만든 Javascript 라이브러리
- 프레임워크 ㄴㄴ 라이브러리 ㅇㅋ?
- 특징3개
- Component : UI를 구성하는 개별적인 뷰 단위
- JSX : react를 위한 자바스크립트 문법
- Vital DOM : 가상돔 기존 돔의 비효율적인면을 고려하여 개발됨
- aop
- 기능을 핵심 비지니스와 공통 모듈로 구분
- 애플리케이션 전반에 걸쳐 사용되는 기능을 재사용하도록 지원
- 관점 지향 프로그래밍
- 어드바이스 : 실지적으로 부가기능을 담은 구현체
- 포인트컷 : 부가기느잉 적용될 메소드를 선정하는 방법
- 조인 포인트 : 어드바이스가 적용될 수 있는 위치
- 프록시 : 타겟을 감싸고 타겟의 요청을 대신 받아주는 랩핑 오브젝트
- 인트로덕션 : 타겟 클래스에 코드 변경없이 신규 메소드나 멤버변수를 추가하는 기능
- 위빙 : 지정된 객체에 애스팩트를 적용해서 새로운 프록시 객체를 생성하는 과정
- 사용되는 경우 : 간당한 메소드 성능 검사, 트랜잭션 처리, 등등..
- di : 의존성 주입
- 의존성 주입은 스프링에서 잘 지원해주는 기능이다.
- 객체가 아니라 프레임워크에 의해 객체의 의존서잉 주입되는 설계 패턴
- 프레임워크에 의해 동적으로 주입되므로 객체들 간의 결합이 줄어듬
- 종속성 감소, 재사용상 증가, 가독성 증가 등의 장점이 있다.