본문 바로가기
카테고리 없음

It 예상 질문

by 태윤2 2020. 10. 5.

오버로딩 / 오버라이딩 차이 : 
오버로딩 재사용(파라미터 타입 또는 갯수를 제외한 다른것이 같아야함) ex) 생성자 오버로딩,메서드 오버로딩
오버라이딩 재정의다형성 에서 쓰이는 개념이며 상속받은 자식 클래스 오버라이딩을 선택할수 있으며 추상화에서 추상메서드는 구현체에서 반드시 구현해야 하는것.

객체 지향
abstract(추상화) ex)인터페이스 = 공통된 부분(메서드)을 하나로 묶어 인터페이스에 정의하는것
inheritance(상속) = 부모의 메서드,변수,생성자 등을 상속을 받은 자식클래스에서 사용하는것
encapsulation(캡슐화) = 객체의 변수,메서드 등을 하나로 묶어 외부에서 직접 접근을 하지 못하게 하는것 ex) getter,settet
polymorphism(다형성) = 오버라이딩,오버로딩 활용가능 상황에따라 클래스,메서드 등을 다르게 해석 할 수 있음

상속 과 구현의 차이
상속에서의 오버라이딩은 선택이지만 구현에서의 오버라이딩은 필수 그리고 구현은 다중 구현이 가능 상속은 한번에 하나의 부모만 가능

Outer Join은 null 값도 반환 Inner Join은 null값은 반환하지않음

기본형 변수 참조형 변수
bit byte  int long
float double
char boolean
외의 나머지는
참조형 변수 String ,배열,객체 등등

static
키워드 이고 데이터들이 호출되기전에 메모리에 할당되어있음 static 메서드,변수는 객체를 생성하지않아도 호출이 가능.

익명 클래스, 익명 객체
메모리 관리를위해 한번밖에 사용되지 않을 데이터들은 파라미터에 직접 객체를 생성해서 사용 

쓰레드


쓰레드 = 프로세스 동작의 최소 단위
프로세스 = 하나의 동작

하나의 프로세스에서 여러개의 쓰레드가 동작하는 환경을 멀티쓰레딩(Multi Threading) 이라고 한다.

멀티쓰레딩 구현하는 방법

1. Thread 클래스를 상속받아 run() 메서드를 오버라이딩

=> 인스턴스 생성 후 start() 메서드를 호출하여 멀티쓰레딩 실행

2. Runnable 인터페이스를 구현하여 run() 메서드를 오버라이딩

=> start() 메서드가 존재하지 않으므로

Thread 클래스 생성자에 Runnable 인터페이스 구현 객체를 전달한 뒤

Thread 클래스를 통해 start() 메서드로 메서드 내에서 run() 호출됨)

제네릭
데이터타입을 일반화 시키는것  형변환시 데이터타입의 안정성을 보장

스프링이란 무엇인가

스프링 프레임워크(영어: Spring Framework)는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 한다.

경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
스프링은 Plain Old Java Object 방식의 프레임워크이다. 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.
스프링은 제어 반전(IoC : Inversion of Control)을 지원한다. 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.
스프링은 의존성 주입(DI : Dependency Injection)을 지원한다. 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
스프링은 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원한다. 따라서 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
스프링은 영속성과 관련된 다양한 서비스를 지원한다. iBATIS나 하이버네이트 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.
스프링은 확장성이 높다. 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.


세션과 쿠키의 차이
세션은 웹서버에 저장
쿠키는 사용자 컴퓨터에 저장
세션이 보안에 더 용이

제이쿼리란 무엇인가
HTML의 클라이언트 사이드 조작을 단순화 하도록 설계된 크로스 플랫폼의 자바스크립트 라이브러리다.

jQuery란



- 자바스크립트를 이용해 만든 라이브러리 언어

  라이브러리 언어란 자바스크립트로 만들어진 다양한 함수들의 집합



jQuery의 특징

 

- 웹에서 자주 사용하는 기능의 간편화.

  ( ex. 복잡한 Ajax프로그래밍을 손쉽게 처리 가능. )

- CSS 셀렉터  : html의 구조를 명료하고 읽기 쉬운 형태로 사용 및 표현 가능.

- 플러그인 아키텍처 : 중복되는 기능을 최대한 피하고 이미 개발된 수많은 플러그인들을 사용할 수 있음

- 메서드 체인 :  여러 개의 동작(기능)을 한 줄에 나열하여 임시 변수의 사용을 최소화 하여 불필요한 코드의 반복을 피할 수 있습니다.

