IT/CS

웹 프로그래머 단골 질문, 기술 면접 모음 (1) - java, oop, Overloading vs Overriding, 프레임 워크 등

Eri_n 2022. 5. 25. 11:52
반응형

1. JAVA의 특징

a. 자바가상머신(JVM)만 설치하면 컴퓨터의 운영체제에 상관없이 작동한다.

(, 운영체제에 독립적)

b. 기본 자료형을 제외한 모든 요소들이 객체로 표현

c. 객체 지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어

d. Garbage Collector를 통한 자동적인 메모리 관리

e. 멀티쓰레드(Multi-thread)를 지원

 

2. OOP(객체지향 프로그래밍)

- 데이터를 객체로 취급하여 프로그램에 반영한 것이며, 순차적으로 프로그램이 동작하는 기존의 것들과는 다르게 객체와 객체의 상호작용을 통해 프로그램이 동작하는 것을 말한다.

-OOP 특징-

a. 객체지향 프로그래밍은 코드의 재사용성이 높다.

b. 코드의 변경이 용이

c. 직관적인 코드분석

d. 개발속도 향상

e. 상속을 통한 장점 극대화

 

3. Overloading vs Overriding

 

Overloading(오버로딩)

- 같은 이름의 메소드를 여러개 정의하는 것

- 매개변수의 타입이 다르거나 개수가 달라야 한다.

* return type과 접근 제어자는 영향을 주지 않음.

 

Overriding(오버라이딩)

- 상속에서 나온 개념

- 상위 클래스(부모 클래스)의 메소드를 하위 클래스(자식 클래스)에서 재정의

 

4. Servlet, JSP

Servlet - Container가 이해할 수 있게 구성된 순수 자바 코드로만 이루어진 것

(Html in JAVA)

JSP(Java Server Page) - html기반에 JAVA코드를 블록화하여 삽입한 것(JAVA in Html)

 

5. SessionCookie

SessionCookie 사용 이유

- 현재 우리가 인터넷에서 사용하고 있는 HTTP프로토콜은 연결 지향적인 성격을 버렸기 때문에 새로운 페이지를 요청할 때마다 새로운 접속이 이루어지며 이전 페이지와 현재 페이지 간의 관계가 지속되지 않는다.

- 웹사이트에서는 웹페이지에 특정 방문자가 머무르고 있는 동안에 그 방문자의 상태를 지속시키기 위해 쿠키와 세션을 이용한다.

 

Session

- Session에 관련된 데이터는 Server에 저장된다.

- 웹 브라우저의 캐시에 저장되어 브라우저가 닫히거나 서버에서 삭제시 사라진다.

- Cookie에 비해 보안성이 좋다.

 

Cookie

- 사용자 정보를 유지할 수 없다는 HTTP의 한계를 극복할 수 있는 방법

- 인터넷 웹 사이트의 방문 기록을 남겨 사용자와 웹 사이트 사이를 매개해 주는 정보이다.

- Client에 텍스트 파일로 저장되어 다음에 해당 웹서버를 찾을 경우 웹서버에서는 그가 누구인지 어떤 정보를 주로 찾았는지 등을 파악할 때 사용된다.

- CookieClient PC에 저장되는 정보기 때문에, 다른 사용자에 의해서 임의로 변경이 가능하다.(정보 유출 가능, Session보다 보안성이 낮은 이유)

 

Q. 보안성이 낮은 Cookie 대신 Session을 사용하면 되는데 안하는 이유?

A. 모든 정보를 Session에 저장하면 Server의 메모리를 과도하게 사용하게 되어 Server에 무리가 감

 

6. 추상클래스, Interface, Abstract

 

* 상속

extends 뒤에는 단 하나의 부모 클래스만 와야 함.

 

실체 클래스 vs 추상클래스

객체를 직접 생성할 수 있는 클래스 : 실체클래스

이 클래스들의 공통적인 특성을 추출해서 선언한 클래스 : 추상클래스

실체 클래스(자식)와 추상클래스(부모)는 상속의 관계를 가짐.

실체 클래스는 추상 클래스의 모든 특성을 물려받고, 추가적인 특성 가질수 O

 

Interface

- 일종의 추상 클래스

- 오직 추상메서드와 상수만을 멤버로 갖는다. (설계만. 추상클래스보다 추상화의 정도)

- Implements 키워드를 사용

- 상속의 관계가 없는 클래스 간 서로 공통되는 로직을 구현하여 쓸 수 있도록한다.

- Extends는 하나의 클래스만 상속 가능하나 Interface는 다중 상속이 가능하다.

 

Interface vs Abstract

공통점

- new 연산자로 인스턴스 생성 불가능.

- 프로토타입만 있는 메서드를 갖는다.

- 사용하기 위해서는 하위클래스에서 확장/구현 해야 한다.

 

차이점

- 사용하는 키워드가 다르다.

- Abstract는 일반 메서드를 사용할 수 있지만, Interface는 메서드 선언만 가능하다.

 

7. Call by Reference, Call by Value

Call by Reference - 매개 변수의 원래 주소에 값을 저장하는 방식.

클래스 객체를 인수로 전달한 경우

Call by Value - 인수로 기본 데이터형을 사용. 주어진 값을 복사하여 처리하는 방식.

메서드 내의 처리 결과는 메서드 밖의 변수에 영향을 미치지 않는다.

 

8. Static의 의미

- 클래스가 로딩될 때, 메모리 공간을 할당하는데 처음 설정된 메모리 공간이 변하지 않음.

- 객체를 아무리 많이 만들어도 해당 변수는 하나만 존재(객체와 무관한 키워드)

 

9. Framework

- 특정한 틀을 만들어놓고 거기에 살을 붙여 놓음으로써 프로그램을 만들어 작업시간을 줄여주는 것이다.

- 프레임워크는 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성된다.

- 프레임워크가 중요한 이유: 객체지향 개발을 하게 되면서 개발자의 취향에 따라 다양한 프로그램이 나오게 됨 -> 전체 시스템의 통합성, 일관성이 부족.

- 개발자의 자유를 제한하기 위해 프레임워크를 도입했다.

 

프레임워크가 가져야할 특징

a. 개발자들이 따라야할 가이드라인을 가진다.

b. 개발할 수 있는 범위가 정해져 있다.

c. 개발자를 위한 다양한 도구들이 지원된다.

 

프레임워크의 장/단점

장점 - 개발 시간을 줄일 수 있고 오류로부터 자유로울 수 있다.

단점 - 프레임워크에 너무 의존하면 개발 능력이 떨어져서 프레임워크 없이 개발하는 것이 불가능해지는 점이다.

 

 
반응형