현재
[Java] 신입 개발자 면접 예상 질문 본문
<기술질문>
・오버라이딩과 오버로딩의 차이에 대해서 설명해주세요.
오버라이딩
- 상속관계에 있는 클래스 간에 같은 이름의 메소드를 정의하는 기술
오버로딩
- 같은 이름의 메소드를 여러 개 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술
- 코드의 통일성, 효율성을 높일 수 있다.
・객체지향프로그래밍(Object-Oriented Programming)에 대해서 설명해주세요.
- 실제 세계를 모델링하여 소프트웨어를 개발하는 방법.(정의)
<특징 4가지>
・추상화(Abstraction) [주어진 문제나 시스템을 중요하고 관계 있는 부분만 분리해 내어 간결하고 이해하기 쉽게 만드는 작업, 정의]
- 추상화는 Context와 관련이 없는 정보를 숨기거나 관련된 정보만 알 수 있도록 하는것.
・캡슐화(Encapsulation)
- 관련이 있는 변수와 함수를 하나의 클래스로 묶고 외부에서 쉽게 접근하지 못하도록 은닉하는 것.
・상속(Inheritance)
- Java에서 상속은 하나의 클래스가 부모클래스의 속성과 행동을 얻게 되는 방법이다.
・다형성(Polymorphism)
- java에서는 두가지 형태를 통해서 다형성을 다룸
1.compile time polymorphism은 메소드 오버로딩을 통해서 사용
- 메소드의 매개변수의 형태가 달라질 수 있음
2.run time polymorphism은 메소드 오버라이딩을 통해 사용
・MVC패턴에 대해서 설명해 주세요
Model, View, Controller로 3가지로 구분한 방법론
Model
- 기본적으로 어플리케이션의 데이터를 나타냄
- 여기서 데이터란, 데이터베이스 애플리케이션 단에서 맨 처음 정의되는 여러 변수, 상수 등이 될 수 있으며,
혹은 이러한 데이터들을 다루기 위한 여러 쿼리 등을 비롯한 기능들도 포함
- User는 최종적으로 오직 모델을 통해서만 데이터에 접근한다.
- View나 Controller에 대해서 어떤 정보도 알지 말아야 한다.
View
- 사용자에게 화면을 보여주는 역할 외에 타 역할에 절대 관여하지 않는다.
- Model과 View는 서로의 존재를 모른다.
Controller
-컨트롤러는 모델과 뷰간의 중간 다리 역할
장점 : 유지보수가 편리하다.
단점 : 속도가 느려짐.
・쿠키와 세션의 차이점에 대해서 알려주세요.
Cookie
- 사용자가 서버에 필요한 내용을 가지고 있다가 서버를 이용할 때마다 정보를 함께 보내서 보여주는것
- 사용자에게 저장되기 때문에 임의로 고치거나 지울 수있으며, 가로채기도 쉬워 보안이 취약함
Session
- 사용자에 대한 정보를 서버에 두기때문에 쿠키보다 보안이 좋지만, 사용자가 많아질수록 서버에 부담이 가서
성능 저하의 요인이 된다.
・Java의 메모리 구조 영역에 대해서 알려주세요.
Static Area(스태틱 메모리 영역)
- 프로그램의 시작부터 종료가 될때까지 메모리에 남아있게된다.
- 전역변수를 무분별하게 사용할 경우 메모리 부족현상이 발생할 수 있다.
Stack Area(스택 메모리 영역)
- 메소드 내에서 정의 하는 기본 자료형(int, double, byte, long, boolean 등)에 해당되는 지역변수(매개 변수 및 블록 문 내의 변수 포함)의 데이터 값이 저장되는 공간.
- 기본형 타입 변수의 값들은 Stack 영역에 저장되고, 참조형 타입의 변수는 참조값만 저장된다. 여기서의 참조값은 Heap영역에 존재하는 인스턴스를 가르키는 값이다.(인스턴스의 주소 값)
- LIFO 구조를 가지고 있음
Heap Area(힙 메모리 영역)
- 참조형의 데이터 타입을 갖는 객체, 배열 등은 Heap영역에 데이터가 저장.
- 어떤 참조 변수도 Heap영역에 있는 인스턴스를 참조하지 않게 된다면, GC(가비지 컬렉터)에 의해 메모리에서 사라지게 된다.
'CS지식' 카테고리의 다른 글
| HTTP 기본 지식 (0) | 2024.04.02 |
|---|