- 크로스 브라우저 지원 : 브라우저별로 처리 방법이 다른 이벤트 처리나 함수들의 문장을 하나의 표현으로 사용가능.

 

 jQuery API 구조

 

- jQuery CORE : jQuery()함수가 핵심

- Selectors : 조작을 원하는 HTML노드를 선택

- Attributes / CSS : 선택한 노드의 속성값을 가져오거나 변경

- Traversing : DOM에 접근하여 원하는 노드를 찾는 방법을 제공

- Manipulation : DOM에 대해 다양한 조작 (생성, 삭제, 갱신 등)

- Events : 여러가지 이벤트에 의한 처리

- Effects : fadein, fadeout,slideup, slidedown등의 특수효과

- Ajax : 서버와 비동기식으로 데이터를 교환하는 자바스크립트 프로그래밍 방식

          - Utilities

jQuery의 모든 구문은 jQuery로 시작
구문을 단순화 하기 위해 jQuery 대신 $사용


Ajax 

Ajax는 JavaScript의 라이브러리중 하나이며 Asynchronous Javascript And Xml(비동기식 자바스크립트와 xml)의 약자입니다. 브라우저가 가지고있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고도 페이지의 일부만을 위한 데이터를 로드하는 기법 이며 Ajax를 한마디로 정의하자면 JavaScript를 사용한 비동기 통신, 클라이언트와 서버간에 XML 데이터를 주고받는 기술이라고 할 수 있겠습니다.

JSP 

JSP 란 JavaServer Pages 의 약자이며

HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구이다.

JSP 가 실행되면 자바 서블릿(Servlet) 으로 변환되며 웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행하고

그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다.

추상 클래스와 인터페이스 차이

추상 클래스는 객체 생성이 불가능한 클래스이며 추상메서드가 호출되면 안되기 때문에 인스턴스 생성을 못하도록 차단
추상메서드를 포함하는 클래스는 반드시 추상클래스로 정의되어야 함 단 모든 추상 클래스가 추상메서드를 포함하는것은 아니다.
추상클래스는 추상메서드,일반메서드,생성자,인스턴스 변수 등을 가질수 있다.
상속은 가능,다형성 활용도 가능
추상메서드에 대한 오버라이딩을 수행해야함 = > 오버라이딩 하지 않을 경우 상속 불가
이때, 상속받은 서브클래스를 추상클래스로 정의하면 오버라이딩 생략가능
단, 또 다른 서브클래스를 생성하여 언젠가는 오버라이딩을 해야한다!

인터페이스를 구현하는 구현체는 반드시 오버라이딩을 해야하며  인터페이스는 생성자,일반메서드,일반변수(로컬) 등을 가질수 없다.

Vector와 ArrayList의 주요 차이점
1. 동기화(Synchronize)

Vector는 동기화가 이미 되어 있는 클래스고 ArrayList는 동기화처리가 안된 클래스입니다.

그 때문에 Vector는 한 번에 하나의 쓰레드만 접근 가능하며, ArrayList는 동시에 여러 쓰레드가 접근 가능합니다.

ArrayList에서 여러 쓰레드가 동시에 엑세스 해야하는 경우 개발자가 명시적으로 동기화코드를 추가하면됩니다.

 

그렇기 때문에 멀티쓰레드 상황이 아닌 환경에선 ArrayList가 더 빠릅니다.

 

2. 쓰레드 안전(Thread Safe)

스레드 안전이란 멀티 쓰레드 프로그래밍에서 여러 스레드가 동시에 접근이 이루어져도 프로그램 실행에 문제 없음을 뜻합니다. 앞서 말했듯이 Vector는 동기화 되어 있기 때문에 한 번에 하나의 쓰레드만 접근할 수 있기 때문에 안전합니다.

ArrayList는 동기화되지 않았기 때문에 명시적으로 동기화 할 필요가 없습니다.

 

3. 크기 증가

최대 인덱스를 초과했을 때 추가되는 인덱스의 수가

Vector는 현재 배열의 크기의 100%이며

ArrayList는 현재 배열의 크기의 50%증가.

서브클래스에서 오버라이딩을 못하게 하려면 메서드에 final을 붙힘 (클래스 final 상속금지, 메서드 fianl 오버라이딩 금지, 변수 final 값변경 금지)


String은 Java,lang 을 상속받는 클래스~